Tableside Open Source Collaboration

December is a good month to work on something serendipitous. We started a little experiment to sit a few random developers at a table to build something from scratch together. This wasn't anything big like a hackathon. We wanted to create a cozy (or as the Danish would say, hygge) space for people to get together to work on something fun. In the beginning of the month, I sent out this call for participation for a weekly hack night for December.

Meetup screenshot

To my delight, a couple developers actually came on the first day!

First Git commit with Julia and Mark

Julia, Mark, and I spent our first gathering hashing out the idea for 99issues.

99issues is a Github issues discovery web application for finding easy/newbie issues in your favourite languages for use during dojos or hack days.

One of the deliverables that we got done on the first day was this memes. Priorities!

99issues memes

It was like musical chair for the rest of the month. People came, gone, and returned. Usually we have 3 to 4 people around the table. For each session, one person that were here the previous week would induct the newcomers on what's happening.

As you can imagine, this is a project management challenge. One thing we did well was spent time up-front to discuss user needs, draft requirements, and document design choices. So everyone that came onboard subsequently are clear on the direction. We documented extensively on pen and paper and on Github issues. For each session, we break down work into doable-for-the-day chunks and made use of the usual open source collaboration Gitflow process. Nothing special here. Just divide and conquer.

Another hurdle for us that occurred early on is that as it's a general functional programming group, everyone have their own programming language of choice. Mark is into F#. Julia is into Haskell. Nandan is into Javascript. And RasmusErik is into Clojure.

Seeing that we didn't actually commit any code after the first session, I sneakily bootstrapped the project in ClojureScript and that was the end of story for this language war. (Thanks guys for putting up with my dictatorship!)

After a grand total of 3 hack nights (we skipped 23 Dec), we managed to get the project shipped with a bare scaffolding. We still need to work on the design and flush out the functionality. Pull requests are welcome! I had a lot of fun working side-by-side and getting to know these guys at the pub. We have different background but share a love for programming. I'm looking forward to doing this again next time I'm in town.

Coffee Chats with Founders Around the World

I have become a permanent nomad since this Spring and continued my habit of having coffee chats with startup founders. After traveling through 13 countries and speaking to dozens of founders, I found myself receiving lots of wisdom from many amazing people. My friend and mentor Martin suggested that I publish these gems of knowledge. Here are some of the distilled takeaways from a select few of my chats. I hope you find these excerpts useful in your own journey.

Thank you very much to everyone that has taken the time to chat with me!

Starting Up

People doing startups are not necessarily the best and brightest. They are people that can take a lot of risks.

Bradford Cross, CEO of Prismatic

Bradford talked about the Bay Area startup culture with me. My takeaway is that a solid engineering culture is a necessary condition for any great startups. I need to learn from the best. So where can I find the best cultures? While it is trendy to look at places like Airbnb or Uber, I should learn from established companies like Google and Facebook, which have had the time to develop their best practices from experience.

The way to distinguish people with empty ideas versus those with real ones is that those with real ideas have the problems themselves.

Diego Basch, Founder of IndexTank (acquired by LinkedIn)

Diego and I spoke for a couple hours about the right problems to solve and how to find them. There are two kinds of people to look for inspiration from:

  1. those that can build, and
  2. those that have needs but don't know how to build.

People in (1) can usually build what they need themselves. Our job as startup founders is to find (2). The farther away the problem from tech, the better. People in these industries have felt the pain and identified a problem to solve from experience. Look for people with at least a few years experience in an industry.

Be diligent and ask specific questions when reaching out for information interviews.

Martin Scholl, co-founder of an unannounced startup

I met up with Martin in Berlin, where he has started a handful of companies in the past 10 years. Currently, he's working on a tech startup for the art industry. I asked Martin where he gets his far-fetched but obvious in-hindsight inspirations from.

Talk to people outside of technology, he told me. Not only that, but he would spend days studying an expert's area of expertise before speaking to them. Research papers, academic books, and whatever material that he could get his hands on. Imagine putting in that amount of work for each outreach. That's why he said that I should not hesitate to spend an entire year just looking for the right problems to solve.

People think most of my ideas are ridiculous at first. What actually matters is: are your users loving it?

Tim Allison, CEO of Darling Dash

I visited Tim in his office in Copenhagen just weeks before they were launching their next product. Tim recalled the time of his launch of Cupple (acquired by Tenthbit, January 2013), when all the investors that he pitched to thought his idea was stupid. Who would want a social network for 2 people?! But he knew that there was something to it because his users loved it. He listened to them and executed his vision.

Team Building

Discover the strengths of people that you work with.

Paco Nathan, Director at O'Reilly Learning

Many years ago, Paco was on the management team at a company. There was a star engineer, who management pulled aside and gave him more responsibility to head some greenfield projects. He made no progress and Paco was tasked with firing him. He spoke to the guy and worked with him to discover that he was a finisher. Paco placed him as the go-to person in the data team, so PhD's would go ask him for help. The guy excelled and became the "most valuable player" there, then moved on to do great things.

We document all our communication and processes on Github.

Mårten Gustafson, Technical Director at Schibsted Media Platform

I find the vigorousness of Mårten's approach to improving their engineering processes fascinating. For example, he uses mind maps to illustrate the cost of software maintenance. He made me realize that the same level of critical thinking and data-driven feedback for businesses can be applied to evolve a company culture too.


Solve a need. Don't sell the implementation.

Mary Adams, Founder of Smarter Companies

Mary trains consultants on measuring intangible capital for enterprises. Mary's service was the most abstract business I'd ever heard of. One of my first questions to her was, How do you sell that?

She asked me to think in the shoes of her target customers. Suppose you are the CEO of a company like FedEx. And you're trying to raise money for your company. What are your company's assets? Machinery, people, properties? For FedEx, it's their logistics processes and operational knowledge. These are all intangible capital. Her value proposition is attaching numbers to abstract ideas, which is what her customers are doing in their heads anyway.

"Often the best sales are done when the clients don't even know the name of your product, and you focus the discussion entirely on the problems they have and how you can solve them.

Jeff Kaplan, Director of Multilateral and NGO at Socrata

Jeff showed me that good sales means doing hard work. Spend time researching your potential customer and think about what problems they might have. Given a typical 30-minute first appointment, you can save precious client time on the introductory What do you do? question and focus on What problems do you have? to establish a rapport with the potential customer as quickly as possible.

Running a server on Microsoft Azure: A UX report

Given the proliferation of open source cluster managers (for example, Mesos and Kubernetes) and PaaS software (for example, Deis and Dokku), the infrastructure layer is being abstracted further away from the application. The result is a cleaner separation between development and operation. The simplest example is probably Dokku. You install Dokku on a server, then git push to deploy your applications. That's it. Just as you would do on Heroku. There are no Puppet or Chef scripts to mess with to deploy your app. Given the freedom that these tools provide for less demanding deploy workflow, I've decided to try another Infrastructure as a Service.

I spinned up a Ubuntu 14.04 virtual machine on Azure, set up Dokku on it, and deployed my applications for a data privacy project. From account sign up to a running stack took less than an hour. There were no surprises, and the process was straightforward. Sign up for an account, then follow the instructions. Once you're in the portal, click on the giant New button to create a virtual machine. The UI itself guides you step-by-step through a horizontally expanding panel. Don't Make Me Think. I like it.

Azure new VM

I have to point out that the UI I'm showing is a preview for the next portal version. Compared to Azure's old UI, the improvements on both function and esthetics are evident. For example, in the old UI, they had a quick create for Ubuntu machines, but using that would mean you could only log in with a password. Which is bad practice. If you want to use an SSH key, you need to go through the detailed settings (screenshot below), which aren't apparent for a user to try. You can't use an RSA key either, and need to upload an X.509 certificate. The new UI has neither of those problems. There are a few small annoying quirks like that in the old UI. I would recommend anyone trying Azure for the first time to use the Preview Portal. You can opt-in at your Account menu on the top right.

Azure old VM

Once your VM is up and running, which took less than a minute for me, the instance view (back to the new portal preview) is informative and clean. Grab the SSH information from there to connect, and you're in. I'm impressed by the fact that information which I would want to see on each page is exactly where it should be. It's like Microsoft made the effort to think about the UX.

Azure VM information

Navigating to the Home dashboard, you can recognize Microsoft's signature Metro design. And guess what, billing information is right there! No need to jump to another part of the site like on AWS.

Azure dashboard

As much as I like the Azure management portal, in reality it might not be the best choice for many ops people. If you're an ops person spending most of your time on the web management console, then you're probably doing it wrong. For my use case of spinning up a server or two to host personal projects every now and then, the management UI is a convenient tool to have. Azure seems to beat AWS on the web design. However, if that's your use case, you probably don't need an IaaS and would get better value with a smaller provider like Linode or Digital Ocean.

I haven't had the chance to use Azure much yet. Anyway,the server is still up and running after a week. I haven't needed to tinker with it , which is a good thing. The obvious negative at the moment is that the free trial only lasts 30 days. Other than that, so far so good.

Posted 19 June 2015 in computing.

19:57 from Castro to Twin Peaks

I've been running from Castro Station to Twin Peaks almost every morning for a month. I started off at about 25 minutes and 30 seconds from bottom to top. Today on my last day here in San Francisco, I broke below the 20 minutes mark. It's a 2+ mile distance up 800 ft. Pretty proud of myself for making it in 20. Here's a step through of my run using Google StreetView.

The start at Philz Coffee.

Left turn onto Castro Street.

First right onto 19th Street.

Left onto Diamond St. First hill.

Right onto 20th. More hill.

Up these stairs. More to come ...

At the top of the stairs, go across the street and up these steps to run along the elevated sidewalk on the right of Douglass St.

Turn right onto Romain St. This is a steep hill. Go all the way to the end.

Up this spiral and cross Market St. with the pedestrian bridge. Continue on Romain St. on the other side until the end.

Make a left on Corbett Ave. and follow the curves.

Up Hopkins Ave. on your right, which is the steepest road on this run. I've been told the house at the bottom of Hopkins has had cars rammed into it twice.

Go left on Burnett Ave.

Up these stairs just around the bend on Burnett Ave. It's all stairs from now on ...

Keep going up, up, and up.

Once you've reached the end to Parkridge Dr., go right follow the left bend up the hill.

Get on these last set of stairs on your right.

Almost there! Take a right on Twin Peaks Blvd.

There's a plaque on the ledge there. That's my end of the run marker. Enjoy the view!

Posted 15 June 2015 in journal.

←   newer continue   →