On walkabout in life and technology

Seek the Criticism

Brendan Baker nails it in Fuck the Accolades. Seek the Criticism on Quora. Just read it. It’s short.

Two productive things can come out of a meeting with a VC:

1) They help you directly. Money or connections.

2) They make you better. They criticize you where it counts. They poke holes. They make you defend. They make you justify. They make you question.

Seek the criticism, because accolades don’t help you.

Don't Give Up on Your Techs

My good friend, Brad Lindenberg, writing in The diminishing value of technical founders in startups talks about the value of the super technical people needed to perform the heavy lifting at the beginning of a startup.

This value of technical people in startups diminishes quicker than you think and entrepreneurs need to be careful not to give away equity to developers who are super valuable in the short term, but end up twiddling their thumbs in the long term.

I absolutely agree with Brad that you need a bunch of super techs at the start to build the initial product, create the initial architecture and ship the first version. Disclaimer: I am one of these people.

But after that - sorry, mate - but I think you have it wrong. If your super techs are twiddling their thumbs, then either your product plan is no good, or your business has stagnated and you’re losing value.

The first version of a product is never good enough, but the product is worthless until you ship. So you ship it. You need these techs to fix the edge case errors in the first release, to scale the product to meet demand (scaling is hard), to tweak the experience to meet user expectations, to add the missing features and to optimize all the new bottlenecks you will find. For the first few iterations (ship, update, ship, update), there is always work for them to be doing and significant value for them to add.

Products that are made and never enhanced lose value over time. The example Brad uses is that you do not need an architect to build a house. True, but you do need one to add rooms, a second floor, and replace the bad structural elements in the house when subsidence sets in. A software product is a living thing, not a static item like a house.

Both Twitter and Tumblr failed to scale and enhance in their early iterations because their super techs left. It took a new generation of super techs (and a lot of money) to fix the original mess and to add the features that keep these platforms growing. Myspace and any Yahoo project would be a great example of what happens when not keeping or replacing them.

Ideas are great, people like Brad who turn ideas into businesses are even better. But software is not like a house, it requires continuous and significant improvements and changes to delight its users. Otherwise they will just spend their dollars elsewhere.

The Usage Lifecycle

Joshua Porter writes about the Usage Lifecycle in Designing for the Social Web: The Usage Lifecycle, well worth reading.

The stages in the Usage Lifecycle of a product are:

Unaware This isn’t so much a stage as it is a starting point. Most people are in this stage: completely unaware of your product.
Interested These people are interested in your product, but are not yet users. They have lots of questions about how it works and what value it provides.
First-time Use These people are using your software for the first time, a crucial moment in their progression.
Regular Use These people are those who use your software regularly and perhaps pay for the privilege.
Passionate Use These people are the ultimate goal: passionate users who spread their passion and build a community around your software

I have two products launching soon, so we’re at the unaware stage. Working hard on creating the materials to move people to interested stage. The goal as always, passionate use.

The Lost Art of the Print Statement

Debugging software is hard, especially if you were not the original author. All programming languages come with debugging tools, from the arcane GDB to the dead sexy step-through debuggers in Xcode and Visual Studio. But, having watched some newbies recently attempt to debug some code using these tools, I noticed something. With all the data in the world on their screens, breakpoints, stacks, watches and code hovers, the information they needed to solve the bug was being lost is the mix.

When I started programming, the best debugging technique was the print statement.

Not sure what the value of a variable was, print it.

Not sure which branch of an IF gets called, add print statements to each leg.

Not sure the order of a set of calls, add print statements to the top of each function.

Run, read, rinse, repeat.

All modern programming languages have logs and print statements. Javascript has console.log, Objective-C has NSLog(), Rails has Rails.logger.info. Easy to add, easy to use, easy to see the results, easy to comment out when done.

So next time you are stuck in a bug, forget the debugger. Bung in a few print statements and actually see what is going on. I’ll bet you find the bug faster because one of the print statements will not make sense.

Hiltmonism - Write Code for Someone Else

Whether you are just hacking up a script, writing the next must-have app, or working for the man, always be writing code as if someone else has to read it and understand it. Usually, that someone else is you, six months into the future, older, wiser, with a different mindset. And you’d hate to piss yourself off then, right?

This hiltmonism is a big one. Its easy to think you can fix something later, even though you know this mysterious later never comes. Its easy to think that you can just get this code out because once its done, its done, even though you know its never done. Its easy to hack to a deadline, and hope you are not the bunny who has to fix it when it fails, even though you are stroking your bunny ears at the time.

You will get to face this code again once in production, with customers and managers screaming. The system is down, the TPS reports are late, and a bunch of suites are pacing behind you making clicking sounds with their teeth. So you open the code, look at it and … cannot make head or tail of it. Code you wrote! Recently! If only you had made it more readable, if only you had used comments, and good variable names, and simple functions and white space and explained any odd algorithms. If only you had made it readable. If you had, you could go “Oh, easy bug”, fix it and be up and running in minutes. Now, you have to reverse engineer it first to figure out what is happening before figuring out what went wrong.

It turns out, my worst code critic is my future self. When coming back to fix bugs or enhance systems, I used to wonder what kind of bonehead would write such bad code, until I remembered that that was me, six months previously. And all the excuses my six month ago self had meant nothing. Deadline? No excuse. Prototype code? No excuse. Copied and pasted from some random website? No excuse.

So all the code I write, and all the code my team writes, we write it for someone else to read. Usually our smarmy judgmental future selves.

Kindle Fire Lets Kids Charge Up a Storm

Reuters, today, in Amazon’s Kindle Fire lets kids charge up a storm writes:

...it comes with your Amazon account information preloaded, along with "1-Click" ordering. That means anyone who is holding that device can place an order, whether it's their account or not.

My question is whether this behavior is by design or by accident. In Almost No-one Changes Their Settings I referred an example from Microsoft where the settings were the result of what the developer left them as, not what was best for the user.

In this case, it sure is in the interest of Amazon to leave this on. Frictionless purchasing is what makes them money. Lots of money. And the Fire is merely another sales channel for them, not a reader, video watcher or game player like other tablets.

It’s not in the interest of Kindle Fire owners, because strangers like me can pick up anyone’s device and purchase that $599.00 Lego Millennium Falcon I have always wanted. Unless the owner catches it in time, I get my toy for free.

Apple, on the other hand, defaults their purchases on the iPad to requiring a password for this reason, they know the device will get passed around and want to protect the owner’s credit card.

By design? By accident? Who knows for sure, but I’ll bet on design. Anyone got a Kindle Fire for me to play with for a few minutes?

Hiltmonism - Information, Not Data

How many times have you opened a spreadsheet or a system, and seen pages and pages of numbers and gone ‘Ugh, its too hard to find what I want!’.

Most systems and spreadsheets try to present everything to their users, reams and reams of raw unfettered data. And most users, if you ask them, both want the data and hate the data volume that they have to deal with. Looking closer at the situation, the reason they want the raw data is because they believe they can use the data to get answers to their questions, or use the data to do their jobs. Lets call these answers that they really need ‘information’. Wouldn’t it be better if the software simply showed the user the information as and when they needed it, instead of making them work and strain to extract it?

Absolutely. That’s what computers excel at.

Getting from data to information is hard, though. Users oftentimes are unable to phrase the questions they need to ask or even explain what informational nuggets they are looking for. Users often don’t even know what questions they need answered. And users also distrust systems that provide information without also providing the data as backup (even though they could not possibly go through the raw data because there’s just too much of it).

A great software designer gets to know the business needs and the information that users will need to perform their specific jobs. Good designers watch users and see what they do with the data they have, what information they need, and see what they should be doing with information if they had it. The designer should then break down these informational needs into a simpler, navigable structure, filter useless information and design screens for each and every remaining information set. Simple information sets are easy for us humans to find and use.

Information, good, easily accessed information, enables users to perform their jobs better and makes them happier. Raw data distracts them, and holds them back. A good designer asks users what information they want. But gives them the information they really need.

Don't Be a Free User

Maciej Ceglowski, writing on the Pinboard blog in Don’t Be A Free User calling it as it is.

Someone builds a cool, free product, it gets popular, and that popularity attracts a buyer. The new owner shuts the product down and the founders issue a glowing press release about how excited they are about synergies going forward. They are never heard from again.

His point is valid. All the businesses he refers to started as a free service, had no business model, got sold and died. And their user base, thats us folks, lost out on a great product or service and lost our data.

Money quote:

To avoid this problem, avoid mom-and-pop projects that don't take your money! You might call this the anti-free-software movement.

He’s right again, we all need tools and services we can trust to stick around and do what they do. Not services that are gone the next day or ‘pivot’ to the next stupid trend because they are bought or have no business model. Paid services, whether via license fees, subscription or advertising, is the only reliable software model.

Note: I am also a paid up Pinboard user and I love the product. I switched when del.icio.us got sold and died.

Good News - Online Retailers Do Not Hate Their Customers

Sarah Perez gets it completely wrong writing in a Techcrunch article entitled Retailers Aren’t Ready For iPad Shopping Trend

Now for the bad news. Despite the increases in tablet traffic, many retailers are not prepared to accommodate these new mobile shoppers. Compuware also prepared a chart showing the top retailers’ sites, and whether or not they offered an iPad-optimized website. Surprisingly, none of them do, not even Apple.com. What’s worse, Apple is also among the retailers who don’t offer a native iPad application.

She is completely wrong because the iPad web browser is a fully featured standards compliant web browser. You don’t need to ‘optimize’ for it, or replace it with an app.

Instead, Sarah has given me two more reasons to add to my You hate your Customers post:

  • If your site provides an iPad optimized website for a device that has full web fidelity, like the iPad, you hate your customers.
  • If your site requires iPad users to download an application to use your site, you hate your customers.

Oh, and I need to clarify

  • Apple does have a store app, but it in not required to access the Apple store from the iPad.
  • The only thing you need to do to make a site work great on an iPad is to use standard HTML5+CSS3 (and not to use flash). iPad optimized sites are really just crappy mobile sites made larger, instead of the real deal done right.

Zittrain Misses the Point

Via slashdot, directly quoted:

Harvard Law School Prof Jonathan Zittrain explains in The Personal Computer is Dead why you should be afraid — very afraid — of the snowballing replicability of the App Store Model. 'If we allow ourselves to be lulled into satisfaction with walled gardens,' warns Zittrain, 'we'll miss out on innovations to which the gardeners object, and we'll set ourselves up for censorship of code and content that was previously impossible. We need some angry nerds.'


Zittrain completely misses the point. The open PC model works great for us programmers and geeks, but not for the 99.9% of computer users. This maximum majority has lived with Windows computers filled with crapware, malware posing as virus scanners, the terror of a single click giving up all their data to some hacker in Estonia, and having to rely on the neighborhood nerd to fix things, and they hate it. Absolutely despise it. The post-PC walled garden is perfect for them. They want email and internet and to use it without fear, risk and hassle. Which is why they are replacing PCs with iPads, iPhones and X-Boxes.

You are not your customer, Prof Zittrain.