The Cosmic Machine

Published on


Two undergrads trying out their luck.

The Cosmic Machine — as some of you might know, that used to be the company (technically, a Limited Liability Partnership) that made EventBox — a piece of social software for the Mac that was used by thousands of people.

Chris Emery and I were co-founders while Na Wong was responsible for anything that was graphics related — icons, web design, interface design, etc.

The Short History

We made EventBox. We worked hard, we had loads of fun, we learned a lot. It got acquired by Realmac Software. The end.

The (Undercover) Beginnings

Development of EventBox in its original form began around the beginning of 2008. The idea came from the fusion of two demo apps — one for Digg and another for Flickr. It became apparent that we were reinventing the wheel with each web service client, the only difference being the representation — the underlying architecture and code were very similar.

We decided it was worth trying to see if we could come up with something that worked for different types of services. It was supposed to be a small little project, just an experiment, in how far we could take things.

The time EventBox was developed in secrecy was almost as much as it was publicly available. We were progressing very fast in the beginning although we were going back and forth for quite a while, each time realising that we made some basic assumptions which turned out to be wrong. Our initial development process taught us a very important lesson — think before you start implementing.

We found that in a lot of cases we were thinking very narrowly. For example, if we needed some functionality, we would quickly come up with a solution, only to realise it is a subset of what was really needed. The more EventBox matured, the more generalisations we had in place and consequently, we had a better framework for providing end-user features.

After several months of work and countless hours spent in front of computers screens, it started to feel like our pet project was becoming too big and more important to me. It was no longer just “my free time” hobby anymore. Eventually, EventBox became my top priority bar none.

The Public Release

After a few months of constant work (7 days a week, from mornings till very late evenings), we started to feel tired. Being occupied every second of every day soon took its toll and slowed us down in many ways. You might be working upwards of 14 hours a day but you are not progressing as fast you might wish. Prolonged periods of exhaustion ultimately lead to lowered productivity even though you wanted to achieve the opposite.

What was even worse is that we could not see the end of the road. How long do we stay under cover and keep working? Every single day brought new features and improvements. Paradoxically, the more features we had, the more we needed to add (see featuritis). This is unsustainable in the long run and it had to stop but when?

After giving it a considerable amount of thought, we came to the conclusion that we need to slow down in terms of amount of features and focus more on their depth. Due to the nature of EventBox, the potential growth in terms of feature count is almost unbounded. Take any web service which provides an API. Implement it. We can keep doing this forever and we will never release anything.

We decided to release our app despite its known shortcomings. It had to be done sooner or later — there was no ideal timing, we will always have more things to add. So we released a beta on the 7th November 2008 (around ~18:00 BST).

Reactions to EventBox were, in general, very positive. We were happy with the results and kept improving on the base until about the end of May 2009.

The Big Rewrite

There was one feature request that was the most prevalent — support for multiple accounts. There is nothing hard about implementing multiple accounts, in general. So why didn’t we do it for so long? We made a huge mistake — our internal design handled the need for managing multiple accounts by switching accounts. This meant that you can never have two instances of Twitter — quite limiting for heavy social network users (our target). You might be wondering why we made that fundamental design mistake — there was no reason, it was just the lack of domain knowledge about our future users. We did not know or think that multiple accounts would be so important. Turns out we were very wrong.

As I was left to lead the core application development while Ralf Perpeet was leading the plugin / services side of things, we spent the whole summer of 2009 rewriting major parts, so that EventBox can elegantly handle multiple accounts. Ralf, who was responsible for plugin development, was working on adding support for FriendFeed and Tumblr and in fact, both FriendFeed and Tumblr were at 95% completion but unfortunately we never managed to release them. Along with support for multiple accounts, the underlying data model was rewritten to use Core Data in order to provide a future-proof way to grow. The whole effort took several months and we never managed to release official support for multiple accounts under the EventBox name (we released test releases under the codename MultiBox but those never replaced the official distribution). Why didn’t we manage?

The Acquisition

We ran out of time. If you know anything about software development, you probably saw it coming. Not only did we ran out of time but I had more and more commitments that needed their time, which in turn meant that we had to push the release date by another few months. Going forwards, I would also not have been able to devote as much time as I wanted to develop EventBox further. That left us with two options:

  1. Push the release date and let development stagnate
  2. Sell EventBox to a company that can take care of the software and the existing customer base

We opted for option 2. We talked to several companies and some of them were not even in the Mac software business — we did not feel comfortable with the thought of selling it to someone who, we knew, would not take care of our customers and the software itself, in the way we deemed necessary. Fortunately for everyone, we struck a deal with Realmac Software (who also happen to be UK-based).

EventBox was rebranded as Socialite and I continued its development behind the scenes until the release of 1.0 which happened on the 1st December 2009, more than one and a half years since the project’s inception.

Lessons Learned

The lessons that we learned were numerous and I cannot remember all of them — some of them are not even that apparent and linger in my subconscious. I’ve tried to summarise the more notable ones below.

You have to be passionate about what you’re doing, otherwise you won’t get anywhere.

You have to be prepared to work hard and must have the patience — creating good software takes a lot of time and effort.

Pay attention to details.

Never, ever, publish future release dates.

Never, ever, promise features.

Always think about any features that you implement and don’t just jump into the code because you can. Whenever you hear your brain saying “We can do that”, stop and think twice.

Be completely open with your customers / community. Treat them the way you want to be treated.

You can’t please everybody.

Offer no-questions asked refunds on your software within a certain time-period.

Top notch customer support is a must.

Final Words

I’m truly grateful for the whole experience — it would have never been possible without all the people who were involved. I’d like to thank every single one of you — the endeavour changed my life in a zillion ways. I did my best in trying to lead the project in the best possible way and I do not have a single regret about any decisions that we made over the whole course.

We laughed, we cried, we had a ton of fun and we learned a lot.

← Back to Writings