While at the //build/ conference, Jon talks to Aaron Stannard about how he left Microsoft to start up a new company focused on analytics for Windows 8 applications. They discuss Windows 8 development and the Window Store ecosystem and the technology stack Aaron and team settled on for their analytics platform. They end up by discussing the process of going from an employed software developer to running a software startup.
Note: The audio is a bit crackly in a few parts, but just for a few seconds.
Download / Listen:
Herding Code 154 – Aaron Stannard on MarkedUp, founding a startup, and Windows 8 development [audio://herdingcode.com/wp-content/uploads/HerdingCode-0154-Aaron-Stannard.mp3]
Show Notes:
- Jon starts by asking Aaron about what led him to founding a startup. Aaron explains how his first startup failed and his blog post about Why .NET Adoption Lags Among Startups got him a job as a startup evangelist at Microsoft
- Opportunities: Windows 8 development and MarkedUp
- Aaron explains how he saw a key opportunity around the Windows app ecosystem and why the teaming seemed right to really dive into this now. Jon agrees that this is a really interesting time in the Windows developer landscape.
- Aaron explains that MarkedUp delivers in-app analytics for WinRT and eventually Windows 8, answering questions like how many people use your app every day, how much time they spend using it, which features they use, and what in-app purchases they make.
- Jon mentions a key difference in the Windows Store which allows you to have one app which can be upgraded from free to paid, whereas other platforms have duplicate applications for free and paid.
- Aaron talks about his recent blog post comparing iOS economics vs. Windows 8 economics titled Win8 Developers: Don’t Make the Terrible Mistake of Treating the Windows Store like the iOS App Store. He explains that there’s an opportunity for Windows 8 applications to do quite a bit more than simple little hit driven apps, and Windows 8 applications can and should do quite a bit more.
- Aaron talks about the pricing model – free now, there will always be a free model, and it’s intended to be pretty reasonable for developers with successful applications.
- Tech talk about WinRT development and how MarkedUp integrates therewith
- Aaron begins explaining the technology stack, but Jon interrupts him to ask him to explain what a .winmd file is. Aaron discusses some of the key similarities and differences between WinRT and .NET development.
- Aaron talks about how they’ve cleaned up a lot of the information that’s exposed so it’s useful.
- There’s NuGet package you add to your Windows 8 application which brings in the .winmd dependency.
- There’s a managed singleton approach which handles a lot of things automatically, like application startup and shutdown. You can also log additional events through the managed singleton.
- There’s a JavaScript wrapper that sits on top of the .winmd file for WinJS applications which flattens some of the hierarchies and namespaces for logging.
- Aaron says he’s seen this as a common pattern for Windows 8 development – write some .NET code, ship it as a .winmd file, and provide a JavaScript wrapper for WinJS.
- Aaron mentions that he likes this pattern for application development, too: write business logic in C# and expose it through .winmd put a JavaScript wrapper on top of it to write the interface in HTML and CSS. He like the flexbox and grid system for layout, and thinks the CSS3 media selector based layout orientation systems is a lot simpler than trying to do that in XAML.
- Aaron explains that as an analytics component, they will never degrade the user experience, so they’ll always swallow internal exceptions.
- The communications system is also designed to prevent impacting the user, so they cache locally and only send a single message at a time.
- RavenDB and how it compares with other document databases like MongoDB
- Data is stored in RavenDB. They evaluated both RavenDB and MongoDB but decided RavenDB worked better for them at this point. He describes some differences between RavenDB and MongoDB.
- RavenDB projections make it easier to do server-side transforms.
- RavenDB has some nice batch loading features.
- RavenDB lets you express map-reduce as a pre-computed index.
- Aaron doesn’t like the way sharded RavenDB clusters work.
- They’re probably going to go to Cassandra or HBase eventually.
- Aaron talks about a solution (Hircine) they came up with to precompute RavenDB indexes at build time rather than startup.
- RavenDB is great for unit testing
- Aaron talks about their build system using Albacore and talks about their build and deployment system.
- Jon asks about why they’re planning to move from RavenDB to Cassandra or HBase. Aaron says he doesn’t like the scale-out / sharding system in RavenDB and doesn’t think it will work for them as they scale. Aaron talks about their plans to handle complex analytics at scale.
- Data is stored in RavenDB. They evaluated both RavenDB and MongoDB but decided RavenDB worked better for them at this point. He describes some differences between RavenDB and MongoDB.
- Jon shifts gears to ask about starting a company. How do you get started?
- Aaron talks about the history of how they got started – with a mission.
- Next questions: Am I the right person to execute this? Is this a problem worth solving? Is this economically viable?
- Build a minimum viable product and show it to people you trust. Aaron gives examples from the history of starting MarkedUp, with an application that let you annotate and upload screenshots from iOS. Jon and Aaron discuss how Aaron was able to do most of the minimum viable product development without quitting his job.
- First step in actually starting the company: talk to a lawyer to get your structure and ownership figured out.
- How do you make the decision to go fulltime?
- Figuring out how to pay the bills: can you monetize quickly, or do you raise money?
- Aaron talks about the process of getting funded and networking with potentials investors.
- It’s an emotional rollercoaster – be ready to change tactics, but don’t quit.
- Jon and Aaron talk about the benefits of doing this all incrementally – at least until you go full time.
- There’s a registration URL for Herding Code listeners (https://markedup.com/account/register/?utm_campaign=herdingcode) – or you can just go through registration and enter the code HERDINGCODE into the registration code field on the form.
- Aaron says he’d be happy to talk with other developers who are interested in the startup process.
Show Links:
- Aaron Stannard (blog, @aaronontheweb)
- MarkedUp (@MarkedUpMobi)
- .NET Culture Shock: Why .NET Adoption Lags Among Startups
- Win8 Developers: Don’t Make the Terrible Mistake of Treating the Windows Store like the iOS App Store
- Router .CoCPit application
- RavenDB (Herding Code 83: Ayende Rahien on RavenDB)
- Cassandra
- HBase
- Hircine: Stand-alone RavenDB index builder, used in CI systems and automated deployments
- MarkedUp registration link for Herding Code listeners