June 2, 2019

Tiny Talk in Scheme

A while back, I started tinkering with a new flavor of Lisp (for me): Scheme, using the ChezScheme dialect. A Scheme-compliant Lisp is one which (among some other bits) implements a faily minimal set of functions/macros; simple string manipulations, data structures and compound data types, basic math and I/O, and a fairly sophisticated function definition, error handling, and hygienic macro facility (a full summary of the language spec can be found here). ...
Read more

March 17, 2018

Review: Java Concurrency in Practice

I was recently assigned to a new project at work, which requires some concurrent programming. I’ve long put off investing in any formal Java programming texts, partly out of thriftiness and partially because none of the professional programming I’ve done to date required a formal education/reading of relevant texts to avoid writing completely incorrect code. Usually in line-of-business application development, a sub-optimal solution is not completely incorrect; at worst, it wastes CPU cycles. ...
Read more

December 23, 2017

Why Kotlin Over Lombok?

This is a continuation of the ideas from “Is Kotlin the New Java?”. What is Lombok? For those of you who are not familiar, Project Lombok is a build tool for the Java programming language, which adds nifty capabilities that many Java developers feel they sorely lack. Some of the more vanilla features include: “Getter” and “Setter” generators “ToString” and “EqualsAndHashCode” generators “Data” and “Value” class generators Automatic resource cleanup Not-Null assertions Builder class generators Constructor helpers of various sorts There’s also a few more exotic features (which I personally have not seen developers) use in the wild, but which no doubt someone is using, including suppressing checked exceptions, lazy fields, magic “val” keyword, delegation, “with”ers, util and helper classes. ...
Read more

June 28, 2017

Is Kotlin the new Java?

One of the programming languages I’ve (essentially) been ignoring for the past couple of years has been Kotlin, the “better Java” from Jetbrains, the author of IntelliJ and other IDE’s.1 Recently, Kotlin has come back into focus for me for the following reasons: Google finally announced official Android support for Kotlin Steve Yegge, that infamously opinionated programming language enthusiast, wrote a patently Yeggian post about how Kotlin scratches his itches without supporting academic or impractical features. ...
Read more

June 18, 2017

Clojure and the Esoteric Mysteries of Namespaces

If you’ve ever been programming in Clojure and encountered an error which looks something like, IllegalStateException("Can't change/establish root binding of: *ns* with set"), read on! Preface I recently had the drive/opportunity to deep-dive on how Clojure’s namespaces function and how they provide a simple abstraction using the concept of Clojure’s “Vars”. Here is a deep-dive on how they work. This is a two-part series. The previous part of the series is available at Clojure and the Esoteric Mysteries of Vars. ...
Read more

© Jeff Rabinowitz, 2019