Sunday, June 22, 2008

After figuring out the problem with the old dasBlog permalinks I had to figure out a way to convert all existing links in my blog to the new format. Lately whenever I need a script I try and take the opportunity to learn a bit of Python, so it took an hour or two to write the conversion script.

Here it is; if you want to use this for your own copy of dasBlog, change the "domain" global variable to wherever your blog is located and run this from your ~/Content directory (you can also download the script here):

#!/usr/local/bin/python
#
# convert_permalinks.py
# Quick and dirty permalink converter for dasBlog content files
#
# Tomer Gabel, 22 June 2008
# http://www.tomergabel.com
#
# This code is placed in the public domain (see http://creativecommons.org/licenses/publicdomain/)

from __future__ import with_statement
import os
import glob
import re
import urllib

# Static constants
domain = 'tomergabel.com'
href_lookup = re.compile( 'href="(http:\/\/(www\.)?' + re.escape( domain ) + '/[^"]*\+[^"]*?)"' )

# Globals
conversion_map = {}

# Takes a URL and removes all offensive characters. Tests the new URL for validity (anything other than a 404 error is considered valid).
# Returns a tuple with the converted URL and a boolean flag indicating whether the converted URL is valid or not.
def convert( url ):
	new_url = url.replace( "+", "" )
	# Check URL validity
	valid = True
	try:
		resp = urllib.urlopen( new_url )
		resp.close()
	except:
		valid = False
	return [ new_url, valid ]

# Processes the source file, converts all URLs therein and writes it to the target file.
def process( source_file, target_file ):
	with open( source_file, "r" ) as input:
		source_text = input.read()

	conv_text = source_text
	match_found = False
	for matcher in href_lookup.finditer( source_text ):
		if ( matcher != None ):
			match_found = True
			original_url = matcher.group( 1 )
			print "\tConverting permalink " + original_url
			if not conversion_map.has_key( original_url ):
				conversion_map[ original_url ] = convert( original_url )

			conversion = conversion_map[ original_url ]
			if conversion[ 1 ]:
				print "\tConversion successful, new URL: " + conversion[ 0 ]
				conv_text = conv_text.replace( original_url, conversion[ 0 ] )
			else:
				print "\tConversion failed!"

	# Write out the target file
	if match_found:
		with open( target_file, "w" ) as output:
			output.write( conv_text )

# Entry point		
for file_name in glob.iglob( "*.xml" ):
	print "Processing " + file_name
	process( file_name, file_name + ".conv" )
Sunday, June 22, 2008 3:47:55 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Thursday, June 19, 2008

What a stroke of luck! With more and more sites foregoing captchas, I was starting to think weird-ass captchas are a thing of the past. Fortunately trusty old RapidShare brought me to task:

captcha_of_hell_sm 

Apparently not only am I meant to figure out the convoluted glyphs (it took me a while to figure out that there are no numbers -- their G looks exactly like a 6, O and 0 look the same etc.), but I'm supposed to match only the letters connected to a cat. Conceptually amusing, but what the hell? Can you tell me which of the above are cats? Is it reasonable to expect someone to spend more than about 5 seconds on a captcha?

Oddly enough I re-entered the link a little while later to discover the amazing RapidShare feature called "Happy Hour":

captcha_of_hell_happy

And I'm just left scratching my head.

Thursday, June 19, 2008 11:57:44 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Monday, June 16, 2008

Update (22 June 2008): I've posted a Python script for converting the invalid permalinks to their "proper" form.

After moving to GoDaddy I found to my chagrin that none of the site's article links (a.k.a permalinks) seem to work. There are any number of reasons why this is a bad thing, the two primary reasons being that Google cannot crawl the actual articles and that historical, incoming links no longer work. As they say, crap on a stick.

I originally looked into the URL rewriting rules and HTTP handler configuration in web.config, thinking that perhaps some of the handlers need to be manually registered with IIS for some reason; eventually I installed the blog locally, migrated to IIS pipeline mode (which might be cool but has no tangible benefit for me) but the problems persisted. Until I tried accessing a permalink URL locally, that is. Then I discovered that plus signs in URLs (dasBlog's way of avoiding encoding spaces to %20) are considered "double-encoded" characters, and are automatically rejected by IIS 7.0 by default because under some circumstances they pose a security threat.

There's a knowledge-base article detailing how to resolve this on a server or per-application level, but either solution requires server reconfiguration. Working under the assumption that this entails special requests from each and every potential future web host, and that having plus signs in my URLs is not the "right thing to do" anyway, I just opted to disable them and try to rework the existing links as best I can. I suppose blogs with considerably higher traffic cannot afford that luxury, but then blogs with considerably higher traffic usually work with much more specialized hosting providers and wouldn't have to worry about server reconfiguration in the first place...

Anyway, hope this helps someone.

Monday, June 16, 2008 11:05:53 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Sunday, March 16, 2008

Update: Link to the Omea wiki page with more details.

My favourite RSS aggregator, newsgroup client and all-around cool application I always have in the background is JetBrains' Omea Pro. While I don't use those features, Omea also supports aggregating and searching Outlook mail, contacts and a host of other connectors. Now that it's open source there's even be room for improvement, so those of you who do not like online aggregators like Google Reader would do well to go to the Omea site and check it out!

Sunday, March 16, 2008 11:33:36 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Thursday, February 21, 2008

I just encountered a really weird issue with Windows Vista, where an external Western Digital hard drive (an older My Book 250GB) would show up as a mass storage device, but was not allocated a drive letter and was basically inaccessible. The weirdest thing is that the USB "Safely remove USB Mass Storage Device" icon did show, except with no drive letter.

Anyway the way to deal with it was to fire up the Device Manager (Start->type in Device Manager) and double-click the external hard drive:

externalstorage_devmgr

Then go to the Volumes tab and click on Populate:

externalstorage_volumes

If the volumes show up, you're good to go.

Thursday, February 21, 2008 3:55:13 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [1]  | 
 Wednesday, January 16, 2008

I take pride in being one of the few people I know who actually buy their media: I have a sizable collection of CDs, DVDs, computer games and software that I've bought over the years, and I always feel good about having paid the people responsible for these efforts.

Until recently, that is.

It is commonly said that one of the most obvious traits of Israelis is that they hate to be screwed, and this is as true for me as it is for everyone else. It seems the media companies have taken upon themselves to screw me in every conceivable way, and paying for media is fast becoming an exercise in frustration for me. A most recent example of this is Valve's not-so-new-and-shiny content delivery network which goes by the name of Steam. I don't even know where to begin recounting what's wrong with this thing:

  1. Content delivery speeds are abysmal. I recently downloaded Half Life 2 Episode Two and got 200K/sec maximum transfer rate (more common rates hovering around 50K/sec) on a dedicated line with 5Mb downstream. I consistently get 300K+ rates to even the most busy content delivery servers (Akamai, Microsoft etc.) and it's not like I can use a download manager to better tune the download to my connection.
  2. The download manager is shit. Even ignoring the fact that the only controls it exposes are "pause" and "resume" doesn't help the fact that the error detection code is buggy as all hell: the first time I tried downloading the game it got stuck on 99% without any type of diagnostic or error message, and wouldn't resume. Reading piles of angry forum threads led me to the conclusion that the downloaded content files are simply corrupt; deleting and re-downloading the game solved the problem.
  3. Terminology is all screwed up: telling the game manager not to automatically download updates for a certain game will pause any pending download for that game, including the game content itself.
  4. Although there is no apparent reason for this, playing a game pauses the downloads for all other games. That, at least, has been my observation (Episode Two was downloading when I started on Episode One, and hasn't progressed a single per cent when I quit the game).
  5. The application itself is completely opaque. At no point does it give any indication of what it's doing; you can start the client, nothing happens for two minutes until it finally shows you an "updating Steam client" window. There are no visible clues when it's attempting to access a server (e.g. when clicking on Show News) or when a downloaded upgrade is being installed.
  6. I don't want to connect to a server to play a locally installed, legally bought game. That's just unforgivable, even if it didn't mean I sometimes have to wait for several minutes before the server actually logs me in instead of timing out.
  7. It might shock you, but I still play old games. Sometimes very old games (think Master of Magic). Will Half Life 2 be playable in five- or ten-year's time when the Steam servers have long been cold? I doubt it.

I know Steam probably works well for a lot of people, but for me it's a god-damned affront: I'm a paying customer, there's no reason why I should have so little control over a game that takes up gigabytes on my hard drive. To add insult to injury, the pirated versions often work better: the pirated version of Half Life 2 itself had considerably lower loading times, didn't suffer from the audio stuttering issues that plagued the original, and didn't waste hours of your CPU time on decrypting the game content once it was finally downloaded. If Valve wants to keep my business, here's what they should do:

  1. Switch to an open distribution model (HTTP or, preferably, BitTorrent) so I can use my own software to download their games if I so wish;
  2. Get rid of the dependency on Steam for their games. When I click on the HL2E2 icon I want the game to come up, and I don't give a rat's ass about Steam;
  3. Move to an asynchronous, transparent update mechanism for their games, preferably one that allows me to download game updates and install them on my own.

With the original versions becoming increasingly irritating and pirated versions becoming better than the originals (not to mention less costly), does paying for media still make sense? Remember, that's just one example, I could give a great many more.

Wednesday, January 16, 2008 12:24:04 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [1]  | 
 Monday, December 24, 2007

If you use Executor (a freeware launcher utility), check this out. There's even a video showing it in action!

Monday, December 24, 2007 12:39:40 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Tuesday, October 02, 2007

The Windows SDK command shell, setenv.cmd, is immensely useful, so much so that I wanted it as my default command prompt (i.e. when CMD is run, no matter by whom). A quick Google search didn't turn out anything, so I eventually figured it out myself. The trick is to add it to the command processor's AutoRun value in the registry (run cmd /? from the command prompt if you don't know what I'm talking about):

reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun /f /t REG_EXPAND_SZ /d "\"%programfiles%\Microsoft SDKs\Windows\v6.0\Bin\SetEnv.Cmd\" /debug /x86 /vista"

You'll notice that I explicitly set the arguments for setenv.cmd; I can't explain it (nor bothered to delve into the script), but without these arguments the script gets stuck along with the command prompt. You should obviously change the values to your own environment.

Tuesday, October 02, 2007 9:18:28 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Monday, August 13, 2007

Installing Microsoft Team Foundation Server is a ridiculously arduous and difficult process. I'll spare you my own complaints and simply list the checklist for installing this beast. This assumes you're installing TFS in a domain-enabled environment and in single-server mode; this is the typical configuration for a small-to-medium-size organization:

  1. Designate a machine to host your Team Foundation Server repository. This machine must not double as a domain controller as this configuration is not supported by TFS.
  2. Set up at two regular user accounts (not administrators, and if you have any group policies you may - according to your configuration - want to keep these users out of the relevant OUs) in your Active Directory. I used the trivial TFSService and TFSReports accounts. Also you'll need a user with administrative privileges on the target server; I personally prefer to avoid the associated headaches, so I simply used a domain administrator user for installation purposes (but used the aforementioned two users to set the beast up).
  3. If necessary, install Windows 2003 Server (whatever flavor) on the machine; don't forget the necessary service packs and updates. If your pipe is fat enough, just let Windows Update do its magic.
  4. Add an Application Server role, make sure you enable ASP.NET 2.0 during the installation process
  5. Install SQL Server 2005. Make sure you read the installation guide first though, as you'll need to set it up to "Use the built-in System account," enable all services except Notification and finally select Windows authentication as the preferred authentication mechanism. You'll also need to let the SQL Server installer install a bunch of prerequisites before actual installation begins.
  6. Install SQL Server 2005 Service Pack 2.
  7. From the TFS installation media, install hot-fix 913393 for .NET Framework.
  8. Install Windows SharePoint Services 2.0 with Service Pack 2.0. Make sure you select server farm mode when installing, or you'll just have to redo the installation.
  9. Install Team Foundation Server itself.
  10. Back up the reporting services encryption key (you can find a description of the procedure here).
  11. Install hot-fix 919156, a.k.a the Quiescence GDR (no, I have no idea what GDR stands for).
  12. Install Team Foundation Server Service Pack 1.
  13. Make sure TCP port 8090 is open in your firewall software if you want web access to your Team Foundation Server (to be honest, I haven't found any use for it yet.)
  14. Install Team Explorer from the installation media (required for many add-ons, including eScrum).
  15. Install Visual Studio 2005 Team Suite Service Pack 1. This can, and will, take forever.

If at this point you're not thoroughly exhausted, you might want to set yourself up a with a project. We're currently evaluating the Microsoft eScrum template for our purposes; my colleague Oren Ellenbogen, in his capacity as Scrum Master, will probably be posting his thoughts on eScrum as a platform. In the meantime here's a quick list of solutions to problems we've encountered while configuring the beast:

  1. Make sure you install the various prerequisites; in this case, .NET Framework 2.0, IIS, TFS and Team Explorer, AJAX Extensions 1.0 and the Anti-Cross Site Scripting Library
  2. At this point you're liable to get a strange SharePoint-related error if you try and create an eScrum-based project; if that's the case (or as a preemptive measure), just run iisreset on the TFS server.
  3. If you can't seem to access the eScrum website (nominally at http://yourserver/eScrum) you may have to reconfigure the eScrumAppPool identity from the IIS manager (right click the application pool, chose Properties, go to the Identity tab and enter the right information under Configurable)
  4. You may also get 404 errors from the eScrum website even though it's very obviously configured. We've found that the solution described here works as well:
    • From the command prompt, type cd "%ProgramFiles%\Common Files\Microsoft Shared\Web Server Extensions\60\BIN"
    • Run STSADM.EXE -o addpath -url http://localhost/eScrum -type exclusion
    • Run iisreset again
  5. eScrum reports only update once every 1 hour. If this bothers you, follow the instructions here to reduce the lag.

Hope this saves someone out there a lot of time and headache (and if so, a comment or e-mail is always appreciated...)

Monday, August 13, 2007 2:08:18 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Sunday, August 05, 2007

A new organization and a new office require a new IT infrastructure. I'll spare you the gritty details and just mention several installation issues we've encountered and how to resolve them.

  Problem: Windows Server 2003 installed on a RAID array via NVidia RAID controller; drivers are not available on the regular installation CD-ROM.
  Solution: Use a USB floppy drive (most servers and workstations don't come with floppy drives nowadays, and with good reason). In the case of the Tyan server we use, booting off of the driver CD allowed me to create a driver floppy which I then used when installing Windows.
     
  Problem: Windows can't locate file "nvraid.cat" when using the NVidia RAID controller drivers.
  Solution: Hit the escape button to ignore the missing files (apparently that .CAT files are used for cryptographic purposes and are not provided by NVidia, see here).
     
  Problem: Nero refuses to install without installing DirectX 9.0c first on Windows Vista.
  Solution: Although Vista comes with DirectX 10, you can safely agree to this and skip the DirectX installation later. Why a CD/DVD burning package requires DirectX (even though I didn't install any of the additional crap provided by Nero) is beyond me.
     
  Problem: Not strictly an installation issue, but there isn't any immediately apparent way to echo an empty line from the Windows command processor.
  Solution: While "echo /?" won't tell you this, the MSDN documentation for the same command clearly mentions "echo." (written exactly so). Contrived.
     
  Problem: Setting up a DNS canonical name (alias) entry for a file server results in "Duplicate name exists on the network." errors when attempting to use the network resource.
  Solution: Find registry key "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters" and set the value of "DisableStrictNameChecking" to 1. (More information)
     
  Problem: Newly configured DHCP server doesn't respond to "ipconfig /renew" requests.
  Solution: Although I can't explain this, the problem was not the DHCP server; right-clicking the network connection icon and then selecting Repair did actually manage to obtain a lease. If this happens to you, don't get upset (as I did), try this technique first and see if it works for you.

I'll add a separate post on TFS and eScrum later today or tomorrow (hopefully).

Sunday, August 05, 2007 9:20:55 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Sunday, July 01, 2007

Quick download link (v1.1)

I wanted to simple way to download an entire PicasaWeb album. Right-click and save simply will not do, installing the Picasa application is completely out of the question (I use FastStone, in case you were wondering) and I couldn't find any easy way of doing this, so I whipped up a quick and dirty application. It's pretty self-explanatory, really:

picasawebdownloader

Download the application (source included) here.

I also used the chance to give #Develop a serious whirl, and I can honestly say that it's damn impressive; in several hours of use the only real qualms I've had with it are the non-configurable keyboard bindings (at least I couldn't find any configuration menu for this; it wouldn't be an issue if the default bindings weren't slightly different from what I'm used to) and the lack of immediate/watch debug windows. The dialog editor is full-featured and the environment seems to be quite responsive and robust. I really am impressed.

Update (20-Aug-2007): Version 1.1 is now downloadable. I've added support for AuthKeys (as per skolima's request) so you should now be able to download private albums as well (assuming you have the appropriate key). Also added a compiled binary to the archive, doh!

Sunday, July 01, 2007 2:28:06 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [23]  | 
 Tuesday, January 16, 2007

Update (1 July 2007): The newer versions no longer exhibit this problem (tested on beta 12.0.1183.516). Just make sure you chose "None" for the image borders.

Looking back at my post on Windows Live Writer dating back to August, it seems that I either missed a very significant fact about the product or perhaps something has changed in one of the betas. The short story is that Windows Live Writer sucks at handling images; whenever I embed an image it goes on to severely reduce the image quality:


You be the judge: on the left, the original. On the right, the "improved" version

Not only does WLW upscale my image for some unknown reason, it also does this via an extremely low quality scaler. In the case of simple images such as the one above, this will also result in larger file sizes (this example  demonstrates a 400% increase in file size - from under 21KB to a little over 104KB).

This reminds me of the old image pasting problem with Microsoft Outlook, and what kills me is that I can't think of any conceivable reason why anyone would develop this "feature". To add insult to injury, the only feedback link I could find (via this post in the Windows Live Writer blog) is an MSN Groups page that requires registration. The registration process itself asks you about a hundred completely personal questions that Microsoft has absolutely no business asking.

I'll try and get in contact with the WLW team since I do want to keep using the tool, but this particular issue is starting to cost me a lot of time and effort.

Tuesday, January 16, 2007 4:01:29 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [5]  | 
 Monday, December 25, 2006

This is an absolute must-read for anyone who gives even a bit of a damn about their rights as consumers. (via Aynde)

My brother thinks it's basically FUD-based propaganda, but I suppose if it's a way to make people listen it works for me (when fighting fair just isn't enough...)

Update (02-Jan-2007): Read this rebuttal. It's extremely cynical, but also makes several valid points.

Update (03-Jan-2007): For a more cynical and consumer-oriented view, check out this scathing editorial from The Inquirer. It's amazing how much it echoes my thoughts - as a consumer - on the subject. I wrote a few sentences about the subject before I realized it deserved a proper post, which I'll handle later this week.


Monday, December 25, 2006 2:59:47 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [3]  | 
 Thursday, December 14, 2006

I just reinstalled my laptop (a long and annoying story which I shall tell some other time), and this time opted for the Intel PROSet/Wireless drivers along with the PROSet/Wireless software suite (the one that replaces the crappy Windows wireless network management applet). It installed fine, the wireless card seemed to work fine but when I tried to start up the Intel application I was horrified.

It was in Hebrew.

Now, I realize that language preferences are a very personal issue, which is exactly why this pisses me off so much: why have ATi, nVidia and Intel all decided that my language of preference is Hebrew? The fact that my Windows is configured for Hebrew support in non-Unicode applications is no bloody excuse - it's that way because a lot legacy (and even new!) Hebrew applications require this setting to work properly. But my Windows is completely in English. Had I wanted localized UIs, I would've installed a localized version of Windows.

In Intel's defense, the translation was very comprehensive and even the RTL issues were sorted out; usually, however, software that supports localized menus have a language option where you can change the default language. The PROSet/Wireless software suite does not, and this time I was pissy enough to do something about it. Solution? Either download and import this registry hack, or do it manually:

  1. Start up your favourite registry editor;
  2. Go to HKLM\Software\Intel\Wireless;
  3. Change the value of InstalledLangId from whatever it is to 0x409 (or 1033 if you're decimal) -- that's the LangId for English;
  4. Change the value of InstalledLangShortString to "ENG";
  5. Kill the iFramewrk.exe process and restart it (or restart your machine if you're lazy)

All done. I really wish applications would stop deciding for me the language I want to work with.

Thursday, December 14, 2006 12:00:20 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [3]  | 
 Sunday, December 10, 2006

God knows I give the guys at JetBrains a lot of credit, but I didn't see this coming: according tot he Omea News feed, Omea Pro is being open sourced!

For those of you not in the know, Omea Reader is JetBrains' RSS, newsgroup, e-mail etc. aggregator. It's a pretty amibitious application that I've been using for quite a while now instead of RSSOwl (Omea's interface is smoother, although RSSOwl definitely has its moments), although in reality I only use about 10% of its capabilities - newsgroups and RSS feeds.

I was about to buy Omea Pro this week and am now feeling really awkward that I can download it for free instead; the least I can do is spread the word. I suggest you take a serious look at it, because the non-Pro Omea Reader is already a very formidable product.

Sunday, December 10, 2006 1:00:56 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Sunday, September 10, 2006

Virtual PC is free, which is good. It is reasonably fast and functional, which is also good.

It has some bugs, which - surprisingly - isn't good. One of those is an apparently ubiquitous "Network adapter... failed to initialize because the address is a null address." A solution can be found via this blogpost. Weird, but works:

  1. Examine the key value at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\<nnnn>\DriverDesc to locate the desired host adapter where <nnnn> is a four digit number.
  2. Look at the GUID value for the NetCfgInstanceId key value.
  3. Add the DWORD key at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VPCNetS2\Parameters\Adapters\<guid>\Flags and set the value to 0 where <guid> is the GUID found in step 2.
  4. Restart the computer.
Sunday, September 10, 2006 5:38:59 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Tuesday, August 22, 2006

Microsoft has done a stellar job on Windows Live Writer. Even at beta it already supports (out of the box, no less!) a vast number of blogging engines, including dasBlog. It also supports a blog autodiscovery feature called RSD, which according to Omar will be featured in the upcoming dasBlog 1.9.

The draft feature is simply awesome: open up Writer, start typing and you never have to worry about your text going to hell (there is also an autosave feature). The WYSIWYG editor is extremely robust, lets you edit your posts using your own blog's stylesheet and has excellent picture embedding features. Although I could easily go into HTML editing mode and edit the HTML directly, I no longer see any point doing it, which saves a hell of a lot of hassle and time!

Never a sucker for web applications (AJAX or otherwise), this is a positive boon for me. Good job, Microsofties!

Tuesday, August 22, 2006 1:49:20 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Sunday, June 25, 2006

OK, I concede the point: Notepad++ is awesome! I configured Total Commander so it brings up Notepad++ on edit, and it's ridiculously useful: you get syntax colouring, line numbering, tabbed windows and more at the cost of a slight increase in startup times (it's about 200ms slower than Notepad on startup, and it's worth it). I feel really stupid for not having tried it before.

Also, I've always shied away from application launchers, but have decided to finally give Slickrun a try. So far it's only mildly useful (I used to do the exact same thing with batch files) but that might change. I'll post an update in a month or two.

As a sidenote, although the Natural Ergo 4000 is a terrific keyboard I've decided that the IBM Model M is still the better of the two. I think I'll try the black 104-key Customizer next, except that you can't get those in Israel. Ideas?

Sunday, June 25, 2006 8:51:37 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 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)  #    Comments [0]  | 
 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)  #    Comments [2]  | 

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)  #    Comments [1]  | 
 Thursday, May 04, 2006

Wanting synchronization capabilities and frustrated with a bizarre folder locking bug - a folder remains locked if a connection is dropped server-side while downloading mail - which I was too lazy to fix, I switched from Thunderbird back to Outlook 2003. It's actually a lot better than I remembered (having worked with it extensively from a development point of view until last year); when not working against an Exchange server (and on a gargantuan Athlon 64-based machine) it's actually very fast, doesn't stall and is pretty stable at that.

It's not, all in all, a bad product. But it's not a complete one either.

First and foremost, Outlook's search capabilities are so ridiculously bad that third party tools have been coming out for years to address this shortcoming. Among those are Google Desktop Search, MSN Search Toolbar beta, Copernic Desktop Search and very much my personal favourite, Lookout. Lookout is an Outlook plugin written in .NET (one of the first commercial-grade products I've ever seen to use the platform) which indexes your mail in the background and performs extremely fast searches. It's complete free and was, in fact, so good Microsoft bought the company a couple years ago and is presumably busy incorporating Lookout's features into Outlook 12.

Second, the spam filtering options are lacking. I've no idea what sort of mechanism Outlook uses, and it is effective for certain kinds of spam, but it also generates a lot of false positives and misses a lot of other spam. Looking for a client-side (i.e. non-proxy) bayesian filter implementation for Outlook I eventually settled on SpamBayes, which is so far completely stable and hassle-free - not to mention effective, and open-source at that.

Moving back from Thunderbird was not without hassle though; I wasn't inclined to import the Thunderbird mails over to Outlook so that wasn't much of an issue, but I couldn't get the "Send To Mail Recipient" shell option to work with Outlook. Theroetically, merely changing the default mail program in "Internet Options->Programs" to Outlook should do the trick, but it appears not to be the case. I eventually found a solution on Joel's old forums: start RegEdit, go to HKCU\Software\Clients\Mail and change the default value from "Mozilla Thunderbird" to "Outlook". That's all there is to it.

As a bottom line, if you do not require simple bidirectional mail support or PDA synchronization via ActiveSync, stick to Thunderbird. It's a basically superiour piece of software.

Thursday, May 04, 2006 5:01:39 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Thursday, April 27, 2006
As part of an on-going research I've been playing around with Windows Vista build 5342. Spoiler: it's not ready for prime-time, not even remotely. Here's a quick run-down:

  • Performance is aweful. On my reasonably powerful development workstation (Athlon 64 3500+, 1GB RAM, Radeon X300) it literally crawls, and feels closer to how Windows XP performs on my old Celeron 900-based server at home. Eating broken glass shards seems almost preferable to browsing files on the Visual Studio 2005 DVD.
    There are also minor performance issues which may be related to immature drivers as opposed to Vista itself, primarily to do with sound: practically any CPU time-consuming operation on the OS side (such as when it changes screen mode or performs sudden but serious disk I/O) results in sound stuttering.
  • Eye-candy: Vista looks slick, have no doubt about it. The new Aero is very appealing. I'm not a Mac afficcionado so I can't really tell if it's been ripped off of Aqua or not, but strictly speaking I don't actually care. Some aspects of the UI can definitely use some polish - particularly the annoying tendency to reset the display whenever I switch to one of the "secure" displays (i.e. login or ctrl+alt+del), but the window fade and deformation effects are wicked, and the Glass feature (where window frames look vaguely like glass and everything beneath them is blurred) are absolutely gorgeous.
  • Compatibility and stability is severely lacking. I'd expect an OS that's been in production for years (not to mention scheduled for a 2006 release, which was only recently postponed) to be a lot more stable than this. Most applications work reasonably well, but for example while Firefox installed perfectly it wouldn't work past the first boot:

    What's worse is that Firefox wouldn't even uninstall afterwards. That's not generally a good sign. Visual Studio 2005 wouldn't install at all (installation failed silently) and I couldn't find anything useful about it on the 'net (just some comments regarding MSXML6, which was not the case here) until I rebooted the machine. The .NET Compact Frameworks, J# Redistributable and SQL Server 2005 would not install at all. Some applications would not even start (the Total Commander installer, for instance), others would display unusual error messages but work just fine afterwards:

    Networking in particular was unstable; I've no idea where to get beta Vista drivers and since everything was mostly working out of the box I wasn't inclined to look, but the network driver for the onboard nForce adapter would often simply stop working, claiming that there is no traffic on the network. Only a reboot would remedy this.

  • Usability: In some respects, Windows Vista is a tremendous improvement over Windows XP; it contains a huge amount of subtle but helpful hints in dialog boxes, much quicker access to some aspects of the OS configuration and a search function is available almost everywhere (especially useful in the Start Menu). When it comes to security, though, Vista is horrendously frustrating. Check out this post by Paul Thurrott. A noted Microsoft fanboy, such harsh cristicism coming from him gets double the attention. He is so right: Vista will continuously pester you with annoying security dialog boxes, and of particular annoyance is that this happens even if you are an administrator! If Microsoft ever wants Windows to be taken seriously security-wise, they should stop trying to stop malware from exploiting administrative privilidges via ever more sophisticated techniques, and start educating users not to use administrator accounts in the first place. This malfeature, called User Account Protection (UAP), sends the wrong message. I initially had the same reaction to Fedora Core 3, which would keep asking me for administrator password, but I became accustomed to it quickly because you don't usually DO things that require administrative priviledge as a user. With Vista you can't do squat without getting a series of annoying dialogs. For example, simply going to C:\Documents and Settings results in this dialog:

    Clicking on Continue results in this dialog:

    And finally, to add insult to injury, despite being an administrator I can't seem to change ACLs on folders that reside on my own machine:

    Last but not least, having a look at the security settings for said folder showed that nothing, in fact, was wrong and I shouldn't have any trouble accessing it:

    Additionally, there was some really weird usability bugs/issues. For example, when I changed a folder's view settings to show hidden and system files, this had some unexpected results, which you can see here:

    Finally, I leave you with this jaw-dropping dialog I encountered on a file copy operation:

  • Internet Explorer 7 is leaps and bounds beyond Internet Explorer 6 in everything from performance to usability. Still, in the spirit of frivolous security Microsoft has chosen to annoy the hell out of you with brilliantly useless warnings that require user intervention, such as this:

I hope to update to the newer 5365 and re-test things, but currently this OS seems so far from ready it's not even funny.

Thursday, April 27, 2006 10:18:08 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Thursday, April 20, 2006

The immediately good news: the 2.0.1 version of Hebrew OpenOffice.org is out - go and download it! It features a whole bunch of bugfixes, primarily fixes to the way tables in Word files are imported. I don't use Word much - particularly not for Hebrew files - so I can't righly comment on it, however I've been told by friends and peers that this bug was one of the biggest issues they had with the 2.0 Writer.

Also, a tip: it's not obvious nor exactly trivial, however it IS possible to do regression analysis and include trend lines in Calc sheets and charts; check this tutorial out (via xslf on the OOo.il forum).

Thursday, April 20, 2006 10:01:04 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [2]  | 
 Wednesday, April 19, 2006

Although I enjoy using GAIM, it has several issues - most notably a very poor UI experience, which is being worked on in the 2.0 betas (which are perfectly usable, by the way). The second most obvious problem I've been having is to get GAIM to receive Hebrew messages from buddies on ICQ. This issue can be easily fixed by accessing the ICQ account properties and changing the Encoding field:

The default encoding is ISO Western (ISO-8859-1); to get Hebrew properly just disable the account, change the encoding to Windows Hebrew (Windows-1255) and re-enable it. Although not technically correct, ISO Visual Hebrew (ISO-8859-8) seems to work too.

I'm not sure if the Western encoding is indeed the default - I've been importing my account settings since GAIM 1.3 or so - but I'll look into it and file the appropriate bug report (encoding should be set to what is appropriate according to the current locale, at least in Windows).

Wednesday, April 19, 2006 1:34:14 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [3]  | 
 Wednesday, April 12, 2006

There's a recent fashion among blog-savvy developers in looking for the "ultimate programming font." This has been around as long as programmers, but the discussion has recently been sparked again by the impending release of Microsoft's Windows Vista along with its slew of new fonts. I'm not the early adopter type so I couldn't really be bothered and stuck with the default fonts, until I got a new monitor at work and figured it was about time to ditch good ole Courier New try for something with a little more panache.

A good couple hours later I had a large selection of fonts; the selection is actually quite overwhelming, however there are very few actually good fonts (for example, the Proggy fonts are generally considered some of the best around, but I can't stand looking at them) and fewer still could actually dethrone the aging but solid Courier New.

At first I actually considered using Consolas, although it's not easily obtainable. A quick Google Images search provided me with the necessary visual example of what the font would look like (screenshot courtesy of Jeff Atwood):

Honestly? The font looks horrible. I find the fuzziness introduced by the ClearType rendering very hard to swallow (the font looks as though it's suffering from colour-bleeding, even though it's not). I couldn't be bothered to even try installing the font.

A casual comment from a reader in one of the blog posts I've read struck me as brilliantly simple: I've been using OpenOffice.org for quite a while now (give it a try!), and the default font for Writer is a relatively new font from Bitstream (via GNOME) called Bitstream Vera. It originally struck me as an impressively neutral font - pleasing to both eyes and mind. Apparently a monospace version of the Bitstream Vera Sans font is included with OOo (and additionally available via the previous link); it's professional, it's free and it looks great (screenshot shamelessly stolen from this place):

 

I heartily recommend the Bitstream Vera Sans Mono font for programmers (note that it takes a bit of hacking for it to work with Visual Studio 2003, although it works just fine with 2005).

Finally, if neither of the above fonts suits you, there's a huge list of programmer fonts here; one alternatives you should look into is Andale Mono, which is very slick and functional.

Wednesday, April 12, 2006 2:02:39 PM (Jerusalem Standard Time, UTC+02:00)  #    Comments [3]  | 

Windows is anything but user-friendly if you're not a local administrator, or so I learned when my dad asked to be able to convert CDs to MP3s so he can listen to them on his PDA. A simple enough task, I figured I'll just configure Exact Audio Copy to "dumb mode" and leave instructions on how to use it (basically, double-click the icon; select the appropriate drive; Alt+G to get the information from freedb; select relevant songs; F5).

For some reason my dad (whose user is not a local admin so as to keep spyware and other crud off our system) couldn't access any but the generic (Daemon Tools and other emulation layers) CD drives. It took me two hours (!) to figure out that:

  1. Windows 2000 and on does not come with an ASPI layer installed
  2. Most software (including EAC) has been updated to use the native API calls instead and do not require ASPI
  3. The native calls fail for non-administrative users (!)

Installing an ASPI layer is supposed to remedy the situation; I've opted to use ForceASPI 1.8 (instead of the default Adaptec installer) but that did not have any effect. To make a (very) long story short, the way to handle this is to use Frog Rights, which finally solved the problem.

To add to my frustration, however, after screwing around with ASPI drivers for hours Nero would no longer recognize my DVD-RW; I figured I'll just intsall the latest Adaptec ASPI drivers which completely screwed up my system - Windows XP would no longer boot and the only clue a logged boot would provide is that something goes very wrong loading the fastfat.sys driver. Nothing I did over the next four hours would allow the computer to boot; oddly enough, my brother managed to boot the machine by simply removing the empty DVD-R media in the DVD burner (a major WTF). We're still not clear on the problem.

Update: Apparently Nero has its own tool for this purpose called Nero BurnRights, which works like a charm.

Wednesday, April 12, 2006 2:05:53 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [1]  | 

I've been playing around with Leonard Maltin's Movie Guide for the PocketPC for a couple of days now, trying to find a useful program for cataloguing and keeping track of my DVD collection. I couldn't find any free software that didn't outright suck, so I turned to commercial software instead; LMMG seemed to fit the bill - mini-database of DVD releases, the ability to easily categorize and keep track of my DVDs and all sorts of nice features.

I did find out, though, that I'm sorely missing an import/export feature. It would be cool to be able to post my movie list somewhere, or send reminders to friends to whom I"ve lent movies that those movies are due back and all sorts of neat stuff that you can only do if you have access to the movie list.

Not even a customer yet, I've fired an e-mail to LandWare's support department:

I'm seriously considering purchasing the Movie Guide (I've been testing it thoroughly for the last hour or so), but have one serious qualm with it: my movie collection can not be imported/exported (preferably to a well-documented CSV or XML-based file format). Additionally, although my PDA does not feature internet connectivity it would be great if movies could link to IMDB/some other online movie repository (either directly or via title search).

Are either of these features likely to be included in the software? The import/export feature is practically a show-stopper for me (I'd like to be able to e-mail my DVD list to friends and that sort of thing).

A day or so later I get the following reply:

Hi Tomer,

As of last night, Movie Guide for Pocket PC now provides an import/export feature, using tab-delimited files.

Product info: http://www.landware.com/movieguide/ppc/
Conduit Documentation: http://www.landware.com/movieguide/conduit/ppc/

I'll log your other comments for our developers; what exactly are you looking for with regard to online connectivity?

Josh

If that isn't good service, I don't know what is. I'm sold.

Wednesday, April 12, 2006 1:49:52 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Wednesday, April 05, 2006

Mio 168 RS

In the process of "going legit" with my laptop (i.e. getting rid of all commercial software I won't pay for, trading proprietary software for free/open-source alternatives etc.) I've reached several important conclusions:

  • There are very few commercial applications I can't live without (specifically, Windows; Visual Studio; Total Commander)
  • Some free/open-source alternatives are actually superiour to their commercial counterparts (Firefox, Thunderbird and OpenOffice.org [Hebrew version] are three such examples)
  • The sheer amount of tools and applications I require just to get things done is astounding

Despite the impressive efforts by the free/open-source community, there are still a few areas where commercial companies (in this case, Microsoft) have the upper hand: PDAs. I was recently handed down a MIO 168 RS handheld which my dad replaced, and ended up trying to learn the quirks of Windows Mobile and how to best make use of it.

Apparently the whole deal of synchronizing with mobile devices is not as trivial as you'd think; there is only one standard, SyncML, which is apparently supported only in part and inconsistently by various mobile devices, and is basically not supported by Thundebird (nor, to my knowledge, Outlook). The Windows Mobile connectivity solution from Microsoft, known as ActiveSync, is perfectly adequate if you intend to use Outlook; however I do not own a license for Outlook (one is provided with the PDA, however it is for the obsolete Outlook 2002) and would prefer to keep using Thunderbird anyway.

The one glimmer of hope is an application called FinchSync - a combination of java sever on the PC and a .NET agent installed on the PocketPC device (strange, wouldn't you agree?). There are several problems with this solution:

  • It is incredibly cumbersome. Having to install a seperate server and client application is in itself a chore, but having to install the server application on each and every host machine is really very annoying.
  • Although it supports .ics files (which appear to be the standard calendar file format used by Mozilla applications), these files do not appear to be employed by the Lightning extension to Thunderbird by default and I couldn't figure out how to get it to work.
  • Finally, the software works over TCP/IP; this was probably the easiest solution, however PocketPC devices that are not WLAN-capable are not configured for TCP/IP by default; it might be possible to configure a TCP/IP bridge over the device's USB connection, but up to this point I have spent so much time with so few results I've conceded that there is no way to do this easily.

As you can see, in this case Microsoft takes the cake: synchronizing to anything but Outlook is a real chore, if not next to impossible. I'd consider getting a license for Outlook, but at roughtly $70 for an academic license of a version of the software that's three years old and about to be replaced it's hard to justify the expense; additionally I would much prefer to keep using Thunderbird as my e-mail client of choice.

With the upcoming competition from Office 12 and the far-superiour integration of Outlook in the corporate environment along with its tight integration with PocketPC-based solutions (which I've come to understand are the majority in this market segment), the open-source alternatives are in pretty grave trouble.

Wednesday, April 05, 2006 5:44:30 AM (Jerusalem Standard Time, UTC+02:00)  #    Comments [0]  | 
 Wednesday, March 22, 2006

I decided to split my previous post in the hope that someone googling for this to