When you let an AI agent write Clojure code, you expect it to leverage the language's superpowers—the REPL's interactivity, structural editing, format-preserving code manipulation, and the rich ecosystem of wrapper libraries. Instead, what you typically see is mediocre code written slowly, as the agent makes the same mistakes every developer learns to avoid. I discovered this the hard way. The…
I keep seeing people share vibe-coded apps built on TypeScript/React + Supabase — seemingly the default recommendation from Lovable or Cursor. As a Clojure programmer, I can't stay quiet about this. In an era where AI agents are deeply embedded in the development workflow, that choice carries structural hidden costs that almost nobody is talking about. Context Window Is the Bottleneck, and…
When I told others that I am a Clojure programmer, they responded apathetically. Why so many people in Taiwan never heard of this great programming language? One day, an idea occurred to me that how about teaching some students? The advertisement I re-wrote my advertisement again and again. What kind of value proposition would be appreciated by my prospects? I actually did not know. At the end, I…
The background of this post I began to use Datomic seriously in my project at work from February 2019. I encountered certain performance issues and I solved them through disk cache and LU cache. Analytical queries need pre-computation My project had several analytical queries which implemented the business rules. With Datomic expressive query power, it was very easy to implement queries that…
Background I needed to do eight Excel ETLs at my project. At the beginning, I just implemented some of the ETLs without any design. I did not even implement schema validation, and then I felt the pain soon. After several re-writing, I abstracted out some idioms and patterns for ETL. Problems We need to import data from several Excel files into Datomic database. There are several concerns with the…
I live in Taiwan and I can not find Clojure jobs here. Although the first legal gay wedding in Asia took place here, it seems that the real programming language innovation still needs some evangelists to spread it. Therefore, I decide to create Clojure job by myself. In January this year, I had a chance to develop enterprise software for a big company, and I chose Clojure as my primary technical…
If we build a Luminus project with db option other than datomic, for example +postgres , the code arrangement is much more straight forward. Open the file resources/sql/queries.sql , and put sql query and sql transaction command in this file. Then, we can just require the xxx.db.core namespace, the db queries or commands are totally available. Where to put the db queries if we use db option as…
If you want to have a portable Clojure development environment and you use Vagrant, vim-fireplace, you may consider to try my Vagrantfile . git clone https://github.com/humorless/dotfiles cd dotfiles vagrant up Certain part of vagrantfile you may need to remove. if Vagrant.has plugin? "vagrant-timezone" config.timezone.value = "Asia/Taipei" end The beginning of this repo Several years before, I…
The background of this post I began to use Datomic seriously in my project at work from February 2019. Now, it is time to write down certain experience. When I just began, I found a lot of documents talking about how to use Datomic. However, I still found certain points worth to mention from my project. Query API and Pull API are enough When I just begin to write Datomic, soon I found post from…
patterns = programming with abstactions that are not powerful enough 先來引述一下 Paul Graham 的句子 When I see patterns in my programs, I consider it a sign of trouble. The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I'm using abstractions that aren't powerful enough. Paul Graham - Revenge of the Nerds…