Tuesday, December 29, 2020

The 12 stages of learning Clojure

In 2020, I've been on quite a learning journey. I joined a team where we write code in Clojure, a very different language from what I’m used to. It turns out writing Clojure is a very nice developer experience, but it could take a while to get it.

You might have to go through some (or all) of the 12 stages of learning Clojure.

1. "I have no idea what I'm looking at."

2. "Where does that code end? Where does it begin? Why are there so many parentheses?"

3. "I'm totally lost."

4. "Will I ever learn? Am I smart enough?"

5. "I will never learn. I'm not smart enough. I want ice cream!"

6. "Hmmm, wait a minute ... map, reduce, filter. This is something I recognize."

7. "Yes. Clojure, yes, yes."

8. "OMG, this language is so powerful. OMG, I even understand some of it."

9. "defn, keywords, multi-methods, macros, juxt, slurp, ha ha ha ha ..."

10. "Pretty clean. Yeah, I've learned the keyboard shortcut to nicely format the code. And threading macros are nice!"

11. "I ❤️ Clojure. Everything about it makes sense. It's is the language I've been searching for all my life."

12. "Empty your mind, be formless, shapeless - like water. Now you put water into a cup, it becomes the cup. You put water into a bottle, it becomes the bottle. You put it in a teapot, it becomes the teapot. Water can flow, or it can crash. Be water, my friend." *

You might wonder what stage I'm currently in. Well, probably somewhere between ๐Ÿ™‚ and ๐Ÿ˜€.

Here's some of the sources that I have learned a lot from:

I'm sure I will keep trying, failing, learning and mostly smiling in 2021 ✨

* Yes, Bruce Lee said that.

Monday, December 28, 2020

The ZooKeeper's New Year's Resolution

(... will probably not be lose weight. Because it has already been fulfilled)

What happened during 2020?

The Node.js ZooKeeper Client - simply called zookeeper - have been released 5 times and the current version is now 4.7.1.

๐ŸŽ‰ Packaging

The source code is packaged differently, making the footprint a lot smaller and the install process simplified. To summarize: the ZooKeeper lost weight.

๐ŸŽ‰ Prebuilds make the install process really, really fast

The install process is faster than ever. If you are a Mac OS X or Windows user, there is no longer any need to build an AddOn during the install process. Everything is already included in the package, thanks to a cool tool called prebuildify. Linux user? Don't worry, the installer will quickly build a Native Node.js AddOn for the Linux flavor you are running. During 2021 we will probably include prebuilds for the most common Linux flavors.

๐ŸŽ‰ TypeScript

TypeScript declarations makes the Developer Experience very nice. With type hints, function parameter docs and autocomplete.

๐ŸŽ‰ async zookeeper

Promise based functions are the default.
await client.create(path, data, constants.ZOO_EPHEMERAL);

๐ŸŽ‰ Same client for all platforms

The same version of the C Client source code is now used in Linux, Mac OS X and Windows 10 to build a Node.js native AddOn. Before that, there was an issue with Windows clients connecting to a ZooKeeper server v3.4.8 that made us add a workaround - reverting to a really old client version for Windows users. But that is now solved and all platforms share the same set of modern features. Yay!

๐Ÿš€ What's next?

Adding support for the new node types introduced in Apache ZooKeeper server v3.5.5:
Container and TTL. The features will probably be released during January 2021.

๐ŸŽ‰ Happy New Year! ๐ŸŽ‰