tail -f thoughts.txt

Jacob Windle

Firebase: Infinite Scroll Widget in Flutter

Author’s note: If you like this post, consider supporting at patreon.com/windlejacob12. I love writing, and sharing what I’ve learned. I’d love to spend the majority of my time doing it! I’ve been working on a contact lately with a local startup in Johnson City, to implement infinite scrolling in their application. The codebase is entirely generated via FlutterFlow, and being generated by a low-code tool it’s a ball of spaghetti.

Advent of Code Day 1

Here is my solution to Advent of Code, Day 1: (def input (slurp "day1.txt")) (def elf-totals (->> (clojure.string/split input #"\n\n") (map (fn [elf-row] (clojure.string/split elf-row #"\n"))) (map (fn [elf-row] (map (fn [calorie-value] (Integer/parseInt calorie-value)) elf-row))) (into []) (map (fn [elf-row] (reduce + elf-row))) (sort (fn [x y] (> x y))) (take 3))) (def answer (list (reduce + elf-totals) (first elf-totals))) It is an overuse of maps and reduces, but let’s go through it step-by-step.

Software Complexity

I’m currently reading a book by John Ousterhout, called A Philosophy of Software Design, and this book preaches one central tenant: reducing complexity. This is something near and dear to my heart, being someone that frequently works on his own projects. Complexity can kill projects and companies entirely, because the cost of engineering new software is just too high. I’ve seen it several times, and each time I’ve wanted to rail against it.

std::lock_guard in C++

Working on a project that I currently have, I’ve found myself needing some mutual exclusion in dealing with some hardware devices. I could have gone the singleton route, where I only keep one device representation in memory at a time, but the internet and stack overflow have both told me how I am oh so wrong for wanting that. Thinking then about how I can support multiple devices in the future, while maintaining a single-device for now in a thread-safe manner, I’m forced to use mutexes to protect critical sections of code.

Re-Frame + Reagent CLJS Router Pattern

TIL how to implement a routing component using Re-frame and Reagent in CLJS. This has been one of the joys for me in using CLJS, things that seem like they would be complicated on the surface, end up being just a few lines of code. With this routing component, the key is to have the current page key as a symbol in the Re-frame state (sweet sweet re-frame.db/app-db), then to subscribe to that state in our component that does the routing.

Using Supabase Experience

It wasn’t that long ago that I was listening to an Indie Hackers podcast about Supabase. Supabase is an open-source Firebase alternative and so far we are absolutely loving using it for our current project. The experience has been great. I have begun to model data in it and one of the things that I love is that you get instant API’s spun up to access that data. Supabase, knowing that many of today’s applications are client-only and not really dealing in backend code went ahead and created a really useful feature in their product.

Where I Vow to Improve

I did an evaluation of myself late last night about where I stood as a software engineer. I graded myself on a great many things related to the development of my career and didn’t really like what I had found! Despite having been a software engineer for more than 7 years at this point, I don’t think there is really any skill category that I really stand out on. Jack of all trades, master of none really comes to mind when looking objectively back at these accomplishments and wondering what had happened.

Long-Running Isolates in Flutter

The long-running Isolate is a technique that I have used now in my contracting to run extensive processes in the background of a Flutter app. Running background code came up as a need while working with a local startup FytFeed in order to power some on-device integrations. I wrote code that detected the availbility of information in HealthKit and shipped those updates off all while being separate from the main isolate to avoid any UI jank and keep the interface responsive and clean.

Cracking Coding Interview

Cracking the Coding Interview has many interview questions and challenge problems that really boggle the mind. Why would I want to go back to boggling my mind? In recent times, I had a daughter. This daughter has caused me to double down on my career and really get better at my craft. With tracking through the Cracking the Coding Interview book, I feel wholly inadequate but I will continue on bravely

End of Coaching

I have seen the end of coaching coming for a very long time. It’s great to be able to be a part of young men’s lives the way that I was, but with my new and growing family I simply don’t have time to be the coach that they need me to be. Coaching lacrosse is something that I have done with my free time for much of my adult life.