Fail Better

Ever tried. Ever failed. No matter. Try again. Fail again. Fail better.

Exhaustive Use

| Comments

I once read a book 12 times. By the 8th repeat it had become an overlap of entertainment and sport; I began to wonder just how many times could I get through from start to finish. Context is important here: the book was Cannibal Adventure by Willard Price, I was 10 or 11, and we were stuck on a long road trip from Nairobi, Kenya to visit family in the hinterland of Uganda. As much as my siblings and I tried to prepare to occupy oursevles, we always ran out of entertainment. It was perfectly normal to be bored enough to read each other’s books; I even remember reading a Sweet Valley High novel my sister brought along. Desperation has its boundaries though and I was soon back to the adventures of Hal and Roger in the wilds of New Guinea.

My experience is unique but glancing through reviews on Amazon I see a fellow with the following review of a Willard Price book:

I AM NOW 35 AND SOME OF MY BEST CHILHOOD MEMORIES ARE OF THE HOURS SPENT ON THE MANY ADVENTURES WITH HAL AND ROGER…AT OUR LOCAL PUBLIC LIBRARY YOU COULD FIND MY NAME ON THE CHECK OUT RECORD FOR EACH AND EVERY BOOK (AT LEAST 10 DIFFERENT READINGS OF EACH) FROM AMAZON ADVENTURE TO AFRICA, DIVING,SOUTH SEAS,LION,WELL YOU UNDERSTAND. I HIGHLY RECOMEND THESE BOOKS FOR KIDS OF ALL AGES. AND THANKS TO WILLARD PRICE FOR TAKING THIS YOUNG BOY ALL AROUND THE WORLD VIA HAL AND ROGER HUNTS MANY ADVENTURES….

I imagine this fellow was not stuck in a Toyota Corolla somewhere on the African savannah but like many fans of Price he returned to the material, again and again.

Today is so different; we have so much. It’s less that I’m old and more that I’m one of those people who lived both before and after the web. The internet in all its magnificence has given us the ability to experience the new all the time, not just in how we entertain oursevles but also in work. If you are a software engineer, every day a new framework, language, or tool becomes available. If you are an investor, markets are always open and the ticker tape never ends; as I write this on a Monday evening Asian markets are in full swing bridging the gap to the European open in a few hours and carry forward a synthesis of news and financial data into the open of the large American exchanges. Even if your profession doesn’t throttle you forward a person with even modest curiosity is easily overwhelmed by Wikipedia, Project Guttenberg, or the treadmill of pop culture. Your music collection is no longer a handful of CDs that you’ve carefully accumulated in small steps, it’s the internet and Pandora is not just in your browser – it’s everywhere. This means that you hear a lot but do you actually listen to anything?

It is the default but it doesn’t have to be that way; many of the people I admire throttle input and practice exhaustive use of the resources that they have. Most programmers I admire stick with a language despite the waxes and wanes of fashion in the industry. The most significant things in the digital world are only built with time, iteration, and accretion so constant change is not possible.

The world of scholarship, even as humanities and the liberal arts are supposedly dying, is built upon exhaustive use: the classics instructor who have come to an intimate knowledge of Homer after hundreds of readings of The Odyssey, or the archaeologist who lives not just in the present but in a past surrounded by ancient script that hasn’t changed for thousands of years. In a world of shallow use this is hard to understand – until you realize that this set of people interact with a world more rich and deep than can be had while flipping through young adult novels. It takes time to find the contours of ring composition or translate tablets written in dead languages.

Before I lose the engineers who read this because of my reference to the humanities, and before I lose anyone from the liberal arts because I can’t generalize beyond my professional inclinations, I want to make a small list of what exhaustive use means to me and then summarize.

Exhaustive use means multiple encounters over an extended time period

  • A book which is reread over and over.
  • Many projects with the same programming language or framework.

Exhaustive use means the ability to construct a completely mental model of something complex because of depth of knowledge

  • Blind folded chess
  • Vast memorization of narrative, context in a piece of literature
  • Defining software structure, architecture end-to-end without needing to write code.
  • Improvisational lego

Exhaustive use means exclusion of unrelated material

  • Software Engineer focused on a single language/paradigm
  • Focus on a specific topic area for scholarship (e.g. Tolstoy, archaeology, valuation models etc)

Exhaustive use is not being incurious

  • Think the self-satisfied type who are disinterested in anything except their field of choice – I always suspect a lack of confidence or some other problem when I observe a person who is happily and/or wilfully ignorant.

In a world of overabundance it is counter cultural and might even feel wasteful to draw boundaries – to impose a fast of sorts on all that is possible. But the shallow use and experience of things, no matter the discipline, is the true wastefulness that stunts personal and professional growth. Rather than chasing after novelty perhaps it is what we already have in front of us, what we may feel that we already understand, that needs our attention – again – to yield from repeated effort and familiarity something that is truly meaningful.

I remember a bus ride home when I realized with dismay that I’d forgotten to charge my walkman batteries. I had 45 excruciating minutes to burn with no entertainment… until I realized I could “play” my favorite album (New Order, Technique) – melody, counter melody, percussion and all – right in my head. Not as a result of aptitude, but because I’d listened to it more than 100 times on that same trip home.

Podcast Listening Habits

| Comments

My colleague Staxmanade is building a podcast app for XBox. You should check it out, he’s good at what he does.

Based on our conversations I’ve decided to catalog my habits around listening to podcasts. Not to navel gaze for its own sake, more because I’m curious about what YOUR habits are and what the more broader trends are beyond my sample size of 1.

I use Pocket Casts for just about everything because it’s on my phone and I take my phone everywhere (even jogging).

I will occasionally listen in-browser when I either want to test-drive a podcast or listen to a single episode. This happens maybe once or twice a month.

I’m a stop-and-go listener.

It is very rare to listen to a podcast from start to finish without pausing. For example, my son comes to visit my office. I get a refill of coffee. I’m walking to the car. And so on.

Quality does NOT matter but sometimes it does.

When any podcaster I listen to starts down the trail of what mic they use and other details, my eyes glaze over. Content is what drives me to a podcast – if Scott Hanselman is interviewing someone interesting over a skype call and they have an Israeli accent, I will crane my neck and listen because the content is good. With that said, there are shows like This Developers Life which were compelling because of the care and detail put into eachepisode. This was not because they purchased any of the mics podcasters like talking about, it was because of Rob’s post production and editing.

Podcasts I listen to involve multiple people.

It is incredibly hard for a single person to be engaging over any length of time. Conversations work best. A great hybrid is a personal essay that opens each show – Debbie Millman used to do this on Design Matters. More recently Tim Ferris has used this tactic as well. But for show content, conversations work best. There is one notable exception to this: Hardcore History although despite his claims that he doesn’t do much planning Dan Carlin seems to present his content in an effecient, essay-like narrative.

Often I don’t finish. Especially long podcasts going more than 40 minutes.

I work from home so perhaps with a commute this woul be different. But even then, some of the podcasts that stretch into the 2+ hour range almost seem like work in order to finish.

I switch a lot. Even mid-podcast.

To give an idea of how this works, I might be listening to a long podcast like ATP in the morning but when I take a walk (usually 20 minutes) I like to have something I can start and finish so I’ll switch to something shorter.

Despite all the podcasts I subscribe to there are few that I’m religious about listening to.

I’ll drift for a while and then binge through a few episodes.

A few thoughts on podcasts but enough of my own narcisicm. I’m curious about any other habits, tactics, or nuances people might have when it comes to listening to podcasts. If you haven’t already been there, please check out Staxmanade’s podcast app. I’m lobbying for a version that will run in a browser for those of us without Xboxes.

Newsletter Questions

| Comments

It’s very hard to go through a web browsing session without having a modal dialog popup to ask for your email address. Or how about this: you go to a website and in the margins there is an offer: enter your email address to receive The Completely Free Guide to X or some other PDF document, usually written by the author of the site.

The playbook, from bloggers1 to marketing agencies to big companies is simple: harvest email addresses, constantly engage through email marketing newsletters2.

In many cases this is done in earnest; the person asking for your email address is crafting a message as an act of community building3. Other cases are less sinister than they are purely commercial; your email address is a monetization unit. They will try to make money by bundling you up with others and in turn, you’ll give them a chance because the carrot at the end of the stick (daily deal?) is worth an email address (maybe not your primary – maybe a specific one you’ve designed for just this purpose).

I occasionally write articles for the Sioux Falls Business Journal and I want to explore the impact of newsletters as well as different ways to manage all of the email they generate. As an informal survey I’m looking for answers/opinions on the following:

  • Do you subscribe to any newsletters or email marketing offers (think daily deals like Groupon)?
  • How many emails would you guess you get (daily or weekly, please specify) that are newsletters or solicitations?
  • Do you use any specific tactics to manage non-personal/non-work email that they generate? Here are some common techniques (though do tell if you do something different):

    • A burner email address that is not your primary
    • Priority Inbox at gmail / Outlook.com features
    • Your own customized filtering scheme
    • Gmail aliases (e.g. david.smith+newsletter@gmail.com)
    • Third party service: IFTT or Unroll.me
    • Evernote (send newsletters to a notebook)

Notes

1I used to consider myself a “blogger” though these days I’ve had to reconsider since the wordpress + plugins universe is so different in form and substance from the Rebecca Blood version I knew before.
2I’ve noticed that most of my “old school” blogs don’t work this way, even the popular ones (e.g. xkcd). They seem built for a time when most readers kept up via RSS readers rather than the inbox.
3It might not be clear but I really do love these. A part of my exploration of the newsletter world is to think about ways I can optimize my consumption of curated thoughts like those from Brainpickings to Farnam Street. I’ve got mixed feelings about the strictly commercial ones, especially the ones which have no other intended purpose than to make money for the owner and whomever else they share email addresses with.

Post Desktop

| Comments

The nice thing about a blog is that you can trace decisions you blogged about to the exact date. It was July 18, 2013 when I wrote about using a desktop pc rather than a laptop. It’s been an interesting journey but it came crashing (pun intended) to a halt when my desktop died a few weeks ago.

It’s lazy writing but I’ll bullet point a few random thoughts about 2+ years on a desktop:

  • Home built desktops are more powerful for the price. I was able to run a bunch of VMs, IDEs, games without thinking about resources.
  • Running powerful hardware is often noisy.
  • Desktops make you sedentary. It wasn’t just that I stopped leaving the house, I stopped leaving my desk. Whereas before I’d occasionally work in a coffee shop. I even forgot how handy it is to work in different parts of the house (e.g. kitchen table).
  • Desktops are noisy.
  • Although mobile devices let you do a lot of ‘reading’ away from your desk, they aren’t very good for writing: email, blog posts, code – you name it.
  • Home built desktops make you into a hardware technician whether you like it or (in my case) not.

My experiences, especially in having to troubleshoot hardware, have led me to the conclusion that while the desktop experiment had some upside, I prefer an indestructible laptop if only because the hardware configuration is more stable. Yes, it is possible to have a flakey laptop but I’m several generations into Lenovo and they’ve all been solid. The big question going forward is whether my next laptop is a Lenovo or a Macbook. I suspect the latter but time (and the pocket book) will tell.

Little and Big

| Comments

Over the last few weeks I’ve been looking into client side frameworks for the web. Almost everyone I know laments the proliferation of frameworks and “noun.js” modules in existence and yet we can’t help ourselves. The snowball keeps rolling forward with new layers of granularity and complexity – language transpilers, package managers, browser adoption…

Then I ran into the following paragraph which explained it all: why frameworks grow like mushrooms and why most of the complex web based software I use runs on what is considered boring (asp.net, php, etc):

Little programs are delightful to write in isolation, but the process of maintaining large-scale software is always miserable. Because of this, digital technology tempts the programmer’s psyche into a kind of schizophrenia. There is constant confusion between real and ideal computers. Technologists wish every program behaved like a brand-new, playful little program, and will use any available psychological strategy to avoid thinking about computers realistically.

— Jaron Lanier, You Are Not A Gadget1

1Excerpting like this goes specifically against some broader themes of the book but this was too good. I highly recommend the entire book for any thoughtful technologist.

Trend Talk

| Comments

The first developer conference I ever attended was VBITS (“Visual Basic Insider’s Technical Summit” – now defunct) in San Francisco. I won’t forget that experience or the keynote from Paul Saffo, a futurist who exhorted us to look beyond our technological present and to try to anticipate and respond to trends.

It was not completely my own efforts but something must have stuck: learning about vtable binding and COM was useful but I also realized that I needed to do everything I could to get involved with web development. Soon after I was doing a lot more with Visual Interdev than I was with Visual Basic – and the rest is history.

Mary Meeker recently released her 2014 Internet Trends Report and it’s an opportunity, these many years down the road, to try to see the big picture and get a bigger sense of direction. I looked at a few versions: the primary source and a helpful annotated version on TechCrunch.

Here are my takeaways: (apologies for going List of N)

  1. Mobile is the place to be as a developer.

    I’m fortunate to be a full time Android dev at present and it will be important to hone and improve the skill set. Apple’s recent announcement of Swift is an opportunity to get in on the ground floor of iOS development as well.

  2. Personal Education

    In the midst of declining quality of education, online education is at a groundswell for those who are willing to take initiative. Taking initiative is easy for me (I love learning) but I’m easily distracted so focusing on a single topic or subject matter area is more of a challenge. Coursera has recently launched educational tracks (Android, Data Science) which will help with this.

  3. Single Purpose Apps / Invisible Apps

    Apps should be designed to do one thing. Invisible apps leverage notification, context, and predictive computation to give you information when you need it. Here is the quote lifted from slide 41:

    “We’re entering the age of apps as service layers. These are apps you have on your phone but only open when you know they explicitly have something to say to you. They aren’t for ‘idle browsing,’ they’re purpose-built & informed by contextual signals like hardware sensors, location, history of use & predictive computation.” – Matthew Panzarino, TechCrunch, 5/15/14

    My mindset to date is on apps that users interact with but I need to start thinking more of apps as a way of passively doing things for the user – as my colleague at Vertigo put it: “giving [users] an additional sense.” Sometimes this can be a simple matter of phrasing; several times now forecast.io will tell me it will be raining “in a few minutes” with incredible accuracy.

  4. Design as a feature

    Rethinking old concepts (e.g. Yellow pages) in mobile design. I was impressed by the WWDC 2014 keynote in which Apple demonstrated for those of us who have forgotten that for them, design is a feature. I saw people joking during the keynote about all the references to transparency in UI of the new version of OSX, Yosemite, but in my mind spending as much time in the keynote on the topic just shows how important it is on their part for things to look and behave correctly.

There is a lot more in the report: the growth of advertising, the flow of information through social networks, apps as second screens, China (the big project there for my son to learn Chinese?), among others. Definitely worth a few minutes of reading and some time reflecting.

Going Mac: A Developer Encountering Operating Systems as Place

| Comments

I visited New York for the first time when I was still based in a Southern California exurb. It was overwhelming, beginning with the clear memory of a man yelling at me to get out of his way upon exiting an elevator. I’d been to many cities but New York is a singular experience: dense, difficult, and beautiful.

When I got a new Mac earlier this year, my first reaction was to its beauty. After years on stodgy looking PCs, the contours and heft of the hardware were a revelation. I think of it with the same sensibility as I do New York the city – a place I visited, a place that was cool and surprised you continuously.

The exurbs I’d gotten used to are comfortable places. You must have a car to get around but it’s easy to find places you like to eat and hang out. The people are relaxed. You can still get to the proper “city” but only after working up the motivation to deal with traffic and drive for 30 minutes. I did it all the time but relegated it to night time, when working hours were over.

I think about my PC in terms of those exurbs. The comfort and familiarity of oft wandered environs, an intuition for where things are and how they can be managed. I can still get to “the city” – install powershell, cygwin, other components to have feature/tool parity and yet these are always visits; my real home is in explorer and other executables I run in the gui. Like MarkdownPad, where I am typing this entry.

Oddly enough though, now the Mac is where I get my work done. I commute from comfort and familiarity to a polished, glittering environment that is seductive and yet requires regular interaction with a terminal, vi, and unix utilities of yore. When it all works I feel like one of the cosmopolitans I saw navigating the streets and public transit with power and ease. When I hit a road block I go back into bumpkin mode sensing that if so many people can do it I should be able to figure it out and yet yearning for a the kind of protective abstractions built into suburbs: cars that separate you from the street; chain stores where service is standardized; Faustian bargains with cheap fast food.

And yet time is having its effect. No one becomes a part of the city overnight but the difference between a small country town and a booming metropolis is that an outsider can live in the former for decades and never really become the embodiment of the place while cities absorb people whole, blurring origins until they are a part of the throng and cannot remember when they arrived.

Moving From BlogEngine.net to Octopress

| Comments

Although I switched to Octopress via inspiration from Staxmanade’s blog series on exporting content from Blogger, my current blogging has been with BlogEngine.net. Here is how I migrated the content over.

Export to BlogML

The first task was to export my current blog entries. You can generate a BlogML file with all of your posts with the following steps:

  1. Log into the administration portal then choose Settings.
  2. On the subnavigation select the “Import & Export” option.
  3. Click the Export button.

Importing to Octopress

You need to generate files for each of your posts. I found a lengthy Ruby script to do this but I just hacked up what I needed in a few lines of powershell:

$file_name = "{0}-{1}.html"
$post_template = 
@"
---
layout: post
title: `"{0}`"
comments: true
---

{1}
"@
$xml = [xml](get-content BlogML.xml)
$xml.blog.posts.post | % { 
  $name = $file_name -f [DateTime]::Parse($_."date-created").ToString("yyyy-MM-dd"), ($_."post-url" -replace ".aspx", "")
  $name = $name -replace "/post/\d{4}/\d{2}/\d{2}/", ""
  $value = $post_template -f $_.title.InnerText, $_.content.InnerText

  New-Item -Path . -Name $name -Value $value -ItemType file
}

I ran it in the same directory as my BlogML.xml file and it iterates over each post generating a file and using the post name and created date for a unique file name.

Fixing Images and Links

You may need to clean up links to images and other posts. I’ve done it for images and something similar could be done for posts (I don’t link to myself very often though I may update this script when there is time). First, I copied all my images out of the /App_Data/files directory and into /public/images in my octopress folder structure. Next, here is an powershell one liner (where my BlogEngine was “http://www.t3rse.com” you will need to make sure you replace with whatever domain name you were using):

ls *.html -rec | %{ $f=$_; (gc $f.PSPath) | %{ $_ -replace "http://www.t3rse.com/image.axd\?picture=", "/images/" } | sc $f.PSPath }

This script, run in the same directory as the generated posts visits each (the .html extension) and does simple replace.


There may be some additional details migrating (for example, I ignored comments, I also didn’t pull in the categories for each post) that I add tweaks for in the future. If you have a bright idea comment or modify my gists on github – I’d love to improve them for anyone else to use.

Hallo Welt: Octopress Edition

| Comments

I’ve been through a lot of blogging engines. My first blog was built on the Radio Userland platform, created by Dave Winer who technorati know as the guy (controversially) behind RSS. I’ve used Das Blog, Blogger, and BlogEngine.net. I’ve used Tumblr. I’ve even implemented my own lightweight blogging platform in the past. It’s interesting how the concept of blogging is so simple but the platforms and tools are anything but. Perhaps it has to do with what I will call the “Todo List Software Principle” – the more generalized a problem set, the more variety and churn will exist for technical solutions.

Each platform I’ve used had things I liked: Userland dealt with hosting and server configuration while I simply wrote, Das Blog was written with a toolset I understand well, Blogger was painless like Userland but also free, writing my own blog engine helped me understand why it was so difficult and BlogEngine was more modern and sleek than Das Blog.

Each platform also had pain points: Userland wasn’t free and ultimately my content was not my own. Das Blog had pain points when new versions of the .NET framework started to come around. Blogger was free but complex if you needed to engage the templates and underlying structure of the engine. BlogEngine’s ecosystem seems to have died and comments are a nightmare.

My colleague Staxmanade introduced me to Octopress as he was in the process of migrating old posts from blogger and writing a series of posts about it. Octopress is an experiment but here is what I like: it strips away a lot of the abstractions from my previous blog engines and allows me to deal with, for the most part, plain text. It also integrates with Github where my content can be hosted for free. Finally it’s a programmer’s blog engine; the idea of using markdown and code to build my blog is appealing.

Although I’m certain Octopress is not the last blog engine I try my hand at (foreshadowing here) I will be using it in the forthcoming weeks both to follow the Staxmanade series and to learn more about Ruby and statically generated websites.