Serialization is a simple process thanks to advanced libraries like Newtonsoft.Json. The key was to base both undo and serialization on properties of objects. I decided to solve both problems in a generic way that would require very little on-going work. Properties FTWĪ mental road block I often run into when starting a new app is how to handle serialization and undo buffers. Sometimes when you’re stuck, the best thing to do is to lean into your strengths. I’ve been writing OOP programs since the 1990s and I am very comfortable with the abstraction and patterns. I decided to go OOP, in some ways, to rid myself of writer’s block too. Like it or hate it, OOP is well understood at this point. But react style programming of a real-time engine like this is not trivial and I found myself trailblazing a bit more than I like. This is funny considering that I am quite an advocate for functional programming and more reactive style UI design these days. In fact, this may be the largest OOP app I’ve ever built. :-) The null reference checking feature of C# 8 has been especially useful in tracking down bugs. I started with C# 7 but C# 9 had already been released by the time I shipped the app. ICircuit 3D is written 100% in C# using Xamarin.iOS and Xamarin.Mac. Maybe you can get some ideas for your next app from it! So here is a very extended colophon for the app. iCircuit 3D has been a work of passion over the last couple years and I thought I would take a moment to describe some of the more interesting technical aspects of it. Today I’m pleased to announce the macOS release of iCircuit 3D! Last week I released the iOS version to a wonderful reception and I’m happy to now be able to give all the Mac users out there the same experience.
0 Comments
Leave a Reply. |