Looking back at 2014

Hello again friends of Balsamiq!

Peldi here with our traditional "state of the union" end-of-year report. You can find previous editions here: 2008, 2009 and 2013.

As usual, this is going to be a very long post.

Summary

We're doing great. We're executing on our vision, one step at a time. Most of what we did in 2014 was behind the scenes, and will be released in 2015 (we're SO excited). Revenue grew about 4.5% (not bad considering our last official release was in March), and profit margins remain very healthy. Our micro-multinational finally feels mature, with all the processes and benefit programs we'll need for a while. Customers are gradually migrating from Desktop to myBalsamiq, as expected. Support load and competitive pressure are both low, so we can afford to stay focused on gradually moving to native platforms and other hard-to-do product improvements.

The Nitty-Gritty

Interested in all the details? Let's dive in!

Mockups

We only had one official release of Mockups this year, on March 13. With it we introduced bracketed text links and iPad and iOS7-styled controls. We also did 3 small bug fix releases, but overall, the 2.2 codebase has been mothballed since about April, when we shifted our focus to...

Balsamiq Mockups 3: as you may remember from last year, our focus has been to gradually move away from Flash, towards native implementations on all major platforms, while sharing the bulk of our code-base between versions. It's a massive undertaking, and a risky one. To lower this risk, we decided to take two in-between steps: the first one was to refactor our existing code-base to separate the parts that required Flash from those that didn't. The idea was to end up with a core set of classes that could be translated to Javascript to form the core of our native editors. We spent months rearchitecting the existing code-base, pushing Flash-specific classes to the edges and cleaning up 6-years worth of technical debt in the process. That effort is now complete, the new codebase is a joy to work with, and will serve as the basis for the future Balsamiq Mockups native editors, coming sometime in the future. The other step we wanted to take to minimize risk in the migration to native was to make all of the UX changes we've been wanting to make to the product for years, BEFORE going native. This way we could deliver the changes sooner and test them on the existing code-base, letting the dust settle before we port the new UX to native platforms.

These two steps (code refactoring and UX improvements) were meant to happen separately, but sometime in April we decided it made more sense to do it all at once. It took about 10 months, but it's all done. We are planning on opening up a public beta of Balsamiq Mockups 3 at the beginning of February, and starting work on the native editors in earnest right after that (we'll start with iPad and Android versions first).

UX changes in Balsamiq Mockups 3

The main change is that we are finally moving from a one-mockup-per-file to a one-project-per-file model. The new file format is called BMPR (pronounced bumper) and it contains all of the mockups, assets and symbols for a given project. Super-easy to share, and designed for the future (it will also contain mockup revisions, branches, comments, and more).

Mockups for Desktop 3 is able to import and export your existing BMML files, but BMPR is its primary file format. BMPRs are based on sqlLite, which allows us to automatically save every change as you make it.

The editing UX is much more mature: you can open multiple project windows at the same time, and we have adopted a "3 column" UI which is very common for authoring tools: the list of resources is on the left, and properties are on the right. The annoying floating property inspector is finally a thing of the past! 🙂

We also made the full-screen presentation experience much more powerful, and greatly simplified creating and working with Symbols.

In the process, we fixed over 750 issues between bugs and feature requests. The app is noticeably faster and able to handle large projects without much trouble.

Balsamiq Mockups 3 is going public beta on 2/2/2015, stay tuned on our Product Blog for the download link!

The road to native

In 2014 we focused on creating a multi-platform viewer of BMML files, as a first step towards native editors. It was a lot of work, but it came out really nicely. We now have a core set of Javascript classes that can render any BMML natively in multiple platforms.

We soft-launched (or are about to launch) 3 incarnations of this native viewer:

  • a native OSX BMML QuickLook plugin: read more and try it out here. We are going to make this work in Yosemite and understand BMPR files soon.
  • an HTML+SVG viewer inside of myBalsamiq, in the single mockups view. This will ship publicly in a few weeks.
  • a native linux renderer (uses Node.js and Canvas to output bitmap files) to be used by myBalsamiq for creating thumbnails and PDFs. This will replace our current hacked-together and error-prone solution of running a cluster of Mockups for Desktop linux clients.

The viewer supports skins, links, custom icons, assets...the works!

myBalsamiq

2014 was a good year for myBalsamiq, our beloved web app.

Just like for the Mockups editor itself, most of the work happened behind the scenes. We actually shipped 25 releases of myBalsamiq (all without any downtime of course). We added the ability to specify a secondary billing administrator, we added more events to the mockup-, project- and site-history streams, we added the ability to restore deleted mockups, made several performance updates and added features to help our sales support team extend trials quickly. We also worked extensively with security experts, making your data safer every day.

Behind the scenes, we rearchitected how we save mockups in the database (we migrated the BMML data out of RDS and into S3), we merged custom editor code with our main browser-based Flash editor, started using Docker and Vagrant to develop and deploy different components of our web app, made the app work with our new Buy Page, gave our administrator UI a new look and feel and started React-ifying the front-end code.

2015 will be the year in which we finally start investing more in myBalsamiq. By the spring, we should have 3 full-time developers on it (incredibly, we've only had Luis work on myB full-time until now).

The focus for 2015 for myBalsamiq is to integrate the B3 editor (trickier than it sounds), to offer yearly subscription plans, and to revamp the UI to make it much faster and streamlined (moving to React). This will also help us simplify the server-side code, which will finally start having some real JSON APIs. You just wait, it will be great. 🙂

Plugins

In 2014 we simplified our plugin business by discontinuing two low-performing products, which ended up being less painful than we expected.

In 2015 we will continue to work on streamlining Mockups for Confluence and JIRA, by moving to the Atlassian Connect architecture and trying to migrate as many of our customers to Atlassian Marketplace as possible.

Mockups for Google Drive remains our best-kept-secret, which makes it the ideal test-bed for new and exciting things. In 2014 Mockups for Google Drive was the first product to adopt the BMPR file format, the first plugin to fully support Symbols, and the first to get real-time collaboration in the editor! In 2015 it will also be the first to offer Stripe-based subscriptions (the final step in migrating all of our payment processing to Stripe), followed by myBalsamiq.

For 2015, our plans are to bring Balsamiq Mockups 3 to all of our plugins...and we will finally have feature parity between all of our product versions!

Testing

Automated testing continues to be a very important part of our development process, allowing us to confidently deliver high-quality releases in a short amount of time.

Our main growth area for 2014 was around security testing. We have learned a ton and put it all in practice, with the help of some security researchers who wrote to our security@balsamiq.com address.

Keeping your data safe is a never-ending effort, but one we enjoy doing. We cannot go into too many details, but rest assured that your data is even safer now.

We continue to write new tests as new features are developed, and continue to make sure our testing bots run smoothly and quickly.

Ops

Operations is another of those areas that "is never done", but that we enjoy nonetheless. 🙂

In 2014, we quickly dealt with both the Heartbleed and Shellshock vulnerabilities. We upgraded our build machine, streamlined our AWS usage and even created our own private Docker registry.

We are very proud of our uptime reports: our websites pretty much never go down (yay for static sites on S3!), and myBalsamiq had 99.97% uptime (not bad, but we want to do even better in 2015!).

We improved how we build our static websites, swapping our Hammer workflow with one based on grunt. We also put balsamiq.com, media.balsamiq.com and uxapprentice.com behind a CDN, which makes them fast all over the world.

Website Updates

In 2015, among other things, we plan on switching balsamiq.com to be HTTPS-only: the GOOG says it's time.

Admin, Finance and More

The main focus of our admin team in 2014 was to implement our new let's compete locally on benefits policy across our different geographical locations. For our LLC, this meant switching to a new 401(k) provider, new medical benefits plans that also cover family members and a new life and disability insurance. Similar improvements are about to kick off for our Italian, French and German employees.

Other than that, we worked on the many little and big projects required to make a distributed micro-multinational work smoothly: we streamlined how we work with our accountants and payroll providers, we kept up with our local tax registrations, set up a new company nexus in Utah, we revamped our expense reimbursement forms, we updated our liability insurance and passed our PCI compliance audit, we learned about COPPA and made some changes to make sure we comply with it, we improved how we do international wire transfers, updated our transfer-price documentation, organized an amazing company retreat and several mini-retreat and get-togethers. We also formalized a bit how we organize retreats and picked a location for our 2015 company retreat: we rented a small castle in the Loire Valley in France at the beginning of June! 🙂

We also upped our contributions to our Donations (now 3% of profits) and Profit Sharing programs (now 15% of profits), trained in first-aid and fire-fighting for office safety, updated our office safety compliance documentation, rented another garage, made business cards for everyone, and welcomed Francesca to the Balsamiq family!

We also invested part of our cash reserves, finally putting our money to work.

We continued to improve our Company Handbook, and we'll be sharing more of it in 2015. For now, I just want to mention three new policies we started in 2014 that are working out really well:

  1. We started to have quarterly 1-1 catch-up meetings between each employee and myself. The goal of these meetings is to take a step back and think more long-term than what we usually do.
  2. We started a Professional Development program: we encourage each of us to take half a day each week during regular work hours to learn something new or improve something we already know.
  3. We started a Time Off to Exercise program: we encourage each of us to take half a day each week during regular work hours to do some physical exercise.

On the financial side, we created an internal dashboard to help us track sales. Below are a few of the charts for 2014.

Here you can see revenue growing nicely, even if we haven't focused on it. Note that these numbers are not 100% accurate, but pretty close:
revenue

Here's a count of transactions: we're handling about 10,000 transactions each month these days...not too shabby! 🙂
cumulative

Here's a chart showing where our customers are. Australia is over-represented because of our Atlassian Marketplace sales, which we don't break down:
geo

Here you can see that Desktop sales have slowed down while myBalsamiq sales just keep growing (as expected). Plugins are pretty steady:
line

Here's another chart, showing how revenue is gradually migrating from Desktop to SaaS, as expected:
percent

We are at about $370,000 in revenue per employee, which is high. We plan on hiring one or two programmers in 2015, which will help us go even faster. Interested?

Conferences, Interviews and Press Mentions

We attended the following conferences:

  • Clojure eXchange 2014, London
  • Microservices Meetup, Amsterdam
  • Enterprise UX Meetup, San Francisco
  • Business of Software 2014, Boston
  • JS Conf 2014, Berlin
  • Atlassian Summit, San Jose
  • JS MVC Meetup, Amsterdam
  • AtlasCamp, Berlin
  • JSDay, Verona
  • You in UX Web Conference
  • 99u Conference, NYC
  • React 2014, London
  • WebRTC meetup, Amsterdam
  • Joy of Coding 2014, Rotterdam
  • Interaction_14, Amsterdam
  • Javascript MVC Meetup, Amsterdam
  • Strange Loop 2014, St.Louis
  • Leon spoke at a HCI class at Purdue University (video)

My interview for the ConversionAid podcast was surprisingly popular, here's the link: How Balsamiq Bootstrapped Its Way Into a $6M Business.

Press mentions around the web are too many to count, but here's a little sample of some of the most interesting articles:

Looking ahead

This year is going to rock: 2014 was for building, 2015 is for shipping! 🙂

As always, things will take longer than expected, there will be ups and there will be downs, and we'll learn A TON in the process. Bring it on, we're ready! 🙂

Thanks for reading this super-long post.

If anything in this post surprised you or sparked your interest, don't be shy and add a comment! I'd love to answer any questions you might have.

We hope 2015 brings you and your families health, happiness and success.

Onward!
Peldi for the Balsamiq Team

Get the Inside Scoop

We'll send you just one email a month and share a ton of information that you'll get before everyone else. More info about the newsletter here.

We'll never share your email address or spam you.

Leave a Comment

Your email is never published nor shared.

Comments (5)

  1. I forgot to add some observers are saying this Swift is similar to AS3 (among many other things) in some respects.

  2. Apple seems to be pushing its new programing language Swift as a replacement to Objective-C. Any plans to write Balsamiq in Swift for the Native iOS platform?

    • Hi Ron, we’re looking into it…we’re pretty comfortable with Objective-C, we’ll see how the performance compares!

      Peldi Guilizzoni
  3. I agree awesome report! I am a ‘newbie’ to Balsamiq and I want you to know I absolutely LOVE it! Hope to spread the news throughout the company and enlist other users. Thanks for a very easy-to-use product. I am learning new features every day!

    Barb Lynch
  4. Awesome report Peldi! It’s so wonderful to see Balsamiq continuing to grow and prosper. The news about Balsamiq Mockups 3 is great and I can’t wait to give it a try when the beta is released.

    I may not be around on the forums as much as I used to be but that’s because I have so few problems with the application and have figured out all the workarounds I need to get around those things that aren’t quite right (after reporting them of course!)

    Jenni Merrifield