On walkabout in life and technology

Old Farts Know How to Code

Nick Bradbury nails it in Old Farts Know How to Code:

"Old farts" are often excluded from that (Ed: startup) culture, not because we're lousy coders but because we won't put up with that shit. We have lives, we have families, we have other things that are important to us. We're not about to sleep at our desks and trade watching our kids grow up for the promise of striking it rich. Especially when the people who really strike it rich aren't the ones writing code.

I guess at 44, I’m treated as an “old fart” programmer now too. But he’s right, I am in my professional prime, I write better code now than I ever did, I know what works and what doesn’t, and still manage to have a life, family and friends.

Please Learn to Write

Michael Lopp, writing in Rands in Repose, counterpoints the current meme of “Learning to Code” in Please Learn to Write, great article. Love how he compares writing to programming:

Writing appears more forgiving because there is no compiler or interpreter catching your its/it’s issues or reminding you of the rules regarding that or which. Here’s the rub: there is a compiler and it’s fucking brutal. It’s your readers. Your readers are far more critical than the Python interpreter. Not only do they care about syntax, but they also want to learn something, and, perhaps, be entertained while all this learning is going down. Success means they keep coming back - failure is a lonely silence. Python is looking pretty sweet now, right?

Stylizing My Services Agreement

I believe that everything that a person or company delivers to another should reflect their image, style, nature, professionalism and character. Which is why the look of the Noverse Professional Services Agreement drove me mad.

Don’t get me wrong. My attorney and his team are absolutely brilliant. The contract content is the best, it’s well written, well balanced, contains all the right terms and conditions for both sides, and my clients are all very happy to sign it as is. Between the content of the agreement and the great advice, the legal side of my business is well taken care of.

It’s just, well, the document looks boring, the same as every other contract I ever did see. It does not reflect the image of me or my company like all my other deliverables do. It’s a product of lawyers doing what they are good at, writing great contracts. They don’t use paragraph styles, they do use the default font from MS Word, the indentation is erratic, the numbering scheme varies (I guess they copy and paste terms from other agreements), spacing is off and, well, the document is not very appealing to read. Yet it’s a very good contract.

So, I reformatted it. Kept the same content, of course, just applied my company’s standardized set of font and paragraph styles to the text, replaced the manual numbering scheme with an auto- generated one and got rid of all the underlines and shading. It’s the same document, but it now looks like a Noverse document, it looks like my contract, reflecting my attention to detail and style. And it stands out from all other contracts because of it.

And yes, I checked, unless you are filing a document with certain courts, there is no requirement to use bad fonts or skip using paragraph styles.

Consider, next time you send an email or a document, once the valuable content has been finalized, does the item reflect well upon you? Are you proud of both the content and the style? Would someone else who sees it be pleased to look at it and encouraged to consume the content?

You make your business cards look good, you should do the same for all other deliverables, even contracts.

Distributed Note Taking

I have switched over to and finally locked in on a new distributed note taking process, using Elements on the iPad, Dropbox synching, TextExpander file naming and nvAlt on the Mac. Here’s how I got to this point, and how it works.

Going electronic, the old way

Since I switched over to the iPad from a paper notepad about two years ago, I used Penultimate and a stylus to scribble notes. I thought this would be a great process. I can scribble quite quickly, I can draw pictures (I have a visual mind) and I can save the PDF’s of these notes and refer back to them. Something like this:

But it was not working for me. The notes are often quite illegible, they are certainly unsearchable, and I had to manually move them over to the Mac. Truly, a better way was needed.

The requirements

Since I am a programmer, I started with requirements. My new note taking workflow needed to have the following characteristics:

  • It must be quick to launch and start taking notes
  • The notes must be searchable
  • The notes must sync seamlessly across all devices, start on one, finish on another
  • I’d love to use markdown
  • It’s got to be simple

Things I do not want in my notes process:

  • Lock into a single product or infrastructure, so Evernote and SimpleNote are out. (Update: with the recent Simperium release, SimpleNote may work for you).
  • Notes be stored in a proprietary format that may not be future-proof.

The setup

So, over the past few months, I have been tuning in and then stabilizing on the following setup.

First, I reconfigured nvAlt to save everything as plain text files using the .markdown extension in a ‘Notational Data’ folder which happens to be in the root of my Dropbox. Result: All notes are automatically synced using Dropbox to all devices. It just works.

I then added to the series of snippets in TextExander to help me name the different kinds of files and notes that I take (see My Blog Writing Workflow). I have TextExpander installed on all devices too, and set to sync via Dropbox as well, so these are also available everywhere.

On the iPad, I have installed both TextExpander Touch and Elements. Elements has been configured to use the same ‘Notational Data’ folder on Dropbox and the same markdown file extension. I also have Byword and iAWriter on the iPad with the same folder settings, but it seems I go to Elements the most often.

The flow

To start a note on the Mac, I switch to nvAlt and type ;notex. TextExpander kicks in and expands it to Notex - | - 2012-05-22, leaving the cursor where the | character is. I generally type in the client name, followed by a hyphen, followed by a subject. For example, a meeting on Kifu, I would start with ;meetx (a meeting note) which expands to Meetingx - | - 2012-05-22 and I change it to Meetingx - Kifu - Board Meeting - 2012-05-22. Press tab, and I can start typing the notes.

To start taking a note on the iPad, I launch Elements, hit the add button which leaves the cursor in the file name field, type in the same shortcut ;notex which gets expanded, update the file name, and tap the body to start typing.

To find a note on the Mac, I switch to nvAlt and just start typing in words. Or I use Spotlight. Both work to quickly help me find notes.

To find a note on the iPad, I launch Elements, swipe down to reveal the search bar and type what I am looking for.

With this flow, and some Dropbox magic, all my notes are available on the iPad in Elements and on the Mac in nvAlt, and any new notes automatically appear automatically on both. My typing speed on the iPad is fast enough to take notes, and since they are just plain old markdown files, I can search and find them anytime.

What do you use for notes?

Zombie Email

So, I decided today to archive my old emails, and that meant connecting to the Google Apps holding pen for my last hedge fund which closed in 2009. This is a zombie email account I have not looked at in more than two years.

There were a lot of emails in it.

None of which I wanted or needed.

Surely by now, everyone knows that the company is gone and the email address is defunct.

I guess not.

They still try.

Emails found include

  • Recruiters I have never met offering me candidates for a closed company
  • Vendors who I have never dealt with emailing me about products for my nonexistent company
  • I seem to have been added to a lot of hedge fund mailing lists, even though I have been out of the game since 2009
  • I still get pricing emails for securities traded by the company, even though the counterparties know fully well we no longer exist
  • Follow-ups from people I have not spoken to since 2009. Don’t you love it when people rely on CRM’s to follow up, just like clockwork, every 6 months, to a zombie address.
  • An email from the office cleaning company offering new services, surely they know we’re no longer there
  • New year’s cards from vendors we no longer do business with, I hope they did not send gift baskets too

Oh well, I’ll check it again when next I renew the domain. In two years. Maybe.

My Own Support Call Line

My ideal vendor support line is a direct number to call the exact person I need to speak to for support. Unfortunately, this is not economic for vendors, especially since I may never call this lucky, and quite bored, person for support.

My second worst vendor support line is the most common, a 1800 number that puts one in the queue, where you wait, listening to a robotic voice tell you how long you still need to wait, like a lump. And when they do pick up, the person on the other end is a professional phone answerer not a tech. So you have to go through the process of first identifying yourself, then identifying the product, then, before you explain the problem, having to go through the script that the professional phone answerer must follow. Is it plugged in? Did you reboot? Did you try this? Did you do that? And when you explain the problem, they create a ticket and let you go, with the issue unresolved. As a professional IT person, the only time I call support is when I have exhausted all possibilities, all of which I have to redo as the dumb and useless script progresses.

My worst support vendor support line is one where they want you to pay first. That is a big fat fuck you to your customers. I have already paid for your software. I have already exhausted all channels to get the problem fixed. I am calling as a last resort. And now I must pay before you’ll even talk to me. Way to hate your customers.

And don’t get me started on robo-routers, those that ask you to talk to them. I speak Australian and none of them understand a word I say. I’d probably get better responses in Swahili.

The middle ground, a support line for professionals, would be the best economic solution for both customer and vendor. Give the professionals a different number, use caller ID or a quick identification to qualify those who do call, and send the rest back to the current lines. Professional customers take less support call time because they have already tried everything before calling support, and can usually explain the problem much more clearly. So fewer support resources are needed on the vendor side and the professional customer is happier because they don’t need to queue or dance to the script.

But how to identify these professional customers? Turns out my bank, HSBC, has done this and it works brilliantly. Long term and higher value customers at HSBC get the premier tag, which gives them a special support number and access to an account manager. When I call my bank, I get a person who is ready to deal and knows me. I can get right to the issue and the person on the other end knows what to do and is authorized to get it done.

Lets see how this could work at other companies. HP sells servers to the public and to corporates with IT staffs. The corporate with IT staff should get its own number because professional techs can talk to professional techs, and let the general public who have no idea how to use servers call the regular number. Apple and Microsoft could give registered developers who have been developing for the platform a longer time access to a number to call where they can talk to other developers in support. AT&T and Verizon can give customers who purchase and manage swathes of company phones access to a number where there is no wait to get an issue resolved. Cable companies can use the occupation field in their customer databases to identify technically savvy customers and let them get through directly to network techs. Nikon and Canon can have special numbers for pro-photographers. I could go on.

I think that companies can and should identify their professional customers, and give them access to better support lines without the script. It builds better customer loyalty and makes both parties happier.

Then add me to these programs.

Apple Cinema HD Display Circa 2003

That’s right kids, I am still using the old 23" Apple Cinema HD Display I purchased in 2003, 9 years ago, before Apple went all aluminium.

I use an ADB to DVI adapter to connect it to the Mac Pro. I love its matte screen, 1080p support and the fact that I have to prop it up using old Final Cut manuals. It still works great, though.

Automatically Managed Files

I’m moving back to the desktop for a while to do some iOS programming. Many of the files on my laptop are auto-managing, so as I am moving the process, I thought I’d share how they are automatically managed using Hazel from NoodleSoft.

Hazel is a background process that monitors folders and executes automated actions on matched files. Once a rule is created in Hazel, I can forget about what I have to do and Hazel takes care of things for me.

The first rule is simple, clean desktop. I drop all my temporary files and stuff on the desktop while I am working, then either file it later, delete it or more often than not, forget about it. Before this rule, my desktop was always a complete mess. My “Clean Desktop” macro monitors the desktop folder, and if I have not touched a file in 1 hour, it moves that file off the desktop into a working folder. Which means I always have a clean desktop.

But that does mean I have a messy Working folder. So I have Hazel monitor that as well. The first rule colors all files that are more than a day old in gray so at a glance I can see the old files.

The second rule clears the gray color if I do access the file.

And the third rule deletes any files I leave in working (which is most of them) after a while.

Another use I have for Hazel is to archive my old nvAlt documents. In order for this to work, I had to install openmeta to enable tagging and enable super-secret openmeta mode in Hazel

defaults write com.noodlesoft.Hazel OMToolPath /usr/local/bin/openmeta

Now, when I tag an article in nvAlt as archive, Hazel moves it to an archive folder and clears it out of nvAlt.

The other folder I leave in a mess is handled by default by Hazel. All trashed files that are there for more than a week are deleted. I apply the same rule to the downloads folder. I also use the App Sweep feature whereby when I delete an application, Hazel looks for and deletes all the matching hidden files as well, such as preferences and local data, keeping my system much cleaner.

But the real reason I love Hazel is the next thing I am doing with it, using an Actions folder to have Hazel do all my filing for me. I am at the point where I am switching to a more paperless workflow so I download bank statements and other bills and I’d like them to be renamed and filed for me. This is what Hazel excels at and I’ll write about it once I get it fully working.

US Aircraft Embarkation Etiquette Failures

I just returned from a European vacation which involved flying in several aircraft from a wide variety of airports. Over the past few years, I have flown throughout the USA on local carriers and there are many things about the local embarcation experience that leaves a lot to be desired. Here are some of my annoyances, with proposed solutions as usual.

Recent Travels and Tech

My wife and I have been on vacation the past two weeks, the real vacation kind where you go to exotic places and are too busy seeing, trying, doing, eating and drinking things to keep up with email, tweets and blogging. We travelled to three European destinations with four iPhones, two iPads, a MacBook Pro and two plug adapter sets. Here’s how they performed.

The MacBook Pro

I brought the laptop along “just in case” I needed to jump in and fix any software issues while away. It was a stupid decision as I only turned it on once to backup my camera SD card (I have an iPad camera connection kit that could do it, but left that at home). The laptop was a bulky, heavy item that had to be removed and replaced at each border post and was never needed.

Had I needed to fix a server, my iPad has Panic’s Prompt installed. If any code needed work, Textastic can handle simple bug fixes.

Laptop: Not coming next time (unless I get an Air)


Both of us used our iPads about twice a day to check email, catch up on the news and twitter. WiFi was available everywhere we stayed, so connectivity was not an issue. A lot of the time, we used our iPads to research where to go or eat during breakfast, and then we would drop them in the hotel safe and head out. We did not carry them with us. And we most certainly did not use them to take photographs!

iPads: Perfect for downtime email, news and research.


We each carried our newest AT&T iPhones as we travelled, as well as an unlocked old iPhone 3 each. I had synced the old iPhones with our address books before we left, so that we could install a SIM anywhere and still have access to our contacts, emails and calendars.

For the AT&T iPhones, we both turned off data roaming before we left to ensure we don’t get nailed with the blitheringly insane data roaming charges (US$20/MB, i.e. a single 2.5MB iPhone 4S photo would cost US$50 to email via cellular data). We did use them to receive and make the odd call and of course, maintain text contact.

Finding a cheap SIM for the old iPhones was easy everywhere in Europe. One deal I particularly liked was a Europe-wide unlimited data-only SIM plan that would enable us to use cellular data without a phone number (and Skype for free). What we found was that most of our friends had spare prepaid SIMs that they use for when their families come to visit, and we borrowed these instead.

But the biggest use of our iPhones was for photography. I carry my trusty Nikon D80 with its lovely 18-200mm VR lens everywhere when I travel. I use a Nikon Hand Strap with it, so it is literally handy. But there are times and places where bringing out the big gun was not necessary, and the iPhones came out. We would then Facebook a photo of our current statuses directly from the iPhone via local free WiFi, which meant our poor suffering friends could follow our adventures in semi-real time.

Oh, and the low light performance of the 4S seems better than the D80.

iPhones: Will carry both again, good to have the usual US phone number for work, with the benefit of local data on the other one.

Travel Adapters

All these gadgets require juice, especially the iPhones after a hard day’s vacationing. We took only one adapter set, but needed a second to keep the tech juiced.

Adapters: 1 per traveller, for each country visited.


The final element in our tech package on this journey was Facebook. We used it to share some of our adventures photographically. I think maybe this is what Facebook really excels at, allowing us to share our journey with friends and family, and for them to join in on the journey. A friend of mine is in Japan right now and is sharing pictures of the lovely inn they are staying at, and I am looking forward to his next post. From both the traveller’s side and the friend’s side, this workd great.

Facebook: Share the journey, and travel along.

Well, we’re back now, processing the photos in Aperture, updating all computers and installing Creative Cloud, ready to go back to work.