Another year, another Advent of Code, another excuse to explore new languages.
After my recent exploration into PWA’s this past year I wanted a reason to explore Kotlin and Swift, two languages equipped for native mobile (Android and iOS) development.
Before delving into the mobile-domain I wanted to see what each language had to offer.
In this article I will document my experience completing the Advent of Code 2023 calendar in both Kotlin and Swift.
Over the pastseveralyears I have taken the opportunity of allocating Secret Santa’s for members of my family as a means of exploring new technologies.
For the past several months I have been interested in the concept of Progress Web Application’s (thanks in large part to this series), and getting more hands-on experience in with the ever-changing frontend landscape.
As such, I decided that this year I would build a small application that works across Desktop, iOS and Android to perform Secret Santa draws in both a local and remote setting.
In this article I would like to document how I went about building this application.
I have been an avid runner for many years now, but I still get confused by imperial and metric measurements.
On top of this, the amount of times I seek out a random website to perform some form of pace/distance calculation is too often to count.
What I wanted was a desktop and mobile application that could perform pace, distance and time calculations, along with imperial/metric conversions - a swiss-army knife of running calculators.
In this article I would like to document my experience building a Progress Web Application (PWA) which does just this; providing a native app-like experience across iOS, Android and Desktop.
Now the interpreter’s performance concerns had been addressed it was time to decide how each of the available runtimes would be packaged and distributed.
In the final article within the series I will document how the language/runtimes were built, tested and distributed using a custom CI/CD pipeline.
Now that we have discussed building the core language and desired runtimes, it is time to highlight one of the biggest reasons why I decided to rewrite the interpreter in a lower-level systems language - performance!
In this article I will document how I went about benchmarking the two implementations (TypeScript/Node and Rust), greatly improving performance and highlighting interesting findings along the way.