My year 2021 in review
My professional year 2021 has been a year of Fulcro and Clojure. I have finally become a full-time Clojure developer and I have created a ton of resources for Fulcro beginners to ease and speed up their onboarding. To help them even more, while respecting the preciousness of time, I have started my company Holy Dev to provide mentoring and pair-programming to Fulcro learners. And I have written a few more essays about productivity and concepts such as simplicity on this blog.
January 1st, 2021 is the official birth date of Holy Dev, which I have founded to be able to offer paid help to those that want to speed up their learning of Fulcro. It have got some awesome clients, or rather friends (especially Alex and Gene - thank you so much!). Helping them was extremely satisfying and it propelled my efforts to make Fulcro more accessible to everyone. Their struggles have been the building blocks that enabled me to create a series of resources for the benefit of everyone.
Thanks to the problems, questions, and financial support of my clients I have been able to create a number of resources for Fulcro learners, such as the Fulcro Community site to gather all community-created resources and the Minimalist Fulcro Tutorial and its companion fulcro-exercises aimed at getting complete beginners productive with Fulcro as quickly as possibly. I have also created the minimalist-fulcro-template-backendless starter kit for experimental/learning Fulcro applications, started working on the Advanced Minimalist Fulcro Tutorial, developed the fulcro-troubleshooting addon that helps detect mistakes faster, and open-sourced a simplified version of my real-world Fulcro application, the Fulcro Billing App. I have also contributed to Fulcro itself in some minor ways, mostly to improve error messages and to prevent some common pitfalls - typically discovered by my wonderful clients. It has also been the year of the screencast, as I have discovered that some things are best shown - opening with Demo of troubleshooting a Fulcro RAD app, continuing with Fulcro troubleshooting 2 - graph connectivity, initial state and the popular Demonstrating the Clojure way of developing functionality: REPL-driven, from inside out etc. - you can explore the complete Learning Fulcro playlist (5) and Teaching Clojure playlist (1). In the meantime I have also tried to provide support to the great folks in the official Fulcro Slack channel. Finally, I have designed the surprisingly popular workshop Introduction to creating webapps with Fulcro that I held at re:Clojure 2021 and at other occasions, and will hold again in 2022. Most of this would not be possible without my mentoring clients and their support and invaluable inputs - so thank you very much! Merci! Tusen takk! Díky!
2021 has also been the year of podcasts for me - I have first talked about why Clojure is awesome and why it is anyway a hard sell to developers on the Telia Engineering podcast and then I have been interviewed for the re:Clojure conference on JUXT Cast.
The other big news of 2021 was that after five productive years I have left Telia to become a full-time Clojure developer. It was sad to leave behind a number of great friends (including my three fellows from the best team ever) and my wonderful bosses, working hard at making Telia a really awesome place. But I have long dreamt about saving me the frustration of working with inferior tools and after having failed repeatedly at gathering a momentum for Clojure at Telia (though I had some successes, sadly thwarted by the changing business winds), I jumped at the opportunity to leave Groovy/Kotlin/TypeScript behind and joined the awesome Erik Assum a.k.a. Slipset of CLJ Commons at Ardoq, a Norwegian/world-wide "scale-up" helping big companies gain insight into their IT and supporting their transformation. I love my team and the open company culture and flat structure and I enjoy the challenges I am unleashed unto. I could only wish that we used Datomic on the backend (I hope to write more about that "soon") and Fulcro on the frontend. But let's see what can be done about that... evil smile
I have written a couple of posts, the main ones beeing perhaps these two:
What is simplicity in programming and why does it matter? - In my opinion, Clojure - both the language and its ecosystem - is very much about simplicity. Here I explore what that means.
Productivity killers in enterprise programming - and how to overcome them - an experience report and a reflection on the state of affairs in an enterprise. Our main killers were bad developer experience and complexity, and both slow development down considerably. They increase time to market and costs - even though the costs are incurred on all development and thus "invisible," like the air we breathe. Fortunately, there are ways to fight them.
I have finally scratched my long-term itch and created an AsciiDoctor cheatsheet for Dash (the MacOS documentation browser) and I got my clj-tumblr-summarizer to a usable point, where it does automatically back up my Tumblr feed "My Top Dev Links of Lately". I have also spent some time with the awesome SciCloj community, learning about data science and its tools in Clojure. My Ardoq job led me to add support for the great next-jdbc to Ragtime, the DB migration tool that we are using. And I continue learning and leveraging Babashka and its ecosystem.
As I told my colleagues, ff you should watch ONE programming-related talk in the whole of 2021, make it Stephen Wolfram’s keynote at re:Clojure. It will blow your mind - especially the 3rd part. And don’t worry, it has essentially nothing to do with Clojure.
Data Navigation with Pathom 3 by Wilker Lucio provides a great explanation of the problem with REST and multiple clients and demonstrates how an attribute-based graph API solves it.
A Tale of Two Cultures, Part I: Boeing - how important culture is for company’s success
There are too many people to thank. But I want to thank at least Borkdude, PEZ, and Tony Kay for their awesome tools, support, and in general for being great humans and to Majid for inspiring me to talk at conferences.