Running a successful software company has always fascinated me. To run a thriving business selling software, you need more than a solid understanding of software development.
A few weeks ago, I got in touch with Peter Krajcik from PixelCut to talk about running a software company focused on the Apple ecosystem. While the name may not sound familiar, you may be familiar with PaintCode, PixelCut's flagship product.
What Is PaintCode
Saying that PaintCode made a few waves when it made its first appearance in 2012 is an understatement. But what is PaintCode? In a nutshell, PaintCode is a drawing application that translates what you draw into code, like magic.
PaintCode supports Swift and Objective-C, but it also works seamlessly with Java and JavaScript. The current version is quite the powerhouse. PixelCut also created a plugin for Sketch that neatly integrates with PaintCode.
A few months ago, I wrote a tutorial in which I explain how I use PaintCode to create buttons without images. The tutorial outlines how I import SVG images into PaintCode and use the generated code to create buttons. It's only one of the many possibilities PaintCode offers.
Who Is PixelCut
PixelCut is a team of four, Peter Krajcik, Mike Antonic, Matt Dunik, and Martin Kiss. Because I wasn't familiar with the origin story of PixelCut, I asked Peter to tell me about the company's early days.
PixelCut was founded in 2012 by Mike Antonic and myself. We created the company to sell PaintCode. Because we knew we'd be selling multiple products in the future, we purposely didn't name the company after PaintCode, our first product.
The first version of PaintCode was released before anyone knew about Swift. Today, PaintCode supports Java, Swift, Objective-C, and JavaScript. This means it can be used for Cocoa, Android, and web development. I asked Peter why and when they decided to focus on PaintCode.
We were developing another app with a custom user interface. From the very beginning, we decided to make the entire user interface of the app resolution independent and the best way to do that was to draw the user interface elements in code.
Writing drawing code by hand isn't fun. More importantly, it takes a lot of time. Even a simple example can take hours and dozens of lines of code.
Writing drawing code by hand is very tedious. We desperately needed something like PaintCode, but, at the time, we couldn't find anything like it on the market."
But that wasn't the only motivation for the team. The release of PaintCode in 2012 coincided with the introduction of the first iPad with a Retina display. Coincidence? I think not.
At the same time, there were rumors that Apple was going to release an iPad with a Retina display, increasing the need for a tool such as PaintCode, including for other developers. I heard this rumor in December of 2011. The rumor was that Apple would release the new iPad in March of 2012. We set that as our release date and immediately started working on the first version of PaintCode.
They had a strict deadline and only three months to ship an ambitious project, which brought several challenges with it. What were some of the hurdles they needed to take to ship the first version of PaintCode?
While we had a pretty good idea of what we had to implement and how, the deadline was crazy. We only had three months to develop PaintCode 1.0. But we managed to release the first version on March 11, just four days after the first Retina iPad was released.
The first version of PaintCode was limited in functionality, but that was a key ingredient of its success. It allowed the team to ship PaintCode. They didn't waste months or years crafting the perfect application. They created a quality product and allowed it to evolved over time.
The biggest technical hurdle was the implementation of boolean operations (union, intersection, and difference) on Bézier curves. The first version of PaintCode included roughly 30,000 lines of code. The current version, PaintCode 3, is about 300,000 lines of code.
Apple has received quite a bit of criticism from professionals in recent years, including from developers. While things have improved slightly (https://daringfireball.net/2017/04/themacpro_lives) during the past few months, many people continue to be concerned about the future of Apple and how it caters to professionals. I asked Peter how he feels about the current state of the Apple ecosystem from a business perspective. How viable is it to create a business building macOS applications?
Sadly, the best days of selling indie software are probably over. PaintCode, with its higher price tag and no subscription model, feels a bit like a fossil, a holdover from a bygone era. Luckily for us, our customers are still willing to buy our product, even at a price that seems high to many these days. Unfortunately, it's not possible to support and develop complex, professional apps at the low price point many people have come to expect.
Developing professional applications for the Mac is still a viable option for many companies, but it isn't easy.
The times of selling boxed software for hundreds of dollars are clearly over, aside from a few exceptions. However, it's not clear yet what alternative business model is suitable for these kinds of complex, professional tools. Subscriptions may be the answer, but there's still a lot of resistance. The race to the bottom leaves little space to make indie software for professionals commercially viable.
PaintCode has evolved into an invaluable piece of software for many designers and developers. I asked Peter how he explains the success of PaintCode.
After launching the first version, I'd say the key was timing and the quality of the product. Even though PaintCode 1.0 was extremely limited compared to the current version, the few things it did, it did very well.
During the interview the words "luck" and "lucky" come up several times. The team wasn't lucky in my opinion. The product was innovative and very clear about its feature set. They created their own luck by releasing a quality product.
We were also lucky because the first version went viral by itself. A few days after the launch, it made it to the top on Hacker News. We didn't expect this.
Thanks to the very positive response and commercial success of PaintCode 1.0, we were able to build a small company for the product, PixelCut. We firmly believe in dogfooding. We use PaintCode for all our internal design work, even for web design and other graphics.
Whether you like it or not, marketing is an essential aspect of a profitable software business. How does PixelCut get the word out about PaintCode? How do they convince people to give PaintCode a try?
We were lucky when we launched the first version of PaintCode. Since then, we've systematically built a relationship with our customers, grown a following on social media, and connected with influencers. These efforts pay off when launching new products because it ensures you don't have to start from square one every time.
We tried paid advertising in the past, but it doesn't seem to work very well for PaintCode. The reason may be that most programmers who develop for Apple's platforms already know about PaintCode, even those who don't need it when they hear about it.
Educating potential customers is a marketing strategy that is very often overlooked. Not only does it help existing customers, it spreads the word and pays dividends over time.
We have a series of video tutorials that explain the major features of PaintCode in detail. I think these work pretty well. After the release of iPhone 6, we published an article about iPhone resolutions, which became very popular. It got over 100,000 views on the first day and over 1,000,000 views in the first month.
Keeping the feedback loop short is important. This is what Peter has to say about this.
Because the support requests we receive are often technical, our development team answers all of the support emails. It not only improves the quality of our support, but it also ensures that the development team stays in contact with our customers and understands who our users are and what they need.
Many software companies have a love/hate relationship with Apple's Mac App Store. Even though it can be useful to increase a product's visibility, it seems Apple has ceased any efforts to improve it.
PaintCode used to be available on the Mac App Store, but it no longer is. I asked Peter why they removed PaintCode. What motivated this decision?
The short answer is that we outgrew it. When we started selling PaintCode, the Mac App Store was a huge help for us. It took care of a lot of things that you don't want to spend your time on as a developer launching your first product. But as the company and the product grew, we found that some things that are essential to maintain and sustain our business are not possible in the Mac App Store. That's sad and frustrating because the Mac App Store has the potential to provide the best customer experience by far. We'd love to return to the Mac App Store at some point.
When I asked Peter about the current shortcomings and limitations of the Mac App Store for a business like PixelCut, he was very clear. It shows that their decision to move away from the Mac App Store was a well-considered one.
There's no way to contact customers that purchase PaintCode from the Mac App Store. For example, there's no way to tell them about a new version or a new product. The lack of robust analytics is another problem. It's currently impossible to evaluate the effectiveness of a marketing campaign, for example.
The inability to charge customers for upgrades has been a big issue for many developers, including PixelCut.
There's no good way to provide discounts to existing customers that want to upgrade to a new version.
Last but not least, Apple's cut is an obstacle that doesn't sit well with many software companies. Peter also mentions that many customers seemed to prefer PixelCut's store even when PaintCode was still available on the Mac App Store. It shows that the problem doesn't only affect companies selling software on the Mac App Store. It indicates that customers too have lost fate in Apple's Mac App Store and are gradually moving away from it.
If you're serving tens or hundreds of thousands of customers, you want to be in control of updates and launches. Peter explains that pushing a new version of a product to the Mac App Store often adds a lot of stress because you can't quickly push a bug fix to your customers. You always need to pass by Apple, and such a delay can damage your reputation as a software vendor.
Check Out PaintCode
Like many other developers, PaintCode is an integral part of my development workflow. It's a wonderful piece of software that exudes quality and ambition.
You don't need to be a designer to benefit from PaintCode. You can import existing designs. It supports AI, EPS, SVG, PSD, and PDF. Do yourself a favor and check out PaintCode's website to find out how it can improve your workflow. You can also follow PixelCut on Twitter.