Saturday, January 29, 2011

Baltimore As a Bootstrapping Paradise

A few months ago I wrote a Startup Baltimore post called Baltimore's Startup Ecosystem. It's almost passe to use the phrase "startup ecosystem" but I didn't know it at the time. I was trying to honestly enumerate the advantages and disadvantages to starting a business here, something I'm now confronting directly with my own venture.
Baltimore’s biggest advantage for entrepreneurs is simply that it is a city, and one of the few places on the East Coast where risk-takers and bootstrappers can afford to live. While it would be a mistake to waste time mimicking other innovation centers like Silicon Valley, it is worth pondering for a moment how a place like Baltimore could compete with a place like Silicon Valley, as described by the essayist Paul Graham (emphasis mine):
"For all its power, Silicon Valley has a great weakness: the paradise Shockley found in 1956 is now one giant parking lot. San Francisco and Berkeley are great, but they’re forty miles away. Silicon Valley proper is soul-crushing suburban sprawl. It has fabulous weather, which makes it significantly better than the soul-crushing sprawl of most other American cities. But a competitor that managed to avoid sprawl would have real leverage. All a city needs is to be the kind of place the next traitorous eight look at and say 'I want to stay here,' and that would be enough to get the chain reaction started."
Read the whole article here.

Wednesday, January 26, 2011

Power-user replacements for OS X apps

I've noticed that the longer I use OS X the more replacements I'm finding for Apple's built-in applications. Apple focuses heavily on design and aesthetics, which means their apps often lack power-user features. Here's my list:

  • Safari: replaced by Chrome which feels snappier to me; also keeping each tab in its own process means this browser crashes/hangs far less than any others I've used
  • MobileMe: replaced by iDisk with Dropbox and contact syncing using Google Contacts (which can be synced via a setting in the OS X address book). I also sync calendars between my phone and desktop using Google Sync.
  • Time Machine: replaced with CrashPlan - backs up my data to the cloud and to a local hard drive, and lets me back up multiple drives; I find the UI much easier to deal with than Time Machine which tries too hard too look cool. I used to use JungleDisk but the S3 storage got to be expensive. CrashPlan
    is pretty cheap.
  • Date/Time menubar widget: iStat Menus has a super sweet, very customizable clock widget. I like being able to get a quick look at a calendar while I'm in other apps.
  • Stickies: Replaced by Evernote so I always have my notes ready across all devices. Jehan Alvani suggests Yojimbo.
  • TextEdit: Jehan suggests replacing it with TextWrangler or BBEdit.
  • iCal: Replaced by a Fluid single-site browser running Google Calendar
  • Mail: Replaced by Mailplane; same concept as my iCal replacement but Mailplane gives you some nice OS X integrations with Gmail as well as the ability to switch between gmail accounts. Mark Sim suggested Postbox.
  • Spaces: Mark also suggests replacing this with Hyperspaces which looks really cool. I've never been able to get into using Spaces and this might be why.
  • Terminal: Replaced by Iterm2. It has many nice features but being able to use apple-number keys to switch tabs is killer.
  • iTunes: Partially replaced by Pandora. I hardly ever listen to songs in my collection anymore.
  • iChat: I haven't tried it yet, but many people told me via Twitter that Adium is a very good replacement
  • QuickTime: Chris Ensey suggests VLC as a replacement (probably because it handles more formats)
  • Apple-Tab: Kyle Oba suggested Witch as a replacement; I'll be checking this out for sure.
  • Keychain: I keep everything sensitive in 1Password which syncs pretty decently via Dropbox. Avdi Grimm and Ben Hamill both swear by LastPass which looks much more cloud-oriented, so if I didn't have so much data in 1Password already I would definitely try them out.
  • Preview: Paul Capestany recommends Skim for reading PDFs and ebooks and taking notes.
Here are a couple of other apps I use that replace or enhance features of OS X itself:
  • SizeUp: for moving windows around rapidly
  • Alfred: super powerful way to do web searches, launch applications, and do simple calculations

UPDATE: follow some further discussion over at Hacker News

Friday, January 21, 2011

The best thing you can do to support tech in your city... to make tech in your city.  Success begets success.  I think in Baltimore we're doing a great job of burnishing our brand as an exciting place to work with technology, but nothing will help our reputation more than increasing the number of successful technology product companies and practitioners who reside here.

That's why in 2011 you'll see me focus my organizing and advocacy efforts around events and activities that involve making technology or funding technology development in Maryland:

  • I'll be attending the InvestMaryland summit in Annapolis next week
  • I'm teaming up with Monica Beeman and others to plan Startup City (a Baltimore version of successful investment-mentorship programs like Techstars and Y-Combinator)
  • I'm helping organize Startup Weekend in the Spring
  • I helped organize the Baltimore Hackathon last fall, which will come back again sometime this year
  • I'd like to start a salon-style event called "Secret Software Society", styled after New York's Secret Science Society, where we have interesting cross-language and cross-platform talks about building software given by people working at product companies, especially people we don't often hear from on the tech scene.
  • I'm starting a new product company that I hope will grow into an exemplar, an employer, a responsible member of the community, and a supporter of existing tech events and organizations as well as new initiatives yet to be planned!

I call this strategy "Bias for Action": now that Baltimore's technologists and entrepreneurs have a variety of ways to connect, I want to focus on projects that directly lead to them taking action!

Thursday, January 20, 2011

How To Recruit Developers and Technical Cofounders

I forgot to cross post a couple of posts from the Startup Baltimore blog.  In "Finding a Technical Cofounder" I answered a question I get asked all the time: how do I find a developer to work with my startup?  My typical answer is excerpted below, but since I wrote this I have added a pithy but accurate preface: "You make friends with a bunch of developers two years ago using real-world networking as well as social media tools".  As Dave Troy put it: "In Entrepreneurial Ecosystems, Cofounders Find You!"

  1. Know who you are looking for: Sometimes people start off by saying “I need to find a Rails person” – they’ve heard Ruby on Rails is a great framework for building web products, so they’ve pre-decided to use it.  But in my limited experience, the tools that get used in your business tend to be the ones favored by the first hire or by the technical cofounder.  I’m not saying you should take such decisions lightly or by default, but I’m encouraging you to focus on the cofounder’s personal attributes and not their preferred tools.  The right person can learn whatever tools are needed on the fly.  You are not looking for a Rails guy or a .NET girl or a Pythonista: you are looking for someone who writes good code but is also versatile, hard-working, and self-directed, who listens well and communicates effectively.
  2. Go where the software people are. Sounds obvious, right?  But if you just do this one tip you will be way ahead of most other people.  In Baltimore, I’d start by working at the Beehive coworking space, attending some Bmore on Rails events, searching for other technically-themed meetups, visiting the Node, and getting involved with Betascape.  Of course here at Startup Baltimore we have the Startup Breakfasts but I’m not sure how many programmers you’ll find there (it’s still a great way to network with kindred entrepreneurial spirits).
  3. Start an event or project. Baltimore’s startup community has plenty of room for new leaders.  You can attract technical talent simply by being known as an outstanding, generous, helpful business person.  There’s still tons of work to do in building up a robust environment for Internet companies here.  For some ideas, see these lists of projects that I’d like to see someone taken on.
  4. Get involved in social media. You want to scale up your search to form as many friendships with software people as possible.  There are a ton of programmers in this region and a lot of them are toiling away outside of the communities I highlighted in #2.  They won’t even hear about your efforts with #3.  But some of them are on Twitter and other platforms.  Right now you could sign up for a Twitter account and search for every person in MD, DC, VA, and DE who has the words “software” or “programmer” or “hacker” in their bio. You could start a blog all about your idea and the struggle to bring it to fruition.  You might not get a lot of notice right away but over time this will cause hundreds of potential partners to get to know you.
  5. Get started on a prototype anyway. Even if you meet a qualified, available person, you will have a hard time convincing them to drop everything to work with you.  The best way to prove that you are for real and that your idea has legs is to get started now!  You could hire someone overseas via Elance. You could find a local freelancer to build something super simple via Craigslist.  All you really need is a URL you can give to potential cofounders to check out the kernel of your idea! Read Derek Sivers’ advice on how to do this effectively.
  6. Have you thought about building it yourself? One of the most bad-ass entrepreneurs in Baltimore is Scott Messinger. He quit his job as a Baltimore City school teacher to create his company,Common Curriculum.  He’s not a programmer by trade, but instead of waiting around for a cofounder to appear, he taught himself Ruby, Rails, and MongoDB!  Eventually if he does need to hire a programmer to help he’s going to know EXACTLY what to look for.

Monday, January 17, 2011

Solo Founder Startup Wisdom

Several friends have asked about what the company I am starting will do.  I don't know yet.  I am actively exploring a few interesting ideas, though if I've learned one thing from startup literature, it's that the initial idea counts for very little.  I'm having fun searching for a problem that intrigues me, that I could imagine being passionate about solving, and that has the potential to grow into a financially-sustainable opportunity.

It's all complicated by the fact that I'm a solo founder. I don't have a business partner with whom to vet these ideas. I'm lucky to have encountered a few inspiring blogs and people to be my lodestars:

I hope this list helps others considering this path!

Thursday, January 13, 2011

I'm Starting a New Company, Improv Style

When people hear that I teach and perform improv theater, they often ask about the practical benefits of improv.  Different people take improv training for different reasons, but the improv lesson that's
helping me most as a software entrepreneur is the aphorism "Leap and the net will appear": if you stand on the sidelines during an improv scene, waiting for your scene partners to create an opportunity, or waiting for some brilliant premise to appear in your mind, you will fail.  Good things only come from taking risks, from opportunities you create for yourself.

In this light, I have decided to reduce the time I spend working on OtherInbox, which I cofounded three years ago, to build new products that may lead to new companies based here in Baltimore.  I was the
only remote developer working on OtherInbox, which is based in Austin, and as the local team gelled and our application became more complex, it seemed like a good time for me to try something new.  I'll still be involved in developing and maintaining OtherInbox code, but I'm now actively searching for other interesting problems to work on, problems I can solve from my home here in Baltimore.  It's time for me to practice what I preach here on this blog and what I teach to improv students.

I'm really proud of what the OtherInbox team has accomplished and I'm psyched to see what 2011 has in store -- if you're looking for a web development job in Austin you should definitely check our company out!

Speaking of taking big risks, my friend Josh Baer took a huge risk on me by inviting me to start OtherInbox with him.   Although we knew each other in college, I was very green and untested at the time as a professional developer.  I'm forever grateful for what I've learned firsthand from Josh about building a company and a software product from scratch, and for the chance I've had to build my reputation by blogging and presenting about the technology we use.

If you are experiencing some kind of life aggravation that you think could be solved with software, I'd love to talk to you!  No aggravation is too big or too little!  Email me at

Monday, January 3, 2011

Building a Native iPhone App with Phonegap, jQuery Mobile, HTML5, and CloudFront

I recently shipped my first iPhone app, a humble affair that lets you play stories recorded at the storytelling series that my wife runs.  It's humble in the sense that we did not spend a huge amount of time designing it, not being sure what the demand for the app would be like.  I was inspired by the very excellent This American Life mobile app.

It was a great opportunity to experiment with a project I've been eyeing for a while:
Not all of these technologies are fully-baked, or at least they haven't been around long enough to play together completely seamlessly, and I think it shows in the final app (it has some glitches).  I'm sure with more time I could have made it tighter, but it seems to work pretty well.

Phonegap lets you build native smartphone applications using browser-based technologies like HTML, CSS, and JavaScript.  That means the same app (more or less) that you build for the iPhone will work across platforms, and you don't have to mess with Java or Objective-C unless you're doing something more hard-core.

I found PhoneGap pretty easy to work with, except I hadn't used Xcode before, so I spent a while learning Xcode conventions before I could get totally up and running.  The latest release of PhoneGap seems to be easier to setup.

My only complaint: the app is noticeably slower when built natively with PhoneGap when compared to running my code inside of mobile safari, in a regular browser window.  I'm not sure what that's about - you'd think the opposite would be true.  I'm sure this will get better over time.

PhoneGap just gives you a browser window; unless you want to build up your own UI elements you need some kind of framework.  I originally used JQTouch (JQT) after watching this excellent PeepCode screencast, but the latest version of JQT was not working with the latest version of Mobile Safari in iOS 4, so I switched to a recently-announced project still in alpha testing, jQuery Mobile.

jQuery Mobile builds (naturally) on jQuery and gives you a bunch of nice UI behaviors that you'd expect from a mobile app, like page transitions, lists, swiping, etc.  There's a pretty awesome demo.  This was the bedrock of The Stoop app and saved me a ton of work.

HTML5 Media Elements make it much easier to deliver audio to the browser.  The Stoop app uses the audio tag, and I found the JavaScript API, including events, very useful.

HTTP Streaming: The first version of the app was rejected by Apple because some audio files were longer than ten minutes.  iPhone app store guidelines say you have to use Apple's HTTP streaming protocol in this case.  It turned out to be really straightforward to use the provided Apple-provided mediafilesegmenter to split our MP3s into 10-second chunks.  A few files were over 64kbps so I downsampled them with ffmpeg and LAME (the guidelines also require you to offer at least one stream at that bitrate).

CloudFront: I'm trying as much as possible to get out of the business of running servers when there are cloud services that can do it better.  There's no good reason for an app like this to need its own custom server dishing out static audio files, so I uploaded all the segmented files to Amazon S3, then setup a CloudFront CDN distribution.  Whenever you listen to a Stoop story, it's coming from an Amazon CDN node.  This was very easy to setup. I'm experimenting with s3stat as a way to get listening statistics.