One Year of JasperFx Software

After about 25 years or so in the software industry, I finally founded my own business named JasperFx Software last year at about this time with the general strategy of building a services and product company around the “Critter Stack” tools (Marten, Wolverine, Weasel, and soon to be some others) as well as any or all consulting opportunities around server side .NET development or automated testing. After a year, it’s time for a little retrospective.

How’s it going?

Everything has taken longer than I’d hoped, and technical or company milestones have taken longer than I wanted. To quote the old adage, “it’s darkest right before the dawn.” I was so discouraged about the company right before Christmas that I was strongly considering giving up. Then JasperFx signed a couple big deals that gave me enough space and revenue to keep going, and even allowed JasperFx to bring on Babu Annamalai as a consultant and collaborator.

I’ve long been telling folks who ask me how it’s going that the technology side looks good, but the business is going just well enough to be encouraging but not well enough to feel confident yet. Right now I think I can finally say the business is strong enough to be thinking much more about how to grow and become sustainable than working on exit strategies. To put it more succinctly, I think that potential clients can trust that JasperFx Software is going to be around as a technical partner.

The big goals for this next year are to grow enough to be able to bring on full time colleagues for round the clock support and to continue to grow the “Critter Stack” platform. A big part of that is the planned “Critter Stack Pro” and “CritterWatch” commercial add on products I’m hoping will be demonstrable by the end of the 3rd quarter this year.

Client Work Highlights

JasperFx Software doesn’t exist without its clients — and we could always use more! Here’s some of the highlights of our client work in the past year:

  • By my count just now, we have worked with clients headquartered in six different countries so far, but I’ve already lost track of which countries our client contacts are located in
  • Event sourcing is relatively new, so there’s been a lot of engagement with various clients about the best ways to model their domains with events or how to best use projections for read or write models
  • I’ve gotten to work very closely with a client building an IoT system using event sourcing with Marten, messaging and HTTP services with Wolverine, and Rabbit MQ. That work has led to several improvements especially with Wolverine that have helped reduce repetitive code
  • JasperFx has helped several clients set up automated testing strategies and mentored teams on unit testing practices. Honestly, I think this might be the one way in which we’ve delivered the most “bang for the buck” for our clients. Automated testing strategies and designing for testability are primary areas of expertise within JasperFx Software — and that might be a little lacking in the larger software community these days
  • Multiple clients have complicated requirements for multi-tenancy in their systems, and that’s mightily pushed forward capabilities for both Marten and Wolverine in reaction. The specific highlights have been dynamic multi-tenancy in both tools, multi-level multi-tenancy, HTTP integration, and an effective virtual actor capability per tenant for Wolverine
  • Helped several clients with support contracts with JasperFx Software to use the tools more effectively. This has typically involved issues around transactional integrity, using a transactional outbox, error handling, and generally how to make systems be more robust or more performant
  • Concurrency issues are quite common, and JasperFx has worked with several of our customers to either make their systems more resilient to concurrency or to reduce potential issues around concurrency through design changes. This has been a common enough issue that I’m going to build out a new conference talk gathering the issues and possible solutions called “Surviving Concurrency in Event Driven Architectures”
  • We greatly improved Marten’s integration behind GraphQL endpoints using Hot Chocolate for a client, and we’re continuing on with strategies to use Wolverine for GraphQL mutations with Hot Chocolate
  • JasperFx delivered an early release of the forthcoming “Critter Stack Pro” tools for a client to greatly improve their ability to scale up to very large numbers of expected event data by better distributing load throughout an application cluster
  • Wolverine got an MQTT integration as the request of a JasperFx client
  • I helped a client kick off a big new initiative (that will ultimately be built with Ruby, so that’s been interesting) by facilitating multi-day Event Storming workshops
  • Helping multiple clients evaluate their current application code looking for areas of concern and potential remediation or modernization efforts

If you have a problem, and trust me, you can easily find us, maybe you can engage with JasperFx Software for your own development efforts with an email to sales@jasperfx.net. Or by contacting me directly through Discord, what’s left of Twitter, or wherever.

The State of the Critter Stack

Most of the time I’m focused on what is not already good, soft spots, flaws, outright bugs, and holes in the capabilities of Marten or Wolverine. Occasionally folks pop into our Discord channels just to say positive things, but most of the interactions there or on GitHub are with folks who are having trouble with something at that very moment. Last week I spent some serious time comparing the Critter Stack’s capabilities to some other toolsets for Event Driven Architecture in the .NET ecosystem and a bigger offering in the JVM ecosystem. And you know what?

  • Marten is already the most robust and feature rich toolset for Event Sourcing in the .NET ecosystem. Sure, you can roll the barebones basics for Event Sourcing yourself, but there are a lot of significantly challenging technical issues around projected state data, subscriptions to event data, concurrency protections, and instrumentation that Marten already supports today in a robust way that you would otherwise have to build out yourself. Likewise, you could cobble a lot of what Marten already does today with various libraries (none of which are documented as well or as widely used as Marten) or other event stores, but you’d still end up writing a lot more non-trivial code to glue it all together and fill in holes than you would by just using Marten.
  • Wolverine is a unique server side application framework that can be used to dramatically reduce the amount of boilerplate code that is so common in server side .NET development. Moreover, it’s the perfect toolset for really using the “vertical slice architecture” approach in a simpler way. And if used idiomatically, Wolverine can help you structure your code for easy unit testing by separating your application logic from infrastructure concerns without ridiculously high ceremony Hexagonal/Clean/Onion Architectures.
  • Used together, the Critter Stack is arguably the most feature complete solution for Event Driven Architecture in .NET today — but I’ll weasel this a bit by saying that Actor-based platforms are so conceptually different in approach that I wouldn’t do a straight up comparison
  • The Critter Stack tools can lead to much better testability, both for unit testing and for integration testing with infrastructural elements, that help our users deliver software faster and with more confidence. I believe that the Critter Stack’s approach and support for automated testing has no peers in the .NET space.

The Critter Stack suite is going to grow this year with commercial add on libraries for increased scalability and with a custom monitoring and management tool codenamed “CritterWatch.” If all goes according to plan (and it won’t), the Critter Stack is going to also grow this year with event sourcing alternatives based on at least Sql Server as the underlying persistence with CosmosDb and/or DynamoDb following afterward.

How’d I get here?

Hey, this section is going to get into some pretty serious TMI, so feel free to skip any of this.

For various reasons, maybe because I’m terrible at organizational politics, disinterest in what I was working on, bad luck, or all of the above, I never managed to find a role or a company where I felt like it was my shop and I was happy right where I was at. A noticeable trend that always frustrated me was that I was frequently much better known and more professionally respected in the outside world that where I happened to be employed at the moment:

I’ve known for a long time that I enjoyed my OSS work building shared libraries and frameworks for other developers much more than what I happened to be doing for my real job. What I’ve long wished I could do was to was get to build development tools, preferably where I was one of the primary drivers of the company and I had a major hand in driving the vision. I thought I’d absolutely blown my chance when a very ambitious, prior project failed miserably years ago, and I had been admittedly pretty adrift in my career in the following years.

I had a couple possible opportunities to join Microsoft in their Dev Div division when I was younger, but there was always some personal reason not to take those positions. I’ve occasionally wished that would have worked out, but that was ages ago.

A couple years ago I told a therapist that I thought I was going through a mid-life crisis, and he laughingly told me that I just had some as yet unfulfilled ambitions. About the same time I got a message from another developer then working at a software tools company asking why we weren’t already monetizing Marten because he thought it was already better than certain commercial offerings. Those two incidents, other friends founding their own company at the same time, plus a lot of encouragement from my wife, and a few other breaks led me to finally go off and take a chance on myself and start JasperFx Software. I won’t lie and say it’s been all rainbows and unicorns and that I haven’t struggled mightily with stress this past year, but it’s trending upward right now and I love being able to roll out of bed knowing that I’m working on my technical vision (for at least some of the day!) or working to help clients who respect my input and contributions to their work.

Leave a comment