Find Me On

My Homepage





RSS Feeds

My Stuff

Shared Items

Search This Blog


Josh Braun’s Blog // I have it written down somewhere . . .

Simple Command Line Pomodoro Timer Jul 10, 2014

I’ve found Francesco Cirillo’s Pomodoro Technique to be a useful way of organizing my work and getting stuff done.  It involves breaking up your work into four 25-minute intervals (“pomodori”), separated by five-minute breaks.  At the end of the four work intervals, you allow yourself a longer break (usually 15 or 30 minutes) before repeating the whole process.

The alternation of predetermined work and break intervals improves my focus—the 25-minute work intervals are long enough to get real tasks done, and I can avoid succumbing to the usual distractions like checking my email or perusing various web-based time sinks when I know I have a break coming up.

Cirillo apparently suggests it’s important to make a list of tasks beforehand and says the ritual of setting a physical timer that ticks insistently at you as you work improves your focus.  But like many folks, I use a watered down version of the technique that forgoes the to-do list and makes use of a digital timer.

There are tons of little pomodoro timer apps, websites, and software programs out there to keep time for you.  Still, since I do a lot of work on the command line and appreciate its relatively distraction-free aesthetic, I wanted a command-line based pomodoro timer.  So I wrote a quick one in PHP and I’m sharing it.


To use it, you first need PHP installed on your system.  On Mac OSX, PHP is preinstalled, so there’s no need to do anything at this stage.  On other *nix systems, it’s simple to get PHP via your distribution’s package manager. Windows users using a Cygwin BASH or tcsh shell can also get PHP through Cygwin Ports.

Once you’ve got PHP up and running, download the ‘pomodoro’ file from SourceForge. Place the file in whatever directory you want it to live in, and ‘cd’ to that directory in your terminal application.

Next, make the file executable:

$ chmod +x pomodoro

Now, test the script to see if it works:

$ ./pomodoro

If the timer begins counting down, you’re good to go.  If not, then check the path to PHP given in the file itself to make sure it matches the path to PHP on your own system.  Specifically, in your shell enter the command:

$ whereis php

This will display the path to PHP on your system. Then open the ‘pomodoro’ file in a text editor and change the filepath following the characters ‘#!’ on the first line of the file to match the path given by the ‘whereis’ command.

Optionally, you may wish to add the directory containing the ‘pomodoro’ script to your PATH, which will allow you to start the timer by typing ‘pomodoro’ into your shell from any directory, rather than having to first browse to the directory containing the file, then typing ‘./pomodoro’ with a leading ‘./’.


Be aware of a few command line options I’ve written into the script.  For example, you can manually set the length of the “long break” that follows the four work intervals.  It’s also possible to tell the script to start at a work interval other than the first.  This is useful if  you have to step away for longer than intended during one of the short breaks and want to resume the timer at the next interval, or if you want to use the timer, but don’t have time for a full session of four work periods.

Like most any command line program, you can also pause the script (and hence the countdown) by typing Control-Z, and resume it by entering the command ‘fg’ into the terminal.

Here is the full usage information from the ‘help’ screen, which you can display with the command ‘pomodoro -h’:

Usage: pomodoro [OPTION]... 
`pomodoro' is a simple command line implementation of a pomodoro timer.
More information on the `Pomodoro Technique' developed by Francesco Cirillo can be
found on Wikipedia:

  pomodoro -l=45            # Run the pomodoro timer with a long break of 45 minutes.
  pomodoro -p=2             # Start the pomodoro timer at the second 25-minute interval.
  pomodoro -p=3 -l=15       # Start the pomodoro timer at the third 25-minute interval
                              and make the long break 15 minutes.

Basic usage:
  -h, --help                Display help and usage information
  -l, --length=NUMBER       Set the length of the long break (default is 30 minutes).
  -p, --pomodoro=NUMBER     Specify pomodoro interval at which to start (default is 1).
      --usage               Alias of the `--help' option
  -v, --version             Display version and license information

Each time a work or break countdown ends, the timer will ring the terminal bell, emitting a brief sound or visual cue depending on your terminal application’s settings. Enjoy!

Posted in Technology | Tagged , , | Leave a comment

“Hate is bad for people and other living things.” May 28, 2014

—Anonymous student(s) in Isla Vista, 2001

In 2001 I was attending UCSB when a disturbed student stopped his medications and ultimately ran his car at freeway speeds into a throng of pedestrians in Isla Vista, killing several of his peers. So much of what went on then is echoed in the recent news from the coast.  Above are the words that some anonymous tenants in Isla Vista painted on their picket fence back then, which was adjacent to the street on which the tragedy occurred.  Everyone who walked or rode their bike down that street that year remembers them.  They became a sort of silent anthem in a community coming together to heal.  I hope they get passed on today to whomever needs to hear them.

Posted in What I’ve Been Thinking About | Leave a comment

“When a society’s organizations thrust a large number of its citizens into a condition of permanent survival-oriented tension, it would be remarkable indeed if the effects were benign….The responsibility of leading firms and other bodies with concern for the social consequences of the organizational developments they initiate is a major issue of our times.” Jan 1, 2014

—John Child and Rita Gunther McGrath, “Organizations Unfettered: Organizational Form in an Information-Intensive Economy,” 2001

Posted in Clipped | Tagged | Leave a comment

LaTeX Letterhead for Quinnipiac University Dec 4, 2013

qu-ltrI’ve been finding myself spending ever more time in Emacs of late, working on various projects.  As ever, you can do an immense amount of work and play from within this single program, from coding to browsing the web to checking email to reading news to perusing Twitter. It’s addictive.

I’ve also been doing a lot more writing in Emacs, getting more and more comfortable with LaTeX.  And as the season approached for writing letters of recommendation, I realized that I had no version of Quinnipiac’s official letterhead that would work in LaTeX.  I finally spent the time to create one, and as is my rule with yak-shaving tasks like this one, I figured I’d share it and hopefully help out the next person.

The letterhead conforms to the rules in the Quinnipiac University Graphics Standards Manual, as it was last revised in 2003.  The LaTeX is based on a similar University of Wisconsin-Madison letterhead by Sam Stechman, which was an excellent and greatly appreciated start.

That said, I’m far from a LaTeX expert, but I can still tell that Stechman’s original letterhead is mostly a personal project.  The markup is more than fine for individual use, but doesn’t have quite the elegance of widely adopted solutions like those available at Cornell, Stanford, or MIT.  I’ve cleaned up Stechman’s template slightly, and plan to continue to do so as my own knowledge of LaTeX improves. I also welcome improvements by others and will happily link to them or post them here.

Without further ado, however, here’s the link to download the QU Letterhead LaTeX template:

QULetterhead.tgz (7.1 M)

Please use it only in accordance with the Quinnipiac University Graphics Standards Manual. The package includes:

  • qu-footer-generic.eps // A graphic containing the footer information in the university’s official font and Pantone color scheme.
  • qu-footer-generic.psd // A PSD file of this footer, which can be edited to include an individual’s personal phone number, campus address, etc.
  • qu-logo.eps // A graphic of the university logo.
  • qu-ltr.tex // The actual LaTeX letterhead template, which incorporates all these other elements.
  • signature.png // A graphic containing a generic handwritten signature, which can be replaced with a scan of an individual’s own signature.

Happy letter writing!

Posted in Technology | Tagged , , , , | Leave a comment

“[Late night] shows are promotional vehicles for the industry. They’re not talk shows, per se. … [They're] pretty cheap, too, so until it becomes an unworkable business model, I don’t think you’ll see change. Same as the movie business. Until this thing implodes from within, which feels like it’s not too far off.” Aug 24, 2013

Jerry Seinfeld on the state of late night talk shows (in relation to his own online interview series, Comedians in Cars Getting Coffee)

Posted in Clipped | Tagged , , | Leave a comment

Kevin Spacey on Television Distribution Aug 24, 2013

Interesting comments from Kevin Spacey on House of Cards, Netflix, and the future of television distribution.

Posted in Clipped | Tagged , , | Leave a comment

Communication, Culture & Critique Article Aug 20, 2013


I’m pleased that my paper on online television distribution has now been published in the ICA journal, Communication, Culture & Critique.  The paper attempts to outline conceptual tools for studying the distribution of television and other media online. Better than anything I’ve published previously, I believe it captures my outlook and (hopefully) the value of my methodological strategy of tracing distribution paths from producers to end users.

Among other things, the paper gives a history of Boxee, a tech startup that prominently challenged traditional ways of distributing television and resisted domestication by content providers for a surprising period of time.  As a post-script to the story told in the paper, I should note that Boxee was sold to Samsung, pretty much the day after I approved the final proofs for this article.  Isn’t that the way it always goes?  Thankfully, this turn of events fits fairly neatly into the framework and narrative I delineate in the article, but it still would have been a nice dénouement to have included.

The citation info for the paper is as follows:

Braun, J. A. (2013). Going over the top: Online television distribution as sociotechnical system. Communication, Culture & Critique, 6(3), 432-458.

And for those without library access, a preprint of this article also appeared a while back on Culture Digitally.

Posted in Academic Presentations & Publications | Tagged , , , , , | Leave a comment

Social Theory Through Complaining Aug 9, 2013


Oh, this is brilliant.  My hat’s off to Kieran Healy, I would totally take this course.  The original is here, and Healy’s site is here.

[H/T Claudia Barriga]


Posted in Surviving (in) Academia | Tagged , , | Leave a comment

What We’re Talking About When We Talk About Cloud Computing Jul 18, 2013

Clouds250Casey O’Donnell’s recent post at Culture Digitally reminded me of a conversation I had not long ago with another researcher, in which we realized that, although both of us were speaking about “the cloud,” each of us were talking about slightly different things.  That conversation grew into an email thread that I’ll adapt here, in which I tried to “disambiguate” (oh, lovely Wikipedia word) the various meanings that have grown up around “cloud computing.”

I feel like clarification, however small, is important because, as Tarleton Gillespie has pointed out with his example of the “politics of platforms,” when you see a good deal of equivocation around a particular word, it’s often an indicator that people are using it strategically in ways that are important to grasp for social critics and social scientists, alike.

And people certainly equivocate over what they mean by “cloud computing.” I count at least three related, but distinct meanings for “cloud computing” in popular use these days, one having to do with technical infrastructure, another to do with user experience, and a third with business model.

Below, I try and pick apart these meanings.  Note that I’m intending this post for those without an extensive technical background, but readers with technical expertise should feel free to chime in with critiques, clarifications, and other comments.  Those interested in a more extensive discussion should check out the excellent Wikipedia article on cloud computing which does a superb job of breaking down the various uses of the term and the history of the technologies that surround it.

Technical Infrastructure

First there’s the technical component. While cloud computing has a long and storied history, for the sake of convenience I’m going to sketch its technical underpinnings here in terms of relatively recent and simple developments and examples.

Interactive websites, like blogs, social networks, e-commerce sites, etc. are commonly referred to as “web applications.” And, as a point of reference, many web applications are called “three-tiered” applications, in that different parts of their code are run in three different environments. One of these “tiers” is the database management system, which stores and, upon request, coughs up all the data used in the web application. If your web application is something relatively simple, like a blog, the database management system is storing and handling a database full of things like blog posts, comments, user login information, and so forth. The database management tier runs on a server, but it is compartmentalized such that it can run on an entirely different server from the rest of the server-side software described in the next tier.

The second tier of the web application is the server-side software, which is just what it sounds like: software that’s running on the web server. This part of a web application is responsible for responding to requests from users, sending their information to the database, and using information returned by the database to deliver contextually specific webpages for the user (e.g., showing you a Facebook page populated with your friends’ information, or a page of search results for the keywords you entered.).

The third and final tier of the web application is the code—primarily HTML, CSS, and JavaScript—that runs in your web browser. This code contains the information delivered to the browser by the preceding tier, as well as instructions for rendering it in a human-readable form and adding interface features like tabs or drop-down menus.

Note that of the three tiers I’ve described, only one (the browser tier) actually runs on your own computer or device. The other two run on the server, and this means that sophisticated and/or well-trafficked websites, while they may not use up many resources on your own computer, can end up putting quite a lot of strain, in terms of storage and memory, on the server running the site. To overcome these challenges, particularly high-traffic sites like Amazon and Google that also run sophisticated web applications housing lots of data, spent a lot of time and money figuring out ways to distribute the data storage and processing tasks of the first and second tiers across numerous computers, rather than assigning them to a single beleaguered server.

This is an oversimplified, but hopefully reasonably accurate, description of what cloud computing means from a technical perspective.  There are, of course, some caveats.  First, in addition to companies like Google and Amazon, there were, of course, other less consumer-oriented companies, like IBM and Oracle, who did a lot of pioneering in these areas, and the development of the technologies behind cloud computing long predates the emergence of the term.  Second, many web applications use APIs, RSS, etc. to also provide data to software other than browsers (e.g., native mobile and desktop apps, etc.).  And third, cloud computing can involve the creation of distributed computing resources for applications entirely unrelated to the web.

User Experience

With regard to the second meaning of “the cloud,” user experience, many users have found web applications supplanting functionality they traditionally associated with desktop applications and a local hard drive. The ostensible advantages for end users are clear enough. If you use a web application like Google Drive to work on and store your documents, you can save hard drive space on your own computer, you don’t have to pay for software like Microsoft Office, you can access your data from anywhere using any operating system that will run a full-featured web browser, and—since much of the computing horsepower behind the web application comes from the server, rather than your local machine, you can get away with purchasing less expensive hardware.

In many cases, this sort of user experience is underpinned by a distributed computing infrastructure that fits the technical description of cloud computing as I’ve defined it above. However, regardless of whether the actual server infrastructure underlying a particular application is distributed or not, the notion of using online services to store data or get work done has been popularized/marketed to users as keeping one’s information “in the cloud.”

Business Model

The third sense in which I hear “cloud computing” tossed around is as a business model. The neat technical trick described above, of distributing server-side software and database functionality across a large number of computers, has turned out to be salable in that lots of developers want to be able to write and host their web applications without worrying about how system resources like storage space and memory will scale as they take on more users and page views. So companies like Amazon (via Amazon Web Services, “AWS” for short) and Google (via App Engine) began selling their distributed computing power to developers—much like an ordinary web hosting service—but instead of simply leasing space on a server you instead leased access to the company’s distributed—a.k.a. “cloud”—computing resources for storing your data and server-side code.

This business model of setting up a distributed computing infrastructure to sell to application developers has become increasingly common, as has the creation of online applications that depend on cloud computing resources (e.g., Google Drive or Dropbox) and marketing them directly to end users. This business strategy allows companies to sell access to their infrastructure and/or applications for a recurring fee (or to sell ads against them in perpetuity in the case of “free” services). For example, where a university might once have paid a one-time fee to license a copy of Microsoft Outlook and Word, it may now instead pay a recurring premium use Gmail and Google Docs as part of Google’s “Apps for Education” program.

Similarly, beyond the cloud services that we encounter daily as consumers, there are a huge variety of cloud services now being developed for specialized industries, from medical records management to human resources.

Many cloud computing services, like App Engine or AWS act as intermediaries, delivering data and software created by independent developers and content providers. In writing about cases like these, I occasionally use the term “transparent intermediaries,” since part of the promise of services like App Engine is that users will remain unaware of the interventions they provide in the delivery of a client’s branded product.

What’s Interesting Here and Why’s It Important?

With regard to why the cloud, and its various definitions, matter to social critics and communication researchers, Jonathan Zittrain’s book The Future of the Internet and How to Stop It comes to mind. It does a nice job of depicting both the advantages and the pitfalls of centralized computing power for society and end users. When our applications and data are stored in Google or Facebook’s software and infrastructure, we trade a sizable amount of agency for the conveniences they provide. We’re subject to their terms of service, and we also experience a lack of control over the features we have access to. By comparison, until recently, if we didn’t like the changes made to a new version of Adobe Photoshop, we could continue to use the old one for years, whereas we’re immediately and permanently stuck with any change Google makes to Gmail or Google Drive—and, now, any change Adobe makes to its Creative Cloud. Moreover, users who trade down to tablets or lower-powered hardware with the intent of ditching desktop applications in favor of web-based ones are especially vulnerable to issues like these.  And Zittrain points out that as our data and our computing resources become increasingly centralized, they also become more vulnerable to regulatory pressures.

Issues of lock-in always loom large with cloud computing, as with any “software-as-a-service” business strategy. In the context of social networks folks like Søren Petersen have done a nice job of pointing out that even the ability to take your data with you when you leave a service doesn’t truly free the user from issues of lock-in, as much of the value that online services add has to do with the context in which your content is used and displayed, rather than the data itself. This is, I imagine, as true for clients of enterprise cloud computing applications as it is for users of Facebook.

More generally, as I mention at the outset of this post, the multiplicity with which companies and individuals use the term “cloud computing” also suggests that the term may be deployed strategically, akin to the way Tarleton Gillespie has documented the manner in which companies and developers advantage themselves by using the term “platform” differently in distinct social and political contexts.

Lastly, the looming presence of Oracle in many areas of cloud computing adds another wrinkle. Tensions between proprietary and open source software development strategies have run high in recent years as various companies have tried new ways of monetizing open source projects that have at times run counter to the spirit of commons-based peer production on which open source has long been predicated. (Tony Liao’s forthcoming work on the Android Developer Challenge contains a nice discussion of some of these issues.)

Oracle has found itself at the center of many of these debates. As a corporation it has a reputation of being somewhat less than friendly in its policies toward open source software communities, but at the same time has taken over administrative oversight of numerous major open source projects in recent years as it has bought out competitors like Sun, which had been heavily involved in open source development. For example, Oracle now oversees MySQL, the open source database management software that underpins a huge a huge portion of the web’s interactive sites, and Solaris, a once largely open-source operating system that had competed nimbly with Linux. And Oracle only recently ceded control of OpenOffice, an open source competitor to Microsoft Office, but not before most of the software’s original developer community had abandoned ship.

Since tensions between open source and proprietary software development strategies are at the center of many debates about the locus of user agency in cloud computing, Oracle’s involvement in various cloud computing tussles may ultimately add some interesting threads to the narratives surrounding the still-dynamic term, “cloud computing.”

Posted in Journalism, New Media & Digital Culture | Tagged | Leave a comment

“I have to share the credit. I may have invented it, but I think Bill [Gates] made it famous.” Jul 13, 2013

David Bradley on his invention of the Ctrl-Alt-Delete shortcut for resetting a crashed computer

Posted in Clipped | Tagged , , | Leave a comment