Not so much content here anymore

Apparently it’s been four years since I’ve posted anything in the tech section of this site. Over the past several years my job has involved a lot of technical writing from 9-5, so I haven’t been as enthused to do more in my free time.

Perhaps I will find a new source of personal technical writing and commentary at some point, but these days I am more interested in talking about my literary writing, photography, and budding art interests.

Product Management and Introducing New Features

I was recently watching episode 543 of This Week in Startups with Des Traynor of Intercom discussing product management.  It's worth watching for those interested in that sort of thing, and I'd also recommend watching his other appearance on This Week in Startups in episode 510

I agree with most of what he says, but I'm not sure about his thoughts on introducing new product features.  Around 48 minutes into the talk he explains that it's not a good idea to email users with a lot of information about minor new features because they won't care and will dismiss the email without giving the features much thought.  This is because they are not in the mindset of using your product, so unless the new feature is truly revolutionary it just won't matter to most people in that moment.

Instead, he recommends that you introduce new features when the user returns to the product.  A lot of web sites and apps take this approach, but I'm not sure it's actually effective.  Often when I am using a product, I have a specific goal in mind.

Before writing this update I had to log in to and download a business file.  When I logged in, Box presented me with a screen takeover offering to guide me through their new file preview features.  I actually am interested in the Box file preview features, but not right now.  I just wanted to download the file, so I quickly dismissed the tutorial.  That's a loss for both Box and myself, because they lost the opportunity to explain their new feature to me, and now I won't know about a piece of functionality that I do care about.  I just didn't care in that moment because I was trying to get work done.

Atlassian tries to overcome this in their JIRA product by having the new features window pop up every time you log in, until you tell it not to do that any more.  But I still find this a bit obtrusive and I tend to get in the habit of just clicking dismiss without ever thinking about whether I might want this information.

A more successful strategy in my mind would be to have an unobtrusive, but obvious, call to action on the screen letting me know something has changed.  Perhaps a notification in my inbox.  Or a graphical icon on the screen inviting me to click for information on new features.  The key is recognizing that your users are using your product to accomplish whatever it is your product helps them accomplish.  While they do care about product improvements, much of the time they may be coming to your product with a very specific task in mind and limited time to accomplish it.  Let them know that something new is available, but don't assume they can take the time right now to learn about it.

Learning iOS App Development, The Other Kind of Object Oriented Programming

I have an idea for an iOS app, so I have been taking Paul Hegarty's excellent Stanford course on iOS development (now with Swift!).  I really enjoy the class and the material is presented at exactly the level I'm looking for.  The material isn't difficult to follow, but I do find myself having to make some mental translations for some of the terminology.  It occurred to me that this is my first exposure to the "other kind of object oriented programming".

I have never used Objective-C and this is my first time using Swift.  I have plenty of object oriented programming experience, but it has been with C++, Java, Python, Perl, and the like.  Objective-C (and Swift) are quite different.

Object oriented programming concepts date back to the Simula programming language, developed in the late 1960's.  C++ was the arguably the first language to bring OOP to mainstream commercial success in the 1980's.  Many languages that came after, such as Java, Python, and Ruby, while technically distinct from C++, take a lot of terminology and what I'd call their "philosophical approach" to object oriented design from C++.  Java gets rid of multiple inheritance and has automatic memory management.  But fundamentally it maintains the structure of classes, methods, interfaces, etc.

The NeXT, and now Apple, development environment has a different lineage.  Objective-C is an object oriented language and still builds on the work done in developing Simula, but it feels more like Smalltalk than C++.  While Objective-C and Swift have classes and methods, the terminology is more focused on message passing than method calls.  Instead of interfaces or abstract classes, Objective-C and Swift have protocols.

It's easy enough to make the translation in my head, but it's striking to come face to face with an entirely different evolutionary branch of object oriented programming languages.  In 1998, Alan Kay, OOP pioneer and the inventor of Smalltalk, wrote that he felt that messaging was the most important takeaway from object oriented programming and that that the focus on classes was missing the point.  So the argument could be made that the Objective-C line of evolution is more pure to the original intent of OOP.  But it feels foreign to someone used to the C++ evolutionary branch.

I'm just getting started with Swift, so it's too early to have strong opinions about the language.  I wonder about the lack of namespacing, but I haven't gotten that far in the book yet.  So far I'm enjoying the opportunity to learn something new and different.

How is re/code so clueless about startup financing?

A colleague of mine shared the re/code story Here’s One Thing All the Billion-Dollar Unicorns Have in Common.  The title intrigued me, so I read the article.  My takeaway after reading?  It's ponderous how little the writer seems to understand about startup financing or venture capital.

The premise of the article is apparently that it's not surprising for companies to be able to raise money at valuations north of a billion dollars because venture capital rounds include liquidation preference clauses which mean the investors get to have the first money out and have a preferential position should the company be dissolved.

The author states,

What that ultimately means is that the investors are taking on a very little risk when investing in unicorns, because they stand almost no risk of losing their money if the company goes south.

Unfortunately, nothing about that statement is true.  While it's true that liquidation preference makes the venture investment preferred shares senior to common shares, they are still subordinate to debt.  And in the event of the company "going south", it's doubtful the assets would be worth much in a fire sale or bankruptcy.

It should also be noted that liquidation preference clauses in venture investments are nothing new and not particularly uncommon.  They are also not limited to companies with high valuations.  Brad Feld wrote a good article on the topic back in 2005.

It's strange that re/code, a publication focused on the technology industry that reports heavily on startups, has so little understanding of how startup finance works.

Thinking About Starting a Podcast

I have been thinking for a while that I'd like to start a tech podcast focused on "big data".  While I somewhat hate the "big data" buzzword, I don't know of a better term and I don't want to specify a particular technology stack, such as Hadoop, because I want to be as inclusive as possible.

The ecosystem around Hadoop, Spark, search technologies, and the like is extremely dynamic and it seems that every week there is a significant new project or significant development in an existing project.  I haven't found any existing podcasts that fill this particular niche except for All Things Hadoop which has great content but is too intermittent for my taste.

I don't think I would have any problem finding material to fill a weekly, semi-weekly, or monthly podcast but I don't know if I would be able to find the time and I think it's important to be consistent in producing that sort of content.  I would probably want at least one cohost but since I work at Cloudera I imagine I could find a colleague willing to join the project.

The other potential challenge would be in reconciling this personal production with my day job.  I wouldn't want the podcast to be an advertisement for Cloudera but I'm not sure how I would address coverage of potentially competing products and companies.  My hunch is that it won't be that much of an issue since most of the core technologies are open source and the Cloudera ISV partner ecosystem includes all of the closed source commercial BI tools that I can think of.

Hopefully I'll find the time and energy to put something together to launch in 2015.