Holy Dev Newsletter May 2022

Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.

What is happening

Not much :) I am waiting for my PR to Asami to get through so that I can resume work on the Fulcro RAD Asami plugin and I am busy helping a client turning his idea into a Fulcro-powered product. I am pleased to have got one of my workshops accepted to NDC Oslo, but I don’t know yet which one, whether the Fulcro intro or interactive development. The weather here is turning summery, which is awesome. I hope you are also having great time!

Gems from the world wide web

👓 Meilisearch - an open-source search engine as a single binary, with REST api [tool]
Search backend as a single (Rust) binary. Gives you search as you type, typo-tolerance, synonyms, highlighting, filters, facets, sorting, and phrase search via a REST API. SDKs for a large number of languages, frontend, and backend frameworks. Includes a simple search web UI out of the box. (Via Console.dev)

👓 Programming like a pirate (Alt + Shift + M) [software development, best practice, critique] - Have you seen uncle Bob do his thing? I've just been watching a couple of episodes of CleanCoders. Great entertainment and so many good poin
Christine Gorman has a great discussion of both the pros and cons of writing many tiny functions and what the limits of the approach are. Absolutely worth reading (repeatedly). A counter-argument to Uncle Bob's maxim to only have tiny functions that do little (I am likely misrepresenting him). To quote Chrisitne:
When I’m looking over a class to see if it might be useful, then I look at the public methods, their names, input parameters, return values and maybe their javadoc comments if there are any.  These names had better display the intent.  Here I fully agree with uncle Bob.  Having to look inside a method to see what it does, is in many cases a failure of method naming. BUT - once I’m having a look, to see how it is implemented, then that’s exactly what I want to see; how it is implemented.  [...] In this scenario, there is nothing more annoying than a 4 line method that simply delegates on to 3 other methods, classes or worse; interfaces. Now, instead of looking in one method, there are 3 other places to look. And each of those places delegates on to three more [...]
Uncle Bob talks about how code should read like well written prose. Sure. But this 4-line method nonsense reads nothing like well written prose. It reads like endless tables of contents.

👓 What Is Your Take on "the Zen of Clojure?" - Community Center / Watercooler - ClojureVerse [clojure] - To me the python quote can be adjusted to "There should be one—and preferably only one—obvious way to say it.” which is never true I think?
An insightful discussion of what is the "philosophy" of Clojure [development], teď by the Python's "Zen of python".

👓 lazy-cat-io/tenet: A Clojure(Script) library, which helps to create explicit and understandable results to unify and... [clojure, library] - A Clojure(Script) library, which helps to create explicit and understandable results to unify and simplify the data flow - GitHub - lazy-cat
"A Clojure(Script) library, which helps to create explicit and understandable results to unify and simplify the data flow." Every result is a pair of [ ], where the type can be one of known or a custom anomaly or an ok result. Helper fns to construct and examine these: (r/as-forbidden x), (r/as-response x :your-response-type), (r/anomaly? x) etc. A great "Rationale" section.

👓 Clojure and me » Conway’s Game of Life [clojure, design]
"APL is famous for having a 1-liner for Conway’s game of life. Being very efficient at implementing a matrix-based solution of Conway’s game of life should come to no suprise from an array-oriented language.
The way you model data determines your code. Clojure encourages what I call relational-oriented programming. That is modeling with sets, natural identifiers (thanks to composite values) and maps-as-indexes."
Great insight and a beautiful 7-lines implementation of the game in Clojure.

👓 Eric Normand Newsletter 469: Everything is a center [software design, discussion]
An insightful reflection of software design and, in particular, how object-oriented design puts you inside a box limiting your options. (Paraphrased:) Look for those [key] concerns first. The concerns then inform the representation. OOAD [object-oriented arch. and design] obscures the concerns behind false, incidental concerns." Yet, as pointed out, there is a lot of wisdom in Smalltalk. God did for thought.


Thank you for reading!

Tags: newsletter

Copyright © 2023 Jakub Holý
Powered by Cryogen
Theme by KingMob