Fullscreen editing

I find myself doing more and more coding in (some kind of) fullscreen mode. One reason is the omnipresence of 16:10 or 16:9 screens, and that most applications are still pretty wasteful with vertical space (think Thunderbird). Title bar, menu bar, tool bar, tab bar, status bar, window panel, whoops, an estimated 10-15% less space for coding. This is especially painful on smaller notebook and netbook screens. I also like to avoid distractions, I don’t really need to look at the clock, check the battery, or read incoming mail subjects while doing something else.

Before window-based systems became mainstream on home computers in the mid 90s, fullscreen editing was the norm. Poor DOS users couldn’t even run more than one program at a time. Window managers and higher resolutions lead to much more sophisticated coding environments, increasing both usability and visual clutter.

A few years back, tiling window managers appeared. They no longer manage applications in arbitrarily sized and positioned windows, but instead use tiles on the desktop for a semi-automatic layout process. Some of the ideas trickled down to traditional window managers as well: Windows 7 lets users expand windows to either half of the desktop, Compiz Grid and Ubuntu’s Unity achieve a similar effect on Linux. Personally I like these less extreme approaches, given enough screen estate windows are just inherently accessible and no tiling algorithm will work for all applications.

Some of my fullscreen candidates are (or were):

  • Firefox/Chrome: F11 to toggle between fullscreen and windowed mode. Unfortunately, there are slight issues in both browsers (there is no feedback whether a new page is loading, the URL bars can be a bit quirky).
  • Netbeans IDE: View –> Full Screen (don’t press the default short cut on linux). Also reduces the clutter of the already very clean Netbeans layout by removing the toolbar.
  • IntelliJ IDEA: unfortunately the full screen mode was kicked out of IDEA 10, at least on Linux. You can remove the toolbar, status bar, and the docked windows panels, leaving you with a menu and the editor window.
  • vim: there’s a native plugin, gvimfullscreen_win32, for Windows that basically works but struggles when the window layout changes. For Linux I just use (grid-) maximized console windows.
  • Gnome Terminal: F11 toggles between fullscreen and windowed mode, too.
The main problem I keep running into is that current desktops don’t tend to work well with fullscreen applications at all (perhaps unavoidably so). As long as I have one monitor for each program I work with at a time this is not an issue, but even one additional program breaks usability, leaving the alt-tabbing user in agony. Recently I started using Ubuntu’s Unity at work, and (for all its flaws) I like the basic ideas – thinking in applications (versus application windows), encouraging keyboard navigation, optimizing desktop space usage (combined menu/title bars in a global menu). But sometimes having just one application on the screen, one thing to concentrate on, helps so much that I wonder if the classic desktop metaphor can actually be fixed.

Comments (1)

Random Reading

Miscellaneous personal book highlights of last year.


  • Friend of the Earth (T.C. Boyle, 2000): Set in a post-apocalyptic, near future, it really is the dark humor that kept me turning pages. The not-so-glamorous past of a well-intentioned, but somehow morally challenged environmentalist is told in flashbacks, while in the present he struggles to keep the last remaining animals from killing each other (and him). I also liked Tortilla Curtain and Drop City by the same Puli-owning author.
  • Matter (Iain M. Banks, 2008): Books like this drew me away from gaming. Fiction/science fiction writer Iain (M.) Banks unleashes ultra-powerful civilizations and medieval monarchies, worlds of worlds, artificial intelligences and ship minds in a creative firestorm.
  • Watchmen/From Hell (Alan Moore, 1987/1991-96). Yeah, I admit I’m late to the game and only stumbled over these graphic novels lying around in bookstores supporting the Watchmen movie. Still both Watchmen (fallen super-heroes) and From Hell (Jack the Ripper) are excellent reads and beautifully illustrated.
  • The Work of the Night (Die Arbeit der Nacht, Thomas Glavinic, 2006). A disturbing novel by Austrian writer Thomas Glavinic where his protagonist wakes up one morning in depopulated Vienna. What follows is a downward spiral from enthusiasm (who doesn’t want to take a sports car and drive flat out on the busiest city streets?) to great loneliness and total psychic breakdown.
  • The Terrors of Ice and Darkness (Die Schrecken des Eises und der Finsternis, Christoph Ransmays, 1984): Based on diaries from the Austro-Hungarian North Pole Expedition, Ransmayr depicts the true horror and insanity of this polar expedition. Very recommended reading, although I’m not sure how much of the seemingly authentic language survived the translation.

Computer Science

  • Coders at Work (Peter Seibel, 2009): I liked Beautiful Code and am currently reading Programming Pearls, but the interviews in Coders at Work stand out for their broad coverage of ancient and current technology, from people working on the first Unixes and the guy that wrote Live Journal to Donald Knuth. Peter Seibel knows one or two things about coding, and it shows in the questions he asks, in the direction he is able to give the interviewees. The only gaping hole for me was game programmers, since they always did a lot of bleeding-edge coding. But there’s always Masters of Doom.
  • Programming in Scala (Odersky et al, 2008): A very approachable introduction to the next-gen JVM/CLR programming language Scala. My enthusiasm for the language is currently a bit declining given the inherent JVM restrictions and the complete lack of a standard library, but I learned a lot just from reading this book and tinkering away with my own little programs.

Leave a Comment

Almost there…


Leave a Comment

Planes, Textures, and Soft Shadows

My toy raytracer written in Scala got a few new features:

  • Planes
  • Textures
  • “Soft Shadows” (distributed raytracing)
  • Supersampling Anti-Aliasing

Textures don’t add much to the computation time, but distributed raytracing is a real performance killer (at least when implemented naively, as in my version). Essentially, when determining the surface color at a given point, instead of sending just one ray to a lightsource to see if it’s obstructed by any other object, many rays (typically at least 25) are sent out to an area that describes the light source (e.g. a box). The return values (black if the ray was obstructed, the light source color otherwise) are then averaged, leading to smooth transitions at the edges. And it does look nice… combined with supersampling (anti-aliasing) it now becomes easy to spend hours rendering a single image at, say, 1024×768 pixels.

Pool Scene

Next idea: writing a parser combinator for (a subset of) POV-Ray’s Scene Description Language (SDL) to skip the painful step of modeling scenes in compiled code. This will also enable me to do some Scala coding again, since adding new features to the raytracer itself usually means spending much more time wrapping your head around math stuff than actually writing code.

Leave a Comment

Beware of avgnsx.exe

Wondering why my CPU usage peaked between 25 and 50% when using a download manager to max out the 16 MBit cable connection, it turned out that the “network scanner” in AVG 8 (free) is to blame. Even if the obnoxious link scanner (which loads every link in a Google search result and checks for “trojan” web sites) is disabled, AVG still monitors all network traffic on port 80.

The only solution (suggested in the AVG Free forum) is to reinstall AVG, choose a custom install and disable the link scanner… yikes.

Comments (9)

Everything Is A Sphere

When I was down with a cold last week I dug out a book about computer graphics that I bought during my university time (3D Computer Graphics by Alan Watt). It provides a mathematical foundation for many core techniques in CG, and it got me interested again. About 8 years ago when I bought this book I wrote a small raytracer in C++, and since I am really in search for new hobbyist projects to teach myself Scala, I figured I could give it another shot.

Scala is a statically typed functional/object oriented language for the JVM and the CLR, and at least on the JVM it is known for providing performance similar to Java (in contrast to dynamic JVM languages such as Groovy or JRuby). This is the first scene that provides something my 8-year-old project couldn’t, namely a checkered surface (composed of two other surface instances). The code is pretty newbie-like and a bit unstructured, so for now I’ll leave it at that. FWIW, it took about 5 seconds to render this picture on my rather mundane home machine (Athlon X2 @ 2.2GHZ, Windows XP) using the 1.6.0_11 server JVM.

A World of Spheres

Leave a Comment

Not-so-white christmas, but still…

…it was great. Just for fun I mounted some really old tele lenses from my father on my EOS 450D, and managed (with great patience) to take some shots that were in-focus and reasonably illuminated.

The longest was a 300mm lens from his old Praktika, which went to about 1000mm with two tele-converters and considering the DSLR’s crop factor. Of course a tripod was mandatory, and I finally found a use for the 450D’s live view: sometimes it was easier to adjust the focus watching the back LCD screen, especially when the lighting was poor (I usually had to focus with the aperture wide open to be able to actually see something). With the ~1000mm I also had to use a 10-seconds-self-timer, because it would take the setup this long after pressing the button to stop swinging.

The outdoor photos were shot hand-held with a 135mm (before cropping) lens of a Yashica SLR. Photos 1-3 and 5 were taken with the 450’s kit lens.

Christmas 2008

Christmas 2008

Christmas 2008

Christmas 2008

Christmas 2008

Christmas 2008

Christmas 2008

Leave a Comment

Older Posts »