If the World Lived in a Single City


If we pick the Houston population density model, my wife and I don’t even have to move.


Foot Surgery


A month ago I had foot surgery to remove several bone spurs from the base knuckle of my big toe. For the past several years I’ve had near constant pain from these arthritis-caused growths in my right foot. Some days the pain was great enough to make me limp, other days it was only a minor annoyance.

The surgery appears to have been a complete success. While my foot is still slightly swollen I have not experienced any of the pain to which I had become accustomed.

The first two weeks of my recovery were spent with my foot elevated. The gauze bandages and elastic wrap that were applied in surgery weren’t removed until day 14. The gauze was tight enough that more than a few minutes with my foot down were very painful. Once the stitches were out I was able to get around more normally; still wearing the post-op shoe which is stiff enough to protect my swollen toe.

The past two weeks (week 3 and 4) have seen me return to a more normal lifestyle. I’ve stopped wearing the post-op shoe at night - which immensely improved my ability to sleep comfortably - and I returned to work the week prior to the Christmas break. I can drive, walk, even shovel snow on the driveway. I still ice my foot some to help with the swelling.

The last of the scabs (from the stitches) has come off, so now I can start to massage the incision line and surrounding area to help prevent scar tissue build up. The incision itself is barely visible. It’s a thin red line that has no texture to it at all. Twelve years ago I had an umbilical hernia repaired and that surgery left a three inch long scar that is fibrous and quite visible. I was pleasantly surprised to see how minimal this new scar is at first glance.

I have managed to stick my foot into regular shoes a couple of times in the last day or two. However after a few minute the shoe began to feel too tight. When I return to work later this week I expect I’ll still be using the post-op shoe. Or maybe start with a regular shoe but have the post-op shoe on hand for when my foot begins to complain.

Over the next few weeks I’ll be massaging the joint and surrounding tissue, and starting to exercise my foot again beginning with short walks. I hope to start using our treadmill again soon, and I am looking forward to pain-free bicycling later in the spring.

Since my bone spurs were likely caused by arthritis there is a chance they could return. From the time I first had recurring pain in my big toe until now has been about 10 or 12 years. Even if I have to repeat this surgery in a decade I will be very pleased and consider it a success. And who knows, in a decade there may be an even better treatment option.


Beautiful Bridges


Some of these are stunning, not only for their style but for their construction method. A living bridge that maybe 500 years old? A canal in a bridge? Wow.


December 17, 1903


December 17, 1903: Perhaps the single greatest picture ever taken.


Tab Dump


It’s been a long while since I posted anything here, so for lack of a better topic, here’s a list of the 47 tabs currently open in my browser.

Mint - Site visit statistics for my sites
Google Calendar - Sibylle and I make use of Google calendar every single day
Google Drive - Use to be Google Docs. Currently open as we are creating the annual Christmas letter
Christmas Letter - Not actually going to link to this, but it’s open in a tab as well
Github - my collection of git repositories at Github
Typing Practice for Programmers - Had this open for weeks now, should try it sometime
Music for Geeks and Nerds | Errata - Book about music theory and programming I bought and ned to start
zsh-syntax-highlighting - plugin for zsh that adds syntax highlighting to the command line
Perfect Workflow in Sublime Text 2 - excellent set of videos covering the Sublime Text 2 text editor
The Homely Mutt - Fantastically detailed set of instructions in setting up and using mutt for email
Commanding your Text Editor - Comparative shortcuts for commonly performed actions
Migrating from Kindle to iBooks - How to use Calibre to remove DRM from most eBooks
Everything you wanted to know about DRM and eBooks - More about DRM Quartz - some kind of aggregator site I haven’t explored yet
Private by Default - posting about switching a site from http to https
Profiling Vimscript performance - The latest in the excellent Vim casts series
Explorations in Unix - using Unix command line tools for statistical analysis
Music Theory - online music theory exercises
Chords and Double Stopping - interesting thoughts on playing chords and double stops on the cello
Managing Ruby: Moving from RVM to rbenv - I’m tempted to switch from RVM to rbenv
Rubies and Bundles - more on managing Ruby dependencies
Dashing - an open-source dashboard framework
Crash Course in Objective-C for iOS 6 - Objective-C continues to fascinate me
Simple Guide to Phrasing - thoughts about phasing in music
Tea Bag Buddy - stocking stuffer idea for the tea drinker in your life
How Pythonista Changed My Workflow - article about writing Python scripts for iOS
See how long a given process has been running - hint on creating a bash script for monitoring a process
Top 30 NMap Commands - tips for using nmap
Using Slate: A hacker’s window manager for Macs - a how to for using the open source Mac window manager Slate
ScriptKit - Drag and Drop Programming for iPad - nifty tool for programming on iPads
ScriptKit - actual site for ScriptKit
Layouts - window management using Alfred and AppleScripts
heard - source for heard, an open-source project that tracks what music you listen to
Heard - project page for Heard
Take your computer back from your mouse - article on using Alfred
Build a Killer Customized Arch Linux Installation - nuts and bolts approach to customizing a Linux distro
Beginner’s Guide - Arch - wiki site for Arch Linux help
Style Manual - a stylish style manual
Guardian Maximus - a RAID-1 drive enclosure
Big Nerd Ranch iOS Programming, 3rd Edition - a book I wish to have
Learning Chef - part 1 - set of videos to get started using Chef
Automating System Provisioning and Deployment with Chef - using Chef for system provisioning and application deployment
UICollectionView Custom Layout Tutorial - tutorial on customizing a UICollectionView layout
Bold Poker - poker using iOS devices instead of cards
NSHipster - site with weekly articles about iOS development
Blabbermouth - YES Concert - YES is going on tour next spring
The Midland by AMC - the venue for the YES concert in Kansas City


New Works From Seb Lester



LiveSTRONG


On app.net (the alternate Twitter) someone posted a link to this AlJazeera editorial, Lance Armstrong: A Cheater? Five reasons why we don’t care. It more or less says what I think about the whole Lance Armstrong thing.

I wear the LiveSTRONG band to remind me of Amy, and Helen, and Michele, and Riley. Not that I need reminding but in some way it focuses me on the positives their lives brought to mine, and helps me past the hole their various cancers left in my soul.

Maybe we should allow performance enhancing drugs and treatments in sports. I’m sure there is example after example of training methods and techniques that are legitimate in today’s competitions that were illegal in years gone by.

I’m sorry that his reputation and efforts are now being smeared. And I am saddened by the amount of schadenfreude some news agencies and bloggers are displaying. It seems the we as a society delight in making heroes only slightly more than we delight in tearing them down.

Finally, all of this reminds me of my favorite quote, from Theodore Roosevelt:

“It is not the critic who counts; not the man who points out how the strong man stumbles, or where the doer of deeds could have done them better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood; who strives valiantly; who errs, who comes short again and again, because there is no effort without error and shortcoming; but who does actually strive to do the deeds; who knows great enthusiasms, the great devotions; who spends himself in a worthy cause; who at the best knows in the end the triumph of high achievement, and who at the worst, if he fails, at least fails while daring greatly, so that his place shall never be with those cold and timid souls who neither know victory nor defeat.”


Coursera Homework Scored Not Evaluated


Tomorrow will mark the start of week five of Functional Programming Principles in Scala and my frustration level with the course continues to grow. While I like the way the course is presented - through topical videos that include interaction opportunities for me, I am unhappy with the assignments. There are two aspects to my dislike: one - the highly “computer science-y” angle all the problems take, and two - the lack of evaluation on my assignment submissions.

This week’s assignment centers around Huffman Coding. I had to look it up. Turns out its a lossless compression routine developed in an MIT Ph.D thesis. After many hours of diagramming and thinking about it I now think I understand it enough to tackle the assignment. Only the level of effort published for the course is 5 - 7 hours per week and I’ve already invested more than twice that on week four and I still have 90% of the assignment left to complete. Tomorrow a new round of video lectures will be published, and a new assignment will be made. Whatever I am learning about functional programming is being lost in the chaos of just trying to keep up.

The course does have a forum and it is fairly active, but I have stopped trying to use it as a resource and it only serves to batter my already bruised ego even more. There are any number of “the assignments are too easy” postings. Or “I completed week four using only ‘one-liners’”. That I’m not finding the assignments easy, and that my submissions aren’t filled with one-line solutions makes me think I’m doing it wrong.

Which brings me to my second gripe. When I submit my assignment it gets scored - not evaluated, not critiqued. There are over 40,000 people signed up for the class so there is no way all assignments submissions could be evaluated. What happens is your work is tested against a master set of assertions and, if it passes those, you get all the points. There’s also some “style” checking to prevent you from using non-functional attributes of the language. There is no evaluation of your code to say, “that’s a good approach”, or, “you shouldn’t do this and here’s why…”. Each week has built on the concepts of the previous week, but I have no confidence that my understanding of the previous week is solid. Throw in the assignment complexity issue from above and you have a recipe for frustration and anger.

There have been people asking for the solutions to the assignments to be published, however the course staff has pointed out that this course will likely be offered again and will use the same assignments. The explanation given was that it would require too much work to develop new assignments and the scoring tools each time it was offered. So not only are our submissions just scored and not evaluated, there is no feedback at all as to how these problems ought to be solved.

I’m just an old-fashioned brute force programmer who got his start on punch cards and paper tape in the 1970s. My code may not be elegant or sophisticated, but it works and it has always been written with an eye toward maintainability. Spending several years on call for a batch billing system that ran between 2 am and 6 am every night I learned to write code that worked, and if it didn’t work, was understandable to people who were half asleep while trying to fix it. The ‘one-liner’ solutions that seem to be the rage with functional programming strike me as being extremely difficult to maintain in the middle of the night. I’m not going to write off functional programming as a good approach to some problems, but I am disheartened at the direction this course has taken.


Coursera Lecture Issues


I’m into the fourth week of my functional programming course on Coursera and while I like the course and the way it is presented through Coursera, I do have a couple of quibbles.

On the course description for my class the effort required of the students is given as 5-7 hours per week. I have easily invested twice that each week of the course so far. It may be that I am a slow learner and just need more time, but I think the time estimates are optimistic at best, and wildly off at worst. The set of lectures for the fourth week are two hours all by themselves. I fear the amount of effort to keep up with the class is only going to grow.

The course format says that class will consist of video lectures of 6 to 15 minutes length. The first week had 6 videos ranging from 4 minutes and 22 seconds up to 14 minutes and 32 seconds. The total was just under 62 minutes. Week two had 5 videos ranged from 4 minutes, 13 seconds to 14 minutes, 58 seconds, for a total of just under 53 minutes. Week three had 5 videos again, this time totally nearly 90 minutes. One video was over 25 minutes long. This week has 7 videos totally over 2 hours of viewing time.

The content in the videos is well done, and Martin Odersky is a fantastic teacher, but consuming a third of the expected weekly effort just in watching the videos once is getting away from the point of Coursera. I’ve watched most of the lectures twice and some of them three times - that’s the point of having them. Having two hours of new material makes repeat watching an expensive proposition. While you can pause a video, it isn’t easy to skip back a minute or two to rehear a point. You can grab the progress indicator and move it, but this is cumbersome. I wish they would implement a 10 or 30 second backward skip control on the player - it would make watching the videos even better.

My final quibble is the problem domains chosen for the assignments. With no prerequisites for the course I was unprepared for the rather mathematical nature of the problem sets. I understand that functional programming has lambda calculus at its root, but I wasn’t prepared for the very abstract nature of the solutions. The code for the solutions has been amazingly short and succinct, the concepts behind the solutions have taken me hours to grasp. As this is my first exposure to any kind of functional programming I don’t know if all functional programming solutions are so esoteric, or if the problem domain selected for these assignments makes it seem that way.

I am determined to complete the course – so far I’ve gotten all the available points – but I am finding it to be considerably more effort than I expected, and far more time consuming that advertised. I am getting an education in functional programming concepts in Scala from the man who created Scala – for free, so I can’t complain about the price, but I do recognize that Coursera is in its infancy and they have some course structure and presentation wrinkles to iron out.


Leaving Squarespace


In January 2008, Sibylle and I created a new Website for her piano studio and registered her domain. The Website was all static pages that were hand-coded. After much work I managed to cobble together a WordPress theme that mirrored her site, allowing her WordPress-backed blog to have a similar appearance. As nice as the design was, after nearly 5 years it was getting a little long in the tooth, so we spent considerable time over the summer trying to find a good WordPress theme for her entire site - both the static studio pages and the blog. One of the goals was to have a site that she could maintain herself; the initial static studio pages had all ben maintained by me.

After not finding a suitable WordPress theme – while there are thousands and thousands of themes available they all looked the same – we finally decided to use Squarespace. Squarespace is a bit like WordPress.com; they handle all the backend work, you just edit your content and publish. At first glance it seemed to be a good way to go, especially since they had a very elegant theme that suited her site’s needs and her aesthetic sense.

Unfortunately Squarespace has proven to be a poor solution. The site administration functions perform poorly when using Internet Explorer on Windows. In fact it was quite easy to rapidly mangle the layout and then not be able to straighten it out.

This week we moved her studio site to a self-hosted WordPress instance. Rather than searching for the perfect theme we decided to just use one of the default themes for now. Getting her site on WordPress where she could edit its content was more important than having the absolute perfect theme. Imagine our surprise to discover that the latest WordPress provided theme, Twenty Twelve, is not only elegant and responsive, it closely mirrors the theme we had been using with Squarespace.

After a couple evening’s work to move the content and verify everything was in place, I made the necessary DNS change last night and today her new studio site is available. Canceling the Squarespace account was quick and relatively painless. Had we canceled the account within the first 30 days we would have gotten an 11-month refund, since we are at roughly 60 days we will get a 6-month refund. After 90 days there is no refund.

I think Squarespace is a good solution - provided you don’t want to use Internet Explorer to manage your site. And provided you are comfortable in the cloistered environment that they provide.