Friday, December 28, 2007

Emacs.NET coming soon?

Why is Microsoft writing a .NET version of the good 'ol UNIX text editor Emacs?

I suspect it will be not a direct clone of Emacs, but like Emacs will be a text editor that is largely written in and customized by .NET scripting languages (IronRuby, VB, etc), maybe even integrated with PowerShell.

Will it be open source?

Update: The mystery has become a little less mysterious. The editor mentioned above will be called "Intellipad". It is apparently going to be part of Microsoft's SOA offering, code named "Oslo". Another major component of Oslo is a declarative “textual modeling language” called "D", which will be based on XAML. Dunno how a modeling language like D could be based on a markup language like XAML...

Tuesday, December 25, 2007

Last Minute Geek Xmas Gifts

Looking for a last minute xmas gift for that special geek someone? Are you a geek with lots of gift cards to get rid of? Here are my suggestions for 2007:

8. Reindeer Computer Carton

Feeling creative? Don't know what to do with all of that packaging that came with your new computer? Make a reindeer out of it!

7. Disembodied Remote Controlled Hand
Just like Thing from the Adams Family. Get your own remote control hand that crawls across the floor on its fingers!

6. Toilet Aquarium

Turn your boring toilet into a Fish 'N Flush "nautical wonderland"! Fish not included.

5. Fun Toilet Paper
You're not going anywhere until you wipe. Revenge Toilet Paper looks like the real thing but cannot be torn!
Give politicians back the same stuff they give you with Political Toilet Paper.

4. A Chair That Follows You

For the ultimate in lazy the “Take-A-Seat” is a chair concept that follows you wherever you go!

3. Wi-Fi Detector Shirt

Display the current wi-fi signal strength to yourself and everyone around you with this stylish Wi-Fi Detector Shirt. The glowing bars on the front of the shirt dynamically change as the surrounding wi-fi signal strength fluctuates!

2. iPod Accessories

Let your favorite tunes clean your teeth with Rock My Teeth.

Turn your dog into a boom box with the dog-jacket iPod dock.

Checkout some other iCrap.

1. Motorized Cooler

Ever drive to a park or friends house for a BBQ and then discover you have to carry a heavy cooler full of food and drink to some far off area? No more! Let your Cruzin Cooler take you and your food to the party in style!

Monday, December 17, 2007

Changing Windows Process Scheduling with ProcessTamer

For years I've been disappointed with the Windows process scheduler. It is so easy for a process to suddenly take up all of the CPU and completely "freeze" your PC for minutes at a time.

Fair scheduling is something high-end UNIX variants like Solaris have dealt with successfully for a while now, while Linux is still coming to terms with.

An interesting freeware tool I've been trying out recently is ProcessTamer, a Windows utility that runs in your system tray and constantly monitors the cpu usage of other processes. When it sees a process that is overloading your cpu, it reduces the priority of that process temporarily, until its cpu usage returns to a reasonable level. Now my PC doesn't become completely unresponsive for long periods of time, but on the downside some applications like Firefox take longer to start up.

Sad that I have to consider using tools like ProcessTamer, but so far it has done a pretty decent job.

Virtualization == Increased Latency?

An interesting quote that caught my eye while reading about the NYSEs replacement of UNIX servers with Linux (nothing really new there since many of my financial clients started on that 5+ years ago) was this:

One technology that the NYSE isn't adopting so eagerly is server virtualization, which comes with a system latency price that Rubinow said he can't afford to pay. In a system that is processing hundreds of thousands of transactions per second, virtualization produces "a noticeable overhead" that can slow down throughput, according to Rubinow. "Virtualization is not a free technology from a latency perspective, so we don't use it in the core of what we do," he said.

Charles King, an analyst at Pund-IT Inc. in Hayward, Calif., believes there is a broader concern among IT managers about virtualization overhead and its impact on transaction processing. "It's one of the reasons why even the staunchest advocates of x86 virtualization recommend extensive testing prior to moving systems into production," King said.

I haven't heard this particular concern until now, but I can imagine it to be a big one since one thing you will hear talked about again and again and again if you work on trading systems is "low latency".

So what can be done to reduce latency in a virtualized environment? Depends on how much you're prepared to spend.
  • Software virtualization like VMWare or Parallels is likely to incur some extra latency above native-run applications, even though they take advantage of recent hardware virtualization hooks. In theory the more powerful the hardware the lower the latency.

  • The top of the line virtualization (i.e. very expensive) offering is probably still Azul. This is a hardware platform for running virtual machines across a pool of Azul "appliances". The hardware has been optimized for application context switching, large memory heaps, etc. Azul like to call their offering "application virtualization" and products like VMWare are called "OS-level virtualization".

Thursday, December 13, 2007

Using Web 2.0 to find the nearest toilet

I was excited to see the recent launch of MizPee, a website with SMS support that can help you find the nearest toilet in your hour of greatest need.

MizPee serves up a list of nearby toilets, how far away the toilet is, a rating and whether or not there is a charge. Other details may include disabled access, whether the restroom includes a diaper-changing station. Users can also leave comments.

There were many critical comments about the site, but having been a tourist I can say that not every city has a Starbucks or McDonalds on every block and not every restaurant is happy to let people walk in off the street and use their loos. While one comment said "web 2.0 just jumped the shark" I've got to say that it is a good thing the barrier to entry for a webapp is now so low that a niche application like this can exist.

A niche idea I've had for a while: In the part of Brooklyn I live there is the joy of alternate side street parking, which means I have to move my car at least once a week. I'de love to put together a webapp that could help me locate the nearest parking spot. Big challenges in keeping that info up to date since spots come and go very quickly.

Monday, December 10, 2007

Crowdsourcing your next development project

Wikipedia defines crowdsourcing as:

The act of taking a task traditionally performed by an employee or contractor, and outsourcing it to an undefined, generally large group of people, in the form of an open call. For example, the public may be invited to develop a new technology, carry out a design task, refine an algorithm or help capture, systematize or analyze large amounts of data.

Although it has had some success I wonder can it work for developing large, complex applications like many of the financial applications I work on for a living. I can see it working for fairly generic applications (e.g. many webapps), but complexity takes a lot of managing. Many of the finance companies would also be reluctant to make requirements publicly available, exposing their intellectual property to their competitors.

However, a large chunk of any application is plumbing code. This article on crowdsourcing demonstrates how one company opened up about half of an application to crowdsourcing and is committed to do th rest of the integration work:

In Baltimore-based Constellation Energy's case, the $19.3 billion energy company didn't stage a completely open call; rather, it worked with TopCoder , a Connecticut-based company that stages regular coding competitions, ranks developers who compete and then makes this talent available to businesses that need systems built, also through a competition-based model. TopCoder currently has about 130,000 members from more than 200 countries.

A TopCoder project manager assessed the needs of Constellation Energy's commodities group, broke up the system design into dozens of small components and released about half of those component requirements to member developers, who could send in their best coding effort. (Constellation decided to build some of the components in-house.)

Submissions -- which continue to roll in -- are rated using a standardized scorecard, and winners are rewarded anywhere from $500 to close to $2,000. When all the components are complete, TopCoder will work with Constellation to integrate them into a functional system.

It will be interesting to see how this project turns out.

I had a client a couple of years ago that was not happy with the quality of code coming back from an outsourcing vendor and had the idea that he would set up a team in NY to integrate (and fix!) code coming back from this vendor, but I don't see why this integration team couldn't integrate the best code from a few competing vendors!

Google Mobile Maps pin points your location without GPS

Google continues to innovate. Last week they released an update to their Google Maps for mobile suite with an application called "My Location", a technology which uses cell tower ID information to provide users with their approximate location. Good for people with ancient cell phones sans GPS like me! (video explanation here)

Saturday, December 08, 2007

Instaling and Configuring the Perforce Eclipse Plugin

A few clients I've had this year use Perforce for source control. I didn't find the official Perforce Eclipse plug-in installation notes detailed enough, so here is my version:


1. If you haven't got the Perforce client already installed (the Eclipse plug-in uses the p4.exe command-line tool) then download it from here and install.

2. Create a Perforce workspace for your project.

Eclipse Install and Configuration

1. If you are behind a corporate firewall configure Eclipse to use the firewall HTTP proxy. Proxy configuration steps vary with the version of Eclipse, but for Eclipse 3.1 it is :

a. Windows > Preferences > Internet > Proxy Settings
b. Check Enable Proxy
c. Type in the Proxy host and Proxy port
d. Click OK

2. Add the Perforce plug-in remote site

a. Help > Software Updates > Find and Install
b. Click “Search for new features to install” > Next
c. Click “New Remote Site
d. In the dialog box enter

Perforce Plugin

for “Name” and

for “URL” > OK
e. Click Finish

3. Download the plug-in

a. Check the “Perforce Plugin” checkbox > Finish

b. Check the “Perforce Plugin” checkbox > Next

c. Click “I accept the terms in the license agreement” radio button > Next

d. Accept the default plug-in install location by clicking Finish

e. Click Install All

f. Click Yes when asked if you want to restart Eclipse

4. Enable label decorations

a. Windows > Preferences > General > Appearance > Label Decorations
b. Check “Perforce” > OK

5. Configure your favorite Perforce Label Decorations

a. Windows > Preferences > Team > Perforce > Label Decorations
b. Select the decorators and decorator locations from the "File Decoration Icons" combo boxes
c. Click OK

6. Configure Eclipse to point to the p4 executable

If the Perforce p4.exe command-line tool is not in your PATH then you will need to explicitly set the location of it.

a. Windows > Preferences > Team > Perforce
b. Click the "Location" radio button
c. Enter the full path to the p4.exe in the text box e.g. C:\Program Files\Perforce\p4.exe
d. Click OK

7. Configure your project to point to your Perforce workspace

a. In the Eclipse project hierarchy right-click the name of your project > Team > Share Project…

b. Click “Perforce” > Next

c. Enter the PERFORCE_SERVER_NAME:PERFORCE_SERVER_PORT for “Port”, the Perforce user name for “User” and Perforce workspace for “Client Workspace” > Finish

Recovering Your Eclipse Workspace

One situation you're likely to come across when using the Perforce plug-in is this: if Eclipse does not shut down properly (e.g. Eclipse crashes or your PC did a forced reboot) then chances are pretty good your Eclipse workspace will be corrupted.

The symptom of this is that when you try to start Eclipse the splash screen will appear, then disappear and then nothing happens. i.e. Eclipse fails to start. You can verify the cause by looking for Perforce plug-in failure messages in the WORKSPACE_DIR/.metadata/.log file.

There are two solutions to this:

1. Re-create your workspace from scratch, which can take a while.
2. Manually uninstall and re-install the Perforce plug-in.

To manually uninstall and re-install the Perforce plug-in do the following:

i. Exit Eclipse if it is running.
ii. Move the sub-directories beginning with com.perforce found in ECLIPSE_INSTALL_DIR/plugins to a temporary directory (e.g. c:\Temp). In the version of the Perforce plug-in I installed these sub-directories are named

  • com.perforce.p4api_2006.2.4136
  • com.perforce.p4wsad_2006.2.4136

iii. Start Eclipse, let it load the workspace, then exit Eclipse normally
iv. Move the Perforce plugin sub-directories back to ECLIPSE_INSTALL_DIR/plugins
v. Start Eclipse
vi. Re-associate the project with the Perforce workspace as per step 7 above

Wednesday, December 05, 2007

Konsultant Number One

My first Kid Consultant (Konsultant) Jacqueline joined the ranks of the Maldon Family Consultancy (MFC) last week.
Architect Jackie helps JSP Monkey daddy debug a webapp

If you would like to hire her then here is a summary of her resume (following the industry standard of experience exaggeration):

Roles: New Media Architect, iCommerce eGuru, Hungry Baby
Certifications: Scrum Master, Lean Wizard
Patterns: Singleton (is there any other pattern than singleton?)
  • Awesome Modeling Language (AML) 3.0, Spring 8.0, Hibernate 9.3, Oracle