The Dish and My Non-Love of Ads

So Andrew Sullivan of The Dish is taking his blog independent, and using a no-ad pay model. This has been getting a lot of buzz on the internet.

After taking a look at his existing blog and finding it interesting, I paid my $19.99 for a year. Hopefully I’ll enjoy the blog!

Why did I take this rather impulsive leap and support a blog I haven’t ever really read?
Simple – I hate the ad model. Repeat after me “If you don’t pay for it, you’re not the customer, you are the product.”

I’m putting my money where my mouth is by supporting blogs like this, iTunes, Netflix etc.
(This is also why Hulu can go pound sand – I’ll only watch ads in TV shows – especially ones I pay for – only if there is no alternative. Long live Netflix & iTunes!)

Once you start to get your entertainment without ads, it’s hard to go back.

It really bugs me that even though the New York Times has a pay model, you still get ads on the web. Why not have an option to eliminate them for a higher cost? I don’t get it. I understand that printing and selectively delivering two versions of a printed newspaper isn’t practical. But online? It’s a Simple Matter of Software. Could be done easily.

My time has value. I’ll gladly pay what something is worth to watch, listen, or read it.

Apple TV, iTunes, Netflix and the end of DVDs

Our Apple TV gets a huge amount of use for both content-purchased-from-iTunes as well as Netflix.

We still buy DVDs, but less and less. The iTunes stuff is so much easier – no loading the disc, sitting through the FBI warning (or, in the worst case, needing to skip trailers for other shows). And then navigating the sometimes annoying menu structure while the theme sing plays in an endless loop.
And did I mention the occasionally spoiler-ish nature of some of the images they use in menus and such?

Just navigate to the show on iTunes and hit play. Ahhhh.

I have zero interest in anything that involves commercials at this point, so Hulu is right out. (Once you get used to a zero-commercial life, it’s jarring to go back!)

From iTunes, most stuff is $1.99 for SD and $2.99 for HD. If you buy season passes, this can be reduced a little, or for some shows in some cases by quite a bit.

I’ll admit I tend to trade off the concerns of DRM for the utter convenience of digital media. No swapping discs in the DVD player, no waiting through the FBI warnings etc.
If the price is even close I’ll go with iTunes over DVDs.

One other advantage of the digital versions is that I’m ready to go should I want to watch shows on an iPad while traveling.

The ability to lend DVDs was a big issue for me for a while, but I find that I lend them out less and less, so it’s become a smaller factor. And after moving to an apartment, having less physical stuff is attractive as well. Unbelievable how many boxes of DVDs we moved! And are having to find room for.

Roadster Mods

I will say this about the handsfree phone – MINI did an amazing job with the noise canceling. My wife was on the highway, top down, windows up, windscreen in place, and I could hear her just fine. Sounded like a little running water in the background, but that was it. Super impressed by that capability.

Here’s my list of mods for the new Roadster, in general priority order:

  • Invisishield on the nose (done)
  • MINI license plate frames (done)
  • CravenSpeed Platypus front plate mount (done)
  • Short antenna (done) (MINI version but might have done CravenSpeed if I’d though about it more)
  • ScanGuage (done)
  • CravenSpeed mounts for GPS and ScanGuage (enroute)
  • Suspension, discussed ad nauseum in other threads. Summary: JCW Suspension if I can wait, Koni FSD, 19mm rear sway, and perhaps camber plates and control arm bushings if I cannot.
  • JCW Tune (not something you need of course!)

Items above have 95% probability, below are pure wishlist

  • JCW Aero kit side skirts
  • JCW Brakes

I had the strut brace on my JCW and did like the look for sure, although I didn’t drive the car such that I really noticed it. That might happen too in a moment of weakness.

The Roadster Arrives!

Our new Roadster is finally tucked away in our garage!

Here it is at the MINI of St. Louis dealership waiting for us to drive it home.

IMG 2407

We took delivery a few hours ago. Everything at MINI of St. Louis went very smoothly. Our MA Karen and the rest of the team there really made it a great experience.

We basically just drove it home, so not a lot of first impressions.

I enjoyed driving it, but need some daylight, and a chance to get everything adjusted to take it out and really see how it feels. Also trying to stay within the break-in period limits makes it hard to really get a good feel for the acceleration and braking.

Even with windows up and windscreen in place, my ears were getting a bit cold on the highway (~49 degrees F). Conversation was quite practical under those conditions though. And the heated seats work great as they have in our previous MINIs – another area where the MINI is a great contrast to our utilitarian (work) Prius.

The car looks great and I’m really anxious to get it out in the sun and really take a good look at it, and get some serious pictures. They’re predicting rain for us tomorrow, so it might be Wednesday before that happens. It will give me time to play with MINI Connected, get the phones paired up and so on.

My 370Z was a great car, but it felt so right to be back in the MINI fold again!

My first challenge is figuring out the correct tire pressure. Dealer delivered it at ~32psi. Door sticker and manual say 41psi. Mentioned it to my MA and the response she relayed from ? said that 41 is maximum and they recommend 32-35.

Roughly 25% lower than door sticker seems awfully low to me… I set it to 39psi and will see how it feels.

…time passes…

Just took a quick spin with 39psi. Rode a bit rougher of course. Not excessive but rougher. Need more time to really tell though.

FYI, the tires are: Continental ContiProContact SSR 205/45R17 84V

MINI Roadster – Random Thoughts

Some random thoughts about our MINI Roadster, which is due to arrive in a few days!

Our local dealer just got their “demo” Roadster in, and I had to swing by and take a look.

A few random thoughts came to mind. Maybe because that’s all I’m thinking about until ours arrives next week!

  • The seats fold forward. I understand why – they can’t make custom non-folding seats for the Roadster’s volume, but it does seem funny.
  • I’m disproportionately excited at the thought of having an actual useful trunk on a car again! (sorry – “boot”) See attached pic. Our recent fleet has been a Prius (hatch), 370Z (hatch), and a MINI Convertible (trunk, but not super useful…).
    The ability to open the pass-through door between the seats and reach into the boot (got it right that time!) is going to be really really handy, especially on road trips. And then to be able to stow valuables (iPad etc.) back there and lock it without making that obvious to potential miscreants when stopping for fuel and food – terrific.
  • I’m surprised by how much I liked the look of the front and rear compared to the JCW aero kit. As in, in some ways I like the normal look better than the JCW. Not by much, and in other ways I like the JCW better, but my net conclusion is that I’m ok not having it. (and not just saying that because I didn’t order it)
  • The JCW aero kit side skirts are another matter – man, I like those. If it’s possible to just buy those and have them installed, I see some (more) money flowing from my pocket into MINIs in the near future.

BeagleBone FTP Server

BeagleBone FTP Server

The BeagleBone has multiple text editors available onboard, including vi and vim. I can stumble around (badly) in vi. Using Vim is a little prettier, but not much – I’m really much more of a modal-editor guy. On the Mac, I use BBEdit when I’m not using XCode for iPhone and iPad development.

So my goal is to be able to easily edit on my Mac. BBEdit has a very slick ability to edit files via FTP, so that’s my next step.

Oddly, the BeagleBone doesn’t have an FTP server available in the default distribution. (or if it does, I couldn’t find it)

One skill I know I need to brush up on is acquiring, building, and installing packages in Linux. Since I wanted a quick-and-dirty FTP server running without too much fuss, I naturally looked to Python.

Python is a terrific “scripting” language, and my go-to tool for a lot of tasks.

There is a very nice FTP Server library available: pyftpdlib.

I grabbed this using wget, then did the unzip/untar dance:

    gunzip pyftp*
    tar -xf pyftp*.tar

Installation was simple. The setup python program failed, so I just manually moved the pyftpdlib directory into /usr/lib/python2.7/.

Last but not least, I whipped up a small Python program by modifying the quickstart and demo examples just a bit:

    # FTP server

    from pyftpdlib import ftpserver
    authorizer = ftpserver.DummyAuthorizer()
    authorizer.add_user("root", "12345", "/home/root", perm="elradfmw")
    handler = ftpserver.FTPHandler
    handler.authorizer = authorizer
    address = ("", 21)
    ftpd = ftpserver.FTPServer(address, handler)

Take that code, stuff it into a file with a .py extension (e.g., and invoke it:


And there you go – FTP access to the home directory of user root.

Now, is this what you’d use to server files to the world at large? Maybe – it looks like a very complete implementation, although I’m no FTP expert.
But it’s perfect for my local development purposes.

The only thing that would be nice is to have it auto-start. That’s pretty easy to do as well, at least in the simple case.

The directory /etc/init.d contains scripts that are executed upon system startup. We place a very simple shell script there, which I called ftpserver:

    python /home/root/

This will run the Python FTP server program (which in this case is located in the root account’s home directory – it could be located elsewhere of course).
Once you create this script, don’t forget to make it executable by doing chmod +x ftpserver.

Although this works, our script should really be more compliant and let us stop and restart the server. I plan to address that soon!

BeagleBone and the Mac – Part 2

The ongoing BeagleBone saga, part 2

(As viewed from a Mac)


To connect an SSH terminal session from the Mac is as easy as:

    ssh root@beaglebone.local

This is typed in a Terminal shell on the Mac of course.

To terminate the session, type the “escape” character followed by a period. The escape character is tilde by default, so type this to end the session:



To install Lua on the BeagleBone:

    opkg install lua5.1


BeagleBone and the Mac

Last week, my cool little BeagleBone arrived from Adafruit. This post is my attempt to describe getting the BeagleBone set up on a Mac with OSX.

Not everything I’ll be writing about is necessarily unique to using it with a Mac (versus say, Windows or Linux), but that’s obviously going to be my perspective since I’m a Mac guy 100%.

The general tasks look like this:

  • Download the latest OS to a Micro-SD card.
  • Install USB serial driver on the Mac
  • Connect the BeagleBone to the USB port
  • Open a serial terminal to the USB port
  • Talk to the BeagleBone!

Out of the Box

A New Pre-Built Linux Image

As the BeagleBone “Getting Started” guide suggests, the Linux image that comes pre-installed on the SD card that comes with the BeagleBone may not be the latest available.
You can download a more recent image from the links in the guide. Once you do, it needs to be written to the SD card.

To write the image to the SD card, it first needs to be unmounted.

    diskutil unmount /volumes/YourCardNameHere

Then, write the image to your SD card. Note that the diskXXX should be the actual disk device assigned when the SD card is connected.
This can be found a couple ways. You can use the “Disk Utility” application, or the command line df command.
These may show you the partition, something like disk7s2. You want to entire SD card, not any partitions so drop the s2 part.

    gunzip -c Angstrom-Cloud9-IDE-eglibc-ipk-v2012.01-core-beaglebone-2012.01.11.img.gz | dd of=/dev/diskXXX bs=4096

USB Serial Drivers

For my Lion setup, all I needed to install were the drivers that came with the BeagleBone.

These were on the USB “drive” that appears when you connect the BeagleBone to your Mac, as well as available from the BeagleBone website FTDI_Ser.dmg

Serial Terminal

The command line program screen makes a pretty handy serial terminal.

    screen /dev/tty.usb*B 115200

I set up my ~/.screenrc file as follows:

    termcapinfo xterm* ti@:te@
    autodetach off

The first line causes the scrollbars in the terminal window to work for scrolling back the serial terminal text lines. (See this stackoverflow post for details on why this is needed)

The second line will cause the screen session to terminate (rather than just “detach”) when you close the Terminal window.

Both of these are behaviors you probably want.

Custom Terminal Settings

You can also set up a custom set of terminal settings. I defined a set that made the window larger, and – most importantly – executed the screen command automatically.


ssh root@beaglebone.local

Ethernet Connection

The BeagleBone uses DHCP to get an IP address from your local network. (assumes your local network is set up to do that of course – most are)
To connect to it via a browser etc you need to know its IP address. Here are three ways to do that.

  1. Use a local name
  2. Display the assigned IP address using the USB-serial shell
  3. Look at the addresses assigned by your router

In my case, the router on my network is an Apple Time Capsule. I mention this just in case your router works differently.

The “local name” scheme works great. The BeagleBone identifies itself as “beaglebone” to the DHCP server. I can connect to my BeagleBone as beaglebone.local.

Alternately, using the command ifconfig via the USB-serial shell will display the IP address assigned to the BeagleBone’s ethernet port. (at the moment, mine is

The third option is router-spcific. In the case of the Time Capsule, run the Airport Utility application on the Mac. Select “Manual Setup” for the TimeCapsule, got to the “Advanced” tab, then “Logging & Statistics”. On that screen, select DHCP Clients and you’ll see a list of devices and their assigned IP addresses. You will also see the client ID, which in this case is “beaglebone”.

Next Steps

These will include an FTP server, Mercurial, and perhaps an editor like pico.

Xcode Build Version Script Revisited

On my first release build (versus an Ad Hoc one for TestFlight), I discovered that Apple apparently doesn’t like such a lengthy build version number for releases. (ok, it is rather long…)

An updated version of the script is now available via BitBucket at XCode Tools.

There are a couple other older, undocumented, and essentially experimental tools in that repository as well. Should I revisit and clean up those as well, I’ll add them to a future blog post.


Seemed like a good idea to gather up some info and links about some of the companies in my career that have been important, recent, or both.


The major company I’d worked for in my career was bioMerieux.


I developed a good chunk of the firmware for the VIDAS instrument.


The follow-on instrument, the miniVIDAS, used the same boards and firmware from the VIDAS, but added an onboard computer to allow it to be fully self-contained. I developed all of the firmware for this add-on board, with the exception of the actual biological algorithm “engine” that processed the data points and returned the result. (this code was shared with the workstation software developed by the software group for the original VIDAS instrument)

Developing the firmware for the miniVIDAS was some of the most fun I’ve had in my career, and it’s one of the products I’m most proud to have gotten an opportunity to work on.

Vitek 2

After that, I did a lot of firmware for the Vitek 2 instrument. This was a lot of fun, and a chance to work with a larger team of very talented mechanical, electrical, and firmware engineers.

Vitek 2 Compact

This was a smaller version of the Vitek 2 instrument, with some of the automated sample prep features removed. You’d think that removing hardware would make this a pretty trivial project. Turns out, it was actually a huge development effort.
There were a lot of new features desired for this instrument. Another major factor was the impact to the workflow caused by requiring the user to manually move the samples from the vacuum-filler to the mechanism that sealed the cards and loaded them into the incubator.


I worked on several other projects/products at bioMerieux, including the BactT/ALERT 3D, and the yet-to-be-announced, but very interesting and ambitious development effort I was involved in when I left the company. I’ll save some of those memories for a future post.


Recently (2011), I spent some time working for Aclara before deciding the time was right to make a leap of faith and become an Independent Software Developer focused on apps for the Apple iPhone/iPad/iPod Touch devices.
I enjoyed my time there, and the topnotch engineers I got to work with. Cool technology at a good company.

While at Aclara, I spent most of my time working on firmware for one of the transponders that goes into electric meters.