Profile avatar
whatacold.bsky.social
Falling in love with #clojure, #clojurescript, and #emacs. Building Chrome extensions and websites using them. C++ dev by day. GitHub: http://github.com/whatacold YouTube: https://www.youtube.com/@kenhuang-tech Blog: https://whatacold.io
87 posts 58 followers 48 following
Prolific Poster
Active Commenter

Released Ring 1.14.2 to fix a vulnerability with Apache FileUpload (https://nvd.nist.gov/vuln/detail/CVE-2025-48976) #clojure

🥷 Clojure Pro Tip 4 In case you don’t know it, we can use raw strings, like embedding JS code, in hiccup. I just found out we can use `raw` to prevent strings from getting escaped. I should’ve found this at the beginning, as it’s mentioned on the homepage, but somehow I missed it.

🥷 Clojure Pro Tip 3 Sometimes, we may want a few examples of a #clojure API for inspiration. With #cider in #Emacs, we can run M-x cider-doc to see the docstring for the symbol. We can even use M-x cider-clojuredocs for examples if the symbol is from the language core.

Clojure Pro Tip🥷 2 So you're more than excited to find out how #clojure thread macros can make code clean and concise, you just love it! But at some point you'll be trapped a bit as the threaded argument's positions are inconsistent using -> or ->>. Luckily, you can use as-> (see the pic)

It's amazingly easy to group things in #Clojure. The core provides a group-by function directly. Together with many built-in functions or key functions, it creates tons of possibilities, and we can also bake our grouping function if none is satisfying. Example from github.com/functional-k...

Clojure Pro Tip🥷 In #clojure, we can use comment for tests in development. However, since a comment evaluates to nil, you may run into surprising results/errors if you misuse it. In these cases, you may tend to use ; to comment them out, but a better choice is to use the discard reader symbol #_.

Clojure practice tip💡 Even if we might not have the opportunity to code in #clojure at work, we can still use it for ad-hoc scripting or proofs of concept. I promise it’s a lot of fun, thanks to the interactive development approach. We can try out ideas, building stuff bottom-up or top-down.

ANN: a small #clojurescript lib for collecting events for google analytics, you can use it in a web app or a chrome extension. github.com/whatacold/go...

Emacs Pro Tip🥷 Having too many buffers isn't good for switching buffers in #emacs. After finishing a project, we'd better close all its buffers. How? 1. C-x C-b opens up ibuffer 2. Click at the top to sort by that column, or hit s f 3. Mark them by m, then hit D to close them

Trying #emacs on a Macbook a little bit, not productive at all right now. Which build do you use? And how do you deal with no right ctrl?

Sometimes the best way to gain new insights on how to get things to work is to check out the source code. Just found out how to set thread numbers by setting :min-threads and :max-threads for #ring and #jetty in #clojure: github.com/ring-clojure...

Thanks! It looks fantastic! And here is the page for #clojure: learnxinyminutes.com/clojure/

Noj in a JAR - setup-free Clojure for beginners: https://www.youtube.com/watch?v=gHwFCOkBb_o #clojure #datascience

Over the weekend, I finally finished my reflection on a rewrite of a Flask web app in Clojure, the journey was satisfying, but it wasn't smooth sailing. There were many aspects that I would like to dig deeper in the future: whatacold.io/blog/2025-02...

Why #clojure Shines: Episode 1 - REPL Driven Development 🧵 1/ Many languages boast REPLs, Clojure takes it to the next level. Imagine a live system springing to life the moment you fire up your project. With a seamless editor connection, you're not just coding—you’re in a live code playground 🔥

One more week to propose a talk for the ⭐SciNoj Light⭐ #Clojure conference. scicloj.github.io/docs/communi... If anybody is considering a talk, now is the time to talk with us, and we will help you brainstorm your draft proposal.

Hey #emacs friends! If you also blog using orgmode and hugo, you might wanna check this out: a tempel template for #orgmode to make it easier: (hugoimg "#+caption: " (s caption) n "#+attr_html: :alt " (s caption) n "#+attr_html: :title Click to enlarge the image" n "[[file:/img/" p ".jpg]]") 👇

Emacs 30.1 is out! lists.gnu.org/archive/html... Happy Monday!

It's great to see another release of #reagent, a #clojure thin wrapper for #react, after more than one year, thanks for the fantastic work! github.com/reagent-proj...

See you this Saturday at the beginning of a new #Clojure #AI meetup series organized by #Scicloj. This time, @ovistoica.com will talk about #voicefn, a Clojure library for building real-time voice-enabled AI pipelines. clojureverse.org/t/scicloj-ai...

Elements of Clojure is now available as a free PDF: elementsofclojure.com

😂Suffered one side effect of writing too much #clojure while opening an issue for libpython-clj, an incredible lib bridging clj and #python: github.com/clj-python/l...

Cytoscape looks like an interesting lib: js.cytoscape.org

There's just 2 weeks left to submit a talk for #reclojure 2025, a community-run #clojure conference that will take place in London in May. https://www.reclojure.org/

Now my blog site starts to look more like one on #clojure and #emacs, when you click on one of the nav bar items, you're actually "calling" a function 😬: whatacold.io

It’s very nice that someone happened to buy me a cup of coffee while I’m planning to rewrite the website: texttoolkit.com, thanks! It was written using #flask years ago, time to brush it up a little bit.

Implemented Namco 163 expansion audio in LispyTunes, and figured out how to cycle the waves too #chiptune #clojure

2025-02-10 Emacs news sachachua.com/blog/2025/02... #emacs #EmacsNews

I just updated an small, old #clojure library of mine and released a 1.0.0 version: https://github.com/weavejester/progrock

Finally, I get started using lein to set up a #compojure project. But then I got stuck on how to start an nREPL for #cider. It turned out that there is an option in :ring, which somehow isn't mentioned in lein-ring's docs. I found out it thanks to this answer: stackoverflow.com/a/28759905