Download ant-intellij-tasks-1.0-b1.zip A great but oft-ignored feature of Visual Studio 2005 and up is the inherent consolidation of an important developer tool: the build system. With a Visual Studio solution you can simply run MSBuild and you get accurate, automated builds. This is an invaluable capability: continuous integration is ridiculously easy to set up, as are nightly builds and automated deployment tools. Since I started working for Delver (now Sears) I’ve been switching back and forth between C# (2.0 and later 3.0) and Java 1.6, and though the ecosystems share many similarities there are also several glaring differences. The first of these differences is that, in the Java world, it is perfectly acceptable – even traditional – to maintain a dual project structure, one using the IDE (usually Eclipse or IntelliJ IDEA) and one using one of the build tools (commonly Ant or Maven). The build scripts need to be continuously synchronized with the project structure, and output parity between the two separate build systems is almost unheard-of. Because I had been a complete Java newbie when I started, I had never had the time to really sit down and set up a continuous integration server for our Java codebase, a mistake I did not intent to repeat when Sears took over. The first item on my agenda was to do away with the dual project structure; we originally used Eclipse, so I built a custom Ant script (my first, actually) around ant4eclipse and managed to come up with a semi-satisfactory solution. This also gave us invaluable insight when it was time to revisit our IDE choice; the lackluster project structure offered by Eclipse, along with firm positive comments on IntelliJ IDEA from several team members, tipped the balance and led us to switch to the alternative IDE, while also creating the necessity for a revamped build system can that work on top of the IntelliJ IDEA project structure. Out of necessity, a project was born. ant-intellij-tasks is the result of several months of all-night itch-scratching on my part. While not directly affiliated with the company, we’ve been dogfooding the project at Sears for over a month now, and while there are certainly rough edges it finally seems stable enough for release! From the project website: ant-intellij-tasks is a self-contained build system for IntelliJ IDEA projects based around Apache Ant. In essence, ant-intellij-tasks comprises three components: - An Ant task library that can extract and resolve the IntelliJ IDEA project and module files (.ipr and .iml respectively), and provides a set of tasks and conditions around the project structure;
- A common build script which provides the four major build targets for modules: clean, build, test and package (see the quickstart guide);
- A master build script which extends these targets to the entire project.
The build system is designed to be extensible (e.g. by adding targets), customizable (e.g. by overriding a target's behavior for a specific module) and self contained in that it's a drop-in solution that should not require any significant modifications to the code base. This project is fully open source (distributed under an Apache license) and hosted at Google Code. Please report any bugs or issues on the project issue tracker. ant-intellij-tasks makes use of, and redistributes, the ant-contrib task library.
I ran a Google image search today, and was surprised to see this: New feature, hurray! (and may actually prove useful…)
It seems nothing to do with maintaining this website is as easy or as simple as it should be. Whenever I switch hosts it’s an uphill struggle to get the site up and running again; whenever I upgrade dasBlog to a newer version I have to learn a lot about how it works, how ASP.NET works, how IIS is configured etc. It’s enough to make me seriously consider hosting my blog elsewhere and/or moving to another blogging platform, but the truth is I love dasBlog so much I simply forget how complex and volatile it can be and have to go through the same frustrating process whenever something changes. The way I update my site is usually this: - Ensure I have an up-to-date local mirror of the website. dasBlog keeps all of its data in XML files, so backing up the website is simply a question of wget –-passive-ftp –m ftp://user:password@website.com; I have a daily scheduled task to take care of this.
- Copy the latest mirrored version to a working directory; set the directory up as an IIS website/virtual directory.
- Test the new working copy to make sure it works.
- Perform whatever modifications are required.
- Test again to make sure that the website works with multiple browsers (this time I tested with Chrome 2.0.170.0, Firefox 3.1 Beta 3 and IE 8)
- Upload the website over FTP using the FileZilla client. I always verify that the relevant configuration files and binaries are overwritten and nothing else.
This process generally allows me to test upgrades before uploading them to the “production” website, as well as provides an easy rollback path if something goes wrong. Thing is, something always goes wrong. In this case, although nothing’s changed in the site configuration I started getting SecurityExceptions just after the upgrade: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. This is one of the least informative error messages I have ever seen. All it tells me is that a request for some permission is denied; it doesn’t say what permission was requested, nor by whom (the stack trace seemed to indicate the permission was asserted from within System.Diagnostics.Trace, which doesn’t make much sense). A quick web search brought me to this page, which deals specifically with installing dasBlog on a GoDaddy-hosted website. Because GoDaddy runs ASP.NET applications under a modified medium trust that allows file-system access only to the virtual directory hierarchy, the site recommends adding a virtual directory for each of dasBlog’s writable directories (content, siteconfig, logs); I tried this out and the problem was not resolved. At this point I was getting desperate, and was willing to try just about anything to get the site up and running again. Eventually I ran a diff between the site backup and the newly modified version, and found a new openidConsumerTrace.txt file in the site root. I’ve never seen that one before; where'd it come from? A quick search showed the following section in the web.config file: <system.diagnostics>
<assert assertuienabled="false"/>
<switches>
<add name="OpenID" value="4"/>
</switches>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="fileLogger" type="System.Diagnostics.TextWriterTraceListener"
initializeData="openidConsumerTrace.txt" traceOutputOptions="None"/>
</listeners>
</trace>
</system.diagnostics>
A-ha! So the OpenID activity trace log is written to the virtual root, which is not writable (I set the ACLs to only allow writes to the above three directories). I tried changing the trace file path to ~/logs/openidConsumerTrace.txt (which is a virtual directory and has the appropriate write ACL), but this did not resolve the problem. At this point I was ready to roll back to the previous version and work on switching to another (perhaps hosted) blogging platform, and in my despair I simply commented out the whole system.diagnostics section; oddly enough, this resolved the problem…
Now I know dasBlog is free and there’s little or no point complaining, so I hope this post helps someone handle the problem. And if anyone from the dasBlog team is reading this… please be a little more careful with undocumented dependencies?
I was making modifications to one of our components, and running all of the unit tests revealed that all database-dependant integration tests were failing: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Last packet sent to the server was 0 ms ago. <snip> (cut for brevity’s sake) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2104) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:729) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) Strange error message, but as it turns out the inner exception was far more revealing: java.net.ConnectException: Connection refused: connect As can be expected, the local MySQL server was up and running, and I was able to connect with the command line tool as well as with SQLYog, so it was obviously not a problem with MySQL or the local firewall. Next up I tried to telnet to the appropriate port (the easiest way I know to check port-level connectivity) without success: I next tried to connect to the loopback IP (127.0.0.1), and experienced a major WTF moment when the connection succeeded. I use Windows Server 2008 and, as it turns out, it supports IPv6 out of the box. localhost has a slightly different meaning under IPv6 (it maps to ::1), and as I understand it traditional IPv4 traffic is tunneled over the looback IPv6 connection; I’m not yet familiar enough with IPv6 to draw any conclusions on why the above shouldn’t work, but the bottom line is there are several ways of resolving the problem: - Edit your hosts file (it’s hidden under Windows Server 2008, but you should be able to Start->Run->notepad %SYSTEMROOT%\System32\Drivers\etc\hosts) and change the mapping for localhost from “::1 localhost” to “127.0.0.1 localhost”. This does resolve the problem, although I can’t say what impact this will have on IPv6-enabled applications.
- Set the TCP stack to prefer IPv4 to IPv6 when attempting to connect (it’s the reverse by default). According to this forum post, this entails setting the registry value HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters\DisabledComponents to the DWORD value 0x20.
- Disable IPv6 altogether for your network connection: remove the IPv6 protocol from your network connection component list. At this point in time IPv6 is still very rare so I doubt this will cause any significant issues, but YMMV.
For me, changing the hosts file was the quickest solution because it works and is easy to revert. I’ll have to keep a very careful eye on the behavior of my machine though.
Chrome "final" is out, so go ahead and update your browser. This is essentially an 0.4.x development version that's been promoted to 1.0 status; if you're looking for more information on Chrome releases, check out this blog. You can get the development releases on the Chrome dev channel page. I'm still using Chrome on both machines at home, but at work I'm testing out the new Firefox 3.1 beta 2. While there are many subtle differences between 3.0 and this beta, the primary differences are: a new privacy browsing mode (a la Chrome's incognito mode), a thoroughly revamped JavaScript engine that brings Firefox's performance to nearly-Chrome levels, and improvements to the way tabs can be rearranged. Finally, Microsoft have finally retired FolderShare and replaced it with Windows Live Sync. I've only just started using it, and so far it looks the exact same as FolderShare, which is definitely a good thing. They've also added Unicode filename support, the lack of which was for me the biggest drawback in using FolderShare. I just hope Microsoft intend to actually improve this amazing tool, since it hasn't seen any visible improvement in over two years. To be blunt, the Microsoft treatment of FolderShare so far hasn't been very impressive, as is evidenced by the FAQ posted on the Sync team blog: Q. What will happen to my computers running FolderShare? What about my folders and files? A. Sync is designed to make the transition easy for you. When Sync releases, any computers running FolderShare will stop synchronizing files [emphasis mine --TG] and will notify you that you need to download Sync. All of your files and folders will remain untouched on your computers, but you need to install Sync on each computer to continue synchronizing files.
Update (12-Jan-09): The latest Windows Live Essentials installer supports Windows Server 2008 (including x64), so no more hacks are necessary to get Messenger and/or Live Writer to work. Update (7-Jan-09): Check out the addendum on Hyper-V performance issues below. I’ve been using the 64-bit version of Windows Server 2008 as my development platform for the last few weeks, and have been quite happy with it. Following is a more or less verbatim transcript of the e-mail I sent out to the development guys at Delver, which may of be of some benefit to others: Memory Requirements Like it or not, this operating system does need more memory, but it also handles more memory (unlike 32-bit Windows which is practically limited to 3.3 [or so] GB). With 4GB on this machine I run the following applications constantly and it hardly ever swaps: - Google Chrome (with a buttload of tabs)
- Total Commander
- Process Explorer
- Eclipse
- Outlook
- mRemote
- MediaMonkey
- Notepad++
- Visual Studio 2005 + ReSharper 3.1.1
- Skype
- Live Messenger
- FolderShare
- KeePass
As an aside, this is also a list of software I currently use and recommend Application Compatibility Practically every application I’ve tried so far works (the exception being the file monitor in MediaMonkey, I’ve an open bug on this). I also make it a point to try x64 versions of software where available, and these are the important bits you should know: - Eclipse has a 64-bit version (which runs on 64-bit JREs). I tried it for a bit and it appears to work fine, but are there some problems with Subclipse (the integration plug-in for Subversion). Subclipse can work in one of two modes: using a Java-native Subversion client library, which is unfortunately very unstable (the IDE simply crashes after 5-10 operations), or a native-code thunking API called JavaHL. The Subclipse distribution only comes with 32-bit binaries, however, and I couldn’t find 64-bit JavaHL binaries (the SlikSVN x64 client works like a charm, but doesn’t come with a JavaHL implementation). For this reason I’d recommend the following:
- Install a 32-bit JRE on your machine (the latest JRE is recommended). Either set your JRE_HOME accordingly or (preferably) use the -vm flag for the Eclipse launcher.
- Install a 64-bit JDK for development purposes. Configure Eclipse (via Windows->Preferences->Java->Installed JREs) to use the 64-bit JDK as the default runtime. This lets you develop on a 64-bit VM.
- If you use YourKit Java Profiler, make sure to install the integration plug-in in 64-bit mode (it lets you decide) if you use a 64-bit VM for development.
- Checkpoint VPN-1 SecuRemote (the Checkpoint VPN client) has no x64 version, which means it simply cannot be installed. I resorted to a Windows XP 32-bit virtual machine running on Hyper-V for when I need VPN access. Hurray for Checkpoint.
- Visual Studio 2005: Just install it as you normally would, along with ReSharper. You don’t need to do anything, and debug sessions for .NET code start as 64-bit processes. One caveat: it appears that the 64-bit debugger does not support edit-and-continue; if this is really an issue for you, here are instructions on running the debugee as a 32-bit image.
The various Microsoft Live! installers (Messenger, Writer, etc.) don’t support Windows Server 2008, even though the products themselves do. A quick Google search will get you instructions on how to install them anyway (use the individual MSIs directly). (12-Jan-09) No longer relevant, just download the latest installer. - The following applications have native x64 versions that “just work”:
- Eclipse (other than the problem described above). The version is not easy to find, you have to go through the Other Downloads page any find the x86_64 build.
- MySQL. Everything works as you’d expect.
- Gimp has an experimental x64 version which, again, isn't that easy to find: you have to go via the SourceForge project page and look in the stable releases. So far this version seems quite fast and robust.
Things To Do You’ll probably want to perform these steps to get the environment closer to what you’re used to: - Disable the annoying shutdown event tracker.
- Disable Internet Explorer enhanced security mode.
- Start->right click on Computer->Properties->Advanced System Settings->Performance Settings...->Advanced and select Programs instead of Background Services (changes the paging behavior and makes everything much more responsive).
- To get a more Vista-like look:
- Install the Desktop Experience feature from the Server Manager
- Change the “Themes” service startup mode from Disabled to Automatic
- Right-click your desktop->Personalize->Theme and change to Windows Vista
- Right-click your desktop->Personalize->Window Color and Appearance and change to Windows Aero
- If you want audio:
- Change the Windows Audio service’s startup mode from Disabled to Automatic.
- If you get audio stuttering, change the registry key HKLM\Software\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\SystemResponsiveness from 100 (0x64) to 20 (0x14)
If you want to use virtualization (Hyper-V), make sure you update to the latest BIOS (I had an older BIOS installed that didn’t have an updated processor microcode) and enable the feature in the BIOS menu (usually disabled by default). Benefits - It’s fast (feels way snappier than Vista)
- 64-bit OS (closer to our actual production environment)
- Virtualization support (Hyper-V)
Update: Hyper-V and Multimedia Performance Apparently installing the Hyper-V role can have some repercussions when it comes to multimedia performance in Windows. Specifically, when running under the hypervisor you may experience very high CPU spikes (mostly kernel time) when starting up any DirectShow-based application (e.g. Windows Media Player or the considerably better Media Player Classic Home-cinema) or a remote desktop session. These will effect make your machine freeze for 5-10 seconds. According to the rather insightful comments here, this quite likely has to do with NVidia drivers though I have not yet verified this. I don't have consistent need for Hyper-V so I simply disabled it, which resolved the problem. If you require virtualization and still want proper multimedia support you may have to resort to ATi cards.
It appears it's been two months since my previous post on Chrome, so it's time for a retrospective look at the browser and its alternatives: Bleeding fast, in fact. It's been said before and I'll reiterate it - it just feels fast. I don't have any objective measurements nor do I care; my surfing habits haven't changed since moving from Firefox to Chrome, but the increase in responsiveness is both perceived and welcome. Seriously, it doesn't crash. Firefox is actually quite stable, but it suffers from its own version of winrot, and either becomes exceedingly slow or simply crashes within a day or two. Chrome hardly ever does. Additionally, the Shockwave plugin has an annoying tendency to break oddly on the machine at work (specifically, videos play only until 00:02 with no sound), and whereas with Firefox I had to restart the browser, with Chrome I can simply terminate the process hosting the Shockwave plugin (usually recognized by being the Chrome.exe process with highest CPU utilization, but I prefer to use Process Explorer to make sure) and Chrome restarts it just fine. All said and done, I've seen Chrome crash maybe twice these past few months, and I use it exclusively (at work and on my two home machines). Really, it is. Most people, particularly those used to vanilla Internet Explorer 7 (or even, God forbid, 6) will not lack any functionality, at all. For power users, however... If there's one feature in Chrome that I'm seriously missing, it's ABP (Adblock Plus, or an equivalent ad blocker). This ubiquitous Firefox extension simply sits there, unobtrusively blocks crap from taking your bandwidth and overloading your brain, is so simple to use even my granddad could get the hang of it and it Just WorksTM. And don't buy into the Privoxy nonsense; it can take hours to configure just to be as effective as ABP, not even remotely as user friendly and requires you to run yet another server process. In my opinion it's not really worth the hassle for any but the fastidious power users (please don't take this personally, Privoxy guys -- I don't think I'm your target audience anyway). - Chrome needs session management.
It's hella-annoying to have to copy my URLs aside manually. The good old Session Manager extension for Firefox is another unobtrusive add-on that Just Works, one which the Chrome team should certainly emulate (at least until an extension framework is available). - Chrome does not handle Hebrew all that well.
RTL editing in Chrome is, to be blunt, a difficult affair at best. Although text navigation may appear to work at first glance, as soon as Hebrew characters enter the equation the whole thing becomes a right mess that's harder to handle than even Firefox in its prehistoric, Firebird days. Encoding detection seems to be a lot less robust than in Firefox (props, ShooshX!) at least for Hebrew - since that one's completely open-source, I'd certainly advise the Chrome team to import that code-base. - Chrome desperately needs full-page zoom.
Along with Adblock Plus, this is the one killer-feature for Firefox it's really difficult for me to do without. I use both Chrome and Firefox on my living room HTPC (Pioneer PDP-4080XA plasma display via HDMI at 1280x720) from quite a few meters, and the full page zoom in Firefox is simply light-years away from Chrome in successfully enlarging web-sites. So much so, in fact, that I've found myself more often than not going back to Firefox for that particular machine. So, bottom line: do I like Chrome? Hell yes. I'll definitely continue using it and monitoring its progress. The browser has been amazingly impressive since day one, kudos to the astoundingly talented guys at Google who integrated the whole thing. In fact, the product is so solid it doesn't even feel like an underdog contender. I'll probably end up alternating back and forth with Firefox until it boils down to a question of taste.
After a long hiatus I've found the time to update PicasaWebDownloader. If you're using the tool, there's a bunch of compelling reasons why you'd probably want to update. As always, code is included and feedback is welcome.
Update (22-Sep-08): As Peter Kasting from the Chromium team (I think?) mentioned in the comments, this hack is unnecessary. Simply go to google.com, click on Google In English, restart Chrome and wait about 10 seconds, which will result in the desired behavior. Chrome is amazing. It really is. Ridiculously fast, ridiculously compact (less than 0.5MB installation!†) and seems to just work, which is truly astonishing for a product of this caliber, particularly the first version thereof. The one obvious deficiency I could find was that it decided on google.co.il (the Israeli version of the Google homepage) as my default search provider, whereas my preference is for the regular English version on google.com. The search provider settings cannot be changed and do not respect the homepage's cookie (click on Google in English once and you're supposed to be done with it). Apparently it uses a {google:baseURL} macro which does not appear to be defined anywhere, and the only workaround I could find was: - Start->Run
- notepad "%userprofile%\AppData\Local\Google\Chrome\User Data\Default"
- Look for the line starting with "search_url": (for me it was line 8)
- Replace {google:baseURL} with http://www.google.com/
The damn thing still changes the setting every now and then. I'll file a bugreport with Google, but this should suffice in the meantime (search results rendered right-to-left can drive me up the wall). Update: As Shy noted in the comments, the installer actually is a downloader, I just didn't notice the first time because I was doing other things while it was starting up. In practice, though, it's annoying as hell, particularly if you're on a slow pipe. Bad Google!
Update (11 March 2009): Microsoft has retired FolderShare in favor of Windows Live Sync. It’s basically the same service, except they’ve significantly increased the file limit per library and finally added full Unicode support. Now that my two major gripes with the service are resolved I’m perfectly happy with Sync, and it’s free to boot! I have a very large collection of music files, easily 70GB with thousands of files (those lossless rips can be quite space-consuming). I listen to music both at home and at work, and don't want to go through the trouble of synchronizing these collections manually. In fact, I would like a service that fulfills the following requirements: - Easy to set up;
- Works across NAT, preferably with UPnP support;
- Full Unicode support;
- No artificial limit on library size;
- Not required, but definitely advantageous:
- Free;
- Low memory and CPU overhead;
- Libraries are accessible over the web;
- Some sort of online backup solution
The NAT support is an absolute must, as I have little or no control over the firewall at work. Unicode support may sound like a trivial requirement, but as you'll see most solutions do not properly support Unicode. My collection contains albums in multiple languages, including Hebrew, Japanese and Norsk, but even English albums can cause issues (Blue Öyster Cult, for example). I've tested the following solutions:
Microsoft FolderShare (now Windows Live Sync, see update above) Although this is one of the oldest players in the game (the company was bought out by Microsoft in 2005) it hasn't seen any visible improvement in a very long time. Despite the apparent dormant development, the service itself works well and is very consistent and reliable. What separates FolderShare from any other solution I've tested is a very user-centric design: any reasonably literate computer user (read: knows what files are and can double-click on an install button) should be able to set up a FolderShare account and start synchronizing files literally in minutes. Once set up the service simply works; other than the disadvantages which I'll enumerate momentarily, I've had absolutely zero problems with the service in over a year of use (well, to be honest there was a highly-publicized two-week service outtage over a year ago, but it's been hassle-free before and since). FolderShare fails in two specific ways: it's limited to 10,000 files per library (I think there's a limit on the number of libraries supported, but I've never come close to it), and it does not properly support Unicode. This means that files with characters outside the ANSI character set and machine codepage simply do not get synchronized. Other than that its interface is amazingly limited with very few customizable options, but in my opinion this isn't really an issue because the software simply does its job really well. With these disadvantages in mind, I wouldn't hesitate to recommend FolderShare to English speakers (or ones that do not make use of non-Latin file names), but the rest of us will have to look elsewhere. With Unicode support I'd definitely go back to FolderShare though, it's an excellent product. PowerFolder Touted as an open-source file synchronization solution, PowerFolder utterly failed to impress me; it appears to be a very powerful solution, but consequently suffers from a very cluttered UI that's hard to grok. I wouldn't recommend this service to casual users, and it wasn't trivial for me (as a software developer) to figure out either. I installed a trial version of PowerFolder Pro on both machines, but once I got past the strange UI idioms I just couldn't get the software to work reliably. I managed to send an invitation from one machine to the next (synchronized directories in PowerFolder do not appear to be centrally managed), but couldn't figure out how to get them to sync reliably nor how to resolve file conflicts. Finally, the client software is a real memory hog. BeInSync Fairly similar to PowerFolder (with additional online backup features on Amazon's S3 storage service), BeInSync is a commercial product that appears to provide all of the features I require. The service was fairly easy to set up, although not nearly as streamlined as FolderShare. I got my directories to synchronize properly and was relieved to find that Unicode is fully supported by this product. Despite the promising start, my experience with this product was far from satisfactory: the client UI is incredibly slow and non-responsive. Other than general slowness in rendering speed and bizarre UI idioms (for example, the only way to get a reasonable status display is via the View menu), resolving synchronization conflicts can easily take 30 seconds per file with no batching capabilities at all. On top of that the client software is a major resource hog, easily taking up 60MB and more resident memory, and for a reason I couldn't figure out I could see 3-9MB per second I/O activity from the client although it exhibits no synchronization activity. To add insult to injury, the uninstall program requested that I restart my computer - nitpicking, I know, but what the hell? Having tested three different services I'm sorely tempted to go back to FolderShare and figure our a manual synchronization scheme for the Unicode files. The other alternative is a homebrew VPN+robocopy/rsync/SyncToy solution which I'd prefer to avoid. I'm rather surprised that it's so hard to find hassle-free synchronization services so late in the game...
This guy hooked up an old Sinclair ZX Spectrum to a bunch of crappy hardware (a hard drive array, an old dot matrix printer and a scanner) and got them to play an amusing (though still impressive) approximation of Radio Head's "Nude". Here's to a bigger geek than I can ever hope to be!
In addition to the wide press coverage on US-oriented technology sites we've seen coverage from two major Israeli news providers (Hebrew only, for now): Calcalist and TheMarker. Now comes the fun part; Delver is still borderline-alpha. We've been working hard testing and tweaking it, and getting a system of this complexity working in good order on a ridiculously short schedule feels astounding. I sincerely believe the Delver premise is a solid one, and we're giving you a mere inkling of what's in store for the concept; now all we have to do is work harder, growing along with the product and slowly but surely realizing its full potential. The brilliant part? Beyond the dreams of rich and fame, this product already is useful; with relentless improvements it may yet become as indispensable a tool to Internet denizens as Google, Wikipedia and Facebook are today.
An alpha version of our search engine is now open for all users! We've been working towards this day for the past year, building a complete and functional search engine from scratch on a completely original premise. I'm both amazed and proud of the work done by the various teams, and I'm still can't believe we've managed to pull this off in so little time. Launching the search engine publicly seems like a great way to celebrate the year I've been working for Delver (as of July 1st). Mind you, the service is still new and we're hammering away at the kinks, but so far we've had overwhelmingly positive press coverage and the various comments are sincerely flattering. Here's to another amazing year! As an aside, we're got openings on my team (search back-end) for extremely talented software developers who are interested in building performance-driven, robust back-end software in a variety of technologies. Interested? Contact me for details at tomer@delver.com!
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" )
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: 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": And I'm just left scratching my head.
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.
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!
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: Then go to the Volumes tab and click on Populate: If the volumes show up, you're good to go.
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: - 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.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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: - 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;
- 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;
- 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.
If you use Executor (a freeware launcher utility), check this out. There's even a video showing it in action!
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.
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: - 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.
- 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).
- 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.
- Add an Application Server role, make sure you enable ASP.NET 2.0 during the installation process
- 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.
- Install SQL Server 2005 Service Pack 2.
- From the TFS installation media, install hot-fix 913393 for .NET Framework.
- 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.
- Install Team Foundation Server itself.
- Back up the reporting services encryption key (you can find a description of the procedure here).
- Install hot-fix 919156, a.k.a the Quiescence GDR (no, I have no idea what GDR stands for).
- Install Team Foundation Server Service Pack 1.
- 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.)
- Install Team Explorer from the installation media (required for many add-ons, including eScrum).
- 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: - 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
- 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.
- 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)
- 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
- 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...)
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).
Quick download link (v1.2) 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: 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!
Update (11-Sep-2008): Version 1.2 is available for download, and includes the following improvements:
- The tool now works for PicasaWeb albums from any valid top-level domain (this means that albums hosted at www.picasaweb.ru will be properly handled.
- Existing files will not be overwritten; instead I've taken a cue from common browsers and am now adding a counter suffix to the filename. If an album has two pictures with the name example.jpg, you can now expect to find two files named example.jpg and example (2).jpg in your directory. This behavior is also applied if you already have such a file in your directory prior to running the tool - any feedback as to whether or not this is desirable will be appreciated!
- Authentication keys may now include dashes (thanks, Jakob).
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.
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.
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: - Start up your favourite registry editor;
- Go to HKLM\Software\Intel\Wireless;
- Change the value of InstalledLangId from whatever it is to 0x409 (or 1033 if you're decimal) -- that's the LangId for English;
- Change the value of InstalledLangShortString to "ENG";
- 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.
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.
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: - 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.
- Look at the GUID value for the NetCfgInstanceId key value.
- 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.
- Restart the computer.
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!
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?
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.
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.
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 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.
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.
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.
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).
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).
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.
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:
- Windows 2000 and on does not come with an ASPI layer installed
- Most software (including EAC) has been updated to use the native API calls
instead and do not require ASPI
- 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.
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.
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.
I decided to split my previous
post in the hope that someone googling for this topic might actually get a
straightforward answer (I certainly didn't). Visual Studio 2003 does not let you
use Bitstream Vera Sans Mono by
default. Instead it takes a bit of trickery to get it to work.
- Open Visual Studio 2003; go to Tools->Options->Environment->Fonts
and Colors. You will notice that you can select either Bitstream Vera Sans or
Bitstream Vera Sans Mono Bold. Select the latter like so:
- Click on OK and close Visual Studio 2003.
- Run regedit; click through to the following key: HKCU\Software\Microsoft\VisualStudio\7.1\FontAndColors\{A27B4E24-A735-4D1D-B8E7-9716E1E3D8E0}
(the GUID may be different for you - there aren't many of them, just look
until you find the right value name):
- Change the value of FontName to "Bitstream Vera Sans
Mono" (without the quotes):
- Click on OK, close the registry editor, restart Visual Studio 2003. You're
good to go!
I haven't been working with Visual Studio 2005 that much thus far; the
project I've been working on for the last 8 or so months was launched before
VS2005 came out (around beta 2), and given the relatively schedules between
milestones (first version was to be demoed in about two months) it seemed far
too risky to invest in a codebase around the yet-unproven features
of .NET 2.0.
I still think that was the right decision. I've been doing some work with
Visual Studio 2005 lately, primarily on PostXING and other minor projects, and have
come to the conclusion that Visual Studio 2005 is practically
unusable. The IDE is even heavier than Visual Studio 2003, ridiculously
slow and extremely prone to stalls; it feels like working on a huge solution in
VS2003 with a buggy alpha version of ReSharper. The debugger has an incredibly
annoying tendency to just stall for tens of seconds at a time whenever I step
in/out/over. The IDE feels more like NetBeans than Visual Studio, and is about
as responsive, but while NetBeans can be forgiven as a relatively new - and
partially open source at that - effort, Visual Studio 2005 is an
evolutionary step on a reasonably mature IDE that itself is the 7th version of a
12 or so year-old effort.
Too bad I can't really stick with 2003, it's just not an option - but I would
rather have my trusty old combination of VS2003 and R# (which in itself is not
without issues) than the heap of bugs and unoptimized UI that is VS2005. At
least until VS2005.1 comes along (maybe they'll launch VS2006 with .NET 2.1,
like they did with 2003...)
Chris has finally released a beta
version of PostXING v2.0 (an opensource
blog client for Windows)! The development version is pretty stable and usable,
but the more people that use it and post
bugs and feature requests the more motivated the developers get
Grab it from Project
Distributor (requires .NET
2.0).
I've been working with build 219 for about a week now. With Visual Studio 2003 it's perfectly stable (only one exception so far), seems considerably faster and I haven't encountered any major (and very few minor) bugs so far. I haven't worked with Visual Studio 2005 at all over the last week (sorry Chris... project schedules ) so I've nothing to report on that front. I'll keep the ReSharper: New And Improved post up-to-date, as always.
I couldn't access the comments on my own website for an indeterminate amount of time (at least a week) and had to dig in the sourcecode to find the culprit (now described in bug 1439112). To make a long story short, it appears I got my dasBlog cookies mangled, so if you have the same issue either contact me or get rid of all cookies from www.tomergabel.com. (If you're using Firefox and don't know how to access your cookies, here's how. If you use IE just go to d:/Documents and Settings/ username/Cookies).
I eventually get fed up with the various ReSharper builds I've been
using for the past 7 months; the stability has been going steadily downhill
since build 208 and performance is yet to improve. 217 originally seemed stable
but turned out to be useless both for VS2003 and VS2005. I've been waiting in
vain for a build as stable as 208 (which was practically beta-ready) but to
no avail.
Eventually I broke down and installed the official 1.5.1 (build 164) for
VS2003; unfortunately there are no official builds for VS2005 as of yet. I must
say working with the official version is a pleasure - it's absolutely stable
and, even more important, fast. So fast, in fact, that it feels just as
responsive as the "regular" VS2003 IDE is, and the only drawback is a small
increase in startup time.
I'm tenacious so I'll probably check the beta builds again when 218 is out,
but in the meantime I can't help but feel pleasure in working with a mature
product.
Whenever I get a new machine (at work, at home, anywhere) I'm always
astounded by the sheer amount of time it takes to get it up and running. I
don't mean just the basics, I mean a fully-functional platform that is set up
just the way I'm used to, right down to the folder display settings in Explorer
and the toolstrip I always like on the right side of the screen.
I mean, seriously, there's gotta be a better way to do this. The following
applications are just the basic things I need to be efficient:
- Windows XP Professional, drivers, settings
- Mozilla Firefox, extensions,
profile import
- Thunderbird, profile
import
- Maxthon
- Microsoft.NET 1.1 and 2.0
- Visual Studio 2003 and 2005
- ReSharper (one version
for each), import settings, resolve keyboard conflicts
- GhostDoc (one
version for each)
- Gaim, profile import
- FileZilla
- Latest JRE (java runtime environment)
- RssOwl, profile import
- Total Commander, plugins,
customization
- 7-zip
- Microsoft Office, OpenOffice.org (Hebrew version)
- SourceGear Vault client
- CDBurnerXP Pro
And that's just to get me through the day. It doesn't include all the
multimedia and development tidbits, like:
I reckon the net installation and customization time is over 10 hours
(some installations can be done in parallel, some can be deferred to a later
time). That is a lot of time to spend on just setting up your machine.
The problem with using Ghost or some similar software is that I get a system
without all of my current data (profiles, files, documents etc.), and as for
virtual machines, they're simply not fast enough yet for constant use (at least
on my modest home desktop or laptop).
Or: How I Learned To Stop Worrying And Love Firefox
(this is a Dr.
Strangelove reference, in case that wasn't
obvious).
There are some fundamental principles of UI design
most developers have not taken to heart. Developing a
good UI is hard, designing one is excruciatingly
hard. A good UI designer needs to have a very
developed sense of how a typical user thinks; it is
therefore a commonly held belief that most
programmers make lousy UI designers because they
can't "stoop to the level of the non-technical user" (a slightly less rehearsed mantra is that developers are users as well and are susceptible to the same problems with crappy UI, although possibly a little more forgiving).
The developer-oriented UI trend is most obvious with open source software,
but it is actually exacerbated when we're talking
properietary, even if free, software. An open source
tool that is essentially really good but has crappy
UI will eventually attract someone who is actually
capable in that department. Take a look at Eclipse,
OpenOffice.org, The Gimp etc. - although based on a
more or less solid foundation, these tools were
practically useless a few years ago and have only
become mainstream when they made leaps and bounds in
usability. An even better example is Firefox;
although I was personally attracted to Firefox on
merit of its technical achievements, I was only able
to sell it to friends and relatives becaues it is
infinitely more usable than IE and just as free (I
mean come on, does anyone doubt why Opera never
gained marketshare?)
A proprietary program however, even if
fundamentally sound and useful, can only grow better
by the efforts of its owners. Even the most obvious
bugs can never be fixed by a 3rd party. w.bloggar is a
classic example of this; the last version was out in
January and, despite being fundamentally stable and
usable, has huge flaws which the author never fixed,
instead allowing the software to stagnate. I reckon a
lot of you, at this point, are thinking along the
lines of "hey, you get what you pay for; you
should be thankful that w.bloggar is free, let alone
supported!" In a way you are right, but also
dead wrong. As far as I know Marcelo (the author of
w.bloggar) isn't seeing much money from his work on the software; what money he does get is from donations.
So why not release the source? Donation systems seem
to work for high-profile open-source projects at
large, why not for w.bloggar? At least that way
someone can fix the bugs that
(for me) turned w.bloggar from a useful tool to a
constant cause of frustration.
To get to the point, I wrote a blog entry in
w.bloggar (specifically the one about missing tools), published it and went on with my
work. At the end of the day I left the machine
running (as I always do when I'm not leaving for days
at a time) along with w.bloggar. Why'd I leave
w.bloggar open, you ask? Simple: one of these glaring
bugs I mentioned is that w.bloggar does not retain my
preview template options (CSS links and so forth),
and it's a pain in the ass to enter them manually
whenever I want to edit or write a new post. Anyway,
w.bloggar has a "Clear Editor after Post"
option which in my case was disabled. This means that
whenever w.bloggar finishes uploading a post, it retains the
text and changes its internal state so that
subsequent clicks on Post update the same entry (as opposed to creating a new one). So what basically happened is that when I came in today and wanted to write the note on OpenOffice.org, the previous post was still "live" on w.bloggar. Usually at that point I click on New (which shows a nice, useless warning dialog) and get on with it; this time I guess I was distracted, just shift-deleted everything and proceeded to write. When I next clicked on Post and got the "Post so-and-so-GUID updated successfully" notice I knew I was up the creek: my earlier post was overwritten with no prior warning, no delay and worst of all: no backup.
Which brings me to my first point: w.bloggar sucks. Bugs (like not retaining options and the most defective HTML syntax highlighting known to man) aside, this is a huge usability problem - a user can (and evidently will) inadvertently erase his/her own work and have no way to recover it. The undo buffer is not even remotely deep enough; there are no dialogs to warn you that you're about to update a live post, and there are no backups-shadow copies-anything of published posts if you do not actively save them. Worst of all, there is no-one to mail, no bug tracker, not even a forum (the forum link on the w.bloggar site is broken). My first resolution for 2006: make more effort on PostXING and help Chris make it actually useful.
Now that that's out of the way, time for some damage control; w.bloggar is useless in recovering the lost content, dasBlog does not maintain any sort of backup (side resolution: implement shadow copies into dasBlog) and considering how cheap my hosting package is I seriously doubt my ISP would help me recover yesterday's daily backup (assuming there even is one) without significant trouble and/or cost. The only option that comes to mind is the browser cache; in case it isn't obvious from the title (and the large "take back the web" icon on the right), I use Firefox. Going over the cache files manually proved futile as most of them seemed to be binaries of some sort; some research showed me that you can access cache statistics by navigating to about:cache; from there you can access an actual dump of the in-memory and on-disk hashes. Looking at the on-disk cache via about:cache?device=disk and searching for something useful, I found a cache entry for the editing page. Clicking the link did not prove readily useful (the actual content is not displayed), but the information displayed shows two important details: the file location and the content encoding (in this case, gzip). This explains the strange binaries I found in the cache! A quick decompression via the excellent 7-zip and I had my content back. Second point of the day: Firefox has once again proved its mettle. Firefox rocks!
Coninciding with the release of OpenOffice.org 2.0.1, the OOo.il team has released a Hebrew version based off of the 2.0 codebase! It is sponsored (ironically) by the Israeli Ministry of Finance.
I haven't really tested this version but I do hope it's all it's cracked up to be. Time will tell.
Some software-related tidbits (I'll be updating this during the day):
- ReSharper 2.0 EAP build 213 is out (lots of builds since the 210 I have installed on my machine at work). I'll have a go at it and post comments in the ReSharper EAP post as usual.
- GAIM 2.0 beta 1 is also out. I've been using it for the past few hours, it seems pretty stable - there've been a lot of small improvements (away mode handling, account display, preferences) but don't expect a quantum leap in usability.
- Dying to get rid of Windows XP Automatic Update's super-nagging 10-minute interval "Restart Now or Later" dialog? So am I. Luckily, Coding Horror's got the answer.
- There's no avoiding QuickTime these days, but what with all the iTunes hype the player is taking up ridiculous amounts of drive space (the installer itself is over 30MB!) I've installed the latest QuickTime Alternative and never looked back.
Feelings are often paradoxical in nature. Sometimes the result is called hypocrisy, sometimes merely confusion or stupidity. Being something of a software evangelist I always try to convince people to switch to greener pastures, although my ideas of what is better are not always consistent with what is commonly accepted. For example, I would not try to persuade someone to use Linux, because although the OS appeals to my sense of geekiness and my inherent attraction to free, communal efforts (read: open source), my experience with Linux has all but discouraged me from using (and certainly recommending) the system. That said, when I find something I like and appreciate I certainly stick by it and try to evangelize it to the best of my abilities.
So why was I utterly pissed off when, clicking on this link via a blog post I read using RSSOwl (ironically, another great open source program), I was presented with a large "Please update your web browser!" box right at the top of the website urging me to "upgrade" to Firefox/Safari/Opera/whatever?
I'll tell you why. Because in-your-face evangelism pisses me off. Ilya, a friend of mine, introduced me to Firefox when it was still Firebird 0.5 alpha, and I've been using it ever since. I've been telling about it to everyone who'd listen; I've recommended it to friends, family, colleagues and even just random people I have occassionaly found myself talking tech with. Back in May, when I remade my personal website into a blog, I've designed it for CSS compliance and tested with Firefox first, IE second (and found quite a few incompatibilities in IE in the process). I've placed a "Take Back the Web" icon right under the navbar, in hope that perhaps a casual IE user would stumble upon it and wonder what it's all about. But I don't nag, or at least try very hard not to. I consider people who visit my website as guests, and just as I wouldn't shove my goddamn tree-hugging, vegetarian, free-love, energy-conservation way of life* under your nose if you came to visit my house I wouldn't want you to feel uncomfortable when you enter my website. Which ToastyTech did.
My open-source hippie friends, do us all a favor and take it easy. This sort of thing will not win people over to your cause; at most they'll just get pissed off and avoid your sites altogether. A regular joe stumbling onto spreadfirefox.com (or, for that matter, slashdot) would be just as likely to return to it as Luke would to the "wretched hive of scum and villainy" that is Mos-Eisley.
* In case you were wondering, I'm no tree-hugging hippie, I'm not a vegetarian, my love is an equal-trade business and I drive a benzine-powered vehicle the same as everyone else. But I care.
So I have to update a bunch of documents, primarily that 6mb pile of text, graphs and objects spanning about 110 pages I mentioned last time. My last experience working on it with Writer (from the OpenOffice.org 2.0 suite) was a blast, so despite the bigger assignment I figured that it would be a good learning experience.
The template the document was originally based off of is apparently
very ill-conceived because, upon further examination, I noticed some
issues that had nothing to do with the document import (for example,
the headers were completely handcoded - no autotext or field usage
etc.) In the process of reworking parts of the template, namely the
table of contents and headers, I had to learn a bit about Writer and
would like to share some insights.
First of all, unlike Word (I use 2003), there's no "edit header"
mode; you differentiate between the header and the rest of the page by
looking at the box outlines (gray by default). When you edit the page
header in Word it actually changes editing mode: the rest of the page
is grayed out and it's very obvious that you're editing the header
itself. I'm not sure which approach I favor better, although I am
inclined to go with Word (because it makes it that much more obvious
what you're doing at any given time). That said, the Writer interface
for fields is more powerful, or at the very least far more intuitive,
than Word's. The interface for working with headers is also much more
powerful than in Word, although it did take me a little while to get
the hang of it; I had to get over some preconceptions from years of
working with Word [since version 6 on Windows 3.1!] and spend a couple
of minutes using OpenOffice's sparse but surprisingly effective help.
Writer lets you associate each page with a particular "Page Style" and,
consecutively, each Page Style with its own Header and Footer. Not only
that, it lets you use define (per Page Style) a different header/footer
for odd/even pages (in case you're authoring a double-sided printed
document). Once you get the hang of it, defining and using headers is a
blast.
Editing headers in OpenOffice (left) vs. Microsoft Word (right)
Creating and using indexes and tables (in the classic sense, not
graphical tables) with Writer is a lot more powerful than in Word; it
gives you a somewhat less-than-intuitive but extremely powerful GUI for
setting the structure of each entry in the table/index. I used this
feature for creating a Table of Contents in the document; being the
tidy tight-ass that I usually am the document has a very clearly
defined outline (same concept as in Word: headings, body text etc.)
which made for an extremely easy transition into a table of contents.
The process is easier in Word - just add the Outlining toolbar to your
layout and click on Update TOC:
It's not really any more complicated in Writer, just slightly less
intuitive. From the menu select Insert->Indexes and
Tables->Indexes and Tables, choose Table of Contents and you're
done. When it comes to customizing the table of contents, though, Word
is practically useless; in fact, it took me a couple of minutes of
going over menus just to come to the conclusion that I can't remember
how to access the customization dialog. While on the subject, Word
manages to obfuscate an amazing number of tools, power tools and
necessary functionality behind a convoluted system of toolbars, menus,
wizards and dialogs to the point where it's impossible to find what
you're looking for. Writer to Word is (not nearly, but getting there)
what Firefox is to
Internet Explorer as far as usability is concerned: immediately
lightweight, does what you want out of the box and when you DO need
something nontrivial it's much easier to find (Insert->Header as
opposed to View->Header and Footer, for example. Why the hell would
I look for something like that in View?). Formatting in general is much
more convenient in Writer; for example, you can very easily select a
section of text and set it to default formatting with Ctrl+0, which you
could theoretically do with Word, but only after spending a lot of time
customizing it. There's no easy way to do it out of the box without a
lot of unnecessary and inconvenient fiddling with the mouse. It would
be interesting to examine Office 12, supposedly Microsoft went to great
lengths to improve usability.
But I digress. Back to table of contents: unlike Word, the default
Table of Contents in Writer does not hyperlink to the various sections
of the document. In light of the immediacy of the floating Navigator
toolbox in Writer (which Word sorely lacks) it is simply unnecessary.
However, since the document will eventually be exported to Word this
was necessary. It took another few minutes of searching, but ultimately
the answer was completely obvious: right-click the Table of Contents,
click on Edit Index/Table and simply customize the structure of the
entries via the Entries tab. The process could use some improvement,
though: there is no way to change the structure for more than one level
at a time which is quite frustrating, and modifications to the
structure are not intuitive (for example, I couldn't figure out why the
hyperlinks wouldn't show, and then figured that I probably need to also
insert an "end hyperlink" tag to the structure. This would completely
baffle a non-technical end-user).
Customizing an index/table with Writer: powerful but not intuitive
So far, though, the experience has been a resoundingly positive one.
There's always room for improvement, but if at version 2.0
OpenOffice.org has already managed to supersede Word as my favorite
word processor Microsoft have some serious competition on their hands.
Chris Frazier has been kind
enough to let me in on the PostXING v2.0
alpha program. I tried PostXING v1.0 ages ago and it struck me as an open-source
program with lots of potential but (like many other open source projects) not
nearly ready for prime-time. I very much hope to be able to help Chris make v2.0
a practical contender to my regular blogging tool, w.bloggar. It certinaly seems on the right
track, and as you can see is already reasonably usable.
If anyone has anything they wished for in a blogging tool, let Chris know -
he may yet make it worth your while
I gave OpenOffice.org 2.0 a spin today; I installed it, started up Writer, imported a >6MB Word document spanning well over 100 pages with lots of graphical content, edited huge chunks of it (including vast modifications, new pages, internal links, cuts and pastes from various sources etc.) and found it to be mostly superiour to Microsoft Word 2003.
For starters, the menus make a hell of a lot more sense than the obfuscated Word system of nested option dialogs. It was a lot easier to find stuff in the menus, and - much more importantly - everything worked from square one. I hardly had to touch the options (only to reassign Ctrl+K to "insert hyperlink" - an old habit from my Word days) and I could play the software like a finely tuned piano. I found it superiour to Word in many subtle ways: for example, the Navigator (F5 by default) turned out to be invaluable for said document (which is tightly hierarchical and very long and complex); linking was almost as good, requiring just one more keypress than Word for internal links within the document; formatting and reformatting was made a lot easier with HTML-like formatting options and built-in keybindings (such as Ctrl+0 for default formatting, which I found invaluable) and the whole shebang was rock-stable. Now that's what I call open source done right!
I did have a few gripes, obviously. For starters, I couldn't find a "Navigate Back" button anywhere (in Word I remapped it to Ctrl+-, in lieu of Visual Studio 2003) which I sourly miss. Believe it or not, the only other gripe I have is with the loading/saving system: the loading/saving times are considerably higher than Word, particularly for imported/exported documents (i.e. loading or saving a Word-format doc file). Word appears to implement some sort of delta-save mechanism, because when editing the same document with Word subsequent saves via Ctrl+S (which I do about twice a minute due to paranoia, same with Visual Studio 2003...) were considerably faster (sometimes 1-2 seconds instead of almost 10). However, remember that this is a huge document we're talking about - I've rarely edited 100-page documents, or even seen them being edited. Not in my profession anyway.
I've yet to give Calc and Impress a spin, but if Writer is anything to go by I expect to be blown away. Until Office 12 comes along I doubt I'll be firing up Word very often.
There is one particularly nasty blogspammer which every few days posts a spam comment to this post. MT blacklist doesn't seem to cut it in stopping the bastard.
Has anyone had success fighting off blogspammers? Do you have any advice?
Scott's released dasBlog 1.8!
I don't have time to install it just yet - will probably save that for
tomorrow. Since all the bugs I filed were fixed the new version is
bound to be da bomb!
Update (August 15th, 11:32 GMT+2): dasBlog 1.8 is up and running. Oddly enough it seems to be compiled, or at least set up, to run in debug mode (web.config is set to <complication debug="true"... />), so I changed that. Everything seems to be in order. The new BlogXP theme is very slick, but it's going to take quite a
bit of time to rework it to fit the site design (get rid of the
calendar, change the title, add a bit of personality...), so I'll stick
with my modified DiscreetBlue in the meantime.
I just installed The Gimp 2.2.8 on my laptop. Somehow when I used it on other machines I managaed to miss the fact that it's partially migrated to Hebrew, and that this mode is enabled by default on machines with their regional options set up accordingly.
Now, I can't stand Hebrew in applications so I generally always set
localizable applications to English (including GAIM and even Windows
itself); getting Hebrew menus is bad enough, but when they're only
partially translated and the dialogs aren't RTL'd to begin with it
looks absolutely terrible.
If you try to run The Gimp on a Hebrew-enabled machine I seriously suggest you set LANG=en in your environment settings.
A list of Gecko configuration options (accessible by entering about:config in any Gecko-enabled browser, such as Firefox) can be found in the knowledge base (via linmagazine).
I'll be listing interesting options here whenever I find them.
editor.singleLine.pasteNewlines | Integer | Determines the behavior when pasting content containing newlines into single-line text boxes. 0: Paste content intact (include newlines) 1 (default): Paste the content only up to (but not including) the first newline 2: Replace each newline with a space 3: Remove all newlines from content 4: Substitute commas for newlines in text box |
browser.urlbar.autoFill | Boolean | True: Enables inline autocomplete.
False (default): Opposite of above. |
Scott Henselman has released dasBlog 1.8 RC1! Since dasBlog is one of the most impressive pieces of
open-source software I've ever used (solid, stable, impressive codebase
and very intuitive to boot) and seemed to be in hiatus for a while,
this is some of the best news I've heard in a while.
I went ahead and upgraded, and the transition seems to be impressively smooth. Atom 1.0
is now fully supported, and having done some reading on it I think I
will be evangelizing it a lot more in the coming weeks, since it seems
to solve a lot of issues with RSS (not the least of which is a properly
written schema).
dasBlog 1.8 also comes with a pretty nifty theme called BlogXP,
which I intend to provide as an alternative theme as soon as I get
around to reworking it a little bit. So far I'm very pleased with the
performance and usability enhancements, and will report further.
Update (14:28 GMT+2):
I just spent the last couple of hours hunting down what I perceived was
an output caching issue with either dasBlog or ASP.NET. I updated this
entry with a trackback link to Scott's website, but it was not properly
handled (no trackback, and the linked text did not show to boot). To
make a very long story short, apparently dasBlog has several "content
filters" enabled by default; these content filters are regular
expressions which match, among other things, the strings dasBlog, Newtelligence and Clemens Vasters
and replace them with the appropriate links. Aside from these default
filters being horribly out of date (the current maintainers are Scott
and Omar Shahine), implicit
defaults such as these really annoy me because they cause unexpected
behavior (in my case, the string dasBlog inside an <a> tag was replaced with a complete hyperlink) and the behavior in itself is not necessarily desirable.
Also, a bug I neglected to report is yet to be fixed (it's now reported), and there are several other minor issues (such as this). Otherwise, dasBlog is a very solid piece of work indeed.
Damned if I know why, but the GTK+ installation that comes with the Win32 version of GAIM doesn't handle Hebrew properly (mismatched parentheses, problematic handling of hyphens etc.). I've already mentioned that installing the Glade compilation of GTK+ solves the issue, however I attributed it to a particular broken version of the GAIM installer, which seems not to be the case. I should probably file a bug report about this.
It took me ages to understand the fundamentals of internationalization,
(man-) language interoperability etc. In fact, only after working on
MFC software over a year I encountered a problem so fundamentally
accute I couldn't for the life of me figure it out, and it took a
bitchslap from my friend Ilya (Konstantinov) to make me halt and figure
the problem out properly.
Internationalization is hard. Perhaps its hardest aspect is
support for the various languages; each language has its own character
set, and although most widely-used languages derive from the basic
latin alphabet there are still subtle differences. German makes
extensive use of accented characters (é and ü for example); Czech makes
use of the relatively unknown caron (č) and that's just the tip of the
iceberg. Imagine the thoroughly different requirements of Arabic and
Hebrew: complex script languages that are not only written
right-to-left, but employ a completely seperate alphabet with different
requirements. For example, did you know there are two ways to write
several letters in the Hebrew alphabet, depending on their location
(middle or end of a word), but those versions of the same letter have
the same semanthics? Or maybe you've run into the latin letter Eth (Ð),
which to my knowledge only exists today in Icelandic?
Finally, to the point: if you've ever received an e-mail with
question marks instead of words, entered a website in your native
language but got gibberish instead or perhaps (for the more astute)
wondered how it is possible to display text from so many different
languages on one document (web site...), you're not alone. Most
programmers are completely unaware of these fundamental issues, and
cause massive headaches to users and fellow programmers alike. I've
come across an article Joel Spolsky wrote
back in 2003 with an absurdly long name; no matter: finally someone
(certainly with more credability than myself) has taken it upon himself
to write a thorough introduction to the subject for people - developers
in particular, but the technically savvy among you might also be
entertained - who do not realize its importance. Please, please please go and read it before you go on with your daily lives.
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.
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.
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.
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:
- 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.
- OpenOffice.org - 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 TestDriven.net (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.
|