statico's Journal statico's use Perl Journal en-us use Perl; is Copyright 1998-2006, Chris Nandor. Stories, comments, journals, and other submissions posted on use Perl; are Copyright their respective owners. 2012-01-25T02:10:19+00:00 pudge Technology hourly 1 1970-01-01T00:00+00:00 statico's Journal I also have a new blog <p> I've moved my regular journal/blog over to <a href=""></a>. RSS feeds of the <a href="">journal entries</a> and the <a href="">journal + photos + links</a> are available.</p><p>I'll still post or crosspost Perl-related things here, however. </p> statico 2006-10-09T01:08:02+00:00 journal the problem with ants <p> The problem with ants is that they have poor business-management skills. I'm no contractor, but let me tell you that if I were an ant, I could do things better.</p><p>Two months ago I purchased an <a href="">AntWorks ant farm</a>, was filled with thirty-odd brown Florida harvester ants. I took some <a href="">nifty macro photos</a> of it, too. </p><p>The directions instruct you to poke four holes in the blue gel, which prompts them into digging. The first mistake was that they picked one of the short holes to begin expanding. It's obvious now that the ants learned lessons from the unions and want to bill more time.</p><p>Additionally, the ants are obviously English, not Floridian. They've build multiple roundabouts in their tunnels in areas that obviously support sufficient two-way traffic. Unnecessary!</p><p>According on the enclosed publication, the life span of a brown Florida harvester ant is about two-to-three months. Some of the ants have by now perished, and a few bodies were thrown into an isolated pit and sealed off. Dead ant bodies grown fungus, so they're intelligent in that they try not to gag themselves on deadly spores.</p><p>Some moron, however, decided to <strong>seal the ant grave prematurely</strong>. Their solution? Dismantle the body of every ant deceased thereafter, and <strong>glue her parts to the wall of the display</strong> like some sicko avant-garde modern art. Maybe it's a cultural thing, but I'd slap the piss out of my kids if they ever cut my dead body up and glued parts of me to a window. </p> statico 2006-08-27T07:36:05+00:00 journal dinner <p> I made a delicious dinner for friends: </p><ul> <li> <a href="">Tasty roasted asparagus</a> </li><li> <a href="">Spicy brown mustard chicken</a> </li><li>Rice pilaf </li></ul><p> I've also subscribed to perl6-all. Maybe I'll learn something. </p> statico 2006-07-09T04:28:00+00:00 journal pictures finally posted <p> The cable guy arrived today so I finally had a chance to upload road trip photos:</p><p> <a href=""></a> </p> statico 2006-06-03T02:32:26+00:00 journal the road trip ends.. kind of <p> First, the biggest news first: I'm now engaged to Emily, my girlfriend of 3.5 years. Details forthcoming.</p><p>Next, if you ever find yourself East of Yosemite in a little town called Lee Vining on the edge of Lake Mono, make sure that you eat at Nicely's Restaurant. It's a damn good diner, and it's the first place I've seen to offer a French dip with pastrami.</p><p>Emily and I arrived in Mountain View yesterday and signed the lease for the new apartment. It's a really nice neighborhood, it has nice facilities, and even the landlord lives on the premiss with her kids. Too bad our belongings don't arrive until probably Tuesday -- the day after Emily and I begin work at our new jobs.</p> statico 2006-05-30T05:18:26+00:00 journal yellowstone <p> Emily and I woke up in our windowless, "traditional" hotel room at Buffalo Bill's Wild Cabin or something or other in Cody, Wyoming. We went to breakfast where Emily reviewed the photos she had taken. After twenty minutes, there wasn't a waiter/waitress to be seen, so we left and told the host that we weren't hungry. We didn't leave without getting a few authentic Wyoming postcards.</p><p>Because points of interest are so frequent while driving, Emily and I have established intuitive synonyms for certain things so that we can draw each others' attention as quickly as possible:</p><ul> <li>"Moomoos" means a group of cows, preferably arranged in a picturesque manner </li><li>"Choochoo" means there's an amazingly long freight train </li><li>"AUAUUUUGGUGHHHH" is translated simply to, "Holy shit, there's a stray dog in the road and you're going to hit it!" (verbatim) </li></ul><p> No mammals have been injured on this trip, however, there's a hearty gallon of insect entrails on our windshield and front bumper. Seriously -- constructing an animal with a poor traffic negotiation skills and a body like a chocolate-covered cherry is grounds for firing.</p><p>Yellowstone is amazing, and we've spent a good seven or eight hours there, including last night. Like Big Horn, I lack the verbal prowess to actually describe these amazing landscapes. We saw lots of buffalo and their smaller, more-frisky offspring. A few red eagles and deer and such were also present. The lake at 7,700 feet is tremendous -- deep blue with the Rockies in the background. </p><p>The volcanic activity in Yellowstone is pretty neat, too. There are some brilliantly-colored pools of water or acid or something which both look pretty and smell like ass. The "thin crust" areas contain lots of hot, clay-ish bubbling pools. If you walk off the official path, signage warns that you'll probably put your foot into soft part of earth and, to your dissatisfaction, a well of acid will eat off your leg right in front of you. Also, no visit to the park would be complete without seeing Old Faithful, so we caught that, too.</p><p>What's most prevalent is the damage from the fire -- late 80's or early 90's, was it? A lot of the burnt forest has grown back grass or small saplings, but I suspect that the damaged parts won't be as lush or green as it once was for another twenty years.</p><p>The "check engine" light in the Corolla is still on. As we expected, the vehicle has not yet burst into flames, jerked us around suddenly or even caused a ripple in space and time. So far, so good. </p> statico 2006-05-27T04:14:39+00:00 journal the road to Google continues <p> Before our house in New Hampshire exploded, my dad and I maintained a large, O-gauge train set in one of the barns. The walls of the large room were the edges of the set, and on these walls was a kind of scenic wallpaper -- basically, large paintings of the horizon and desert and mountains and clouds and the like. It's now obvious that those were paintings of Wyoming, for the skies and scenery were a close match to what I remember.</p><p>The check engine light came on again and we have no way of knowing exactly what's wrong. (Thanks a million, Toyota... HALUGHALUGH) The car had a full check-up and inspection right before the trip. It's been driving terrifically and there's no obvious weirdness under the hood, so we're going to assume it's something minor. </p><p>Note: One of the Napa guys suggested that we stay away from Ethanol-enriched gas. He claimed that it vaporizes at 82 degrees Fahrenheit (a government-suppressed fact, no less), which causes the engine to do all sorts of weird things. He kept repeating the phrase "vapor-lock."</p><p>Today we explore the extent Yellowstone. Yesterday we got up to the lake in the mountains, but it was too late in the evening. We had to turn around before the gate closed at 8:00 pm.</p><p>Still no pictures. My little Pismo is six-years strong, but the processor is finally beginning to show its age. It's annoyingly slow when trying to organize photos with <code>gthumb</code>. Soon, I promise.</p> statico 2006-05-26T14:31:50+00:00 journal Mount Rushmore was never finished <p> Only 200 miles today, but that's because we had a lot to stop, see, and repair.</p><p>The Badlands is an impressive place. I can't describe it into words at the moment. Pictures will be up soon.</p><p>Coming out of the Badlands the "check engine" light appeared on Emily's Corolla. I checked the levels of all of the non-potable, non-human fluids and consulted the owners manual, which offered such helpful advice like, "When this light appears, bring the vehicle to a licensed Toyota repair location." A bit more reading revealed that it could be one of many things, including a crappy battery. The latter reminded Emily that her mechanic had told her that she needed a new battery. Twenty miles, $90, and a helpful chat with guys at Napa Auto Parts, she had one. Problem solved.</p><p>These mid-west highways are littered with billboards. After three-hundred and sixty miles of advertising, we stopped at the famous "Wall Drug" to see what it was all about. Mostly cowboy boots and other garb, unfortunately. </p><p>We also checked out some petrified logs and fossils. Again, pictures will be up soon.</p><p>Mount Rushmore is impressive. I had never realized that the sculpture is unfinished. A model in one of the buildings shows the original plan which, if completed, would have at least tripled the monument's amazingness.</p><p>I've continued to fill my face with bison/buffalo/local meats. Amazingly, the restaurant in Rapid City, SD had Sam Adams. That taste has never been so refreshing, and we're wondering just how far west we'll be able to get it so easily. </p> statico 2006-05-25T14:11:47+00:00 journal a museum? made of SPAM?! <p> Wisconsin is a nice state. Driving West, a few ancient, sedimentary pillars stand along the highway to remind folks that the whole area was underwater a few millennia ago. We also picked up authentic Wisconsin cheese at an authentic Wisconsin cheese factory located off an authentic Wisconsin highway exit.</p><p>Next, a few quick facts about the state of Minnesota:</p><ul> <li>Number of lakes the state claims to contain: 1,000 </li><li>Number of lakes seen along Interstate 90: 2 </li></ul><p> Minnesota was also home to -- yep, you guessed it -- the Spam Museum. Hormel's tradition of high-quality marketing is shown in the form of a giant canned meat emporium. One learns how Spam is made, Spam history -- fricking<nobr> <wbr></nobr>/everything/. Of course, one can't leave the Spam Museum empty-Spam-handed, so I picked up a small Spam "snack pack" and Emily grabbed a small "Spammy the Pig" plush doll.</p><p>Memorandum -- I was quite surprised at the level of quality that the company aims for; I had always thought they simply tossed as much ground-up meat into a can as possible. A can of spam contains only four simple ingredients, despite popular belief: salt, sugar, sodium nitrate (preservative), and choice pork shoulders. </p><p>615 miles were driven today. Emily and I are spending the night in Oacoma, South Dakota. I enjoyed my buffalo burger and creamed cucumbers, Emily enjoyed her pork chop. It's nice to eat somewhat-homecooked food grown in the area. </p> statico 2006-05-24T03:04:52+00:00 journal hello wisconsin <p> Five-hundred and fifty miles later, Emily and I are in Janesville, Wisconsin. We're up to chapter 19 in <a href="">Dracula (MP3)</a>. So far, everything kind of looks like New England, with varying degrees of farm land and Earth hilliness.</p><p>Merely a handful of photo moments occurred, and I only felt like uploading <a href="">a single shot with some sunlight bouncing off a silo</a>. I really should have stopped and snapped shots of those donkeys running around, but they were kind of distant and I don't have a telephoto lens.</p><p>Emily and I met up with <a href="">Andy, Amy, Quinn</a>, <a href="">Pete and Rachel</a> today as we toured through the Chicago area. It's great to see fellow Perlers and their families, and Emily and I were provided with terrific directions to Janesville. Thanks, guys! </p> statico 2006-05-23T02:16:02+00:00 journal welcome to Erie, PA <p> Computers typically make use of a "central processing unit," or CPU. After careful self-analysis during today's drive, I've realized that I make use of an "Ian processing unit," or IPU. Much like a CPU, the IPU can perform a lot of work so as long as the activity remains below a maximum threshold level. </p><p>Herewith an illustrative example: The IPU might be busy with two tasks. First, the IPU might trying to maintain a comfortable speed of 80 miles-per-hour on Interstate 90 westbound while trying not to get blown off the road due to disturbingly-high winds. Second, the IPU might be listening to the eleventh chapter of <a href="">Bram Stoker's<nobr> <wbr></nobr>/Dracula/ courtesy of the LibriVox free audio book project</a>. This would leave absolutely no IPU power for such tasks such as, say, noticing when precisely the light on the fuel gauge became lit. </p><p>(Emily's Corolla gets 30-35 miles after the fuel gauge lights up, so we were more than fine. Here's where you get to imagine nervous chuckling.) </p> statico 2006-05-22T00:50:25+00:00 journal road trip to cali <p> Emily and I are packed. Tomorrow, movers from TransAmerica will drag our belongings out of the house, and this weekend we'll begin our road trip across the country. It's actually cheaper for us to drive across the country and stay in hotels than for us to ship her car over and buy plane tickets.)</p><p>Let's review the plan, courtesy of AAA's TripTik plan:</p><ul> <li>May 21st - Leave Boston, MA, drive down I-90 to Erie, PA. Pass the vineyards, maybe stop in Dunkirk. </li><li>May 22nd - I-80 then I-90 and then I-89 to Janesville, WI. Apparently Dells, WI has some nifty sandstone. There will be some realization of how much driving remains. </li><li>May 23rd - I-90 through foresty Minnesota, then more Minnesota, then the rest of Minnesota. Eventually we'll hit Oacoma, SD. </li><li>May 24th - Continue on I-90 (surprise) to Rapid City, SD. Check out Mount Rushmore, Crazy Horse, Black Hills, etc. Is it politically correct to ask for a bison burger? </li><li>May 25th - Follow I-90 north of the Black Hills to Cody, WY, right outside Yellowstone National Park. </li><li>May 26th - Check out that famous geyser and the rest of Yellowstone. Carry on to Salt Lake City, UT. </li><li>May 27th - I-80 to route 95 to the Yosemite Gateway Motel. </li><li>May 28th - Check out Yosemite if we're not too sick of driving. Proceed to Mountain View, CA. Retrieve keys to new apartment, then make a visit to In-n-Out Burger. </li></ul><p> I'll try to keep a log here and post some intermediate pictures on <a href="">my Flickr account</a>. Huzzah! </p> statico 2006-05-18T04:49:57+00:00 journal fin <p> College... check</p><p>That was quite a ride, this last semester. Instead of the general rule of taking easy classes during one's last semester, I had exactly four requirements to fill up. If you ever need an explanation of the linguistic properties of American Sign Language, I'm your guy.</p><p>(wipes brow)</p><p>Now, onto finding an apartment in Silicon Valley and beginning work on further interesting things. Can you say "road trip?" </p> statico 2006-05-02T13:38:19+00:00 journal stopgap <p>This is one of those "Holy hell I've been so busy" journal entries. Instead of sewing wit into crafty excuses, I'll simply enumerate what's been going on:</p><ul> <li>I've written the interesting parts of a source-to-<a href="">MacScheme</a> compiler for my <a href="">compilers class</a>. </li><li>I've studied and implemented various graphing algorithms (<a href="'s_algorithm">Dijkstra's</a>, etc.) </li><li>I've given a presentation on what one might learn from administering the <a href="">Stroop color-word test</a> to <a href="">CODAs</a>. </li><li>I've written piles of labs describing the results of various perception experiments, such as the <a href="">Muller-Lyer illusion</a>. </li><li>I've accepted a job offer with a terrific company in California. Emily and I will be moving out there at the end of May. </li></ul> statico 2006-03-29T05:19:18+00:00 journal bass on the brain <p> The neck of my Peavey Foundation bass guitar is only slightly warped, even after years of neglect. Despite the action being too high and needing a new set of strings, it stays in tune. I'm not bothered with its condition because it's only the beater instrument. </p><p>However, when I pick the bass up and begin to play, my frustration grows. My technique has become sloppy. My walking bass improvisation has vaporized. My fingers are much more used to writing code than practicing modes and scales. I can hear the melody to "Oleo" in my head, but it takes a while to play it again. </p><p>I haven't played bass guitar seriously in five years, and I feel like crap admitting to it. I can picture the high-school version of myself gawking if he were to hear such a fact -- let alone my music or bass teachers. </p><p>When I was a senior in high school, I was happily cranking away tunes with my friends, my copy of Reason, or both. Then college happened. I was immersed in the depths of computer science and learning many new things, so I decided to put the music on hold. A few tracks percolated with a sprinkling of jam sessions, but nothing serious. I began to spend a lot more time listening to music than playing it.</p><p>Now, in the present, I know that a happy day is approaching quickly. In the next few months I'll have secured a permanent job. After graduation I plan to have my good bass, a Peavey Cirrus with neck-thru-body and a wenge &amp; walnut finish, tuned and oiled. As much as I deeply enjoy my involvement with my university, I'm going to welcome the time I'll have to play music instead. When I carry my guitar out of the shop I'll be thinking of the next couple of years, who I'll find to jam with, what it'll be like to live in <code>$location</code>. And I'll be smiling.</p> statico 2006-01-23T00:50:24+00:00 journal openings <p>The first sentence of any piece of writing is important, and last night I read one of the best openings ever written. It sits atop the acknowledgements of <a href=";popup=0&amp;isbn=0740748475">The Complete Calvin and Hobbes</a>, a 30 lb., 3-volume boxed tome that contains every <em>Calvin and Hobbes</em> comic strip every drawn: </p><blockquote><div><p> <tt>"As flattering as it is to have a lavish book like this,<br>it can be a little disturbing to see one's own career<br>embalmed in a box..."</tt></p></div> </blockquote><p>The ingenuity is underscored by appropriateness. Watterson downplays the magnitude of the collection, yet the contents of the box contains a large staple of my childhood.</p><p>Another teriffic opening is on <a href="">the back cover blurb for Perl Testing: A Developer's Notebook</a>, written by chromatic:</p><blockquote><div><p> <tt>"Can you think of a sexier topic in software development<br>than software testing?"</tt></p></div> </blockquote><p>If there's a hall of fame for this sort of thing, let me know. I have two nominations. </p> statico 2006-01-08T23:38:47+00:00 journal switching backgrounds in Gnome 2 <p> One reason to use open-source software is if you enjoy the ability to create or alter any of the tools you use. I use Linux and the Gnome desktop environment, and I'm confident that if there's something that I want to do -- a customization or an application -- I can probably do it in Perl. If I can't, I can probably do it in Ruby. If not Ruby, there might be command-line tools. And if none of those are available, I can do it in C.</p><p>Every couple of minutes, the background on my dad's laptop changes to a random picture. The picture is one of many in a directory of Eleuthera images, some of which are <a href="">mine</a>. This sort of behavior doesn't exist for Gnome, plus I'm not always online with the ability to search for a solution, so I was curious as to how much work would be needed to this happen.</p><p>I fired up <code>gconf-editor</code>, the Gnome configuration editor, and searched for "background." Sure enough, there was a preference called<nobr> <wbr></nobr><code>/desktop/gnome/background/picture_filename</code> whose value was an absolute path to the current background image. There were also other options to set the layout and background color.</p><p>Having the Gnome2 packages installed, I tried using <a href="">Gnome</a>2::Config to set the path to the background image:</p><blockquote><div><p> <tt>#!/usr/bin/env perl<br>use strict;<br>use warnings;<br> <br>use Gnome2;<br>Gnome2::Program-&gt;init( 'random-background', 0.01 );<br> <br>my $path = '/desktop/gnome/background/picture_filename';<br>Gnome2::Config-&gt;set_string( $path,<br>&nbsp; &nbsp; '/home/ian/pictures/to_upload/IMG_3644.JPG' );</tt></p></div> </blockquote><p>This, unfortunately, didn't work at all. Before <code>set_string()</code>, the string returned by <code>get_path()</code> was empty. Afterwards, tests using <code>get_string()</code> claimed that the image <em>had</em> been set, but the background hadn't changed. Harumph.</p><p>Next I tried to use Ruby. Unfortunately, the Gnome libraries for Ruby weren't installed, so I looked for a command-line solution instead.</p><p>The <code>gconftool-2</code> utility, which allows you set and get parameters on the command-line, worked perfectly. The following program takes one or more directories as arguments, finds all<nobr> <wbr></nobr><code>.jpg</code> files in those directories, and picks one randomly and sets it as the background:</p><blockquote><div><p> <tt>#!/usr/bin/env perl<br>use strict;<br>use warnings;<br> <br>use IO::All;<br> <br>die "usage: $0 &lt;directory&gt;<nobr> <wbr></nobr>...\n" unless @ARGV;<br> <br>my @pictures = grep<nobr> <wbr></nobr>/\.jpg$/i, map { io($_)-&gt;deep-&gt;all } @ARGV;<br>my $picture&nbsp; = $pictures[ rand @pictures ];<br> <br>my @options_to_set = (<br>&nbsp; &nbsp; [ 'picture_options',&nbsp; 'scaled' ],<br>&nbsp; &nbsp; [ 'picture_filename', $picture-&gt;absolute-&gt;pathname ],<br>&nbsp; &nbsp; [ 'primary_color',&nbsp; &nbsp; '#444444' ],<br>);<br> <br>foreach my $tuple (@options_to_set) {<br>&nbsp; &nbsp; my ( $key, $value ) = @$tuple;<br>&nbsp; &nbsp; system(<br>&nbsp; &nbsp; &nbsp; &nbsp; 'gconftool-2',<br>&nbsp; &nbsp; &nbsp; &nbsp; -t =&gt; 'string',<br>&nbsp; &nbsp; &nbsp; &nbsp; -s =&gt; "/desktop/gnome/background/$key",<br>&nbsp; &nbsp; &nbsp; &nbsp; $value<br>&nbsp; &nbsp; );<br>}</tt></p></div> </blockquote><p>This doesn't, however, perform the sexy fading transitions that Mac OS X does. I figure it's close enough for now. </p> statico 2006-01-01T02:50:54+00:00 journal gift woes <p> <a href="">Gardener's Supply Company</a> shipped out the package on Monday via UPS Next-Day Air. It's Saturday, so where is it?</p><p> <a href=""></a> lists the package with a "Rescheduled Delivery" date: today. During some investigation a UPS employee told me that this is really code for "we lost your package, recovered it Friday, and are shipping it today." Normally, aside from my annoyance, this wouldn't have been a problem -- except that I'm leaving the country tomorrow and UPS doesn't deliver on Saturdays here.</p><p>Serves me right for cutting this so close. At least they're refunding the difference of the next-day shipping, a service which I did not receive.</p> statico 2005-12-17T23:25:28+00:00 journal my code is gold <p> This past Spring, at some point in my Software Development class, I had an opportunity to mimic a joke I once heard. <em>Professor,</em> I said, <em>all my code is perfect. I assume that any bugs I find are in the Perl language itself.</em> It was funny because it was so absurd. We all laughed and chortled.</p><p>Now, it's not funny anymore. A claim with this level of silliness has appeared.</p><p>First, consider the basics of trusting user input. Would you ever write the following CGI script?</p><blockquote><div><p> <tt>#!/bin/sh<br>echo "Content-type: text/plain"<br>echo<br>eval $QUERY_STRING</tt></p></div> </blockquote><p>Somewhere, halfway around the world, a kid punches in <code>"</code> and erases what he can of your hard drive and attached storage. The consequences are obvious.</p><p>After this occurred, however, would you blame <code>sh</code>? Is every implementation of <code>sh</code> around the planet broken? Of course not. So why is <a href="">Webmin blaming Perl for a similar mistake</a>?</p><blockquote><div><p> <tt>Perl syslog bug attack<br> <br>Effects Webmin versions below 1.250 and Usermin versions below 1.180, with<br>syslog logging enabled.<br> <br>&nbsp; &nbsp; When logging of failing login attempts via syslog is enabled, an<br>&nbsp; &nbsp; attacker can crash and possibly take over the Webmin webserver, due to<br>&nbsp; &nbsp; a bug in Perl's syslog function. [...]</tt></p></div> </blockquote><p>Take a look at the <a href="">vulnerability details</a>. Webmin passes some user input right to <code>sprintf</code>, which is <a href="">known to be about as safe</a> to pass user input to as the <code>eval</code> keyword. Yet, the developers blame Perl.</p><p>(A correction has been emailed.) </p> statico 2005-12-13T05:34:08+00:00 journal knowledge <p> A month ago I was saying to myself, "I know a large amount of stuff. I believe that I'm well off in terms of knowledge." I was confident that I'd be ready to be plopped on the front lines of the job market wearing shiny armor and carrying a mighty-powerful axe. This vision, however, has been slightly tarnished by the realization that I might not be as well-prepared as I had thought.</p><p>Let's pretend my future boss says, "For this, you'll probably want to create blabbity-blah and write your own parser." A parser, madame? Erm, uh, kinda, well, gee, uhm, hlaughalugah, context-free grammar? What? Yes, I understand the basics. I'm aware that LL is easier than LR, but I'm a bit unclear as to why left-recursive grammars can't be handled by top-down parsers. </p><p>Compilers is a part of my brain that, when accessed, responds with unnerving silence. Recalling the time in New Hampshire when I was planting anti-gopher bombs and accidentally inhaled some of the orange, peas-and-carrots-smelling poisonous gas, I feel like that event formed some gaping cavity in my skull. Cut away half of Ian's brain and you'll see said cavity, and inside will be a small, crumpled Post-it note enscrawled with "TODO: learn compilers."</p><p>The worry is that I can't fill this hole in my head the way I curb all other knowledge cravings. When I want to know something, the magical Internet showers me with all sorts of material I can submerge myself in. XSLT's <code>key()</code> function? Currying? JavaScript as a programming language? Etymology of the word <em>truant</em>? Give me a day, sir, and I shall digest, consume, <em>surround</em> myself with this material, and I will store it among the other fine truffles of information in my head. </p><p>Enter parser-generators. The VH1 true story of <code>yacc</code> and <code>lex</code>. "Ian, you know automata, right," I'll think to myself. This subject, unlike the aforementioned, is like the rock-climbing wall with slippery pegs. Kwowing the <em>why</em> of compilers and parser-generators isn't just documented in a HOWTO somewhere. This subject, unlike the aforementioned, requires a significant <em>guru</em>, to give me a hand from over the top of the rock-climbing wall. This subject isn't just Ajax or knowing why you can modify a shell script while it's running -- this is <em>bad-ass knowledge</em>.</p><p>Programming Languages. Algorithms. Automata. Operating systems. Databases. Compilers. Grab your college/university's Computer Science course listing and look at the bottom half. This is bad-ass knowledge. This is the stuff that, when known, lets one understand not just <em>how</em>, but <em>why</em>.</p><p>I'm confident that I'll always be able to get the <em>how</em>; I'm scared that I don't know enough <em>why</em>.</p><p>For various reasons that I won't get into here, I switched from a Computer Science degree to a <a href="">dual major in Computer Science and Cognitive Psychology</a>. The reasons, however, do not outweigh the fact that I won't be able to take a compilers, algorithms or operating systems class. My fault? Likely. </p><p>A lot of my education has been memorize. Ask me why drive reduction theory is silly. Or characteristics of a well-managed team. Or how it's possible to calculate the size of a distant object at the other end of the galaxy. These are all things I've had to memorize and, for the longest time, I mistakingly thought that, in this field, piles of facts was the path to go.</p><p>Here's the solution, assuming that time-travel is possible. Future Ian borrows a time machine and warps back in time to Early Ian, just as he's entered college. Future Ian sits Past Ian down and asks, "You want to be a bad-ass computer science ninja, right?" Past Ian nods even though the questions was obviously rhetorical. "Don't switch majors. Take all the hard CS classes you can get your hands on. It's not about learning lots of things, it's about learning <em>why things are</em>." Past Ian nods despite obvious time-continuum paradoxes. Before Future Ian warps out he leaves some cliche last advice: "Oh, and when you're offered tons of peach schnapps, don't make a night out of it. You'll get sick and lose a pair of pants." </p> statico 2005-12-02T04:11:47+00:00 journal error <p> <a href="">Eric Sink says</a>,</p><blockquote><div><p> <tt>`The real experts in the field of software testing can speak<br>at great length about the many different kinds of testing.<br>There is unit testing, regression testing, integration<br>testing, system testing, black box testing, white box<br>testing, stress testing and that funky "Australian rules"<br>testing where you have to hit the bug with your fist.&nbsp; These<br>guys can pick any one of these types of testing and write an<br>entire textbook on it.'</tt></p></div> </blockquote><p>Please make sure you register your copy of <a href=""></a> soon. We'll be providing blow-in errata pages that cover <a href="">Test::Australian</a>. </p> statico 2005-11-28T17:23:59+00:00 journal Color::Scheme <p> <a href="">Color::Scheme</a> has been released to the CPAN. It's a Perl implementation of the blisteringly-useful <a href="">Color Scheme Generator 2</a>, which generates fantastic sets of color harmony that are usually ready for immediate web use. </p> statico 2005-11-18T01:59:54+00:00 journal magnatune music <p> I ordered two albums from <a href="">Magnatune</a> recently:</p><ul> <li> <a href="">Brad Sucks - I Dont Know What Im Doing</a> </li><li> <a href="">Rocket City Riot - Middle Age Suicide</a> </li></ul><p> Both albums are freely available from Magnatune under the hope that one donates to the artist. I paid about $13 for each album in physical form, both of which arrived today.</p><p>Unfortunately, after seeing <a href="">the Brad Sucks album on Amazon</a>, I'm a little disappointed. I expected to get the CD in full retail form with cover art, CD artwork, maybe a lyric sheet, and thanks to Mom. Instead, I got a generic Magnatune CD and case&#151;the only visual difference between the albums is the artist and album title. </p><p>It's okay. I've got the peace of mind knowing that half my money went right to the artists, and hopefully they'll have a beer on me. Rock on. </p> statico 2005-11-18T01:30:22+00:00 journal threading <p> Someone mentioned certificates on the mailing list. If this thread grows to beyond 15 messages, I'll add a post, "When the last giant thread happened, I felt guilty for not contributing. To absolve myself of any future guilt due to the lack of a contribution to this thread, here's some useful information about alligators."</p><p>And then I'll paste some useful information about alligators.</p> statico 2005-11-14T16:28:43+00:00 journal realistic deaths with BSOD <p> The BSOD ("Blue Screen of Death") screensaver that comes with xscreensaver is really creepy. The "Sorry, a system error occurred" dialog still produces that stomach-flipped-inside-out-and-is-eating-my-spleen feeling despite not seeing the real thing for <em>years</em>.</p><p>From a distance, the screensaver is quite convincing. Up close, however, there are a few details that need to be tweaked. First, the <a href="">MacsBug screen</a> needs to use the original Monaco 9pt font. Second, DOS and Linux screens need to use the 8x16 console font and use a dimmer color for the text. </p><p>BSOD has some undocumented, tweakable X resources that can be set, and the aforementioned fonts are freely available in PCF format. "ProFont for Linux/UNIX" can be downloaded from <a href="">here</a> and 8x16 is part of the "xfonts-konsole" package on Debian/Ubuntu. After installing them I added the following to my ".Xdefaults":</p><blockquote><div><p> <tt>BSOD.Windows.font:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-*-console-*-*-*-*-16-*-*-*-*-*-*-*<br>BSOD.Windows.foreground:&nbsp; &nbsp;Grey90<br>BSOD.Mac.font:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-*-profont-*-*-*-*-11-*-*-*-*-*-*-*<br>BSOD.MacsBug.font:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-*-profont-*-*-*-*-11-*-*-*-*-*-*-*<br>BSOD.macX.font:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -*-console-*-*-*-*-16-*-*-*-*-*-*-*<br>BSOD.Linux.font:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-*-console-*-*-*-*-16-*-*-*-*-*-*-*<br>BSOD.Linux.foreground:&nbsp; &nbsp; &nbsp;Grey90<br>BSOD.SparcLinux.font:&nbsp; &nbsp; &nbsp; -*-console-*-*-*-*-16-*-*-*-*-*-*-*<br>BSOD.SparcLinux.foreground: Grey90<br>BSOD.BSD.font:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-*-console-*-*-*-*-16-*-*-*-*-*-*-*<br>BSOD.MSDOS.font:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-*-console-*-*-*-*-16-*-*-*-*-*-*-*<br>BSOD.MSDOS.foreground:&nbsp; &nbsp; &nbsp;Grey90</tt></p></div> </blockquote><p>Until now, the shrieks of terror from the thought of losing all of my work have been quiet. I can assure you that they are now quite audible.</p><p>(If you're having trouble getting it working, leave a comment.) </p> statico 2005-11-13T02:50:50+00:00 journal probability <p> What is the probability that, on the same day, I would discover that <code>rxvt</code> has a 400-column limit <strong>and</strong> <a href="">find a use for the X11 "nil" font</a>? </p> statico 2005-11-07T22:21:00+00:00 journal call for help <blockquote><div><p> <tt>Subject: Replacement wrist wrests?<br>Date: 4 Nov 2005 10:14:44 -0500<br>From:<br>To:<br> <br>I have a Kinesis Advantage keyboard, but the supplied wrist<br>wrests have already worn out after a few months of use. I am<br>not only looking for replacement adhesive wrist pads, but<br>I'm curious if I can purchase _thicker_ wrist pads -- I'm<br>thinking about 1/2-inch thick -- so that my wrists will be<br>even more correctly aligned. Do you sell such an item or<br>know where I can obtain them?</tt></p></div> </blockquote><p>(time passes)</p><blockquote><div><p> <tt>Subject: RE: Replacement wrist wrests?<br>Date: Fri, 4 Nov 2005 08:48:37 -0800<br>From:<br>To:<br> <br>Hi Ian,<br> <br>The only palm pads we sell for our keyboards are the ones<br>which came with the original keyboard. If you would like to<br>purchase additional pairs, please visit our web site at<br> and click on "How to Buy" and follow the<br>link to our online store. The replacement palm pads sell for<br>$8 per pair.<br> <br>Please let me know how I may further assist you.</tt></p></div> </blockquote><p>In the mean time, maybe I can cut one of those silicon stress balls in half and stick 'em to the <a href="">Advantage</a>'s wrist rests. </p> statico 2005-11-04T16:57:35+00:00 journal p seen * terrorist oof Milk <p> <strong>Update:</strong> I meant to include a bit more useful information. I liked writing on the tablet, and the stylus' response seemed quicker than the last time I tried writing on a Tablet PC. The X series is also really, really light, and simply felt like I was holding a well-packed three-ring binder. I wish I had had one when I first started college as they would have been incredibly useful.</p><p> <a href="">A friend</a> just got a new IBM ThinkPad X series tablet. I got to try out its notetaking capabilities by copying down some notes from the whiteboard. This morning I was sent the translated results:</p><p>(<a href="">original appearance</a>)</p><blockquote><div><p> <tt>Nissans Juan PPS<br>IDP<br>result em strong &amp; INANES<br>111<br>But ousts<br>BWs sirdar Front<br>seaware<br>INF browse FI<br>stems 366<br>rewove y<br>Ms<br>Prompt PDE<br>-vermivo Thorns 13005005<br>upturns Fosse<br>-fees<br>-evil irks from Ps, If VDUS<br>astrals Wrote FP<br>-Desorbin- Nation morions<br>firs Jfk<br>_<br>news _ Missort we<br>"Seton F Nervous w/ blue sneers<br>p seen * terrorist oof Milk<br>m</tt></p></div> </blockquote> statico 2005-11-03T14:01:58+00:00 journal flickr whacking <p> I seem to be the only result for <a href="">photos tagged with "Tomb Raider" and "tattoo."</a> </p><p>I haven't decided if that's a <em>good thing</em>. </p> statico 2005-11-01T17:40:48+00:00 journal fruit on the bottom <p> The problem with fruit-on-the-bottom yogurt is that I never know how much fruit and yogurt to mix with each bite. A spoon doesn't scoop equal proportions correctly, and eating yogurt with a fork is a luncheon faux pas. I need one of those spackle-applicator tools or a margin trowel to get a consistent fruit/yogurt distribution.</p><p>Please pretend that I have some witty analogy to relate this to programming.</p> statico 2005-10-21T16:48:53+00:00 journal