56,966 blogs ยท [ { "id": "01a0874c-e282-721e-9f3c-1910ea2df4f0", "title": "Creating Desktop Apps with Clojure and Cljfx", "url": "https://blog.kenhuang.io/blog/2026-04-23-desktop-app-clojure-cljfx/", "published_at": "2026-04-23T14:49:27+00:00" }, { "id": "01a0874c-e283-7137-8842-479a325c5005", "title": "Your Screenshots Deserve Better. Introducing Backdrop.", "url": "https://blog.kenhuang.io/blog/2026-03-10-backdrop-intro/", "published_at": "2026-03-10T14:49:27+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff939c8683", "title": "๐Ÿฅท Clojure Pro Tip 5: Hiccup Raw", "url": "https://blog.kenhuang.io/blog/2025-05-15-clojure-tip-hiccup-raw/", "published_at": "2025-05-15T04:49:27+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026162950a", "title": "๐Ÿฅท Clojure Pro Tip 4: Cider ClojureDocs", "url": "https://blog.kenhuang.io/blog/2025-04-29-clojure-tip-cider-clojuredocs/", "published_at": "2025-04-29T04:49:27+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff941ad74f", "title": "๐Ÿฅท Clojure Pro Tip 3: the Thread-As Macro", "url": "https://blog.kenhuang.io/blog/2025-04-23-clojure-tip-thread-as/", "published_at": "2025-04-23T04:49:27+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff95118a06", "title": "๐Ÿฅท Clojure Pro Tip 2: group-by", "url": "https://blog.kenhuang.io/blog/2025-04-18-clojure-group-by/", "published_at": "2025-04-18T04:49:27+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff95549986", "title": "Collecting Events to Google Analytics using ClojureScript", "url": "https://blog.kenhuang.io/blog/2025-04-11-google-analytics-clojurescript/", "published_at": "2025-04-11T14:49:27+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff963b9a34", "title": "๐Ÿฅท Clojure Pro Tip 1: the Discard Reader Symbol", "url": "https://blog.kenhuang.io/blog/2025-04-05-clojure-tip-discard-reader-symbol/", "published_at": "2025-04-05T04:49:27+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff9727f856", "title": "Rewrite of a Flask Web App in Clojure", "url": "https://blog.kenhuang.io/blog/2025-02-22-flask-clojure-rewrite/", "published_at": "2025-02-22T14:46:05+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff980a73df", "title": "Constructing Clojure Maps Conditionally", "url": "https://blog.kenhuang.io/blog/2025-01-05-construct-a-map-clojure/", "published_at": "2025-01-05T02:40:07+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026179c2f4", "title": "Getting Started with Cider for Clojure Programming", "url": "https://blog.kenhuang.io/blog/2024-12-22-getting-started-with-cider/", "published_at": "2024-12-22T09:17:15+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff99b0e918", "title": "A Few Quick Notes About babashka/fs", "url": "https://blog.kenhuang.io/blog/2024-12-07-babashka-fs-notes/", "published_at": "2024-12-07T14:24:41+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff9aa3559a", "title": "Doing Unit test in Clojure Is Easy", "url": "https://blog.kenhuang.io/blog/2024-11-27-clojure-unit-test/", "published_at": "2024-11-28T15:10:56+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff9af23c7d", "title": "Clj-async-profiler Rocks", "url": "https://blog.kenhuang.io/blog/2024-11-28-beholder-clj-async-profiler/", "published_at": "2024-11-28T14:23:32+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff9b9da80c", "title": "TailwindCSS Docs Index", "url": "https://blog.kenhuang.io/blog/2024-11-23-tailwindcss-docs-index/", "published_at": "2024-11-23T11:50:56+00:00" }, { "id": "01a0874c-e284-73a4-82e1-5dff9be53eb6", "title": "Adding Clojure Dependencies from the Command Line", "url": "https://blog.kenhuang.io/blog/2024-11-09-clj-deps-cmdline/", "published_at": "2024-11-09T13:02:56+00:00" }, { "id": "01a0874c-e285-71ca-a0f3-44d6aaf12992", "title": "Bitten by Lazy Sequence of map", "url": "https://blog.kenhuang.io/blog/2024-11-10-clojure-lazy-seq-case/", "published_at": "2024-11-09T13:02:56+00:00" }, { "id": "01a0874c-e285-71ca-a0f3-44d6ab051f97", "title": "Anonymous Functions in Thread Macros", "url": "https://blog.kenhuang.io/blog/2024-11-08-clojure-thread-macro-anonymous-function/", "published_at": "2024-11-08T13:02:56+00:00" }, { "id": "01a0874c-e285-71ca-a0f3-44d6abca115d", "title": "Starting a Clojure nREPL Manually for Cider", "url": "https://blog.kenhuang.io/blog/2024-11-08-cider-clojure-repl-cmdline/", "published_at": "2024-11-07T16:02:56+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70262356423", "title": "Join Every N Lines By A Separator in Emacs", "url": "https://blog.kenhuang.io/blog/2023-11-25-emacs-join-every-n-lines/", "published_at": "2023-11-25T04:24:24+00:00" }, { "id": "01a0821a-c335-7130-91f1-d702630e50f3", "title": "Restoring Emacs' Window Layouts", "url": "https://blog.kenhuang.io/blog/2023-11-19-emacs-winner-mode/", "published_at": "2023-11-19T05:02:42+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70263da4c84", "title": "Emphasize Text By Dragging Mouse in Org-mode", "url": "https://blog.kenhuang.io/blog/2023-08-14-org-emphasis-dragging-mouse/", "published_at": "2023-08-14T14:48:20+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70264d9db98", "title": "Join Lines By A Separator in Emacs", "url": "https://blog.kenhuang.io/blog/2023-06-12-emacs-join-lines/", "published_at": "2023-06-12T14:23:12+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70264e00254", "title": "Hugo Blogging in Emacs", "url": "https://blog.kenhuang.io/blog/2022-10-10-emacs-hugo-blogging/", "published_at": "2022-10-10T14:50:48+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026511b0de", "title": "Auto-complete Accounts From Other Beancount Files in Emacs", "url": "https://blog.kenhuang.io/blog/2022-09-10-emacs-beancount-account-files/", "published_at": "2022-09-10T03:13:38+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70266026d12", "title": "A Bookmarklet for Copying a Link as an Org-mode Link", "url": "https://blog.kenhuang.io/blog/2022-08-08-org-link-bookmarklet/", "published_at": "2022-08-08T15:33:05+00:00" }, { "id": "01a0821a-c335-7130-91f1-d702664634bf", "title": "Emacs Debugging Techniques", "url": "https://blog.kenhuang.io/blog/2022-07-17-emacs-elisp-debug/", "published_at": "2022-07-17T01:57:31+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70266e252ef", "title": "Duplicate the current line in Emacs", "url": "https://blog.kenhuang.io/blog/2022-05-23-emacs-duplicate-line/", "published_at": "2022-05-23T13:29:28+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70267865938", "title": "Adjust the laptop's screen brightness in Emacs", "url": "https://blog.kenhuang.io/blog/2022-05-21-adjust-screen-brightness-emacs/", "published_at": "2022-05-21T03:50:25+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70268260be3", "title": "How to Kill a \"Visible\" Buffer Quickly in Emacs", "url": "https://blog.kenhuang.io/blog/2022-04-09-emacs-kill-other-buffer/", "published_at": "2022-04-09T15:11:36+00:00" }, { "id": "01a0874c-e286-710b-9839-298deb03905a", "title": "How to append items to the CSV file without header row?", "url": "https://blog.kenhuang.io/blog/2022-04-09-scrapy-csv-without-header/", "published_at": "2022-04-09T14:32:11+00:00" }, { "id": "01a0874c-e286-710b-9839-298deb346544", "title": "About Me", "url": "https://blog.kenhuang.io/about/", "published_at": "2022-03-09T04:37:20+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70268e09ee2", "title": "Eglot for Better Programming Experience in Emacs", "url": "https://blog.kenhuang.io/blog/2022-01-22-emacs-eglot-lsp/", "published_at": "2022-01-22T03:36:18+00:00" }, { "id": "01a0874c-e286-710b-9839-298dec57a9be", "title": "How to Reload i3status config On the Fly", "url": "https://blog.kenhuang.io/blog/2022-01-14-i3wm-i3status-reload-config/", "published_at": "2022-01-14T14:36:13+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026979d14c", "title": "Language Shadowing with subed in Emacs", "url": "https://blog.kenhuang.io/blog/2022-01-12-language-shadowing-with-subed-emacs/", "published_at": "2022-01-12T13:41:54+00:00" }, { "id": "01a0821a-c335-7130-91f1-d70269f4866a", "title": "Writing a Python Script in Emacs in 45 Minutes!", "url": "https://blog.kenhuang.io/blog/2021-12-11-writing-python-in-emacs/", "published_at": "2021-12-11T01:24:53+00:00" }, { "id": "01a0874c-e286-710b-9839-298dedbc7287", "title": "Beautiful Soup 4 Cheatsheet", "url": "https://blog.kenhuang.io/blog/2021-12-05-beautifulsoup4-cheatsheet/", "published_at": "2021-09-25T15:01:40+00:00" }, { "id": "01a0874c-e286-710b-9839-298dee69552d", "title": "Clojure reduce: one case for text processing", "url": "https://blog.kenhuang.io/blog/2021-09-19-clojure-reduce-text-processing/", "published_at": "2021-09-19T02:39:23+00:00" }, { "id": "01a0874c-e286-710b-9839-298deed081b1", "title": "illustrate.clj to Illustrate Clojure Snippet", "url": "https://blog.kenhuang.io/blog/2021-08-07-illustrate-clojure-snippet/", "published_at": "2021-08-07T10:49:25+00:00" }, { "id": "01a0874c-e286-710b-9839-298def9948cf", "title": "String Title Case in Clojure", "url": "https://blog.kenhuang.io/blog/2021-07-25-clojure-string-title-case/", "published_at": "2021-07-25T03:51:39+00:00" }, { "id": "01a0874c-e286-710b-9839-298deff3ca04", "title": "String Manipulation in Clojure", "url": "https://blog.kenhuang.io/blog/2021-07-22-clojure-string-manipulation/", "published_at": "2021-07-22T15:29:11+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026a9c11f8", "title": "Send Notifications from Emacs with i3wm and Dunst", "url": "https://blog.kenhuang.io/blog/2021-07-17-emacs-i3wm-dunst/", "published_at": "2021-07-17T04:22:10+00:00" }, { "id": "01a0874c-e286-710b-9839-298df0ea03db", "title": "A Random Password Generator in Babashka", "url": "https://blog.kenhuang.io/blog/2021-07-11-babashka-random-password-generator/", "published_at": "2021-07-11T01:18:41+00:00" }, { "id": "01a0874c-e286-710b-9839-298df1dd2fd7", "title": "An Online Python re.findall Service", "url": "https://blog.kenhuang.io/blog/2020-10-21-a-python-re.findall-service/", "published_at": "2020-10-21T14:51:00+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026ac05df1", "title": "Generate Call Graphs Using Doxygen in Emacs", "url": "https://blog.kenhuang.io/blog/2020-08-22-generate-call-graphs-using-doxygen-in-emacs/", "published_at": "2020-08-22T10:57:00+00:00" }, { "id": "01a0874c-e286-710b-9839-298df2331fcd", "title": "Is It Safe to Use Redis As a Data Store?", "url": "https://blog.kenhuang.io/blog/2020-06-25-is-it-safe-to-use-redis-as-a-data-store/", "published_at": "2020-06-25T14:37:00+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026ad94e5b", "title": "A Trick to Troubleshoot Emacs Subprocess Creating", "url": "https://blog.kenhuang.io/blog/2020-05-30-a-trick-to-troubleshoot-emacs-subprocess-creating/", "published_at": "2020-05-30T03:52:00+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026b71fd6c", "title": "ppcompile: An Emacs Package to Help Coding Locally", "url": "https://blog.kenhuang.io/blog/2020-03-07-ppcompile-to-help-stay-coding-locally/", "published_at": "2020-03-07T15:50:00+00:00" }, { "id": "01a0874c-e286-710b-9839-298df3ab2406", "title": "The Binary Search Idea for Narrowing Down Problem Space", "url": "https://blog.kenhuang.io/blog/2020-02-04-binary-search-algorithm-vs-problem-solving/", "published_at": "2020-02-04T10:48:00+00:00" }, { "id": "01a0874c-e286-710b-9839-298df4061c16", "title": "Manage SSH Connections with ~/.ssh/config", "url": "https://blog.kenhuang.io/blog/2019-12-22-manage-ssh-connections-with-ssh-config/", "published_at": "2019-12-22T10:52:00+00:00" }, { "id": "01a0874c-e286-710b-9839-298df4a1da42", "title": "Why Can't Git Fetch Remote Branches Other Than Master?", "url": "https://blog.kenhuang.io/blog/2019-12-01-why-cant-git-fetch-remote-branches-other-than-master/", "published_at": "2019-12-01T08:00:00+00:00" }, { "id": "01a0874c-e286-710b-9839-298df4eb5bff", "title": "Open New Urxvt from within Emacs", "url": "https://blog.kenhuang.io/blog/2019-11-25-start-a-new-urxvt-terminal-on-emacs/", "published_at": "2019-11-25T14:47:00+00:00" }, { "id": "01a0874c-e286-710b-9839-298df54686e8", "title": "Build Docker Images for Qtile", "url": "https://blog.kenhuang.io/blog/2019-10-07-build-docker-images-for-qtile/", "published_at": "2019-10-07T05:25:00+00:00" }, { "id": "01a0874c-e286-710b-9839-298df5fcad0b", "title": "How To Run Bleeding-edge Qtile Within a Virtualenv", "url": "https://blog.kenhuang.io/blog/2019-09-29-how-to-run-the-bleeding-edge-code-of-qtile/", "published_at": "2019-09-29T09:05:00+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026b827ae1", "title": "How To Revert a Series of Git Commits?", "url": "https://blog.kenhuang.io/blog/2019-09-24-how-to-revert-a-series-of-commits-with-git/", "published_at": "2019-09-24T15:14:00+00:00" }, { "id": "01a0874c-e287-71f6-a1bf-ebbaa5c76f23", "title": "How to Change Web Page Titles Easily", "url": "https://blog.kenhuang.io/blog/2019-08-18-how-to-rename-web-page-titles-in-a-lightweight-way/", "published_at": "2019-08-18T06:57:00+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026bd69b70", "title": "Generating org-mode Outlines for wikiHow Articles", "url": "https://blog.kenhuang.io/blog/2019-07-20-generating-org-mode-outlines-for-wikihow-articles/", "published_at": "2019-07-20T12:04:00+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026c8ce142", "title": "Understanding align-regexp of Emacs", "url": "https://blog.kenhuang.io/blog/2019-07-20-understanding-align-regexp-of-emacs/", "published_at": "2019-07-20T05:50:00+00:00" }, { "id": "01a0874c-e287-71f6-a1bf-ebbaa75a6517", "title": "ER Diagrams in Plain Text", "url": "https://blog.kenhuang.io/blog/2019-07-06-render-erd-on-the-web/", "published_at": "2019-07-06T03:59:00+00:00" }, { "id": "01a0821a-c335-7130-91f1-d7026cc3829c", "title": "Fine-tune Curly Braces Style of Yasnippet Snippet on the Fly", "url": "https://blog.kenhuang.io/blog/2019-02-24-fine-tune-style-of-yasnippet-snippet-on-the-fly/", "published_at": "2019-02-24T08:48:00+00:00" } ] posts Claim your blog
Back to whatacold
Blog ยท corpus.blog/blogs/blog.kenhuang.io/posts

whatacold

blog.kenhuang.io

2026

2025

2024

2023

2022

2021

2020

2019