Ken Huang
whatacold.bsky.social
Ken Huang
@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
I'm building a SaaS with #Clojure, and I found it was quite easy to send emails using #postal github.com/drewr/postal over the weekend. Do I just stick with it, or do I need to use something like Resend?
GitHub - drewr/postal: Clojure email support
Clojure email support. Contribute to drewr/postal development by creating an account on GitHub.
github.com
September 1, 2025 at 4:24 PM
Reposted by Ken Huang
From hackernews 😍 #babashka #clojure
August 18, 2025 at 2:48 PM
Reposted by Ken Huang
#Emacs send-to (aka #macOS sharing) merged upstream

xenodium.com/emacs-send-t...

I'm glad I gave it a chance indieweb.social/@xenodium/11...
July 20, 2025 at 9:28 AM
Reposted by Ken Huang
Released Ring 1.14.2 to fix a vulnerability with Apache FileUpload (https://nvd.nist.gov/vuln/detail/CVE-2025-48976)

#clojure
NVD - CVE-2025-48976
nvd.nist.gov
June 17, 2025 at 1:34 AM
🥷 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.
May 15, 2025 at 2:21 PM
🥷 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.
April 29, 2025 at 4:01 PM
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)
April 23, 2025 at 3:59 PM
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...
April 18, 2025 at 1:43 PM
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 #_.
April 5, 2025 at 6:44 AM
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.
March 25, 2025 at 1:46 AM
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...
GitHub - whatacold/google-analytics: 📈A ClojureScript library to collect user events to Google Analytics.
📈A ClojureScript library to collect user events to Google Analytics. - whatacold/google-analytics
github.com
March 22, 2025 at 4:25 PM
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
March 22, 2025 at 11:18 AM
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?
March 18, 2025 at 4:42 PM
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...
github.com
March 18, 2025 at 12:34 PM
Thanks! It looks fantastic! And here is the page for #clojure: learnxinyminutes.com/clojure/
March 17, 2025 at 1:05 PM
Reposted by Ken Huang
Noj in a JAR - setup-free Clojure for beginners:

https://www.youtube.com/watch?v=gHwFCOkBb_o

#clojure #datascience
March 12, 2025 at 8:08 AM
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...
Rewrite of a Flask Web App in Clojure
Intro A few years ago, I made a simple web app in Flask to deal with some text processing problems from my daily work. It has two main features: Feature #1: generating compile_commands.json for GNU Ma...
whatacold.io
March 10, 2025 at 12:38 PM
Reposted by Ken Huang
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 🔥
March 10, 2025 at 10:00 AM
Reposted by Ken Huang
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.
SciNoj Light: an online conference for Clojure data-analysis stories
an online conference for Clojure data-analysis stories
scicloj.github.io
March 8, 2025 at 6:01 PM
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 Debugging Techniques
If you are new to Emacs, you may run into some errors, especially after you copied some elisp snippets from the Internet or elsewhere. Don't panic! It happens, it's just part of the learning process. ...
whatacold.io
February 26, 2025 at 5:18 PM
Reposted by Ken Huang
Emacs 30.1 is out!

lists.gnu.org/archive/html...

Happy Monday!
Emacs 30.1 released
lists.gnu.org
February 24, 2025 at 6:21 AM
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...
Tags · reagent-project/reagent
A minimalistic ClojureScript interface to React.js - Tags · reagent-project/reagent
github.com
February 22, 2025 at 2:18 PM
Reposted by Ken Huang
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...
Scicloj AI Meetup 1: voice-fn - real-time voice-enabled AI pipelines
The scicloj-ai-meetups group is a new developer community focused on AI models, their underlying principles, and practical applications. The group is organized by @stoica94 and @daslu, emerging from ...
clojureverse.org
February 19, 2025 at 12:21 PM
😂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...
February 18, 2025 at 4:35 PM