Friday Dec 15, 2006

Blog Redesign!

I've redesigned my weblog. I've always wanted to do it, but Roller's templating and theme system was too daunting. It's easy to tamper with the HTML your blog generates, but as a web designer by trade, I wanted total control over the HTML, CSS and JavaScript. Alas, lots of HTML-generation happens deep within Roller-specific Velocimacros that you have no obvious control over. So, if you really want control, you have to get intimate with Roller. You have to have its babies and cook it three square meals a day, and not complain when it doesn't want to cuddle. Gritting my teeth, that's what I finally did, and this is our love child.

Thursday Nov 11, 2004

My Favorite Firefox Tricks

To celebrate the long-awaited release of Firefox 1.0, I'm going to share a few of my favorite Firefox tricks and techniques.

  1. Middle-clicking. I read a lot of articles with links peppered liberally throughout. Firefox allows me to middle-click links and continue reading while the new pages load up in background tabs. When I'm done, all those pages are finished loading and ready to read! (If your mouse has a scroll wheel instead of middle button, click the scroll wheel.)
  2. Text-zoom. Web designers absolutely \*love\* the look of microscopic font. Evidently, their mantra is "Let not the content interfere with the design". Well, pooh on them. I just zoom until the font size suits my taste. Text-zoom is [CTRL +] and [CTRL -]. [CTRL 0] resets the font to original size.
  3. Kiosk mode. AKA fullscreen mode, kiosk mode is when the viewport (the part of the screen that shows web page) is stretched from edge to edge, minimizing the amount of scrolling and other UI distractions. Hit F11 to toggle to kiosk mode. (Combine text zoom with kiosk mode to make web pages more visible for presentations, etc.)
  4. Block images from... If a web page insists on using banner ads that would induce seizures in epileptics and annoy anyone else, right click on the ad and choose "block images from...". Reload the page and all ads from that server will be gone.

Monday Aug 02, 2004

Unintended Consequences

I recently posted to my blog, and (in a blinding flash of intelligence) set the date so the post would appear sometime the next workday. The Law of Unintended Consequences of course kicked in, and several fun things proceeded to happen. First, the post utterly vanished into limbo. This in turn prevented me from seeing what it would have looked like had I managed to get the thing to appear online, which (evidently) can be different from what it looks like in preview mode. Then, as the server clock ticked past the date set in the blog posting, everything magically appeared to the world. I was by this time off on other adventures blissfully unaware of anything blog-related, and so naturally the system chose this occasion to chew the post up and spit it out as a bunch of unreadable textual fragments interspersed with unclosed HTML tags and about ten screens worth of horizontal scrolling. That morning as I sat down with a hot cup of coffee to read my email I noticed new comments on my blog and quickly became aware of the problem. I fixed the problems and proceeded to post this followup explaining what happened, and as I was submitting Firefox chose that time to crash. Fortunately I had (in another blinding flash of intelligence) done a COPY of the textual content of my post just as a safeguard. Unfortunately the crash wiped my COPY buffer, so this is the second time I have typed this (minus this bit of course). I also have had to tamper with the publish dates of these postings to get them to appear in the regular list of recent postings on Sun's blog homepage. During all this time my coffee released most of its heat into the air of my office, kicking the ambient temperature up a tenth of a degree and affecting thermal convection currents in the building. I have no doubt this chain of consequences will continue to proceed infinitely beyond my ability to perceive, drastically affecting hurricane patterns in southeast Asia and ultimately the course of world politics, but it's more or less out of my hands now.

Tuesday Jul 20, 2004

The Conspiracy is the Theory

Conspiracy Theory is analogous to an internet worm, henceforward referred to as worm.ct, where the systems being infected are human minds, the network is any communication between them, and the security flaw is an overflow in the mind's incredulity buffer.

How the Virus Works:

First a signal containing the worm.ct payload is transmitted from an infected host to a non-infected host (i.e. Victim). Victim is immediately struck with a sense of incredulity so strong that an overflow occurrs in Victim's incredulity buffer. Skeptical, but wide-eyed comments starting with "What the..." might be uttered at this time.

At this point, what should happen is Victim's Crap Detection Process (CDP) (part of the logic system) would quarantine this particular memory block so that no malicious code will be executed. Eye-rolling might represent Victim bouncing the request and closing the connection, or Victim might allow the connection to fail silently out of politeness; doing the smile-and-nod while internally routing everything to /dev/null.

Unfortunately what sometimes happens is that the buffer overflow causes the CDP to hang, and malicious worm.ct instructions are executed in Victim's trusted memory. These instructions effectively trojan the CDP so that each time it runs it exits without error if the topic resembles any kind of Conspiracy. This is done by using a recursive algorithm that could be expressed in English as "The very act of questioning the existence of the Conspiracy further proves the existence of the Conspiracy." This is the core of worm.ct and gives it high-level clearance within Victim's logic system.

Even so, worm.ct cannot freely propagate itself without authorization from Victim's emotive system. This is trivially done by embedding code sequences within worm.ct such as "A group of five people secretly own and control all of the world's banks" and "The US government is concealing an alien plot to take over the world". Such sequences almost always trigger the Sensational Story Daemon (SSD) which, like most of the emotive system, runs independently of the logic system. SSD assigns a high-level authorization with the emotive system, thus worm.ct is free to propagate; as evidenced by various elements in today's society.

Fortunately, patches are available in the latest security bundle available at or, alternatively, the FTP mirror sites and There are still quite a few compromized machines out there spewing this worm so, please, remember to patch your current system and/or any new ones you bring onto the network.

Wednesday Jun 16, 2004

Learning Information Technology by Misinformation

When I encounter almost any tutorial designed to launch me into a new space of IT, for example Java Server Faces, I almost always bounce off it; as if there was an impedance mismatch between my brain in its current state and my brain as it should be if it were going to grasp the new concepts. There's an attitude that says "You need to understand it first in order to understand it". I find it almost totally useless almost all of the time, and it's frustrating.

If I keep searching around the web, there usually seems to be a point at which the bubble bursts—that impedance layer between my brain and the new concept rips a little bit—and suddenly I'm on my way.

Now here's the strange part: it's usually a flippant or inaccurate remark that clues me into a core concept. A comment like The whole point of Java is to keep you from shooting yourself in the foot would offend and bother the typical Java purist (the kind who write official tutorials, incidentally), but remarks like this have helped me learn IT ever since I first started in this business. Here are some others:

  • XML is just HTML where you can invent your own tags.
  • JSP is just an alternate way of writing a Servlet.
  • SQL is pretty much just English commands for a database.
  • If Perl is spaghetti code, then Java is ravioli code.

This phenomenon isn't really a revelation, but it always strikes me that so many attempts to teach don't acknowledge the power of these flippant remarks. The impedance barrier needs to be broken in order for people to learn, even if it means offending technology snobs. I propose a website where different concepts in IT are ripped apart and made fun of, for the greater good of giving those who wish to learn a chance to shred the impedance barrier and jump into the fray. After that we can browse back to and read the inscrutable tutorials with a more enlightened eye.

Viva la Ravioli!


My name is Greg Reimer and I'm a web technologist for the Sun.COM web design team.


« April 2014