New Machine - Smackbook Pro

I am not sure how long it is going to be before I am confident enough with my mac to do this but this rocks. Of coarse, this was posted in May 06 so I still have years of information to catch up on.

SmackBook Pro


New Machine - Coherence Revelation

Having posted positive things about Parallels Coherence feature the other day I have just been blown away by a concept that completely passed me by. I was working on the last post, using the command-shift-3 and 4 to capture screen shots to png files, and I needed to convert these to jpg's to save a little space.

Right click on the png file and select "Open With" and peruse the list, there is Gimp, a fine tool but a little clumsy, then, near the bottom of the list was "Paint.app". Well I hadn't ever seen a Paint program on the mac so I thought I would see what it could do.

This is when it happened. To my complete surprise Parallels showed a little dialog indicating that it was booting Windows XP and within 4 seconds, Windows Paint started, in Coherence mode. So it was just another window on the Mac background. That is just awesome because Paint does a great job of converting png's to jpg's.

With the VM started the subsequent startups was sub-second and the job was done.

So, the mac is really good at image conversion now that it supports a Windows application. Nice.

New Machine - Utilities

Here is the list of utilities that I have added to the basic Leopard installation so that I can get my work done.

  • iClock

    This replaces that standard OS X clock so that i can show the day of the month and the time in the menu bar. Simple and compact.

  • iStat

    This utility allows you to select various performance counters and add them to your menu bar. The appearance can be altered to make them easy to read and they allow access to the activity monitor for a more detailed look.

  • PinPoint

    This utility tracks the mouse pointer and adds overlays to make it easier to see. The latest 3.0 beta version supports animated cursors which is really cool. They even have an audio cursor so you can shout at your mouse to make it blink at you. The downside of animated cursors is CPU usage. I was seeing numbers in the 10 range so switched back to the 2.52 version for CPU down at 1%. Even this version has lots of nice features. Full screen cross hairs is nice for image editing and screen capturing.

  • Adium

    A nice instance messaging app that can be compressed into a very clean looking interface. It supports all the usual services.

  • QuickSilver

    This is the greatest productivity tool out there. With a couple of keystrokes I can find and execute any application on my machine. With a couple more I can select any action to be performed on any item. There is nothing like this for windows but a few clones are getting closer.

    Screen Capture from Black Tree web site since I couldn't screen capture my own. I hope they don't mind.

  • JumpCut

    This is a multi-clipboard utility. When you press the hotkey you get a small window overlay with the last text that was copied. I would like to see the last 10 or so to see if what I want is in the list. It allows me to press the down arrow to sequence through older text but this makes the visual queues harder to spot. Still, a worth while utility to have.

    You can, however, if you use the mouse, select the menu bar scissors to select the paste operation from there.

  • Witch

    This takes me back to simple Windows style alt-tabbing. Just select the window you want to see and focus on it. None of this command-tab to an application and then click to get focus etc. This is much easier.

New Nationality

Everything changes while everything stays the same. It's like staring at the other side of the sphere as a new soul.

At 14:45 on December 14, 2007 I became a US citizen.

This is my 20th year in this great country and I feel extremely lucky to have had this opportunity in my life.

I have to say that these are rather selfish thoughts because, it turns out, that the most perfect woman in the world, happens to live here, so what is a guy to do.

The ceremony was really inspiring. Presided over by the Honorable S. Arthur Spiegel and the guest speaker was Mr. Neil A. Armstrong.

There were 87 people eager to become citizens, from 36 different counties. I was number 22 in line between a young husband and wife from Bulgaria and an older mother from China.

The speeches centered on the responsibility that we were taking on with the realization that America isn't perfect but that, as citizens, we are responsible to help improve it. I thought it refreshing to hear these words since it really speaks to the reality of all societies trying to become the best they can be. This is a privilege to be a part of.

As I left the courtroom I was greeted was greeted by the Daughters of the Revolution who are direct decedents of those that fought for the freedom of this great land.

My first act as a citizen was to register to vote. Important times ahead, I hope I can make the right choice for my grand kids.

Apparently, one of the lesser known perks of becoming a citizen is an introductory taste of fine cookies and punch, yummy.

Finally, leaving Potter Stewart Courthouse at 5th and Walnut in Cincinnati, I stand by the Bill of Rights, the cornerstone of freedom to live by. I carry with me a congratulatory letters from George Voinovich, one of the Senators for Ohio and George W. Bush, though I don't think that was his actual signature.


New Machine - Parallels strickes again

A simple software update but much, much more. I was trying to get windows running in Parallels again after the horrendous experience last week.

Parallels is launched and prompts me to download an update. I am excited about this because I install these all the time on Windows and never have any issues. I smile at the thought of little bugs being crushed by new clean software. Ah, dead bugs.

The download dialog pops up and things look good. I wait a little but it appears to be taking some time so I slide my chair left and get back to my Windows machine to play for a while.

Perhaps it was the Mac clock, Alex, announcing the next hour, or the rumble in my stomach hinting at food time, but it dawned on me that the Parallels download had not completed. Well, first day out I imagine there are lots of people as eager as I to fix bugs.

How much longer should a person wait for a download. The original dmg didn't take nearly as long to download. Eventually you have to accept the fact that something is not working. Ah, yes, of coarse, they must be testing their download code. I can assert that it doesn't work. I press cancel, nothing happens, quit is ignored and a force quit shows me an elegant C dump which I kindly forward to Apple to work on. I am sure they love getting those things.

After the Parallels restart, things started going well, which surprised me, and lulled me into a sense of calm vulnerability, destined to be wiped clean by reality. So, there was a moment, when the mac seemed as though it might do something well.

I feel I have to share the good news. I start up Parallels and install Windows XP. It installs and boots beautifully. I am even brave enough to try Coherence mode which hadn't worked last time but, to my giddy excitement, my Windows start bar appeared at the bottom of my OS X screen. Press the Start bar and select IE and, more giddy excitement, it launches and works. I even tried setting auto-hide and now when I move my mouse to the bottom of the screen the start bar and the dock both pop up. Who could ask for anything more.

Let's stop and reflect on the good times, because this is where they end. Ah, Coherence.

I have a Vista upgrade and decided to give it a shot. See how giddy excitement can lead to stupid decisions?

I make a snapshot of the Windows XP VM, clone it, and throw in the Vista DVD. Now I have to admit to some user error at this juncture.

I started the upgrade in XP not considering that Parallels actually asks for the OS type at VM create time. So, as I considered the problem of how Parallels would run a Vista OS in an XP VM, I found the Parallels option "Prepare VM for Vista Upgrade". Of coarse this was a little late now.

I canceled the install, selected this option and followed the instructions. Back to the install process which went through all the way to the final boot and the login as Administrator. It proudly told me that it was "setting up desktop".

Alex piped up again as another hour passed and it registered that things had been going well for far too long. Turns out Apple came up with better voice simulation for the time announcement so that we could more clearly hear the warning that things were about to go down the shitter. An hour is way too long for things on a mac to work correctly.

With the hung install all I could do was shutdown the VM and delete it. I thought this was the end of the problem but Parallels had corrupted OS X. Yes, it appears that is what happened. Let's say it a little louder so everyone can hear.

Parallels corrupted OS X

The symptom is clear. You do not have a user directory any more. After further investigation, it appeared as though my /Users/esumerfd directory did actually exist on the disk but was not showing up in Finder.

The all knowing oracle, Google, pointed me to a solution on the Mac site. Fortunately, they prefixed their solution with the genial phrase "Don't worry". I would have thought that a "DON'T PANIC" suggestion would have helped more, since, OS X

"looked insanely complicated" to operate, and
partly to keep intergalactic travelers from, well, panicking.(p. 27)

So, head off to the Users directory and try this:

: ls -lO
total 0
drwxrwxrwt 4 root wheel - 136 Nov 26 18:13 Shared
drwxr-xr-x@ 35 esumerfd staff hidden 1190 Dec 13 17:21 esumerfd

As you can see the user directory is hidden. So, Parallels was so depressed about its performance it thought that it would hide everything trying to convince me to run away. After all, I am not a user on this machine anymore.

chflags nohidden ~/

And she's back. WooHoo.

So, we learn another valuable lesson. DON'T PANIC, they have added all the information you will ever need to Google.


New Machine - Date Time

Two complaints.

  1. The date time that is showing in the menu bar allows me to see the day name and the time but no day of the month.

    Now that is just crazy. I usually know the day name but rarely remember the day of the month. I thought UI specialists were all about putting the most commonly used data in the simplest place. I guess with Apple employees having to work on these machines all day they must get so frustrated that they even forget what day it is.

  2. I am forced to live in Columbus. The timezone requires me to select a city name and does not include Cincinnati. While there are some City or at least county exceptions to timezones, I don't live in one. Can't I just have an EST?

    This wouldn't be so bad if I didn't have to see it every time I look at the dashboard clock. It is just irritating.

Hey, Apple,
please move me to Cincinnati,
or stop reminding me that you suck.

I should point out, that, in this case, Mac sucks less than Windows. After all, I can add the time to the system tray but that is all she wrote. No day of month or day name. There are some after market apps that can produce nice looking clocks with all the info you need on the system tray. I would imagine that I will eventually find some after market menu plug-in for the Mac to.


New Machine - Mac User Unfriendly things

Yes, I know, blasphemy. What else can it be when the only prevailing thoughts expressed in the world are about how easy it is to use. Sorry, you are brain-washed hype-mongers (all bloggers should insult their audience before they start just to set the tone correctly :-) ).

So, here is a short list so far.

  • Dialog transitions.

    What is the deal with not allowing me to tab to an OK button and pressing space. I have already had to enable the tabbing from control to control because it wasn't the default. Now, even with that enabled, I can not tab to an OK button.

    Specific case, Twitterrific properties dialog.

  • Keyboard Inconsistent


    When entering tweets into the new Snitter client, based on the newly renamed and re-hyped, Air framework, we find that the options-arrow doesn't jump the cursor by words anymore. Is this a Mac problem or an Air problem?


    Another example would be the command-w to close a window. Firefox uses this key to close tabs and makes you add a shift to close the window. I would have reversed that.


    Firefox downloads a file, it appears in the download window, command-o opens the file in the an open file dialog box?. Not quite right since the file was already selected but ok, pressing on. Now in the open file dialog, select the file and press "open" button (or just Command-O, they are both wrong) on the file and you get a "do you want to save the file" prompt? If you agree and you get a second download file.

    None of this is anything to do with the "open" semantic we were going for. Again I am forced back to the mouse to click "open" or double click the file to open it in the Firefox download dialog.

    Tricky logic coming up, watch out. Windows uses the enter key to open. Firefox under Windows doesn't do anything when enter is pressed in the download window. So this lack of functionality is better than inconsistent functionality. Mac or Firefox fault indeterminate.

  • Spaces

    You can not drag an Air application (experimented with Snitter) to a Spaces boundary to move it to another Space. Let's all hate Apple, after all, we have been hating Microsoft for so long, why not spread the joy. In reality, they both appear to deserve some well crafted derision.

  • Command-Tab Behavior

    Coming from Windows this is certainly going to take some getting used to. I am used to being able to get to the windows I want and have it in focus EASILY.

    When a window is minimized, using Command-Tab to select it does nothing. It seems like a simple UI request. "Go to my window" I say but the Mac refuses to give me access to it. Instead, back to the mouse to navigate to the dock to find and click on the window that I want.

    When a window exists in a different Space, you can Command-Tab to it, but, when you get there it will not have focus, so you have to click on it to use it. Another simple window selection that requires multiple steps to achieve a simple goal.

    I do like the Command-` for cycling through many windows from the same program. That is really nice with Firefox.

  • Google Mail

    There is no "goto end of line in the gmail compose dialog. It doesn't seem to be related to a Firefox rendered textarea since it is working in this blog entry page. This may very well be a bug in the page code managing the compose input field but it is only effecting macs.

  • Gimp

    This is an old X application and runs with a completely different set of UI design standards. Now that Mac is based on unix it has the ability to run these old unix applications so its hard to contend that this is a Mac problem. However, the UI standards for Gimp are closer to the Windows standards.


There are obviously going to be minor differences between UI libraries, cocoa, carbon, Air, HTML/JavaScript etc. I have barley scratched the surface of whole Macports tool set with all it's X implementations.

One of the realities that Mac faces is that it is a Unix based UI. While they smartly replaced X with their own UI toolkit to improve usability they are still fighting the draw of the old Unix habits. The Command-Tab behavior is straight out of your old X environment.

Windows has the advantage of using a more standard UI toolkit. All programs on a Windows machine write to the Windows user interface libraries. This means that everything works the same way all the time and that makes Windows a better user experience.

The problem here is not that there are a few non-standard interactions on a Mac but that all we hear is how user friendly a Mac is. I am hear to say that a Mac is "usable" and when you get through the arduous process of learning all it's foibles it will feel like that old car with no mirrors, a clear view of the road through the floor and no 2nd gear, that you will never part with.


New Dog

Switching from plastic and metal changes in my life to biological and pooping changes. We have a new dog to keep us company. He is a Rottweiler and Mastiff mix called Bernie , he is around a year and a half old and just the most lovable bouncy animal we could have hoped for.

We found him on Pet Finder located at a Coshocton County Shelter which is about 3 hours drive north of us.

Well he is still settling into his new surroundings and we are still getting used to a 100 pound animal wondering around. He is the best exercise program we have ever invested in, beats the gym easily, because you have to walk Bernie, you don't have to go to the gym.

New Machine - Window Re-size Conundrum

One of the annoyances I have been having with my new shiny mac is the lack of keyboard driven window control. I can %-m to minimize and %-w to close but there is nothing to re-size, move, maximize, or restore a selected window. Of coarse Windows has all these features so I am feeling a little lost.

The other problem is that, even with the mouse I have limited control over re-sizing the window with the bottom right corner of the window being the only hot zone. Quite apart from the fact that it doesn't offer any cursor feedback when I am hoving over it, I have found a problem that I can't solve with out more control.

When I open the Finder, the window is taller than the screen so the re-size hot zone is not accessible. I have tried switching the views, closing and reopening, restarting and cursing at it. Nothing helped.


New Machine - Finder Problems

Finder being similar in goal to Windows Explorer I was expecting some really easy ways to get things done. Apparently, Apple screwed up the user interface here as well.

Baring in mind that I may know nothing but that is what comments are all about.

So, lets consider some simple tasks that I would like to do:

  • Navigate a directory structure.

    In "List" mode things work as expected but switch to "Cover Flow" and the interface changes. The UI cardinal rule that is broken by the Mac so often.

    In "Cover Flow" mode when a folder is selected I have press command-right arrow to navigate. What's with the two keys. The right arrow moves me to the next sibling which is stupid because I have a perfectly good down arrow if I wanted to do that.

  • Open With

    I am playing with some images and want to learn more about iPhoto's features. The default action for a jpg file is preview. Perhaps useful for some things but I want to open it in iPhoto, the big iLife component extolled in the ad's, you would think the integration is great wouldn't you? So, ok not the default but right click on the file and select "Open With", search the list of apps, search again in astonishment. No iPhoto. I see Gimp, which I installed for better photo editing because we know iPhoto sucks for at photo editing, but not the grand app Apple touts so staunchly.

    Ok, no problem I am used to the whole "Open With" concept. I select "Other" to find the iPhoto application. The application selection dialog opens and I find the app in question. I see an "Always Open With" check box but I don't want that. I assume that it will be as good as windows and remember that I selected this app this time to will add it to the list ready for next time.

    The other option on this dialog is the "Enable: Recommended Applications" which can be switched to "All Applications" if I want to. This simplifies my selection of iPhoto because the down arrow jumps between "Recommended Application" saving some time.

    When I next go into "Open With" to open the next photo I find that iPhoto is not available. The Mac had forgotten that I selected this app. I am going to have to re-select "Other", arrow down to the application and press "Open".

    So, if Mac is maintaining a list of "Recommended Applications" and another list of "Open With" applications, how does one move one to the other list?

    Oh, yes, the burnt crust on this is that iPhoto doesn't open the photo in question but jumps to a list of all photo's available on the USB memory card. At this point I am not sure I would expect anything else. Why not force me to click some more and navigate some more, after all, Mac is so pretty :-P

New Machine - Multilingual Power Button of Doom

Well the Marble of Doom has some knock-on effects. The Parallels Windows session was up when the Marble rolled by and all I can say is that the VM image must be corrupt because when you try to re-start it you get the following "Multilingual Power Button of Doom".

The lesson is to back-up your VM's often. They certainly take a long time to create you might as well invest in the disk to back them up.

New Machine - Spinning Marble of Doom

After two weeks of ownership the honeymoon is over. I have been presented by the most prestigious of inducti experiences. The Marble of Doom is my favorite of the few names it has.

So, let's review. I left Windows land for two reasons. Vista was unusable and Windows XP was blue screening every time it looked at Google Earth.

I now have an expensive MacBook Pro which is unusable because I don't know how to use it and it has just shown me the big middle Marble of Doom.

I say to you. Computing is going to the dogs. Someone please do some damed testing will you.

I was trying to copy something from the mac into a Parallels installed Windows Server and to do this all I wanted was a little FTP server. So, System Preferences, Shared, check the File Sharing checkbox and then in the options I selected "Share Files and folders using AFP", "Share files and folders using FTP" and "Share files and folders using SMB". I selected the account to share and pressed Done.

I saw the Marble of Doom but figured it would sort itself out, after all I was just envisioning some network restart it was doing in the background. Fortunately I had my old reliable Windows machine to play with while it was spinning.

Is an hour too long to wait for a network to restart? I thought I was very patient.

There didn't seem to be any way to kill the processes since I didn't have a terminal up at the time and the Finder would not open, QuickSilver would not pop up, and the Activity Monitor was not doing anything. So, power button for 10 seconds and restart.

I still don't regret buying the mac, after all, it is very pretty :-P


New Machine - Palm

The palm web site indicates that the Palm Desktop software only works on OS X up to 10.4 so I was assuming that my 10.5 Leapard release wasn't supported.

Thanks to the always informative Agile Round Table User Group suggested that it would work anyway so I gave it a shot.

The good and the bad. The install requires me to restart the machine, which I really don't understand. It's just like installing application on windows.

I configured the palm to hot sync using Blue Tooth but as I proceeded through the Windows based instructions there was nothing to do on the mac. Eventually, the final next button was pressed and off it went.

My experience Blue Tooth synching on Windows resulted in repeated Palm crash restarts and Windows refusal to respond. Since then I have upgraded the Palm firmware which might explain the problems, but the Mac experience has been much better.


New Machine - Dashboard

At first site this dashboard thingy looks static, perhaps useful for the basic date and time features but not much else. Then down in the bottom left corner you notice a little plus sign. The little, almost invisible, plus sign seems to be theme in Apple's idea of what a quality UI is.

Anyway, the clock thinks I am in Atlanta? The closest I could move myself is Columbus. At least in the same state. What happened to trusty timezones. Why does the clock care which city I live in.

I decided to installed the new Google Desktop which places it's gadgets onto this Dashboard (F12). This adds all kinds of little doo-hickeys, some of which are even marginally useful. You don't have the full list available for Windows yet, but I guess, we expect the mac to be behind.

Now that I have written this I can't remember if the plus sign was a google Desktop thing or a mac thing.

Oh, yes, and I like the splash effect when I drop another gadget onto the dashboard. I works well with my watery background. Ooohhhh, Aaaaahhhh.

New Machine - It's the little things

I found something I like about the Mac. Gasp.

When you enter an invalid password the dialog box shakes it's head at you.

Doesn't seem like much but it really adds to the emotional side of the relationship.

Don't expect too many gushing things about mac from this feed. There are way too many brain washed hype-mongers out there to cover that side of things. However, I thought that I should add one just so you don't think I am evil or something.


New Machine - Parallels doesn't work

Clean shiny mac with a clean shiny Leopard in it. So I try a clean install of Parallels 3.0 and I find a black and white C dump and a sweet encouraging messaging indicating that it "Unexpected Quit". It seems that when you give Apple loads of money for hardware and not so much for some software, they think that means that it doesn't have to work.

Turns out I had to download the latest dmg from the Parallels site and install that to make it work. Not too hard but the I haven't seen a C dump in a long time. That is the user friendly mac at it's best.


New Machine - Tools

Life is all about acquiring the coolest tools so for all the Windows tasks that i used to do with ease I need to find the most efficient way to do the same thing on the Mac.

This is a little bit of a tight rope walk because learning something new is about doing things a different way but it's also about being efficient so you have to try both and see which is the best.

So these are the tools that I have currently installed that seem to help a little. I expect that we will need many more,

JumpCut multi-clip support
Quick silver fast access to anything on your computer

New Machine - Default preferences to change

There seem to be lots of settings that appear to be different from what I expect. Since what I expect is a windows experience I wonder if I should be changing these. At least if I document them I can reverse the decision later.

System Preferences

- Defaults to no password and auto-login.
- Check the "Require password to wake this computer"
- Check the "Disable automatic login"

- Defaults to "Allow all incoming connections". Very bad.
- Switch to "Allow only essential services".

Keyboard & Mouse

Use all F1, F2, etc as function keys
- Defaults to disabled because you always need to
adjust your screen brightness? Silly people.


Use two fingers to scroll
- Enable this so you don't have to move the mouse to
the scroll arrows

Allow horizontal scrolling
- Enable the horizontal while you are about it.
Not as useful but nice when it's needed.

- Enable this so that you don't have to move your
fingers so far to click something,

- Dragging windows with the mouse is easy and
only requires one finger.
- Drag lock appears to be enabled whether the checkbox is
checked or not.

Tab trachpad using two fingers for secondary click
- Defaults off but is a better way to get the context menu than
holding down ctrl and clicking.

Keyboard Shortcuts
Full Keyboard Access
- Defaults to "Text boxes and lists only" instead of "All controls".
Mac's hate the keyboard.

- Unlock the properties and select "Name and password"
so hackers can't see a list of usernames.

New Machine - First impressions

My first impression was that it was really heavy. I wanted a big machine so I can't complain but man is it heavy.

Plugged in the fancy magnetic power cord and it started up perfectly. A short setup and I am on the network and ready to go.

Second impression, when the setup started it played this welcome video full screen on the hi-def glossy monitor. I can honestly say that I almost fell over. Stunning.

So I am logged in and the "dock" shows some applications at the bottom of the screen and the finder appears. The finder window is small so I try to resize it but, third impression, the cursor doesn't change when you hover over the window frame. Strange that it doesn't offer that feedback.

While wondering how to find Safari I notice a little bouncy thing in the dock. I look close to see that it says, "Software Updates". Wow they are already trying to improve my machine for me. Nice Apple.

The update starts OK but with another UI problem. I thought Mac were supposed to be user friendly. The first option is "later" or "Install and Restart". Well after the surprise of having to restart has passed I select it "Install and Restart".

It asked for a couple of legal agreements from iTunes and Mac OS X and then to my astonishment it asked me again if I want to restart. Didn't I just answer that question?

Ok, here is another one. Being a developer I like the keyboard over the mouse but when I press the "Enter" key on a mac it seems to want me to rename the icon? That is just not logical. To start Safari I have to use the mouse and double click it.

Yes, yes, you are going to hear some winy old Windows guy complaining about having to do things a different way for a little while.

Here is another example. Safari opens and I am blasted by more ads (The PC Mac adverts are obviously propaganda). I am sucked in and click on a link to a new Alecia Keys song. I now have to setup iTunes which seems reasonable. One of the dialogs explains that "iTunes can download album art", which sounds nice but I read on, to do so I need "to create an account on iTunes", "Just go to iTunes and click on 'Get Album Artwork'." Does it sound odd to you that a dialog is explaining to me that I need to go to a web page and which link to press without including a hyperlink to the place? I have no idea where iTunes is or where this link is. This is just bad UI.

So quite apart from the fact that the marketing people have worked out a way to get me to create an iTunes account for something that is freely available on the net, I am blown away by the horrendous user interface again.


Ok, I am a dummy. While user interfaces should be built for people like me I now feel stupid. The dialog explaining all this stuff that I need to do isn't actually expecting me to do it. I give up my search and press the Next button and guess what the options are? "Yes - take me to the iTunes store" or "No - don't". I think I should have known that these options were going to be available while I was studying the previous dialog. My bad.

Alecia Keys is still not playing but I have the iTunes store in front of me. If I remember the instructions from that dialog then I am supposed to select "Advanced" and "Get Album Art". Lucky I used a pencil and paper to note that down. Perhaps that should be Mac new ad.

PC - Hi Mac.
Mac - Hi PC.
PC - I hear that I need to use pencil and paper to use your crappy interface.
Mac - Wait, just press the Next button and everything will be explained.

but this little saga doesn't end here. You should see this, it is really funny.

So I press "Advanced" and select "Get Album Art" as instructed. Guess where it takes me? Yes, that's it, the iTunes store that I am already looking at. Wow, this stuff is crappy. It turns out that that dialog was completely unnecessary, all I needed was a button titled "Create iTunes Store account so that you get Album Art" and I would have been happy.

You will laugh at this. Turns out I already had an iTunes account. Go figure.

So finally I got to listen to Alicia Keys. The song sucked.

New Machine - Arrived CINCINNATI, OH

While munching on Yogurt and a nice bowl of raisin bran, the nice FedEx man arrives and can you believe what he is carrying? Yes, a little brown box with a smaller white box in side.


New Machine, Now in MEMPHIS, TN

At 4:27pm on November 25th a short flight to Memphis puts it 2 states away.

New Machine, Now in ANCHORAGE, AK

At 1:36pm on November 24th the MacBookPro has arrived in the US. They are so kind to be traveling on a Thanksgiving weekend, if only they would go a little faster :-)

New Machine, From SHANGHAI, CN

What do 2.6, 4, 200, 7200, 17 and glossy have in common? They are all stored safely in a little, flat, white box with an ON button.

If you haven't guessed yet, it's my new MacBook Pro. After a lifetime of Unix and Windows it's time to start on another adventure.

I have to admit that it feels a little like I am just switching monopolies. While the Apple is not as large it seems just as controlling. Based on the delayed Java releases on OS X and the no Java on the iPhone this is not going to be all roses.

However, my reasoning stands. I basically have three reasons to change.

  1. My Windows XP environment on my trusty Sony Vaio is old and in need of an upgrade.

  2. The hardware compatibility issues with Windows continue with regular blue screens especially with graphic intensive applications.

  3. The upgrade path for Windows seems fraught with problems. Vista's security issues persist with most continuing to run the 32 bit on 64 bit hardware.

I can't say that the migration to a Mac will be ideal. I know they have hardware issues and as they become more popular they will inevitably encounter more security issues.

The tipping point is for me came when I realized that moving to OS X doesn't preclude me from running Windows in a VM. I watch a buddy of mine use Parallels run Vista on OS X and everything just works.


Complexity, a perspective

Complexity, ranked high due to ignorance, is not complexity, but ignorance.


JRuby Rails Project Day One, Lessons Learned

I blogged a while ago that Ruby was the way to go for the best language experience for the future. To that end I am starting to build a new site using Ruby on Rails and focusing on JRuby so that I can deploy it to my existing Tomcat hosting service.

The site is going to present a new company Sewing Seeds of Literacy which is a venture my wife is embarking on to help supply books to under privileged children. I was hired as the technical help.

Background over.

I started by using the NetBeans V6 IDE and its Ruby Rails integration. This is a major step forward in IDE Ruby support and integrates with JRuby easily.

So, right click, New Project, Ruby Rails Application, and you have your first Rails runtime on top of JRuby. This is really nice.

Initial setup over.

The first problem is the database access. The JRuby environment requires JDBC access. The database.yml setup is the same but there is an ActiveRecordJDBC gem that needs to be installed to manage the connection from ActiveRecord ORM library to the JDBC drivers.

This is all detailed on the Headius site.

Then these JDBC drivers need to be available on the classpath. I am going in with MySQL so I needed to add the mysql-connector-java-5.0.4-bin.jar to the classpath.

Unfortunately there are some competing configuration issues going on here.

1) I had downloaded and installed my own JRuby environment and NetBeans comes with its own. This causes problems because each environment installs its own gems. You can set the environment that NetBeans will use in


2) I had my own c-ruby environment and my path specified jruby/bin before ruby/bin but the JRuby "rake" command is unix only so I was inadvertently running the c-ruby rake command expecting it to manage my migration properly but it couldn't find the JDBC gem.

Anyway, after much googling, Foo had the answer. You need to create a "jrake.bat" in your JRuby bin directory that looks like this:
@echo off
jruby -S rake %*

Now you can jrake in your jruby environment and rake in your c-ruby environment. There are references to "jake" here and there but nothing concrete.

3) Now that we are running the right commands we need to add the appropriate jar. There are a couple of ways to do this

o Create the CLASSPATH environment variable and point it to your jar.
o Copy your jar into the JRUBY_HOME/lib dir.

One thing that does NOT appear to work is adding the jar to the Netbeans project classpath.

I chose to copy to JRUBY_HOME/lib for the time being but I don't like this as a long term solution since it means each environment I deploy to needs some extra installation work. Ideally, the jars would be deployed with my war file so they are made available to the containers classpath automatically.

JDBC Jar configuration over.

Right click, generate, controller, simple. Right click, generate, model, no sweat. Right click, generate, migration, done.

These are basic Rails concepts that work just as well in a JRuby environment. They make application development very easy.

mysqladmin create MYDB_development
jrake db:migrate

Database creation over.

Now I have a model and a model test but I can't run them because there is no database. Yes, we just finished using our cool new migrations to create a database but that was the development database which is the default RAILS_ENV. We need the test database created from the same migrations. This is not so easy. In fact it is really hard. None of the books talk about it, all the migrations help pages just talk about the default development case. We are going to have to run our migration in test regularly and eventually in production as well so there has to be a solution.

Along comes a new plugin called Migrate Test DB Rake Plugin . This is a rails plugin that performs a database schema create on the test database before rails tests are run. This means that when you execute "jrake test" it will create the schema first. This is not effective when running Test::Unit in NetBeans.

So, I don't see that this is a good solution. As a side effect of testing I am able to create a test database schema. Still doesn't solve the production database situation but that is a little way off.

Model create over.

Oh, now I find the best documentation, on the JRuby Wiki. This entry talks about the "goldspike" plugin which adds lots of java'esk features to rake like creating a war and how to declare the mysql jar as a dependency.


Maven: Why does it have to be so hard?

Every project I start I try to use Maven. It seems like the right choice but I consistently fail. Every step is hard. It's not just that there are infrastructure hurdles, but the commands are hard, the POM is complex and nothing is easy.

This J bites.

Ok, enough whining. Maven is the right way to manage your build environment simply because it is the only tool that manages your dependencies. This is a simple concept.

We can argue that ant has sufficed for a long time and that is true. So, we can argue that the dependency complexities that we face are actually not that hard since we appear to be able to work it out without another tool, but wouldn't it be great if we could leverage the learning that others have already put into setting up the correct dependencies?

Well I am installing grails, an ant solution, and integrating CXF and Mule. I am facing continuous versioning problems with all the xml/soap/ws etc jars. I am sure that when I have solved this problem, I will promptly forget it and have to solve it all over again for the next project.

I would like to be able to capture the solution in a POM so that I could reuse it even if no one else does.

So, what is step one. Create a maven project. This is so hard. I can't believe they make us do this. No wonder this tool is taking so long to gain acceptance.

mvn archetype:create -DgroupId=com.company.project-DartifactId=project-name-DarchetypeArtifactId=maven-archetype-webapp

Yes, that is the command to create a project, and I didn't even specify all the other version options that they mention. All it does is create this:


It doesn't do much but it does allow us to enforce standards and, when we develope our own archetypes will improve project structure consistency accross the board. This is all good but why do I need to pass in system properties? Who ever heard of a command line interface that makes you declare system properties.

Perhaps it could prompt for the required fields like "grails create-app". Perhaps there should be a web page on the maven site that will help. I had to go through google to find it. Their quick start doesn't even talk about it.

I know, I know, I am whining. I could probably contribute to the project myself, it's open source and all that.

There is an Eclipse and NetBeans plugin that makes life a little easier.

There comees a point when we learn to love the new tool. I just pasted a glob of xml into my POM file because some CXF/Maven web page told me to, saved it, and the maven eclipse plugin promptly downloaded all the jars required to bring a CXF web service up and running. This took me an hour or so the first time. Maven just made my life easier.


And again I am dashed to the jagged rocks of the learning curve. It appears maven doesn't use the JAVA_HOME environment variable to determine the JDK version to use and it is defaulting to JDK 1.3 which is not even installed on my machine. I have annotations so it will not work anyway.

I suppose it makes sense because it is requiring explicit version declarations for all other jars so why not the rt.jar but it is not telling me how to specify it.

This brings up the odd balance in our lives of detail vs default. If I require everything specified I know my build will always be correct. If I allow default selections using JAVA_HOME for example, it may fail but will usually work.

This is why maven is so hard to deal with. Nothing is easy. Specify or die a bloody death and don't expect to block the gushin wound with documentation because even google is lost.


Ok, I found it, System Dependencies

Oh wait, that is wrong, doesn't work and I don't know what it does though it sounded so close. Infact, we want this Compiling-J2SE-5

Man that took another 30 minutes, I almost gave up on Maven again.

I might be back to loving maven again. Once you have run your "mvn package" to create your war file you can run "mvn tomcat:run" which will run tomcat in place from your generated war file. Now that is cool.

Well, while I can't expect maven to solve all my problems, since it's intent is to solve dependency problems I did have that expectation. Silly me.

The CXF xml glob that I pasted to get all the CXF jars and dependencies downloaded apparently missed the SAAJ jars. I expect I will have to find and add these to my project file manually.

I am starting to feel as though I might be starting to understand Maven, even if it isn't doing what I want.



Stop doting your eye's and just capitalize.


Waterfall Symptoms

As I stand in a sit down status meeting to listen to another hour long discussion I ponder what is going on to see if I can offer some help. The obvious suggestions have already been ignored: stand up during the meetings; stop designing the system in meetings; stop with all the detail please, just a summary is all I need.

This meeting is a little special though. We have a list of components to be completed before we go live and another list of the outstanding bugs. 20 of one component and 197 of the other. We go live in 6 weeks.

An analyst, that doubles as QA tester, spent their weekend testing but entered bugs like "couldn't test" because of environment problems. The release process is still pretty new and untested.

Our leader asks for QA of a new module and the same dedicated analyst asks for help. There is none, of coarse, just a few extra of their hours in their day. They were allocated to their kids, but they are dedicated folk. Dedicated to their work I mean, can't be dedicated to work and kids on a waterfall project. Laughable.

They mention code freeze, except for bugs of coarse; you understand, can't code freeze code that doesn't work. Laughable.

6 weeks left and now we start raining in scope. Oh wonderful, just in time. Laughable.

QA has no automation so there will be no regression, just wild retesting. They do a great job, work really hard and find lots of bugs. I just wonder how many are missed for the next go around.

The project plan is stored in MS Access, a horrible solution, that few people use. We just code anyway, why should we know what the plan is, we weren't part of its creation, or its revisions. It was presented to us once, I asked some questions about it which had the usual optimistic answers.

Question: "There isn't enough time to complete coding and QA testing before the release date"

Optimism: "Oh, that's ok, they will run in parallel. Each component we finish will go into QA test."

It all sounds so logical. Of coarse, I am an Agile developer, parallel coding and testing are the norm but my Agile projects are setup to support that feat. Waterfall projects aren't, well this project isn't anyway, seems a shame to speak for all falling water.

Of coarse the reality has proved itself over the optimistic plan. It has a way of doing that. The QA regression testing is required and is being attempted. Best of luck to them. They work so hard. They deserve success.

I try to get the ant scripts to release to production. Not to big a job, shame I couldn't get them to work on it 6 months ago. Anyway, I am talking to the tech lead and we have to have this finished by tomorrow. There is a problem with my ant properties so he exclaims that he will manually complete the production deployment so we don't need ant.

"We don't release to production often anyway, so it doesn't matter"

I suggest that the less you deploy the more important the scripts, after all we got dev deployments reliable months ago, and we really want production deployments to work first time every time right?

"Yes, that's right, but we need it by tomorrow. We can try again in two weeks."

He really does have the best intentions. He has been put in a predicament. No production release practice for 10 months, now we have about a week to get it right.

Why does our industry do this to itself? They can't predict where the next problem will be before it arrives. Experience? No, they have lots. Understanding? No they are smart people. They have always done it this way. This is how software projects always work. This is just the life of a software developer. It is all we can expect. Why change.

If it weren't for change,
I couldn't tell that I am standing still.
If it weren't for standing still,
I couldn't tell that the world around me was leaving me behind.

I see what I see with clarity,
I understand what I understand with certainty,
With this clarity of certainty,
I stand and watch and re-affirm my motionless state.

If I stand on the certainty,
That my knowledge is true,
Then my only conclusion must be,
That all that I see is foolish change.

The gulf between knowledge and change, stands in a persons need,
A persons need depends on their situations urgency,
A situations urgency is created by those who don't change,
so the lack of change is our choice, because that has always been our situation.

New Knowledge vs Productivity

Update: 08/22/2007: add references to J curve

I can get task X done using knowledge I already have. I would take longer if I used a technique that I don't currently know.

However, if I learned a new technique I might complete task Y so fast that the slowdown on task X is insignificant.

This is the balance of the J curve. The J idea proposes that your productivity remains flat until you learn something new. At the beginning of your learning your productivity decreases until your skills are sufficient to surpass your original productivity.

The amount we produce is related to our current position on the J's learning curve and the number of J's in our past.

So, worst case, you could imagine living on the downward slant of the J forever. There is always something new to learn after all, why produce when you can learn. I guess pure research organizations work like this.

The other worst case, is never entering the J. Living your life with a static set of knowledge.

OK, so how often should we dive into the J?

Life needs to exist,
In a rising J,
With every day,
Finding another rise.

If the bad poetry doesn't make sense then consider learning 5 things at once and every day push one of your tracks past the base of the curve.

Growth ends with the belief that you will be less productive by learning.

Do something new today, even if it hurts. Oh, and it will hurt.


Meilir Page-Jones: The Productivity Curve

Gerry Weinberg: quoted as part of his pinball analog

Amazing Image Integration

This movie has been around since May but I just found it and just in
case others havn't seen it, here it is.


The future of connected imagery is here.



Yes, I am now sending tweets. Not sure why but it appears to be addicting.

Twitter is another social network but is far more focused in its goals. It just asks "What are you doing" and with frequent updates you end up with a general idea of what your friends are doing.

Perhaps this is just too much information and no one really cares but I think that is what it is all about. Why does and now much will they be able to pay?

With a simple beginning there are now addons to the twitter service like a search of all the things that people are doing and, my personal favorite mashup, TwitterVision which merges the posts with the geo locations of the poster and swoops you around the world from language to language and irrelevant activity to irrelevant activity.

But don't count this thing out yet. Check out my personal twitter vision. There are many times that we need to keep track of things. Oh, did we think this was limited to people? When are you going to get that new watch that will tweet so you never loose it. Should FedEx make their packages tweet? It's just a 140 character piece of text but twitter vision encodes ":L[position]" into it as a really simple way to track things.

FexEx, of course, built their own package tracking system back in the days when web services were new and SOA was a Canadian SO. If the task was started again today would they have chosen to leverage existing web services.

Each web service we build we examine granularity as an architectural problem. Perhaps the success of twitter indicates we should stop examining and just think smaller.

Who knows perhaps your next watch will make a request for the time somewhere.

Visual Studio 2005 and ReSharper

I have used ReSharper with VS 03 in the past but decided to try the new VS 05 features before installing the new ReSharper version. After fighting with the stupid stupid VS features my course is clear.

ReSharper is to C# what Eclipse is to Java. A rebirth.


Java, C#, Groovy, Ruby, Python

Is the question "which" or "which ones"?

I am a member of a local user group that exclusively pitches Ruby as the savior of all things linguistic. I had made a strategic decision to learn Groovy instead because it integrates better into my primary language, Java.

This has worked pretty well for me up to now with a couple of jobs getting groovyized nicely.

Well, Chris Nelson, mentioned something to me a few user groups ago that just sunk in today. An extension to the logic of why I chose Groovy.

If we assume the future is a combination of the best of today. Perhaps a tenuous bet but I am an optimist. Then we have to assume that a VM is the correct runtime environment for future systems. This knocks out c-Ruby from the running.

If we think that dynamically typed languages win over statically typed languages then we have to choose Python, Ruby or Groovy as the most blogged about at the moment. I am completely sold on dynamic languages and have been for years.

I asked Chris why he choose JRuby/Rails over Groovy/Grails since he is a Java developer from long back (Trails). He answered, "It's a different language".

My first impression was that Ruby was a different language as well so what's your point. Then today, while reading Charles Nutter's response to Ola's IronRuby post it occurred to me that the language Ruby is key for the simple reason that it is likely to be the first multi-vm language and already represents the best of what a dynamic language can offer.

Based on this there is one choice, quit groovy, learn Ruby in what ever form and the runtime environment will follow.

Did anyone notice how I dropped python so fast? Dynamically typed and runs on JVM (Jython) and CLR (IronPython) today but I hate tabs :-)

Unfortunately, the question is "which ones". Things move to fast to play just one pipe.


Standup Meetings, for Accountability not Communication

We Agile folks like out stand-up meetings but when asked why we do it we usually start talking about communication being a core principle.

A recent project involved a customer that was tentatively interested in Agile so started doing stand-ups. When it came to a month or so before my departure I stopped leading to help encourage the team to take ownership of the new processes that they had been learning.

The first thing that went was the stand-up meetings and the result of this lead me to the decision that we don't stand-up for communication. The best reason for stand-up meetings is to force every programmer to prove that they are working to the plan instead of just working.

This forces plan driven work which is prioritized and focused. My customer quickly descended back into panic driven work with programmers being approached by QA reps telling them of the latest problem and urging them into action. The plan was forgotten.

The chatter and sharing is nice and there are certainly other benefits to stand-ups but from a management perspective we do this to ensure that we are driving accountability for everything that we do each day.

The shorter iterations of Agile drive accountability to the customer. The daily discussion on what we are focusing on drives programmers accountability to themselves and their team.


Star Wars ! What really happened after the Deathstar blew up

This is really funny.

[snipped old dead version]

The moral of this story that before long everything will be a copy. Thanks for the comment Mr Anonymous.

The yahoo version is still active.


TIP: Dos Sleep

I needed a batch file to sleep between starting up a couple of processes but dos doesn't support sleep. Google found me this result which gave me the idea but their solution is wrong.

The actual answer is this:

ping -n 1 -w 10000 > nul
In this case we are pinging a non-existent IP address, once, and timing out in 10000 milliseconds.

Of coarse you could pop this into a sleep.bat to centralize it
cd c:\windows\system32
copy con sleep.bat
@echo off
ping -n 1 -w %1% > nul
Now you can just type "sleep 5000" to sleep for 5 seconds.

The actual resolution of this timer is one second or more. Any number less than one second is going to end up with a 1 second'ish delay.

The cost of this is one network ping with a standard 32 byte payload. The total message is 74 bytes on a Windows XP machine. This is low cost for a couple of sleeps in your program. If you want to do this all the time then you may want a less hackey solution.

The better solution might be to use the Windows Resource Kit which includes a sleep.exe command.


Speed of Time

If you could set the speed of time,
how long would it take you to change it.


MonoRails - .Net is cool after all

After two days of fighting with msbuild I thought that I was going to loose hope but along comes MonoRails. We all know that Rails rocks, we have loved tinkering with Grails and now we find that wherever we go someone is building another version of this idea.

For the uninitiated, go and learn Rails first, it's the granddaddy of them all. These are new ways to build web applications, they obey the idea that conventions can be more productive and just as flexible as configuration files so you type in the name of something and it magically gets extra powers just because you spelled it correctly. Don't be afraid of the magic, it is your friend.

So, MonoRails is more of the same but here are a couple of differences that I noticed on my first night at playing with it:

  1. It is normal statically typed C#. All these frameworks use dynamically typed languages to achieve much of the magic. Injecting methods, imbuing properties, you name it they do it. The static language approach is certainly going to offer some additional challenges and, some might say, reduce the benefit of this implementation of the new approach.
  2. Parameters posted from a form are dynamically mapped to a controller method and passed in as parameters. Perhaps not ideal for large forms but certainly the simpler ones can use this instead of having to deal with a property hash. They can also mangle the form names into an object like good old structs forms.
Ends up at the same place. After a couple of hours going through tutorials I have another tabled scaffolded.


Tripping in .Net

It has been a few years now but I have another opportunity to play on a .Net project. Being so used to the Java way this is going to take a little getting used to. My colleges keep snickering at me. It has something to do with the audible sound I make when frustration sets in. "Oh but this is so easy with ant, what evil is this msbuild trying to foist on us", "This would be so much easier in Eclipse".

It's the little things. I want to copy a file and replace a string within it. A simple template replacement process or in java terms, ant copy filter. NAnt doesn't support it either so I feel the need to learn msbuild.

So I have a fred.msbuild file but you open it in VS and it gives you schema errors on all the property tags because msbuild uses the tag name as the property name. So where is the MSBuild editor? MS makes everything a dialog and thats too hard for build scripts. I just need an editor.

The script can now "Copy" a template file, then "FileUpdate" is to do string replaces in it. Oh I have a lot to learn.

I fully expect to be assimilated in another few weeks and will start extolling the beauty of this new world. Until then, it is painful while the new gadgets are being surgically implanted into my brain.

I am looking forward to the new C# language features.


Sieve of Eratosthenes - After thoughts

The most interesting part of this exercise was that each attempt performed better and better until I the DSL version. Even the objectisizing and then groovyizing resulted in better response times. Now perhaps I doing something silly in the DSL version because the extra method dispatch for the DSL keywords shouldn't slow it down 5 times.

It is clear that the need to use a DSL for this problem is irrational.

Here are the tests for the Sieve of Eratosthenes problems and the results

.Time: 488.8ms: Algorithm: Sieve1 Primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
.Time: 248.4ms: Algorithm: Sieve2 Primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
.Time: 270.4ms: Algorithm: Sieve3 Primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
.Time: 1145.6ms: Algorithm: Sieve5 Primes: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

Sieve of Eratosthenes - Try 4 - DSL

Now to re-describe the basic parts of the algorithm into domain terms. Not saying its better just cooler.

Sieve of Eratosthenes - Try 3 - Groovyize

How about those groovy categories, the really allow you to put the code in the place you want it. Note I didn't say the right place?

Sieve of Eratosthenes - Try 2 - Objectize

Add in some OO, not much, just a sprinkling.

Sieve of Eratosthenes - Try 1

The groovy quiz this week was a prime number problem and I evolved through 4 different solutions.

The first was the basic script style approach, the second used OO, the third was groovyized with categories and the last converts the whole thing into a DSL. DSLs are cool right?

I am going to let each unfold in different posts so that you can compare and contrast if you are interested.

Here is the first, the basic "Sieve of Eratosthenes"


A groovy finite state machine

Well this is my first DSL. The people on the groovy users list are talking about trying to model something like this from the ruby example posted.

Sing: "Anything they can do, we can do better, or at least as well."


"Language Meshing" - April 10, 2007

I have created a new term, "Language Meshing" that refers to the ability to mix difference languages within the same source file.

Not a new concept I know, but I like the term so am blogging it now. Yes I might have created something completely new and completely useless.

I was review what Charles Nutter was posting about for JRuby and found their use of the Java 6 scripting extensions.


I now dub it "Language Meshing". It might catch on.



Originally uploaded by esumerfd.


Leadership, the conflict

I thought I would comment on the problem of leadership because there are so many opinions and so many books, why not another little blog entry in the world of words.

Always gentle
Always decisive
Always open

I came up with these tenants, intentionally conflicting, to convey the personality profile of a leader. No leader can always be one or the other, the best leaders know when to switch and how to blend these ideas.

A team member presents an idea. The leader shows openness to listen and understand, then they have to switch, do they go to decisive to accept the idea and drive an action into the plan or to gently to discuss the idea until the team member sees its flaws.

It's never that simple though, a situation that distracts the team from a goal may require closed, firm, decisiveness. A good leader can be resolute and confident as opposed to closed and gentle.

Word games, yes, but these are the gray areas of human emotion, none of them absolutes, so a leader has to monitor guidelines and feel their way towards goals.

Your leadership goals might include, "be respected", "be approachable" or "I will always listen". Does this sound like a love fest? It's not a leaders goal to be liked but it helps. Leaders drive to a goal, the doors they break on the way are the tinder of their fire. This can conflict with being liked.

Your leadership goals might include more practical concepts like "will achieve goal within time line" or "maintain high customer rating". There is a cold, unemotional side to leadership that can help drive success but can loose some of the moral boundaries that we live by. Who should you fire when the budget is tight? When do you give up on the unteachable underachiever?

These are the sides of this game that I have the most difficulty with. I have always loved the teaching, mentoring and guiding parts of this job. I don't mind playing the motivational games to get more investment from a team. I do have a really hard time with knowing the right time and technique to cut.

I have a lot to learn about being a leader.


Two New Coding Mantras

What we tell ourselves drives what we are. A simple psychobabble statement. To a developer this drives what we produce.

Are you won't to say "that is good enough" or "sure that will work".

Or are you more likely to ask yourself "is this the best approach?" or "what would happen if we tried this alternative?".

Certainly, time and pressures push us back and forth between these attitudes so this isn't driven by personality alone but also represents an assessment of your personal priorities.

While reviewing code today I noticed two symptoms that represents trends of focus that the developer needed to address.

The first was the attention attributed to which class file they were typed their code in. Every word we type has a domain relevance that should force us to consider its appropriateness in the class we are editing.

The second is the tendency to think in instances instead of across time. The code I write today works today but will it work tomorrow or in another situation or environment. This actually occurred in a test for proving a date manipulation method worked and the test only worked yesterday.

So, from these two observations I decided I needed to more mantras to add to my preaching.

Every word in the correct class.

All tests work always.

They could probably be made a little more succinct and perhaps the second shouldn't be test specific but "that is good enough".


Firefox and Skype Integration

I recently got back into using Skype to chat with my family in the UK and with the upgrade I was asked to install a new Firefox extension. This extension scans all the pages that you browse looking for phone numbers. When it finds them it converts them into Skype protocol call links.

Combine this with the new Skype free calls anywhere within the US and you get the easiest way to integrate voice into the web.