Archive for August, 2007

Who uses Window Vista?

Wednesday, August 15th, 2007

Windows Vista has been out for a little while now and I still haven’t even seen it in use. This far out from the Windows XP launch I had at least marveled at several people using it, although I hadn’t switched to it myself just yet. But I haven’t even had the opportunity to see Vista in action because nobody I know uses it or is even interested in using it (me included). Its many disadvantages include: the high cost of upgrading, incompatibility with currently working programs on Windows XP, and of course, draconian DRM. The last part especially irks me because Vista has lots of “features” that are blatantly anti-user, such as how it degrades high quality video to high quality outputs ostensibly as an anti-piracy measure. Realistically, it means don’t bother trying to use Vista to output video to an HDTV, or using it to watch HD-DVDs or Blu-ray discs. Ridiculous.

My work has absolutely no plans to upgrade to Windows Vista. Even the new laptops we new employees got came with Windows XP rather than Windows Vista. Everything already works, and the IT guys simply don’t see the need to spend the money for the sole privilege of potentially having all of our mission-critical applications fail. When Vista first came out manufacturers such as Dell were only offering new computers that came with Vista. After the inevitable backlash, they started offering XP again, and will probably do so for a nice long while.

However, the upgrade to Vista is eventually going to become inevitable as long as one wants to keep using a Windows environment. Using XP over Vista will be no more practical in a few years than trying to use 98 over XP is today. That’s why I’m simply going to stop using Windows at that point. I’ve had seven years experience with using GNU/Linux now, mostly on servers, but also on desktops. My current desktop dual-boots into Fedora Core 6, for instance. But what keeps bringing me back to Windows is the computer games. Well, not for much longer. I already play far fewer computer games than I used to. I’m simply finding other things to do with my time, like editing Wikipedia, writing, reading, and updating this blog. In a few years’ time when continuing to run Windows XP becomes untenable, I’m going to switch over to GNU/Linux once and for all and never look back.

Update 2007-08-18: Looks like the editor in chief of PC Magazine, who is just stepping down, isn’t thrilled with Vista either. He has a litany of complaints about flaws in the operating system that still aren’t fixed after nine months. I’m so glad I didn’t upgrade.

Old games have cool names

Tuesday, August 14th, 2007

Old games have cool names — names like Pong, Rogue, Hack, Adventure, Spacewar!, Defender, etc. The names are short, simple, and accurately describe what the game is about. Modern games, unfortunately, aren’t named in such a fashion. The advent of marketing departments has pretty much killed off any name that can’t marketed and defended as a trademark, resulting in such game titles as Age of Wonders 2: The Wizard’s Throne and Cabela’s Big Game Hunter 2006 Trophy Season. Another problem is that whereas Shooter used to be a perfectly good name for a game, now it describes multiple genres of games: first person shooters, third person shooters, space shooters, schmups, etc. All of the good simple names are either taken, shot down by pointy-hairs, or too ambiguous.

I miss the game names of old. They harken back to a bygone era when videogames were first being made. The creators didn’t have the “benefit” of decades of videogaming naming conventions. The names they chose are charming for their simplicity. Homemade non-commercial games such as Rogue, Hack, Adventure, Spacewar!, and others don’t suffer from marketing hype. They have an easygoing air about them. There’s a modern roguelike named Dwarf Fortress; the name perfectly describes what the game is about. I can’t imagine how badly it’d have turned out if a marketing “guru” was allowed to choose the name.

As for why I’m bringing this up, it’s because of the excellent article, Somewhere Nearby is Colossal Cave: Examining Will Crowther’s Original “Adventure” in Code and in Kentucky, which was just published in Digital Humanities Quarterly by Dennis G. Jerz. Jerz managed to track down the original source code to Adventure, the first text-based adventure game that invented such now-commonplace concepts in videogames as items and inventories, as well as the adventure genre itself. Not only that, but Adventure was based on the real world Colossal Cave in Kentucky, and Jerz traced back through the cave verifying the accuracy of the text descriptions in Adventure. This is definitely the best scholarly paper on historical videogames that I’ve read recently.

And by the way, the original Fortran sources have been modified slightly by Matthew T. Russotto so that they compile with the modern GNU G77. I downloaded them and they compiled just fine on the first try, and I was up and playing original Adventure, now three decades old, in seconds flat. Talk about a great archaeogaming find.

Betting a million dollars v. death

Monday, August 13th, 2007

When I was a teenager, I used to go through these weird betting motions in my head. When I figured I knew something very assuredly, I made a kind of bet in my own mind: would I take a mortal bet of $1,000,000? I was weighing the odds of whether I was sure enough about something to wager my life on it; the upside is the million dollars, of course. I did this inside my head from time to time over the course of a year, weighing the certainty of some situations from my everyday life. The “wagers” were all relatively simple things that I could look up immediately; for instance, if I could remember what a particular acronym (such as HTML) stood for, or the value of the gravitational constant to the first three significant figures, or even a particular person’s last name. The thought of these “wagers” would crop up repeatedly, and I took them really seriously.

Of course I wasn’t really going to win a million dollars for knowing something correctly, and thankfully, neither was I going to die for knowing something incorrectly. I learned an important lesson after making and “winning” ten such bets: I lost. I don’t remember what exactly the wager was over, but I was dead sure of it, and willing to theoretically put my life on the line. But I looked up the answer online and was in shock. Had these wagers been real, I would have been dead at the age of fifteen, rich to the tune of $10,000,000 accumulated across the previous bets, but still dead.

I learned an important lesson about uncertainty that day, purely from an ongoing gedankenexperiment. Just by playing out silly, unrealistic scenarios in my head, I surprised myself and came to the simple conclusion that life isn’t worth betting away, no matter how good you think the odds are. The problem with trying to calculate odds is that one needs complete information — something we have when we’re evaluating, say, the odds of the sum of two tossed dice coming up seven (six out of thirty-six), or the odds of winning a hand in Blackjack. But we don’t have complete information in trying to evaluate the kinds of situations that pop up in real life rather than in artificially constructed games of change, and the odds can be a lot different than we realize.

So I no longer gamble away my life, not theoretically inside my head, and certainly not in real life.

How best to read Wikipedia

Saturday, August 11th, 2007

This is a tutorial on how best to read Wikipedia. Now when I say “read”, I’m using it in the same sense that one might read a novel or a textbook. If you’re just looking up a single thing, you don’t need the tutorial; just go to the relevant article, read it, and by done with it. But if you want to read lots of different articles and learn all sorts of new things, then this tutorial is for you. When I’m bored I end up reading Wikipedia, sometimes for hours on end. Here’s what I’ve found is the best, most efficient way to read it.

1. Use a modern browser. You’re going to need Mozilla Firefox, or if you really have no other option, version 7 of Internet Explorer or later. Internet Explorer versions 6 and prior simply won’t do, because tabbed browsing is essential for properly reading Wikipedia, and they lack it. I still highly recommend Firefox over Internet Explorer, though, because Firefox has integrated browsing recovery, meaning that if your system crashes (or your battery runs out or whatever) while you have a bunch of tabs open in Firefox, you can restore the session upon rebooting your computer and recover everything you were looking at. It’s very convenient because reading Wikipedia can become a long endeavor that spans many days with many sessions, and you don’t want to lose what you were reading.

2. Register an account. You should register an account and remain logged in while reading Wikipedia because doing this will give you access to many features (some of which will be explained in the steps below) that make reading Wikipedia much better.

3. Install Navigation Popups. Now that you’re registered and logged in, you’re going to want to install Lupin’s Navigation Popups extension for Wikipedia. This is a JavaScript extension that must be installed for each individual user account. To install it, paste Special:Mypage/monobook.js into the Search box in the sidebar on Wikipedia, hit “Go”, click the edit tab at the top of the window, paste {{subst:navpop}} into the large text box, and hit “Save Page”. Now you need to bypass your cache while reloading; to do this, press Shift-Ctrl-R in Mozilla Firefox or Ctrl-F5 in Internet Explorer. Now Popups is installed.

Popups is a very useful extension that gives you a brief summary about the subject of an article simply by hovering your mouse over it. For instance, let’s say I’m reading the article on Evolution and I come across the linked word “Prokaryote” that I’m not familiar with. I can simply hover my cursor over the link and Navigation Popups automatically gets the introductory paragraph and the first image from the article, and displays them in the form of a popup. Oftentimes, this is enough information to explain a concept without having to click through and read another whole article. Here’s what Popups looks like in action:

Navigation popups on the Evolution article

Use Navigation Popups to screen the articles that you end up reading. If you see everything you need to know about a subject in the Popups window, or if it’s just not interesting to you, skip the full article. Popups saves you time.

4. Use tabs. Open up new articles that you want to read as tabs. This way, you will get to them later without interrupting the article that you are currently reading. In Firefox, holding Ctrl while clicking on a link will open it in a new tab, or, if your mouse has three buttons, pressing the third button may often open in a new tab as well. Even if you have a scroll wheel mouse, it’s likely that the wheel can be pressed in and used as a third button. You may need to slightly configure Firefox by selecting the Tools menu, selecting Options, clicking the Tabs tab, and specify that “New pages should be opened in: a new tab” and turn off the option for “When I open a link in a new tab, switch to it immediately”. This way you can open up new tabs in the background, as many as you want, for each interesting link you find in the current article that you are reading. And you won’t be interrupting your reading.

When I’m reading Wikipedia I tend to simply follow whatever links interest me, which results in a rapid divergence of subject area. Recently I started by reading the article on the golden age of animation and ended up reading articles on various squatter collectives and nomad peoples. That’s the awesomeness of Wikipedia: it covers every conceivable subject matter. Because articles tend to have lots of links on them, I usually end up opening up more than one article for each article that I read, resulting in an increasing number of tabs across the screen of things I’m trying to get to reading. This can basically go on indefinitely, with my “to read” queue growing exponentially. I try to keep the number of tabs manageable by only opening up the really interesting articles once my number of open tabs exceeds thirty.

5. Add pages you read to your watchlist. See the tab labeled “Watch” at the top of every article? That adds the article you are reading to your watchlist. After reading each article I add it to my watchlist. You should too. It helps to keep track of everything you’ve read, and after you’ve been reading and learning from Wikipedia for awhile, you’ll end up with quite the impressive list of subjects you’ve read about on your watchlist. You can view recent edits to articles on your watchlist by clicking the “my watchlist” link in the upper right part of the page, and from there, you can click through to see every page that’s on your watchlist. If you end up becoming a frequent editor, your watchlist will help you to track changes that are made to the articles you’ve read, changes that you might be interested in looking at, especially if they’ve increased the depth of coverage of the article.

6. Edit! Remember, Wikipedia is written by volunteers, people just like you and me. One of the ways you can help pay back the huge fount of information you’re receiving for free is by editing Wikipedia to improve it and help it grow. Every little fix matters and could potentially benefit thousands of people (on the more well-read articles). Start off by just fixing the little errors that you see, like spelling and grammar errors. As you get more comfortable with it, start making larger changes; if you happen to know something about a subject that isn’t in the article, go ahead and add it. Over time you’ll get more experience with all of the idiosyncrasies of Wikipedia editing, and who knows, after spending enough time reading and editing, you may eventually become an administrator like me.

Incoming Perseid meteors

Friday, August 10th, 2007

It’s that time of year again — the Perseid meteor shower is in town. This is going to be a good one as it coincides with a new Moon, meaning less light pollution, and thus more visible meteors. Just head to a dark area some time between Sunday’s sunset and Monday’s sunrise, lie down on something comfortable, and look towards the northeast. You’ll be seeing a sight far too few people see these days: nature at its finest. When I saw the Geminid meteor shower late last year I was blown away, and now that I’ll have better observing conditions, warm, dry surroundings, and no pressure stemming from a final exam the next day, I’ll be able to spend a lot more time meteor-gazing. So go out and try it; I highly recommend it.

Data preservation

Thursday, August 9th, 2007

I was going through my computers yesterday trying to find some data I hadn’t seen in a long time. I finally found it on a server I haven’t powered up in over a year (the server’s name is Fyre, if you care). The data consisted of everything I’ve ever done on GNU/Linux computers up through two years ago, both on that server itself and on the school’s GNU/Linux server in high school. This data cache is about 3.5 GiB large and contains dozens of programs I wrote back when I was still learning, say, C++. In addition to all of this data from GNU/Linux computers, I still have all of the data from my family’s long line of Windows desktops, going back about eleven years. Yeah, I’m a data rat.

My data preservation strategies aren’t really clever or well thought out. I’ve just always known that I didn’t want to lose this stuff, so I’ve always taken small steps towards accomplishing that goal. So every time we got a new computer, I’d copy over the My Documents folder from the previous computer onto it and burn it to CD (or DVD). More recently, I started putting them into archives so they were more manageable. Now I have about twenty archives on my current Windows desktop that contain just about anything of note I’ve done on any computer system in the past eleven years (with the sole exception being the programming I did in middle school; I may have saved it all to floppies a long time ago, but haven’t located it yet). Heck, I’ve even put all of my old websites back online.

So what do I do with all of this data? Well, I simply save it in case I ever end up needing it, which does happen on occasion (especially when I’m going back through my old stuff looking for something I wrote years ago). It’s also fun to just go through the stuff I was writing for school in, say, seventh grade. Man, has my writing ever improved since then. I have to fight the urge to edit the documents as I’m reading through them, because I know it’s my work, and the poor quality of it bugs me.

I’ve asked around with my friends and nobody else seems to still have digital copies of the work they did so long ago. It seems a pity — I did put lots of effort into all of that homework and coding, and I wouldn’t want to lose it. If that makes me a digital pack rat, so be it. Now my main worry is mostly about data formats. The data itself is on multiple hard drives and various backup DVDs, but that’s all meaningless if the file formats themselves are so antiquated they cannot be read by contemporary applications. All of my work from sixth grade, for instance, is in Microsoft Works format, and the filenames are strangely antiquated, consisting of eight characters, all upper case (DOS limitations?). A lot of my programming is in whatever format we used on the school computers, and really old Borland workspace files, for instance, don’t age well. At least the source code is mostly stored in text files, even if it won’t compile.

I suppose it might be fun to go through some of my old writing, post it here, and analyze it, not just for style but also for content. Unlike so many others I at least have that opportunity, so I may as well make use of it.

What’s inimical to me

Monday, August 6th, 2007

inimical – adjective

  1. adverse in tendency or effect; unfavorable; harmful: a climate inimical to health.
  2. unfriendly; hostile: a cold, inimical gaze.

I’ll get to why I’ll never forget the meaning of this word in a little bit.

I took the Scholastic Aptitude Test (SAT) twice in middle school, once in 7th grade and once in 8th grade, earning a 1350 and 1450, respectively. This was back when the score was out of 1600 and the average for high schoolers was a fair bit less than my seventh grade score. Most middle schoolers don’t take the SAT, of course, but I was in a special situation. My dad was really pushing me to get experience taking the test so that when I took it when it really mattered, in eleventh grade, I would do well. Also, more urgently, there was an academic summer program I went to (yes, I went to math camp) that had, as an entry requirement for middle schoolers, a certain minimum score on the math segment of the SAT. I did end up making it in.

By eleventh grade, the SAT simply didn’t pose a real challenge to me. I was taking calculus II at the time, and as much as I wouldn’t like to admit it, I would skip to the last problems in the math sections on the practice SATs, which are the hardest, and do them for fun. The SAT only goes up to geometry, and with powerful tools like trigonometry and calculus at my disposal, it wasn’t hard for me. The English section also wasn’t that worrying to me, as I was a huge reader. Since I went to a Magnet high school, I had a long bus ride every morning and every afternoon. I would occupy myself on those bus rides by reading books. Lots and lots of books. So in addition to being a math nerd, I was also a book nerd. Reading lots and lots of books is simply one of the best ways to do well on the English portion of the SAT; you’d be surprised how many new words you pick up simply by analyzing the context.

Despite all these advantages, my parents were still worried about me doing well on the SAT, so they enrolled me in an eight week SAT prep course. It met on Saturday afternoons and each session was four hours long, the first two hours focusing on math and the latter two on English. By the fourth week I was simply skipping the math sessions as they were a waste of my time; I swear I knew more than the teacher. The English sessions were actually somewhat worthwhile, as I expanded my vocabulary and learned useful strategies for defeating analogies.

The day of the test came, and the exam itself seemed to go by in a blur. I remember finishing many sections with a lot of time left on the clock, and very uncharacteristically for me, I went back and studiously checked and re-checked my answers. The math section wasn’t a problem for me at all, as predicted. But I did stumble a bit on one of the problems in one of the English sections. Compared to English, math is small. It’s possible to know every mathematical concept used on the SAT. Bit the potential vocabulary they draw from measures in the tens of thousands, and it’s simply not worthwhile to study every possible word that might show up, as the odds are so low for any given word. One of those words I didn’t know showed up on the exam. That word was inimical.

It was an analogy problem at the end of one of the English sections. I no longer remember what the analogy was, nor what the other four answers were. All I know is that I got it down to a choice of two answers, and not knowing what inimical meant, I guessed incorrectly. I remember walking out of the exam to my mom who was waiting to pick me up. I asked her what inimical meant, and as soon as she told me, I knew I had gotten that question wrong. I didn’t think I got any other question wrong, and remembering what I had seen in the scoring section in the back of the SAT practice book, one wrong answer in an English section yielded a score of 1580. So I announced that I had probably gotten a 1580 on the exam.

And when the results came back a month or two later by mail, that’s exactly what I had gotten.

So you see, the word inimical is itself inimical to me, and I will always remember the definition of that blasted word until my very last days.

When bad programming cliches turn out to exist after all

Sunday, August 5th, 2007

I’m a frequent reader of the curious perversions in information technology blog Worse Than Failure (previously The Daily WTF). Each day they share new horror stories from the realms of IT, including abominable code snippets and and nearly unbelievable tales of woe from the IT sector. I follow it closely. Two themes that seem to be coming up again and again are overuse of XML and overuse of design patterns. XML is good at what it was made for, but a lot of coders seem to think it’s the best thing since sliced bread, and use it in all sorts of situations it isn’t appropriate for. Design patterns are a way of coding that seem to emphasize form over function, and the majority of the lines of code in a design pattern-heavy program just end up passing around objects from one place to the next.

I thought of these perversions of information technology as being “over there”, you must understand. Little did I realize that I would very quickly be confronted by these two bad programming cliches within two weeks of joining the workforce, and not only that, I saw them in the same piece of code. I’m currently going through the process of earning my FileNet certification. Just look at this code example from one of the training manuals. This is the “best practice” for passing a query parameter to a search template.

String query = "<executedata xmlns=
 \"http://filenet.com/namespaces/wcm/apps/1.0\">" +
 "<version dtd=\"3.0\"/>" +
 "<objecttypesdata>" +
  "<objecttypedata>" +
   "<from><class symname=\"document\" /></from>" +
    "<templatedata>" +
     "<templatepropitems>" +
      "<templateitem itemid=\"3\">" +
       "<templateitemdata>" + searchValue +
       "</templateitemdata>" +
      "</templateitem>" +
     "</templatepropitems>" +
    "</templatedata>" +
   "</objecttypedata>" +
  "</objecttypesdata>" +
 "</executedata>";

ObjectStore objectStore = ObjectFactory.
     getObjectStore(“Magellan”,myCESession);
StoredSearch ss =
 (StoredSearch)objectStore.getObject
  (BaseObject.TYPE_STORED_SEARCH,
   “/MyFolder/MySearchTemplate”);
String searchResult = ss.executeXML(query);

Yes, you’re seeing that right. A giant, unnecessary XML query is being painstakingly concatenated together in code, merely to be passed to a Java function in the API that will painstakingly take that XML apart and execute the query. Much execution time is being wasted on both ends of this. XML should not be used in place of proper Remote Procedure Calls. And also notice the overuse of design patterns. This code gets the object store from the object factory, then it gets an object from the object store, all before we are actually able to do anything. Aghhh. It makes my head hurt.

So this is the kind of thing I’ll be dealing with from now on out. I’ve gone from laughing at other people’s misfortunes on Worse Than Failure to solemnly experiencing them firsthand, all in the course of two weeks since beginning the job. Welcome to the wonderful world of IT!

Read the rest of this entry »

Whatever happened to three equal branches?

Saturday, August 4th, 2007

The framing in this CNN article Congress gives Bush administration more eavesdropping leeway is really pro-unitary-executive. It seems to be coming from the perspective that the legislative branch exists merely to act as a rubber stamp on whatever the President wants done. I feel sorry for all of those people out there who only use CNN as a source of news and end up with a warped perception of how our government is actually supposed to work. Here’s the lead-in to the article, with my emphasis in bold:

WASHINGTON (CNN) — The House late Saturday night approved the Republican version of a measure amending the Foreign Intelligence Surveillance Act by a vote of 227-183, with most Republicans and conservative Democrats supporting the bill.

The White-House backed legislation closes what the Bush administration has called critical gaps in U.S. intelligence capability by expanding the government’s abilities to eavesdrop without warrants on foreign suspects whose communications pass through the United States.

Lawmakers have been scrambling to pass a bill acceptable to the White House [1] before they leave for a monthlong summer recess.

President Bush had threatened to veto any bill that Director of National Intelligence Mike McConnell said did not meet his needs [2].

The Senate approved its Republican-sponsored bill Friday night. Immediately after that vote, a Democratic-sponsored bill failed to reach the 60-vote majority.

Saturday night’s vote followed fireworks in the House, where an angry group of Republicans accused House Speaker Nancy Pelosi of delaying a vote on the bill, the president’s legislative priority [3].

[1] It’s not the job of the legislative branch to mindlessly pass whatever the President wants. If you think Iraq is bad, imagine what it would be like if George Bush got his way all of the time.

[2] It’s not the job of the Director of National Intelligence to write legislation. I’m sure he wants the ability to spy on anyone anywhere; similarly, the military would love to get rid of all of that pesky oversight that exposes war crimes like Abu Ghraib. Just because someone who “serves at the pleasure of the President” wants it doesn’t mean that it’s Congress’s responsibility to pass it, nor does it mean that it’s a good idea.

[3] Since when did the President set legislative priority? That’s the job of the legislature to deal with. Bush has no right to be telling Congress what to work on, so why are they listening to him?

(Cross-posted to DailyKos, wheeee)

Chabad Lubavitch paranoia

Saturday, August 4th, 2007

Near my parents’ house in Potomac, Maryland is a section of road I call Religion Row. This relatively short stretch of Seven Locks Rd. has a couple churches, religious day schools, and two synagogues, all packed in one after another. At some points religious buildings take up both sides of the street, like a decades-long face-off between denominations. It’s a curious collection of religious buildings that always makes me feel a bit awkward driving past. One of the synagogues is reformed and the other is Chabad Lubavitch (which is very orthodox). Driving by the Chabad Lubavitch synagogue today, I noticed a new feature of their synagogue that would look more at home in the rough, terror-prone streets of Jerusalem than the calm streets of Potomac, Maryland.

The Lubavitchers have recently installed a vehicle barricade in the front of the temple’s lawn facing the street. The barricade consists of two dozen or so concrete poles, each about a foot in diameter (and no doubt sunk deeply), laid out in a straight line with about two feet between poles. The only concession to aesthetics is that the poles are painted rather than naked, but it doesn’t improve the look much.

As I was driving past this frightening installation, I was wondering to myself, what in the world are they protecting themselves from? Do they seriously think someone is going to blow up a car-bomb at their synagogue, despite that never having happened anywhere in the entire United States? Are they worried about someone ramming a vehicle into their temple at high speed? Potomac is an affluent, peaceful community with a large Jewish population. I can’t imagine what the Lubavitchers think they are defending themselves from. The barricade reflects more on their paranoia and subscription to strange end-of-the-world prophecies than the safety of the neighborhood.

Ignoring all of the money they’ve frivolously wasted on an unnecessary Israel-esque barrier, they’re making themselves look silly and paranoid. Around here, people don’t have a problem with synagogues. But some of them might have a problem with religious folk that look to be walling themselves off from the outside world, unnecessarily building militaristic infrastructure in a peaceful suburban neighborhood. Treat your neighbors with distrust and you may end up creating prejudicial feelings that weren’t there before. The Lubavitchers need to tear down their ugly, superfluous barrier and be fully integrated into the community.