Category Archives: Business

An Update…

Weird work is hard.

Internally, SiftFu has been undergoing several rounds of failed builds. Each time that I believed I had the technical issues pretty much under control, something would just not work.

My intention here is merely to clarify a situation that would otherwise be open to a whole host of misinterpretations. SiftFu was never an abandoned piece of software – the long period of radio silence was a reflection of total uncertainty as to where or when it would be acceptable to claim release quality, and a desire to avoid the mistakes of Fall 2012, during which several unacceptably bad (minimum way-below-viable not-really-product) releases served purely to damage morale. This is not a case of seeking perfection either – the app has legitimately failed so far to reach basic, privacy-safe usability.

I have learned a great deal from this experience, and it’s not over. I have roughly until summer to produce a working app. At that point the next plan kicks in. I am returning to the study of physics. I plan to document more thoroughly the myriad lessons I’ve learned from New York to Edinburgh to Santiago and back. That said, this post deserves at least a short treatment of a few of the things that I’ve done and seen, and why they lead me where I claim that I’m going.

File:Power Mac G3 B&W.jpg

My latest piece of Apple hardware. It will run SimAnt and some versions of Microsoft Word that came out in the 90s.

I too often start from the abstract, so here I will start with examples. I don’t own any device that runs iOS, or any Macintosh hardware save the old G3 I’m finally about to throw out. I have to push myself to use Twitter – my Twitter feed is honestly pretty useless to me, as it’s full of exactly the sort of vaguely technical easy reading that I’m not supped to let distract me from work and find mostly uninspiring anyway. I love Facebook, but I think it reached my own personal usability peak around 2009 – when they turned all the interests and likes and stuff into brand logos, I felt they had just added their first major antifeature, which might have been justified if it gave them enough revenue. I still update my LiveJournal. I like the long text format and friends-lock capability, which encourage deep, original, personal writing.

File:Angry Birds Land Särkänniemi 11.jpg

Remember when SimCity 2000 came out and was all 3D and modern-looking? These days I have no idea.

I would have trouble starting anything like Twitter, or Tweetdeck, or Angry Birds, Groupon, etc. The ideas would never occur to me, because I don’t use software that way, or for those things. I don’t know if I will ever use an iPhone. The aesthetic is not mine. I cannot deny, though, that this is where the tech industry is headed.

In other words, I am a weirdo. My ideas are weird. SiftFu is weird. This can be a good thing – SiftFu’s video “launch” received some amazingly positive feedback, and I believe that it tapped into a sentiment that is just below the surface of common understanding. It can be a bad thing – some people never understand what I’m working on, because it only makes sense if you can relate to this quirky notion of “relevance” that I am slowly trying to invent. Weird work is hard. Sometimes I wonder if I should have built something more typical. The only problem is that being weird, I don’t find that stuff necessarily any easier. The hard things are easier for me, and the easy things too often too hard.

File:Simple pendulum height.svg

I prefer the quantum version of this thing. Not that the quantum Hamiltonian is necessarily any easier to solve, but I find it more emotionally satisfying. Note: all images so far are public domain.

It’s not a loss, though, as long as I learn to use this as a comparative advantage. I saw the same pattern in physics. Classical mechanics in freshman year was the most difficult transition. About halfway through electrodynamics, things were starting to make sense. Quantum was not only extraordinarily exciting, it felt good. Quantum is weird. That’s why I love it. Then I skipped some prerequisites and jumped straight into field theory and lattice quantum chromodynamics. I want to one day lead weird projects. Quantum computing. Biomaterials. 4th and 5th phases of matter. Kinks in space and time.

Anything worth leading should be worth following. I will try again with SiftFu this spring, despite the unromantic and banal nature of the next tasks. I don’t have proof that it will work in the market, but I have signs. That’s enough for the level of risk I’m about to accept. After that, the industry might not be headed where I want to be. That’s okay. I will do great work in academia, and as I become ready, I will bring the awesomeness of weird work to the rest of the world.

File:Swarthmore Amphitheatre Spring2.jpg

Swarthmore Amphitheatre. From http://en.wikipedia.org/wiki/File:Swarthmore_Amphitheatre_Spring2.jpg. Released under CC-BY-SA by Runneryoshi105. This is a great place to do weird work.

If you’ve read closely, you’ve probably noticed a loose end. Maybe more than one. I have an RSS feed somewhere on this blog if you’re interested in the next chapters.

SiftFu in Preparation for Launch

SiftFu, the content awareness engine for the real-time web, is nearly ready for launch.  Sign up for beta access if you so please, and watch our intro video!

This is the site I motivated, described and previewed in past blog posts.  I’d describe it here, but I think you’ll do better to watch the video and see the site:

Stepping Backwards in Real Time

Think about the early 90s, late 80s, pretty much any time between the beginning of Compuserve and that of Google.  You’d log on through what was probably AOL and find content waiting for you – their content.  The walled garden systems of old assumed that your ISP knew what kind of content you should consume.  They taxonomized services according to the categories they knew and billed by the hour for what they provided.

It took a while for the idea of a free, open pipe to the rest of everything to catch on.  I was late to the Internet and aren’t sure when.  Probably somewhere between the fall of AOL and the rise of search over the web directory (another kind of walled garden in its own sense), people naturally gravitated towards entering a term they made up into a search box to scan for relevant content.  No more trying to self-pigeonhole into the established taxonomy.  Finding what you want became a game of querying and adjusting, figuring out the best way to tell the Internet what you wanted.

There were probably many reasons why this happened, but I’m going to assume that the content was just better.  Not necessarily because it was objectively better (though PageRank probably helped that too), but because a prebuilt taxonomy has some natural limits to its capacity to capture the interests and wants of human beings.  If your interests happened to lie perpendicular to the web directory taxonomy, chances are you’d find results that were maybe 10% or 20% relevant in a related category – but you’d not only be sifting through tons of irrelevant junk, but you’d miss out on everything the curator didn’t specifically decide to put into a category barely relevant to your own.  So if you happened to like, say, Kabuki theater, you’d probably peruse the theater section for anything relevant and be lucky to find an article or two that you really wanted.  On a search engine, however, you could specify exactly what you should get and know that the voracious Googlebot would have crawled nearly every accessible page.

So problem solved, right?  We have Google, Bing, Yahoo, DuckDuckGo… plenty of ways to search.  Old news.

Old news – that’s exactly the problem.  Search is built on the same assumption as browsing – that you’re the one moving around, and the content is going to sit and wait to be found.  So we can search, but when the content stops being perennially valuable, those results are probably stale before we see them.

Now think about what tabs you have open.  I can tell you mine.  Facebook, Twitter, HackerNews, Gmail, 7 Youtube videos (mostly music), a couple Wikipedia pages that I checked before I wrote this, a map, and a Google search.  The Wikipedia pages do their jobs as well as could be expected – I have something I need to look up, and I can find it.  Youtube I’m sort of misusing as a lazy man’s Spotify/Pandora hybrid, but that’s a whole other issue.

My concern is with the feeds – the 4 tabs of news and social media I’m constantly refreshing, plus the 10 or so blogs/webcomics that I generally close and re-open.  I find 3 articles that look interesting on HackerNews.  One of them is relevant to one of my interests (startup fundraising) but not very useful.  Another is emotional linkbait that might’ve been interesting to know, but probably isn’t important to what I’m doing.  The 3rd… same deal.  The rest of the pool are clearly a mix of technical and newsworthy topics that I don’t have any particular interest in.  So not only am I sifting through 30 articles that are mostly, obviously irrelevant, but the fact that I can’t through headlines means I’m bound to get halfway through a post before I really know what it’s about.  Facebook and Twitter are much worse – while HN is probably about 10% relevant on average, the social networks are showing random selections of content taken from people I friended/followed because… we’re friends.  I have 8 “outstanding” requests for games I don’t want to play, the stereotypical cat and baby pictures, a couple checkins to bars in cities I don’t live in, and maybe somewhere in there an event I actually wanted to go to but might not even see.  In theory, I could pick the people I want to hear from by carefully managing subscriptions – but not the topic or quality of their posts.

Furthermore, these updating media represent 4-10 tabs in my normal browsing.  There is no unified way to all the new stuff about Scala (a programming language in which I’ve had recent interest).  I could maybe hand-aggregate a bunch of the blogs and news sites on that particular topic, spending hours on aggregration that could be machine-driven and missing sources I just don’t have the time to find, and then plug them into Google reader.  And what if the topic is more specific or obscure – what if I’m really only interested Scala for a particular feature (such as parallel collections) and don’t really care about all the theoretical debates on programming style?  My RSS feed would be full of crap.

I could of course try to Google the subject.  This takes me back to that static web – I get 3 relevant results on the 1st page – the official website for the language, the Wikipedia page, and the site for the popular Lift web framework.  All of these I’ve read before – generally to the point of boredom.

Then there are Google News Alerts – alternatively trap.it or DailyPerfect.  These work pretty well for finding the news.  I just don’t always want “the news,” which seems to have narrowly become defined as content published by a certain collection of media and journalism outlets.  I want blog posts.  I want Tweets linking to them, interesting new discussions on forums, and release notes when they appear.  And I want this content searched and organized – don’t give me 10 articles on MongoDB scalability because the RSS reader’s regex filter found “scala” embedded in “scalable,” and don’t make me handpick 50 feeds that might have relevance when there are 10,000 of them out there on the web.

There’s a tradeoff.  Freshness, relevance, or automation: pick 2.

The post-2.0 web, that of updates and user-generated content, hasn’t yet caught on to this notion of an open Internet.  We are still in the world of privately walled gardens – Twitter, Facebook, Google+, Bloomberg News, Github, CNN… each with its own content stream, separate from and frequently incompatible with everyone else’s.

We (finally) have basic search on each of these streams, individually.  I can look for hashtags or keywords on Twitter, or on Google+/Sparks.

We have real-time search: Topsy, Greplin, etc. – pick your provider really.  But search isn’t quite right – again, it’s based on this idea that my interest in what I’m looking for lasts for the hopefully-less-than-a-minute span between when I realized I had to look it up and when I found it.  That’s not what I’m trying to do when I “search” Twitter.

What we need is an analog to how search is a portal.  When I go on the internet with a new interest, search gives me a best-case-scenario way of saying what I want and getting it – that’s why it initially beats the crap out of categorized directories.  It’s like somebody is making up a category on the spot, and that category corresponds to precisely what I am hoping to find.

We need to do that totally personalized category thing, but turn it around.  The web no longer sits and waits to be discovered – it happens.  I’m the one waiting.  I want to know when that super-insightful blog entry tells me exactly how to hack Scala 10x better, or when my friend 2 blocks away checks in to that cool jazz bar I’ve been meaning to investigate.  I don’t want to “search” for this information, because it would get tedious – imagine keeping a list of 10 Google searches to make every hour just to know what’s happening.

So instead of searching for new/momentary interests across the web of pages that rarely change, I have relatively constant interests and want to receive news based on them.  So just flip things around.  I enter a “search.”  I leave it.  Items accrue to that search as they happen.  I check back in 5 seconds, 5 hours… 5 days – it shouldn’t matter.  I’ll rely on the system to keep track for me.  It should know what I’ve seen, what I’ve missed, what I want and what I care about.  And when I check again, it should present it like a secretary.

Does this exist?  Can it?  It’s trying to sometimes.  It’s close.  But I while I don’t think it does yet, I think it most eminently can.

I don’t know how much we’re missing out on due to the non-existence of software that does what I just described.  Maybe it’s merely an additional feature on top of the growing notion of “aggregation” – a fusion of Tweetdeck, RSS, and Greplin.  But maybe there’s something more here.  Maybe we are missing not just a few pieces of Internet, but a substantial fraction of the entire thing.  Maybe we have all grown accustomed to consuming that which is 10% relevant, because we’ve never known anything else.

Neophilia vs. Doing Things the Easy Way

When I first started working on Fear of Software, I had enough burnout/business instinct to realize that using fancy new tech wasn’t going to be the deciding factor in the fate of the company… so I decided to start immediate and fruitful prototyping by coding things in a venerable language called Java and then hack-deploying over the wonderfully obsolete method known as Java Applets.   These were little Java programs you could stick into a web page, and they’d have access to the same Java as programs that you need to download and install… in theory.  When I’d first used Java years ago, applets were a mess.  When I started Fear of Software, they’d hardly changed at all.  I also knew that Java would cost me some productivity in terms of being an old fussy programming language, but the support for what I was trying to do seemed to make up for it.

About 2 months later and with almost nothing to show, I decided to port everything into Scheme, an even-more-venerable language that had aged relatively gracefully and was always known for its elegance and appeal to the mathematically minded.  Another few weeks went down the drain, and I was back to Java.

More months, some wasted, others burned.  Finally came the prototype release day, at which point I’d switched over to a special tool called Google Web Toolkit that could turn my outdated Java into a modernish webapp.  Painfully, a release came out.  We got feedback, learned lessons and gathered up what was left of us to restructure.

Of course we switched languages yet again.  This time to Scala, an up-and-coming programming language that appealed to serious hackers and some semi-famous corporations, like Foursquare and Novell.  This was the first time that I felt a programming language actually make a difference.  I get the feeling that the Lift web framework built about 60% of our app for us.  All sorts of things that could have taken hours of learning and doing actually turn out to be included in the framework itself, and they are fast, secure and frighteningly convenient.  I wish I’d known this last year.

Yes, you should avoid neophilia and getting wrapped up in technology, but getting better tech is like night and day when your company runs on it.  It will make your life easier.  It could mean the difference between trying to explain your idea and having a demo.

Lessons learned:

  • Market is still first… don’t obsess over platform.  Use mockups and videos whenever you can, and don’t be afraid to shelve code and make mockups one or two months in… this will save you the other five months you could have spent chasing sunk time.
  • Using a crappy platform really does screw over your business.  If you don’t know what a crappy platform is, ask someone who does.
  • When you do choose a platform, spend about a day researching what you think your project is most likely to use, and then choose a good platform that offers the most of that.  Don’t get caught up in language popularity contests or hipness – you want to be ahead, not with the pack.  Think about the coming months but recognize that requirements change.  When in doubt, choose the fanciest and best technology you can get for free and then get back to worrying about your market.

Cognitive Dissonance in Project Setbacks

Certain kinds of projects, be them the software engineer’s Mythical Man Month or the impressively delayed Sydney Opera House (as mentioned in The Black Swan), violate all typical intuition about effort and its relationship to rate of completion.  In software companies especially, once a project has delayed a few of times, it will almost inevitably delay again, sometimes to the point of never finishing (see the story of Duke Nukem Forever for an extreme case).  Numerous theorists and observers have tried to explain the perpetual project, be it as a spectre of the information age or a natural extension of chaos in overly complex systems.

I propose there is at least one simpler mechanic at play: cognitive dissonance.

When a project delays and then continues past its intended deadline, morale probably takes a huge hit.  The team will inevitably feel they have screwed up, even if management does its best to assure them that the failure will be corrected.  The original prize, the dream of all weeks past, is already lost.  The incentive structure is now centered around damage control and avoiding blame – this alone presents a significant challenge.

By telling a team to continue after a missed deadline, management implicitly sends the message that such delays are a standard part of the company’s functioning.  The effect compounds after multiple reschedulings as each one reduces the weight of the next.  I saw this in school, where students who failed to graduate the first time around tended to hang around for several years after, despite the rather trivial nature of what was technically left for them to finish.

I don’t have volumes of data or experience on which to confirm this hypothesis, but I can make a testable prediction: pressing deadlines earlier may actually increase the average time it takes to get things done. Conversely, setting realistic deadlines may actually speed up progress holistically, even in areas unrelated to those particular deadlines, as it creates a culture of closure rather than of protracted struggle.  These principles should apply to life as well as business if they hold correct.  Maybe the secret to speeding up is trying to slow down.