Tomer Gabel's annoying spot on the 'net RSS 2.0
# Thursday, June 22, 2006

Remember Nuclear War? If not, slap yourself on the wrist and go download it. Right now, like.

One night a couple months ago (before my laptop hard drive woes, which are nay over by the way) I found myself unable to sleep at 5 in the morning. I figured a couple of rounds of Nuclear War would do well to alleviate my sleeplessness; I fired the game up and after 10 minutes was hit by a sudden inspiration. The game is turn-based, and the controls are exceedingly simple: mouse cursor and left click. Since I was still looking for something useful to do with my newly acquired PDA it struck me that the game would work extremelly well on a stylus-equipped PDA or phone, and I was wondering if someone made a version for Pocket PC devices. A quick search through Google assured me that this is not the case, and since I had the next day off I fired up Visual Studio and started working.

At that point I figured that a simple rewrite wouldn't do. I wanted an identical version of the original game. Since New World Computing is no more, I figured the chances of getting the source for a 1988 game are a little on the slim side. At a whim, I fired up IDA Pro and started working. A couple of days later I managed to disassemble most of the graphics code and image decompression (LZ78-derivative) and wrote a utility to help me extract the game assets. It features picture and palette display, histogram and font parsing:


Interesting technical footnote: the palettes were embedded in the data segment; I wrote a regex-based parser for IDA's assembler output for this purpose. The palettes were in the VGA 0..63 scale, but some values are also higher and have to be clamped, which gave me quite a bit of grief until I noticed this.

With the game assets ripped I could proceed to write some actual code, however this posed an interesting dilemma: I want the game to be completely faithful to the original, but disassembling the game logic and AI is a huge task. I originally estimated it would take a month to complete the reverse engineering, but given that it's already been two or so months (discounting my laptop's downtime) it seems my guesstimate was woefully inadequate. This is where I turn to you for feedback: should I keep going in this direction (meaning the alpha version will probably take another several months to be released), or should I just write my own game logic and AI code, get a release out and then proceed with reverse engineering?

Let me know your thoughts. Also, if you want to create better (higher quality, different) graphics and music for the game get in touch -- I'm aiming for a very spartan first release (to keep it in a reasonable timeframe), but once I'm done with this baby the sky's the limit.

Thursday, June 22, 2006 6:28:35 PM (Jerusalem Standard Time, UTC+02:00)  #    -
Personal | Gaming
# Monday, June 19, 2006

As I mentioned in my previous post, my previous travel experience is somewhat limited. The one aspect of this trip I had absolutely no way of preparing for was the hours I was about to spend in airports and airborne. The travel arragements included a short (1.5 hours or so) flight to the TAV Atatürk International Airport in Istanbul and a connection flight to Beijing Airport, both by Turkish Airlines. Unlike my previous trip to Turkey, this time the flight was far longer (the connection flight to Beijing takes 9-10 hours); also, in stark contract with the previous trip's charter flight, this time I was to fly business class. Proper food? Legroom? What a concept!

I arrived with my gear at Terminal 3 of the Ben-Gurion Airport in Tel-Aviv. Proceeding to check my baggage in, I've encountered the first of the many perks of business class: radically reduced lines to security and check-in (all airlines have a dedicated desk, and the TA airport has a special X-Ray line for business class passengers as well.) After checking in and exchanging some currency (along with passport control and additional security checks) I proceeded to the passenger hall and then did some shopping in the duty free shops there. I still had a while before my flight, and it was then that I made use of the second major perk in business class: the CIP lounge.

The Dan Lounge in Ben Gurion Airport

Turkish Airlines make use of a CIP lounge operated by Dan hotels and is an extremely welcome respite from the bustling mess that is the passenger hall. Aside from wireless internet access - which is actually available in the regular passenger hall as well, but that isn't necessarily true for all airports - the CIP lounge features comfortable seats, private bathrooms, a private meeting room (for those who require it and will pay extra, of course) and refreshments. Most importantly, it's uncrowded and quiet; having spent a total of over 10 hours in airports in the span of three days I've learned to appreciate the relative peace and quiet of the CIP lounge. I can't imagine what spending those hours would be like in the regular passenger halls. The Dan CIP lounge in Ben Gurion airport (section B) is fairly small compared to the lounges in Istabul and Beijing (more on those later) but is perfectly equipped: comfy seats, sodas, light food and some alcoholic beverages if that's your thing.

Boeing 737 interior diagram (source)

My next station was the Turkish Airlines Boeing 737-800 airplane headed to Istanbul. I've flown in a charter 737 flight before, and even at 14 could vaguely recall the airplane as cramped and uncomfortable; I was hopeful that the business class section would be radically more comfortable, but alas that was not the case. The 737 is fairly small (39.47 metres in length and only 3.76 metres wide, internally [source]) and quite uncomfortable. The Turkish Airlines plane was configured so that the business class seates were slightly further apart (for a little more legroom), but each row still contained triple seats (as in the diagram) which do not comfortably accomodate an above-average sized person. The middle seat was converted into an armrest/cup holder though, so at least I had some freedom of movement. Despite the short flight (less than two hours) the food was actually excellent: the main dish was a halibut fillet with saffron rice, shrimp and calamari. Being generally averse to fish, I was very much surprised at how good the dish was.

The Atatürk airport in Istanbul was where I made my home for the next 4 hours or so. I met a pleasant guy called Haim on the way and we had a beer at the local cafe (at about three times the proper price); he's a real-estate entrepreneur doing business in China and had some insights to share about the culture there. After strolling about the duty free complex (which is over thrice as large as the one in Tel-Aviv) for a bit I proceeded to the CIP lounge, which is considerably larger than the one in TA. The lounge is decorated in Ottoman style and is very appealing. Despite the large variety the refreshments are fairly basic; wireless access was spotty and somewhat problematic and the restrooms weren't nearly as highly maintained as in TA. The couches were rather comfortable though, and I put them to very good use. Unfortunately I was unable to find any pictures of the lounge on the 'net.

A330-220 business class seat (source)

The Airbus A330-200 airplane which was my transporation from Istanbul to Beijing was an extremely welcome change from the 737 which brought me to Istanbul. At a length of 58.8 metres and a maximum internal width of 5.28 metres, the plane (and the business class seats in particular) is spacious and comfortable. There is as much legroom as you could possibly want, and the seats are wide enough to accomodate large persons as well as small (although I could use a few extra centimetres for my legs). The Emirates Airlines plane depicted on the left is somewhat different from the one I took - the seats on the Turkish Airlines airplane were somewhat larger and had an adjustable led-based lamp above of the arm-rest. On the back of each seat (facing backwards, towards the passenger in the next row) is an LCD screen which can be controled via a remote control unit inside the arm rest (where it can be seamlessly stored for takeoff, landing and taxi). A fairly large selection of movies was available on an individual basis; since I had my laptop with me I didn't make any use of this feature, but there were some pretty good flics (e.g. From Russia With Love) if one was inclined to watch them. Also featured was an in-flight map, an external camera (particularly cool during takeoff/landing) and some intercontinental communication features I had absolutely no use for.

The service on this flight was absolutely top-notch: helpful, efficient (and attractive!) stewardesses cater to the passengers' every whim. Other than regular soft drinks, sodas etc., alcoholic beverages were served, and not cheap-ass drinks either: several brands of wine (both Turkish and foreign), Johnny Walker Black Label and even Glenfiddich Antique (18 years old). I was fairly tired and opted for a glass of Graham's Port Late Bottled Vintage (Portuguese sweetened red wine) which was terrific. Food was surprisingly not quite on par with the previous flight, but at least we got to use proper cutlery (Israeli security procedures do not allow metal cutlery on flights to/from Israel).

Between all of this grandeur and sitting among all of those people in business suits made me crave some balance; out came the laptop and headphones, and two Buffy episodes later I was finally tired enough to fall asleep. I woke up just in time for the pre-landing breakfast, and I'll tell you the rest in the next post.

Next up: China, shopping and the way back

Monday, June 19, 2006 10:12:40 PM (Jerusalem Standard Time, UTC+02:00)  #    -
# Wednesday, June 14, 2006

My travel history is not a particularly interesting one: a trip to London with my parents when I was 14, another trip to Turkey last year. Other than that, nada. So it was with particular interest that I took on a business trip to China: for starters, I was eager to get into the business side of things at Monfort. Second, I am fascinated with Chinese culture and have been planning a trip to China in ages. Lastly, it's a paid business trip to another country... I'm being paid to do things I would never have been able to afford on my own. Obviously, I said yes!

Going on a business trip is quite different from going on a vacation and has its own set of rules. I had to get a business suit, business cards and similar crud. I'm not a big fan of clothes in general (Israel is extremely hot and I'm very averse to heat) and uncomfortable, constrictive clothes in particular, so it's no surprise that I have never worn a business suit. There is a whole etiquette involved: colour matching, the type of jacket, button placements etc. These are mostly trivialities, but it gets a little more interesting with ties: the first and last time I ever wore a tie was for my Bar-Mitzvah party, and my dad put the tie on for me. This time it wasn't really an option as I was going to Beijing on my own. Luckily the 'net has once again proven to be an indispensible information repository, and over a weekend I was able to successfully teach myself how to tie a half-windsor knot from scratch. (This might be a good time to note that, externally, I can't see any difference between half-windsor, full-windsor or four-in-hand knots. They all look alike to me.)

Image courtesy

I'm usually inclined to do my homework before going into a new venture; in this case it meant doing serious reading on business suit etiquette (as mentioned above) and an overview of both Japanese and Chinese business culture (since I'll be meeting both). At least in theory business cards are a major aspect of oriental business culture - such cards are prerequisites for businessmen from either culture, or those interested in doing business in the orient. There are even customary rules on how to present business cards: either one hand (always the right) or, preferably, with both hands, with the written side facing the other party. Some sites go as far as to recommend double-sided business cards, one side in English and the other in whichever language is relevant to your uses. Finally, it makes an impression to hand out the cards from a holder (pictured on the right). These are supposedly easy to come by in any gift shop (which are abundant in Israel for some reason), however I found this out a little too late and was unable to obtain one in time for my outgoing flight. I figured I'll just pick one up at the airport, but apparently none of the shops in either the Israeli or the Turkish duty free zones carry such products.

A major difference between this trip and any other I've ever been on is packing detail: packing the suit takes special attention. I'm a pretty experienced hiker so packing is a trivial task for me; I usually pick the smallest necessary bag and pack just what is necessary (or useful) for the purpose of the trip. Although a suitable strategy for hikes through Israel or trips to Turkey, this strategy proved inadequate because of the suit: I used a folder for packing the suit shirt, and a special carrying bag for the jacket and pants. I'm only going for a few days so I didn't pack a large bag or suitcase and settled for a medium-sized carry-bag... which turns out to have been a mistake. Although I carried very little on this trip, the jacket bag wouldn't fit in under any circumstances (not without twisting the jacket inside) and I had to carry it with me everywhere (duty free, lounge, plane, etc.). I'm definitely picking a proper suitcase for the next trip. The special shirt folder also proved inadequate and I had to have the shirt ironed again.

I figured the few things I'll be needing before and during my flights can be kept in the laptop bag. This includes a wallet, glasses and the various documents (flight tickets, passport) I'll be needing on my trip. This would've been a wise decision if it weren't for two factors: I needed some extra space for the stuff I bought at the Israeli duty free zone (The Da Vinci Code and a bottle of Rémy Martin XO Excellence), and the damn suit carry bag kept bothering me. I think I'll go with a small traveller's bag next time.

The one thing I didn't plan properly was a camera. I could've borrowed my dad's camera (Minolta Z2), but it's large and unwieldly. I wanted to buy a compact digital camera and figured I could buy a mainstream camera for a reasonable price in the Israeli duty free. This also turned out to be a mistake, because the price for the camera I was initially interested in (Canon Digital IXUS 50) was considerably higher than the price I could get even inside Israel. No luck in the Turkish duty free zone either, so it's mostly a question of whether or not I can find the time in China to look up a camera.

Next: the actual flights.

Wednesday, June 14, 2006 9:34:14 PM (Jerusalem Standard Time, UTC+02:00)  #    -
# Sunday, June 11, 2006
  • I've been keeping hella-busy lately; this in itself wouldn't keep me from posting, but it's keeping me from coming up with good ideas for posts. Sorry about that, it's only temporary.
  • I'm going on a business trip to China in a couple days. I hope to have some pictures and stuff posted when I'm back.
  • Easy Star All Stars - Dub Side of the Moon is as listenable as it is funny.
  • I've ditched Gaim, at least until the next beta. Aside from being ugly, it's currently too quirky and slow. Since I can't really stand Miranda the only viable alternative at current is Trillian.
  • I've had to reinstall my machine at work... experiences in a separate post.
  • ReSharper 2.0 is at version #251, which supposedly fixes a lot of performance issues.
  • Oren Eini's posting like mad, make sure to finger his blog occasionally.
  • I'm rennovating my home theater setup. Current candidate list: Panasonic TH-42PHD8, Paradigm Monitor 9 v4, Paradigm CC-370, Denon 2601. Regardless, I would appreciate any pointers in the same price class.
Sunday, June 11, 2006 11:46:06 PM (Jerusalem Standard Time, UTC+02:00)  #    -
# Tuesday, June 6, 2006

There are some extremely nonobvious repercussions to switching domains, a few of which we were unfortunate enough to encounter here at Monfort.

The first of those is that certain source control providers (such as Vault) consider the host name an integral part of a check out atom; since the domain name switch resulted in a change in all host names, the direct result was that after the switch our developers were unable to do anythign with files that had been checked out before the switch. Although Vault is based off of SQL Server I couldn't figure out how to "surgically" take care of the problem; changing the host record in the check out object table had no apparent effect. I thought this might have to do with client/server side caching, but restarting both did not have the expected result. To save time, we eventually worked the problem out by undoing all check outs server-side from the administration tool and manually checking the files back out.

The second problem was much less obvious: some of our projects make use of cryptographic key containers for signing .NET assemblies; after the switch we started getting "8013141C errors" (Windows will not format this error message). We tried reinstalling the key container only to get an "Object already exists" message from the sn tool. Yaniv, one of my colleagues, managed to find an article with the apporpriate solution: apparently one needs to update the ACL on Documents and Settings\AllUsers\ApplicationData\Microsoft\Crypto\RSA\MachineKeys. Simple, but not trivial.

Tuesday, June 6, 2006 6:30:30 PM (Jerusalem Standard Time, UTC+02:00)  #    -
# Saturday, June 3, 2006

It's been a while since I've posted anything gaming-related, and I'll make it short and sweet: stop whatever it is you're doing. Buy Dreamfall. Play it. Relish it. It would be better if you played The Longest Journey first, but it's not an absolute must (you'll enjoy the sequel a lot more though).

Suffice to say that this game looks amazing, plays amazing, sounds amazing... the voice acting is top-notch, the story and settings are magnificent. It's... bloody awesome. Along with Psychonauts it must be the best game I've played in years.

Saturday, June 3, 2006 5:22:30 AM (Jerusalem Standard Time, UTC+02:00)  #    -
# Wednesday, May 31, 2006

Quietly and (apparently) without fanfare, JetBrains have released ReSharper 2.0. Those of you used to 1.5 will find that the new version is extremely feature-rich, but also radically slower than 1.5; I seriously hope JetBrains are aggressively optimizing their plug-in, because on large projects it can become quite sluggish.

That said, the huge amount of new features as well as Visual Studio 2005 support are a definite reason to move to 2.0.

Wednesday, May 31, 2006 5:38:24 PM (Jerusalem Standard Time, UTC+02:00)  #    -
Development | Software
# Tuesday, May 30, 2006

Damned if I know why, but Visual Studio 2005's debugger just stopped working today. I initially found this out when I attempted to run PostXING in debug mode, and although the debugger seemed to be working (VS2005 switched to debug view, the postxing.vshost.exe child process was right there) absolutely nothing happened for minutes. When I eventually hit Shift+F5 I was faced with another 30-odd-second stall, after which I was duly presented with this astoundingly useless dialog:

"Mom! The VS2005 debugger is being a dildo!"

If I didn't want to stop the debugger, I wouldn't have hit Shift+F5. This is a class case of the "I know what you want but I'll ask you anyway" syndrome which is becoming increasingly evident in Microsoft's newer products (such as Windows Vista).

But that's not the issue. I can't get the damn debugger to work. It stopped suddenly and wouldn't debug any project at all - it just hangs during or immediately after loading symbol files. And I can't find anything about it on the 'net, either. Oddly enough, attaching to external processes seems to work fine. Ideas?

Tuesday, May 30, 2006 11:51:55 PM (Jerusalem Standard Time, UTC+02:00)  #    -
# Sunday, May 21, 2006

How closely coupled the various components in Windows are. Take Internet Explorer, for instance; this wretched thing has been around since the days of Windows 98, and is now so entrenched in the bowels of the operating system it's impossible to get rid of. In fact, if you tried to remove it from your machine you'll find that it's not even a relevant option:

That might explain why I reacted with very little surprise when I encountered the following dialog box when starting windows explorer (read: double-click on "My Computer"):

I didn't start the debugger, in case you were wondering. As much as I appreciate people who actually bother attempting production-debugging on other people's programs, I don't have the time and patience for this - I have actual work to do (particularly when at work). So I selected No. And the dialog came up again. And again. And again. To top it off, my CPU was bottomed out; Process Explorer seemed to think MDM was the culprit:

So now Internet Explorer and most programs that rely on it crash immediately on startup (oddly enough, RSSOwl, which relies on SWT, which relied on Internet Explorer, works without a hitch). I immediately suspected some sort of adware/malware/crapware, but Spybot wouldn't find anything. Now what am I supposed to do? I hardly think Internet Explorer (which I hardly ever use anyway) is worth a complete system reinstall.

Sunday, May 21, 2006 9:58:32 PM (Jerusalem Standard Time, UTC+02:00)  #    -
Development | Software

Warning: Emotional outburst follows

So here I am, working on the latest and greatest version of Microsoft's flagship messaging and collaboration application (read: the antiquated Outlook 2003 and its bug-riddled back-end). I've switched back to Outlook after over a year of using the generally excellent Thunderbird. It's driving me insane.

For starters, despite the fact that Microsoft has had years to perfect the multilingual - bidirectional text, in particular - support in its applications, Outlook still suffers from what - in a new product - would be considered amusing issues that a hotfix will come out for in a couple of days. Over three years after its release Outlook still manages to completely mangle plain-text e-mails. Take a normal, Engilsh plain-text e-mail and try to reply to it. At times (I still haven't been able to find a pattern), although the e-mail is displayed just fine, replying to it causes the bidi heuristic engine built into Outlook to decide that this is a right-to-left e-mail, and the reply is prepared accordingly (quoted lines included). This wouldn't be such an issue if there was any way at all to change the reading order without completely mangling the text (Ctrl+A, Ctrl+Left Shift):

Original imageAfter clicking on Reply...After changing the reading order
Original e-mail (left), Outlook's reply (center) and after changing the reading order (right)

I showed this to Ilya (a friend and colleague with much experience in bidi-related issues). His best idea was to write a macro to do the low-level conversion for me. That's not really a solution; where bidi support in Thunderbird is merely missing, in Outlook it's outright broken. Thunderbird allows me to insert arbitrary HTML if I want to; in Outlook there's simply no way at all to work around this problem.

To add insult to injury, I started using IMAP when working against one of my mail servers. I was frustrated for a few days becaue the messages marked as deleted were never actually removed from the server; aside from the nuisance of seeing old messages displayed strikethrough along with fresh messages (which can easily be filtered out), I simply could not figure out how to purge the deleted messages. The most obvious option, "Process Marked Headers", was completely useless; nor was "IMAP Folders..." of any help. This has got to be the first time I ever actually used Office's help - a fact I would normally attribute to a fundamentally impressive UI - only to find that the option resides under "Edit->Purge Deleted Messages." Obscure location? I thought so too. But at least the option is there.

Sunday, May 21, 2006 5:37:06 PM (Jerusalem Standard Time, UTC+02:00)  #    -
Development | Software
Send mail to the author(s) Be afraid.
<June 2006>
All Content © 2022, Tomer Gabel
Based on the Business theme for dasBlog created by Christoph De Baene (delarou)