Tomer Gabel's annoying spot on the 'net RSS 2.0
# Sunday, 05 June 2005
Despite my lately-discovered tendency for open-source evangelism, I constantly use proprietary software in my day-to-day computer exploits. Here's a list of a few of the more useful ones:
  • Everyday use:

    • Windows Live Writer - Microsoft's blog client/word processor. Microsoft entered a saturated market full of mediocre and/or abandoned software, and simply did everything right from the get-go. This is one hell of a tool - stable, convenient and extensible. Recommended.
    • XMPlay - a great audio player for Windows. Has excellent module playing capacity, plays streaming audio perfectly, basically does everything WinAmp does only better and in a much lighter package. I have yet to find a (preferably portable) open source platform which compares..
    • Microsoft Outlook - Outlook has its moments, but I've enjoyed working with Mozilla Thunderbird a lot more. I originally switched to Outlook for its PDA synchronization capabilities (via ActiveSync); since this is no longer an issue for me, I'm planning on switching back to Thunderbird as soon as I can find the time to take care of the migration.
    • Total Commander - I simply can't work properly without a Norton Commander clone. I switched from Servant Salamander to Total Commander and so far never looked back. An open-source replacement is definitely #1 on my wish list though.
    • AVG Free Edition - the free (for home use) version of the AVG Anti-Virus is an impressive piece of software. It's lightweight, nonintrusive and simply works. I'm sceptical that open-source antivirus software can be as up-to-date and effective as proprietary software.
    • Windows XP Professional - bought a copy with my laptop, and can honestly say I do not regret it. It is impressively full-featured, completely stable, has terrific hardware support (I will tell the story of my Linux hardware woes in another post) and despite being very powerful it is also very intuitive to work with.
    • Trillian Basic - a free multi-IM client (I use ICQ and MSN). It's not lightweight, nor it is the fastest, but from all the multi-IM clients I've used (GAIM, Miranda, Trillian) it has the best combination of stability, features and looks.
    • ACDSee (at work) - Best of breed photo browser. The new version seems quite bloated, but it's still the best program of its sort I've used (since version 3...)
    • XnView (at home) - Great photo browser that's fairly quick and lightweight. Free for non-commercial purposes, basically does everything almost as good as ACDSee.

  • Development tools:

    • Visual Studio 2005 - being a primarily .NET developer, this is an absolute must-have. It has a lot of issues though, and missing some features that I can only enjoy with ReSharper.
    • JetBrains ReSharper -the quintessential upgrade to Visual Studio. Improved autocompletion and syntax highlighting, fully customizable code reformatting, code navigation, refactoring, code templates, unit test runner and more, all in one package. I've been using this since version 1.0 after seeing a presentation by Roy Osherove, and nowadays I find it daunting to work without it.
    • Araxis Merge - best of breed commercial diff and merge utility. WinMerge and the various diff/merge utilities that come with source control provides (Vault, Perforce etc.) simply can't compare.
    • Stylus Studio - I tried this out as an alternative to XmlSpy a few years ago and got hooked. Although it's still a terrific XML IDE, unfortunately they have very annoying registration, activation and upgrade policies, so I may yet take XmlSpy for a renewed spin.
    • SourceGear Vault - the source control provider we use at work. It's like a moderately improved version of SourceSafe: reasonably fast, fairly full-featured and mostly works. I've used Microsoft VSTS and Perforce since and both are far superiour, but also considerably more expensive.

  • Occasional use:
    • Nero Express - a lightweight version of the fully-fledged Nero. This has been my CD-burning software of choice for about 6 years. Since a copy came with my laptop I haven't found the motivation to seek a proper open source replacement yet.
    • PowerDVD 5.0 - probably the only reason I still use PowerDVD is because it came (OEM) with my laptop. I don't watch many movies on my laptop so I couldn't be bothered to find an open-source replacement.
Sunday, 05 June 2005 18:34:44 (Jerusalem Standard Time, UTC+02:00)  #    -
Personal | Software
The Thunderbird nightly build for yesterday seems to kick quite a bit of ass. It's just as stable as the 1.0.2 stable build, has a useful spellchecker, works like a charm with the BiDi Mail UI extension and feels over-all very solid. Can't wait for the official 1.1, so I could recommend it to other people.
Sunday, 05 June 2005 11:12:05 (Jerusalem Standard Time, UTC+02:00)  #    -
Yes, CSS2 is very cool, but apparently way more problematic than I originally thought. It seems even minor details are the cause of much consternation, giving headaches to programmers and designers alike.

The whole thing started when I noticed that the blog title ("banner") was not displayed properly on my grandfather's machine (Internet Explorer 6); it appeared as though the text class wasn't handled properly. Give or take 20 minutes later I found out that I accidentally used a class="banner" declaration where in the CSS it was defined as A.Banner. Apparently Mozilla was misbehaving in ignoring the case. At first I thought Microsoft finally got something right with Internet Explorer 6, then figured I might as well delve a little deeper into it and figure out which behaviour is right.

Enter the CSS2 specifications, specifically section 4.1.3 Characters and case, where it is clearly stated that CSS is assumed to be case-insensitive "except for the parts that are not under the control of CSS". This a very subtle distinction, which apparently goes on to include the "... values of the HTML attributes "id" and "class"".

Now, seeing that I love to be standards-compliant, I naturally included the correct <!DOCTYPE> declaration in the beginning of my blog template, putting Internet Explorer in standards-compliant mode; unfortunately I did not read the CSS2 specifications carefully enough and therefore did not properly understand the case-sensitivity issue.

Therefore I will quote what I perceive is a very good piece of advice from Zen and the Art of Website Maintenance:

Last but not least, let me touch on the issue of case sensitivity. CSS selectors are not, by definition, case-sensitive. However, if the page language within which they are used is case-sensitive, then they become case-sensitive. HTML is not case-sensitive [HTML 4.01 is, though, so take care! -TG], so CSS is not when used within it. But XHTML and XML are case-sensitive and so, therefore, is any CSS used within it. Given this, the only sensible choice is to regard all CSS as case-sensitive: this will save you from considerable pain in the future.

And to sum the whole thing up: yes, Microsoft seem to have done something right for a change, and Mozilla does indeed misbehave (unless, which is just as likely, I've missed another subtle but important issue...)

Sunday, 05 June 2005 10:05:04 (Jerusalem Standard Time, UTC+02:00)  #    -
# Wednesday, 01 June 2005

One of the features carried over from my first website (amazingly still available) is a digital rendition of the ingame music from the Amiga version of Defender of the Crown. Back in the year 2000 I had this to say:

Defender of the Crown

Defender of the Crown is a computer game by Cinemaware, originally released in 1986 for the Commodore Amiga and later ported to every major platform (including the PC, C64, ZX80, NES and Atari ST). The game is branded an "interactive movie" and was one of the earliest Amiga games released. It was used by many Amiga enthusiasts to demonstrate the abilities of the computer, and with good reason: the game had beautifully drawn graphics by James D. Sachs and never-before experienced atmosphere.

One of the most prominent aspects of the game is its music. I've heard the game's music throughout my childhood as I went to a neighbouring Amiga owner and played this and many other wonderful Amiga games. The music was composed by Jim Cuomo, who now pursues a career as a musician.

The music here is recorded from the Amiga version via an Amiga emulator, specifically Fellow 0.3.3. Due to an emulator handicap the WAV files produced had some bugs which I fixed using Sound Forge 4.0. The tunes are now almost identical to the original Amiga ones (as verified using my A500+), depsite a somewhat shoddy MP3 conversion using MusicMatch 4.0.

The tunes provided are distributed with permission from Jim Cuomo, who was also gracious enough to send me one of his CDs entitled Gameplay, which contains excellent revisited tunes from several computer games he had composed music for. He also permitted me to post the Defender of the Crown tunes from the same CD - they will be added in a few days.

I am still, unfortunately, missing the Love theme (rescuing the princess) and the victory/loss themes, the latter of which will be posted as soon as I finish working on them.

At the time free hosts were usually limited to 5 or 10mb per user, and my having no desire to pay for storage meant it took more than a few days to post the Gameplay sound snippets - more like 5 years. Also, scratch the comments about Fellow 0.3.3 and MusicMatch 4.0; I've re-recorded some of the tunes from my A500+ (softkick'ed to 1.3) and re-encoded everything with OGG Vorbis (which means stereo [in the new recordings] and much higher quality for just slightly larger files - well worth it in my opinion). When I find the time, all themes will be re-recorded from a proper A1000 (512k, kick 1.0) through a more modern soundcard with lower SNR. I also pledge to re-rip and re-encode the GamePlay tracks properly.

Avast! Files off ye starboard bow!

In-game recordings:

GamePlay CD tracks:

Wednesday, 01 June 2005 22:10:49 (Jerusalem Standard Time, UTC+02:00)  #    -
I've updated the blog's design to something a little more to my taste. I hope you like it, and would very much welcome comments!

I've been mucking about for a few hours with dasBlog themes, CSS2 and relevant technologies and learned a great deal. CSS2 is so damn cool! Back in the day - what, four years ago? - I used to have a bunch of perl scripts to do the style/content seperation for me utilizing a bunch of macros. Nowadays it's not only a great deal easier to seperate the content, CSS2 also helpes you avoid a lot of HTML hacking and HTML bloat: no more hacking tables where design elements go. It kicks ass!

That said, there are a few things that are nontrivial with CSS2. For example, check out the blog title; notice how the horizontal line stops next to the text. The border itself is easy enough (see next section though), but it took me a little while to figure out how to make it 'stop'. Eventually I settled for the following hack:

  1. A <div> section acts a container for the entire blog title and contains two additional <div> sections
  2. Both sections have the exact same content. The first section maintains the appropriate flow and layout for the page but is not itself visible (it has style="visibility: hidden")
  3. The second section floats over the entire container (style="float: left")
  4. This is where it gets interesting. The lower part of the second section must cover the lower border of the container; originally I did this with a <br&rt; tag, but as I suspected this proved problematic when the client text size was changed. Eventually I settled for an additional padding-bottom: 2px; style for the second section, which solved the issue nicely.
  5. Finally we want the horizontal border to stop before it hits the text; the solution couldn't be simpler: just add padding-right: npx (in my case I used 5) and you're good to go.

Next stage is to find out how to gradient the border when it gets close to the cell. Also, the whole thing might've been easier with a table and a couple of columns, but not nearly as fun :-)

Finally, I have to rant: Microsoft IE programmers are a bunch of shitcocks. Even in standard-compliant mode (why in the hell do I have to, as an author, worry about IE modes anyway? Why isn't it standards-compliant to begin with?) the damn thing just doesn't process CSS properly. In my case it turns out that dotted borders simply do not work in Internet Explorer (except for Mac IE version 5.5 or something bizarre of the sort); if you're reading this post using Internet Explorer you're probably seeing a solid border around the post itself. This is NOT the correct behavior. IE displays dashed borders instead of dotted ones; this looked aweful, so I used a couple of hacks to get IE to display solid borders instead. And this is just one of myriad bugs. I wonder if they'll get fixed in IE7, but would advocate a move to Firefox regardless.

Wednesday, 01 June 2005 17:16:25 (Jerusalem Standard Time, UTC+02:00)  #    -
# Tuesday, 31 May 2005

I am not a regular reader of Jackie Goldstein's blog, but I make sure to catch up every now and then; today I encountered an interesting post in which he discusses a long-overdue improvement to ADO.NET: the ability to specify a batch size for a DataAdapter.Update statement. One of the stupidest shortcomings of ADO.NET 1.0 and 1.1 was that it would make a round-trip for each changed row, which in the case of large updates or over high-latency networks results in horrible performance.

Apparently ADO.NET 2.0 includes the ability to specifiy the batch size, however there are some things worth knowing about this behaviour (specifically, less commands issued to the database do not necessarily equate less round-trips on the network; also, as Jackey puts it, "creating batches of different commands every time would wreak havoc on the query plan cache." Jackie goes on to link to a post in Pablo Castro's (the ADO.NET Program Manager) blog, which explains these issues in a little more detail.

An interesting read, certainly.

Tuesday, 31 May 2005 13:01:42 (Jerusalem Standard Time, UTC+02:00)  #    -
First, if you're up for a decent laugh, go ahead and read A Gamers' Manifesto. You may have noticed the odd discrepency between this post's title and that article's; it's intentional - I do not presume to represent the gamer crowd as a whole, and for several very good reasons:
  1. I'm about as mainstream as the guy next door who never seems to shave, or shower, or do anything other than moan and occasionally groan something that sounds oddly like "braaaaaaaaaaaaaaaains." I certainly enjoy an occasional hit as much as the next guy (UT2k4 anyone?), but other than that I'm definitely not your run-of-the-mill Israeli gamer. For one, I actually buy my games, which appears to be a particular oddity that even my absolutely closest friends can't fathom. Second, I often play older games (sometimes on their native platforms) because I enjoy them and do not mind their being old or technically outdated. Third, I consistently despise games heralded as breakthroughs by many of my peers; and lastly, I find myself playing less and less games and wondering why, exactly, that is. I used to play practically every game out there; there are few games from the '90s I haven't played extensively or at least taken for a spin.
  2. Gamers, even intelligent ones, look for different things in different games. I openly declare the original Doom to be one of the greatest games I've ever played. It's certainly mindless, quite repetitive and lacks any manner of story or plot. It doesn't matter. I've spent countless hours (must be about over a month in total) playing this particular title because it was so thoroughly satisfying. In recent years, however, I've heard people blaming Doom for starting a "dangerous trend in computer gaming" of mindless action games with no plot. Hate to break this to you: mindless action games were out there way before Doom (the arguably first computer game ever, Space War, was one). Besides, mindless action is definitely good for the soul. Still, it doesn't stop me from enjoying the more thought-inducing genres, which only goes to prove my point: people (especially gamers) enjoy things differently.
That said, I have several comments about A Gamers' Manifesto. Let's go by the numbers:
  1. I agree with the gist of the thing (tough, smart AI), but not with the particular example. Doom III was meant to retain Doom's simple, mind-numbing but gratifying gameplay, and does so extremely well. Playing Doom III was a religious experience for me: everything I loved about Doom - the suspense, the heaps of enemies, the challenging gameplay, the gameplay mechanics - is there. Giving the Lost Souls a proper AI would be like giving George W. Bush brains; it's great in theory, but it probably won't make the world a better place.
  2. With this I cannot possibly diagree. Games have been getting less and less diverse for years, and the studios that create the few exceptions usually get financially whacked: where are Bullfrog and Lionhead Studios these days? Do you recall the financial fiasco that befell DreamWorks' completely revolutionary The Neverhood, or the lackluster sales of the completely original Loom?
    Customers are obviously responsible, but it's also a result of the astounding costs involved in creating a top title these days. Twenty years ago you could've been a 15-year old mashing on his C64 and be pretty well off, but nowadays you need heaps of people and money to create even an astoundingly bad title like Chrome. I firmly believe, however, that tools will get progressively better, allowing less people to make more detailed, more immersive games in less time and effort; it's just a question of time. When that happens, the ball will be in our (the gamers') hand again: will we buy the creative titles? Will we reward creative persons and game studios? Time will tell.
  3. This is an interesting throwback to the time when the in-game graphics were so bad you had to tantalize your customers' imagination with interesting background stories, or beautifully drawn imagery on the packaging (recall Defender for the Atari 2600?). I think concept art has its place, but it's not good enough. Screenshots don't cut it nowadays either; I distinctly recall being thoroughly unimpressed with the Doom 3 screenshots and mesmerized by Half Life 2's, and Doom 3 turned out to be the more graphically impressive of the two (HL2 is no slouch, though!).
  4. The image made me laugh my ass off, and though I do not play adult games I find myself more than a little disturbed by the analogy (which is closer to reality than I originally thought.)
  5. It should come as no surprise that men do not know how to cater to women. I'm a guy, I do not presume to understand women, and wouldn't know the first thing about what they'd be looking for in a computer game. My immediate thoughts are "something cute," which is the exact stereotype and which only goes to show that game designers are probably equally in the dark.
  6. I couldn't possibly agree more. Save points are OUT, quicksave is IN. Still, I'd like to add that having quicksave/load available is no excuse for poor gameplay, and actually having to use it every few minutes equals shitty gameplay (Half Life again).
  7. Finally someone put it into words. Loading screens are bad, however I'll add that while I would definitely prefer not having to wait at all, as long as I'm kept waiting at least make it worthwhile. Half Life 2 had 30+ second loading times per 2-10 minutes of gameplay (reminiscent of the first game), while Doom 3 would take the same time to load an area you would play anywhere between 15 and 60 minutes, which is much more acceptable.
  8. Woah, I'm glad I'm not a football fan.
  9. If I had a nickle for every time a bug in a game forced me out of the "obvious" game space and into an invisible barrier, I would be one rich monkey. Too bad I don't.
  10. YES! This is the one thing that's been driving me insane these last few years. Artifically linear gameplay was one of the things that annoyed me most about both Max Payne, Half Life 2 and even Painkiller; it drives me insane not to be able to walk into a room or a corridor "just because." Half Life 2's electronic barriers were better in that respect, but certainly not the solution. God damnit, if you want to trap me in a long corridor, at least don't pretend there are locked rooms and find some more reasonable way to make it plausible.
  11. The voice acting and cinematics comments are spot-on. Prince of Persia: The Sands of Time is a classic example of this; it could've been one of the best games of 2003 had it not been for astoundingly bad voice acting ("I saw my father turn to sand!") and horrible camera controls.
  12. While I agree with the authors' frustration, I can't see any other solution. Some of their comments are certinaly acceptable (particularly the RPG triggers), but for example I consider ammo starvation much less an issue than most of my fellow gamers: although I haven't played Resident Evil for the GameCube, many single-player first person shooters - Doom 3 and Serious Sam for example - require (at least in their higher difficult settings) careful expenditure of ammunition. I consider this part of the challenge, not an artificial way to inflate difficulty. That I reserve to just throwing 50% or 100% more monsters at you in the higher difficulty setting, as is done in most games. I think it's a lot more challenging to have to use the lesser weaponry where possible against tougher monsters so you have enough ammo for the big guys. As for instant-faliure levels, I have two words for you: Half, and Life.
  13. I completely disagree. There should be the option to unlock everything, but starting with low-class weaponry is part of the FPS tradition (as well as a direct cause-and-effect for gameplay), and unlocking content (or upgrading your car) is a huge part of the fun for certain types of games. Remedy's excellent Death Rally, or the astounding 2D shooter Tyrian, would be a great deal less fun if you could just start with the toughest ship.
  14. Oh, I don't know. I love crates.
  15. I'm increasingly worried about intellectual property issues, in particular software and concept-based patents. I was not aware of the effect patents have on gaming, so this is something of an eye-opener for me. I'll be sure to keep updated on this subject.
  16. For that matter, stop with the multiplayer bullshit. I don't particularly like multiplayer, and would definitely prefer to pay less for most games and just not get the multiplayer capabilities.
  17. Again, I'm not sure I agree. As long as you have a DVD drive and MPEG-decoding capabilities, since the console is stuck in your living room connected to your TV anyway it might as well play DVDs. Or audio CDs. But I'd rather the other, nonnatural features (PC-oriented features) be left out of the initial product, and either added later or just left to 3rd parties. It's obvious that Microsoft and Sony want their respective platforms to be the centerpiece of the living room, but I'm not interested in paying for it since I'm not going to be using it.
  18. I don't play any massively multiplayer games, so I'm not very familiar with the subject - but I don't like the sound of it.
  19. Unlike most people I don't have issues with jumping puzzles in first person shooters, providing the controls are adequate. That is part of the problem, a lot of games did that really, very badly (again Half Life comes to mind) but a lot of others did it just fine - proof of that is that I do not recall jumping puzzles that did not suck, and I've played a lot more FPSs than I can recall jumping puzzles. (Did that make any sense?)
  20. Buggre that for a larke. (tm)
That said, I much prefer PC gaming to console gaming; I do not get along well with the incresingly complicated controllers (still stuck in the D-pad+A/B buttons era), I hate the low resolution and crappy displays (good televisions are getting cheaper, but still prohibitively expensive) and the whole set up doesn't work for me. However, I must face the harsh reality: I spent the equaivalent of $1500 on my last machine (sans monitor!), and after 1.5 years I can already feel the hardware getting dated. Gaming PCs are ridiculously expensive and short-lived. I'll probably spend the money for my next two PCs on a next-gen platform and a really great HDTV-capable display and be done with it.
Tuesday, 31 May 2005 10:17:15 (Jerusalem Standard Time, UTC+02:00)  #    -
Personal | Gaming
# Monday, 30 May 2005
Apparently the GAIM 1.3.0 installer contains a really odd, bizarre or whatnot GTK+ runtime. Anyways I've installed the Glade 2.6.7 RC-1 GTK+ runtime (download) and it works like a charm.

Monday, 30 May 2005 20:33:52 (Jerusalem Standard Time, UTC+02:00)  #    -
I've been slowly but steadily moving to open-source platforms over the last few months. There are many reasons why and I won't bore you with the details; suffice to say that most of the major open-source projects are at worst almost as good as their commercial counterparts, free, cool and, from a developer perspective, there's always the option of tinkering.

Here's a selection of some of the more prominent open source programs I use:

  • Things I use every day:
    • Mozilla Firefox - the quintessential open-source project, which is lately getting even more spotlight than Linux itself. It has all the features you can hope for, is much faster than Internet Explorer, far better in the usability department (tabbed browsing, better download manager etc.) and is even compatible with about 90% bidi (Hebrew) websites. I've been using this since Firebird 0.5 (thanks, Ilya!) and it kicks mundo ass.
    • - the Microsoft Office replacement that's actually better than Office itself (well, at least Impress and Writer are). A localized version in Hebrew can be found here.
    • SpamBayes - open source bayesian filter, with Outlook plug-in. Fast and robust.
    • FileZilla - great FTP client and server (on par with CuteFTP and BulletProof). Windows-only, though.
    • The Gimp - photo editor. Not perfect, but as close to Photoshop as it gets without paying mundo bucks, and it's actually pretty damned good.
    • 7-Zip - excellent compression tool, with command line as well GUI options, a full library and support for most popular compression formats.
    • VideoLan Player - impressive open-source player and codec library. Self-contained and works great.
    • JetBrains Omea Reader Pro - excellent news aggregator with a huge number of features I don't generally use (among other things, it synchronizes with Outlook to let you access notes and contacts, it has a newsgroup reader, and more). It's fast, stable and simply good, and best of all - it's about to be released as open source software.
    • Notepad++ - terrific editor with syntax highlighting. It simply works.
    • ffdshow - a terrific DirectShow/VFW codec pack, including XViD, DiVX and MPEG-4 video decompression filters. Great quality and performance. Make sure to Google for the latest build.

  • Development tools:

    • Eclipse - an extremely impressive, full-featured IDE which gives Visual Studio a run for its money.
    • The Regulator/Regulazy - Roy Osherove's as-yet irreplacable tools for developing regular expressions (particularly with .NET).
    • WireShark (formerly Ethereal) - the de-facto packet capture and analysis utility. One of the best debugging tools known to man.
    • Cygwin - Posix environment for Windows, with GNU tools and everything. I'm not much of a UNIX guy, but this has proved invaluable in more than one case.
    • NUnit - the most popular unit testing framework for .NET. Make sure to check out (unless you use ReSharper, in which case the built in runner should suffice).
    • log4net - Logging framework for .NET. Absolute must-have.

  • Good tools I sometimes use:

    • Audacity - solid waveform editor
    • VirtualDubMod - best-of-breed DirectShow-based processors. I use this to encode, transcode and edit AVI files.
    • DOSBox - an open-source DOS virtual machine, emulating slower machines as well as several audio cards. Great for running old games, although not perfect.
My open source wishlist includes:
  • A proper, open source Norton Commander clone. Currently the best software in this category is, in my opinion, Total Commander, which has two major deficiencies: it doesn't support unicode, and it's commercial. Midnight Commander is Linux-only, text only and just doesn't cut it.
Monday, 30 May 2005 20:17:34 (Jerusalem Standard Time, UTC+02:00)  #    -
Personal | Software
This is where I'll keep links on a permanent basis. I reckon I'll update this list from time to time, as my interests (and the structural integrity of the internet) change.

  • Useful stuff
    • DodgeIt - Excellent replacement for Mailinator; free, no-setup e-mail box that you can put anywhere to avoid spam and e-mail bots.
  • Gaming
    • MobyGames - the most complete repository for computer game-related information on the planet
  • Hardware
    • AnandTech - one the oldest and most reliable sources for hardware reviews, tutorials and guides (and nowadays software and other stuff).
    • Tom's Hardware - another one of the oldest websites around (I've been reading it steadily since 1998), and still an excellent source of in-depth content.
  • Demoscene
  • Humour
    • Penny Arcade - the quintessential webcomic, a must for any gamer.
    • - Collection of various quotes from e-mails and IM/IRC chats. Hysterical.
    • VGames' webcomic - Hebrew gamer's webcomic that made me laugh my ass off.
Monday, 30 May 2005 15:46:59 (Jerusalem Standard Time, UTC+02:00)  #    -
Send mail to the author(s) Be afraid.
<2005 June>
All Content © 2017, Tomer Gabel
Based on the Business theme for dasBlog created by Christoph De Baene (delarou)