Making multiple monitors work for you

A few days ago I happened upon a post regarding large screens and multiple monitors, or rather the lack thereof. The article was a well-written, but sloppily thought out piece where the author makes the claim that having a single, small display makes him “meticulous”, “instantly less distracted” and generally more productive. I take exception to this claim.

I want to make the argument that if using multiple monitors is not boosting your productivity then either you are not using them correctly, or that your work does not require two monitors in the first place (which is perfectly fine). But going back to one small screen is not suddenly going to make you more productive. Productivity is a function of both the work you do and the tools you use and it annoys me when so-called “technology bloggers” hold up interesting tools to be the end all and be all.

Rants aside, the issue of multiple monitors is something that I’ve been thinking about on and off for the past few years. At various points I’ve gone between one and two screens. Over the summer I had a dual monitor desktop setup. Now I have my Macbook Air at home and a single 22″ monitor at work. Since I have a standing desk at work I don’t hook my Macbook up to the monitor. If there is a way to make the Air float in mid-air please let me know.

Here is my thesis: multiple monitors are most useful when your work actually needs you to be looking at multiple pieces of information at the same time. Any time you find yourself quickly switching between 2 or more applications, tabs or windows, you could probably benefit from adding a monitor (or two). Personally this happens to me all the time when I’m programming. I have one monitor devoted to code and one devoted to documentation about libraries I’m using. When I was taking a screenwriting class I would have my script on one monitor and the other would be devoted to research (mostly Wikipedia because I was writing an alternative history piece involving the British Empire).

I’ve always used multiple monitors with virtual desktops (or workspaces as they’re called now). They blew my mind when I first started using Linux and I couldn’t live without them now. Some window managers (OS X in particular) treat multiple monitors as one big extended desktop. I think that’s the wrong way to go about it. I prefer using XMonad with multiple monitors – it turns each monitor into a “viewport” onto my set of up to 9 single-monitor desktops. That means that I can control and move what’s on each monitor independently which gives me much finer control over what I’m seeing at any time. If I have code, IRC and documentation open in three different workspaces I can keep code open on one monitor and move in between docs and IRC on the other if I need questions answered. This level of control is also why I think smaller dual monitors are better than larger single monitors.

Xmonad is also a tiling window manager which automatically arranges my windows to make the most efficient use of my screen space. It makes OS X’s fullscreen app mode look like a toy in comparison. Instead of futzing around without laying out my windows by hand I can have preprogrammed setups that are guaranteed to be the same every single time. This comes in very handy when you need to look at three terminals logged into three different computers at the same time. Spatial memory can be very powerful and it’s one more trick in the productivity bag. It’s also why I love Firefox Panorama, but that’s a matter for another post. XMonad also lets me use space that would otherwise go wasted if I had to spend time and effort manually setting it all up. Large screens actually get partitioned into usable layouts. window manager that will do it for you. If your second monitor is filled with

Two things to note about my usage: first, I do work that actually benefits from having multiple things open side-by-side. Second, I use tools that are molded to suit my workflow, not the other way around. And therein lies the fallacy when people start saying that going to smaller, single monitors increases their productivity. If you’re a writer who doesn’t need her research open side-by-side then you’re not going to benefit from another monitor. If you absolutely need to focus on PhotoShop for long periods of time then a single big monitor might be the best. As I’m writing this blog post I’m using one-half of my piddly 13″ Air screen. If you’re having trouble using space on a large monitor you should get a email, Twitter, IM and other distractions then of course it’s going to make you less productive. If you’re fighting with your technology rather than shaping it to your will then it’s not surprising that you get more work done with less tech.

The last thing I want to talk about is physical positioning. The article I mentioned at the beginning does make one valid point: If you have a dual monitor setup then either the seam between the screens is right in front of you or one is off to the side. The article also claims that having a monitor off to the side means that it’s less used (or completely unused). You don’t want to be staring the seam by default, but I’m not sure that having the monitor to the side is such a bad thing. Again, when I’m writing code I like having the code front and center and having the documentation off to the side isn’t such a bad thing. If your monitor to the side is really unused you should consider the points I mentioned above. Manually dragging windows to the side can be a pain and I think this might be biggest killer for a lot of people.

When I’m at a desktop with two monitor I tend to sit directly in front of my “main” monitor (whatever has my code up) and have the second one off to one side. XMonad makes sure I’m never dragging anything over and moving my head or eyes a few degrees every now and then isn’t a big deal. Your mileage may vary. But when I have a laptop connected to an external monitor, I prefer having the external one propped up so that the screen is above the laptop. Configurations with a small laptop side by side a larger monitor always struck me as odd. Having them stacked above each other makes the workflow slightly better. In Linux (or Gnome at least) you can definitely get the vertical stacking to work right, I haven’t tried it with OS X.

In conclusion, please think carefully about your workflow if you’re considering changing your monitor setup. Use tools that will work with you, not against you. Don’t think that a particular setup will work for you just because someone on the Internet promotes it or some piece of software makes that the default. People and companies get things wrong. Even Apple. There is no substitute for using your own head, especially when it comes to personal matters like workspace setup.

PS. I know that I haven’t linked to the original article. I did it on purpose because links are the currency of the Web and I don’t want to reward what I consider to be sloppy thinking and inaccuracy. If you really want to find it, Google is your friend. If you think I should link anyway, feel free to convince me in the comments.

Sunday Selection 2011-09-25

Unfortunately work-related activities having been taking up a lot of my time and energy over the past couple of weeks. On the good side I’m gradually making progress towards figuring out this grad school thing. While work on a funny and insightful blog post to blow you all away I leave with you a brief tour of the Intertubes.

Society

It’s not gender warfare, it’s math Being a computer science graduate student I’m regularly confronted by the fact that there are not enough women in our field (and that doesn’t seem to be changing any time soon). Here’s a look at why and that needs to change and some work in the right direction.

The Fraying of a Nation’s Decency Sometimes we just need a reminder that we’re all human after all.

Web Technology

10 best @font-face fonts I think embeddable web fonts are one of the best things to have happened to the web in recent years. Think of this article as a good “getting started” guide if you’re trying to figure out what fonts to use for your own projects.

How to make a simple HTML5 Canvas game The canvas element is an even bigger improvement than web fonts. Like the name suggests, it gives you a general purpose drawing element on a web page. Combine that with fast JavaScript engines and you have a pretty decent game engine on your hands.

Video

QuakeCon 2011 John Carmack keynote If you’re interested in gaming engines or high-performance, down-and-dirty programming then you should take the hour and half to listen to John Carmack — the brains behind the Doom and Quake game engines.

deck.js lite: modern HTML presentations

Taking a page out of Don Stewart’s book I’m planning to release a project to the Internet every week or two. Most, if not all, of them will be open source and hosted on Github. I’ll be posting blurbs about them on this blog filed under a new category – Projects. Feel free to follow along or fork away.

Deck.js is a very cool project that provides a set of CSS and JavaScript templates that let you create clean, elegant slideshows using HTML. I’m becoming increasingly attracted to HTML as a general purpose documentation format so seeing like deck.js makes me really happy.

I’m currently using deck.js to put together a presentation for a class I’m taking, but while at it I thought I’d do some reorganization of the deck.js codebase to make things a little easier. The files that you need to include to use deck.js are currently spread out between a number of different folders meaning that as a user it might take you a while to figure out where everything is and what you need to include. So in the spirit of open source I decided to fork the repo on Github and create a ‘lite’ version.

This version (also available on Github under the same license) packs all the files into a single folder, shortens some names and paths and removes some things (tests and SCSS files) that users might not care about. I’ve also updated the introductory presentation to point to the new files so you can use that as a template for making your own slides. I’ve been talking to deck.js’ creator, Caleb Troughton and I plan to keep the ‘lite’ version in sync with the main repo so that you’re always using the latest and greatest.

If there’s anything else you’d like to see in a lite version (or just in deck.js in general) please let me know. I think the best days of the web are just ahead and having web-native slideshows is definitely a step in the right direction.

PS. In case you’re wondering: no, The ByteBaker is not going to become just an announcement board for my projects. However, graduate school is taking up a lot of my time and energy right now. Also I think it’s important that I keep to releasing one project a week. The best I way I can think of keeping to that is by documenting my progress online. Normal programming will resume soon.

Bluebot: a simple HTML template

Taking a page out of Don Stewart’s book I’m planning to release a project to the Internet every week or two. Most, if not all, of them will be open source and hosted on Github. I’ll be posting blurbs about them on this blog filed under a new category – Projects. Feel free to follow along or fork away.

Over the weekend I took a few hours to set up a simple webpage on the Cornell CS department servers. While doing that I realized that I didn’t have a template in store for the occasions where I needed to throw together a page without fiddling for hours. I cobbled together a simple design for my page based on my personal website.

The result is Bluebot: a simple template designed for creating HTML5 webpages. It provides a set of CSS styles and web fonts along with some example HTML for writing clean, decent-looking webpages. It’s designed to be used for standalone pages, i.e. single webpages that are complete in and of themselves. That’s not to say it couldn’t be used or adapted for full websites.

Though the template is mostly black and white, there is a little bit of blue used for the borders and blockquotes, hence the blue. It also makes use of the Droid family of fonts provided via Google Web Fonts, hence the bot.

You can see what Bluebot looks like on the Bluebot project page. You can clone the Git repo or download a tarball from the Github page. I plan on continuing to add styling for the remaining HTML5 elements gradually. Feel free to fork, edit and send me a pull request.

The first week of graduate school

I’ve been trying to think of a good topic for a blog post for a few days with no avail. So instead of one my usual tech posts I have some reflections about the first week of graduate school. Before I dive in, the usual disclaimer: I speak for myself, not for my employer, professors or colleagues. Additionally all this is based almost solely on my experience at Cornell University, your mileage may (and probably will) vary.

First off, let’s get one thing clear: graduate school is not school. If anything, it’s a job with a good amount of freedom. And you take classes for a few semesters. Like Professor Matt Might says: “if acting a certain way would get you fired from a real job, then it’s probably a bad idea to try that in a Ph.D. program too.” I make it a point to treat this gig as a “real” job: I’m getting paid to do actual work, there are deliverables, there are deadlines and requirements, there are people I report to.

That being said, there are a lot of the same challenges that you go through when you end up at school for the first time: you don’t know very many (if any) people, you don’t know where things are (or how to get there), you have to choose classes and you’re constantly on the lookout for free food. Luckily, meeting people is largely a case of being persistent about it (same for finding free food). The social aspect is not to be underestimated: if you’re going to be here for the long haul you might as well make friends with people who are going to be here with you. You never know when you might need a shoulder to cry on. I once read somewhere that in your first week at college you should go to every party you can. I didn’t do that and I’m not sure if I regret it. But it holds for graduate school too (and perhaps any new place you go to). As for free food, there seems to be free lunch almost everyday. Unfortunately most of it is the usual carb-and-sugar heavy stuff you’d expect to find. You probably want to stay away from most of it if you want to eat healthy.

In keeping with my idea of treating graduate school as a job, I’ve been trying to hit the ground running and spend as much time as I can on research. However, this is turning out to be easier said than done. For starters, classes do take up a good amount of time and energy. Accepted wisdom says that for each hour of class you should put in 3-5 hours of work outside of class. But if I plan on getting any actual work done (not to mention having a life) I’m going to have to categorically ignore this formula. Luckily I’m past the point where I get graded on effort and putting in long hours isn’t the same thing as being productive. Though classes aren’t consuming my life (and I’m going to work to keep it that way), it hasn’t been easy to make time for research either.

Though I’ve been power-using iCal sticking to a schedule isn’t easy. As they say, no plan of battle survives contact with the enemy. There are lots of little things that come up during the day (like two fire alarms yesterday) and sometimes estimates are just plain wrong. Since I’m still in the phase where I’m meeting professors and scoping out potential hobbies and activities, my nice time-chunked calendar frequently gets perforated. I’m hoping some of this will subside over time, but this much is clear: any time you want to yourself, whether it be for research, hobbies or just winding down, you have to fiercely defend. I think it’s a good idea to start with a calendar that is all blocked out instead of one that is clear. That way if someone (or some event) wants a slice of your time it’s immediately clear that you’re taking away from something else you could (should?) be doing.

On the topic of research, coming up with good research topics is hard. I have two classes in which I need to do substantial projects and I have very little idea of what to do (except that I want to experiment with some cool technology that could be useful later). Part of this is due to my professional immaturity: I don’t know enough of the field to be able to tell what would make for a good grad-level project. However, becoming more conversant with the state of the field is part of my education and figuring out what to do for a project is a good trial for deciding on a PhD topic in a few years time.

One thing about research that doesn’t get much attention is that it is very draining, both mentally and physically, in terms of energy and time. After a good few hours of reading, thinking and coding it’s hard to get up the energy to do anything else. I can just feel my energy drain away once it gets too late in the afternoon. Personally I have a bunch of side-projects (including this blog) that are distinctly not research-oriented and I’m not sure how I’m going to make time (or energy) for them. One way (again taken from Professor Might) is to keep work and play separate. Since I have a pretty decent office space I want to do all my research at work. I’ve started to move some of my books into my office, I’ve set up a standing desk and generally trying to make it a place I want to work from. Ideally I would like to do all work in the office (again, treating it like a real job) and once I left I’d be done with work for the day.

Finally some logistics. All the new graduate students have been provided with pretty amazing office machines (lots of cores, lots of RAM, fast SSDs). Since we have full root access I can get serious work done on them. It also helps with my plan of not bringing work home. Though I love my office machine, I prefer my Macbook Air for reading and sometimes writing. Also having a mobile work station is nice for the times I want a change of scenery (which can be refreshing). But having two machines also brings up the synchronization problem which is something I really want to avoid. I’ll revisit these issues once I get a better idea of how much time I spend working, where and on what.

So to summarize: grad school is a job, not school. Meeting new people is largely a matter of persistence. There’s lots of free food, but a lot of it is not very healthy. Research and classes burn a lot of time and energy so you have zealously guard what you have left and make sure you spend it on what matters. Keeping a distinction between work and play is a good in theory, the practice remains to be seen. Maintaining multiple machines sucks.

If you have any opinions on graduate school (or just work in general) I’d love to hear.