Richard talks with Nikita Prokopov about some of the reasons he'd felt a sense of disenchantment with the direction of software in the past, and strategies he's developed for improving things in the future. | Continue reading
Simple story, really. I wanted an HTTP router for Clojure that is order-independent and allows for overlapping routes. I didn’t find one, so I had to write my own. Order-Independence If your app is any big, it probably has modules. Each module defines its own routes. So how do … | Continue reading
Преобразования, которые происходят с текстом для его отображения на экране | Continue reading
Twenty years ago, Joel Spolsky wrote: There Ain’t No Such Thing As Plain Text. It does not make sense to have a string without knowing what encoding it uses. You can no longer stick your head in the sand and pretend that “plain” text is ASCII. A lot has changed in 20 years. In … | Continue reading
I was complaining the other day about the ergonomics of ClojureScript and realized an interesting thing. Quick context: Clojure is a modern Lisp. ClojureScript is a Clojure dialect that compiles to JS. From its very beginning, it relied on the Google Closure compiler in an el … | Continue reading
After the previous post, I figured that the best way to decide on the direction for Humble UI is to make an experiment. And I did. I implemented a reactive/incremental computation engine (signals) and wrote a simple TodoMVC in it. Following are my thoughts on it. Signals The idea … | Continue reading
Recently I’ve been trying to improve state management and component API in Humble UI. For that, I’ve tried to read and compile all the possible known approaches and synthesize something from them. I haven’t decided on anything for Humble UI yet, let’s say I’m in an experimenting … | Continue reading
It’s a strange thing to announce, but I wrote Clojure plugin for Sublime Text. Again. I mean, the previous version worked fine, but it had a few flaws: REPL depended on syntax highlighting (yikes!), the whole implementation was in a single file, it was hard to add REPLs. So, … | Continue reading
I’ve made a game! Well, a small one and in just 48 hours, but still a game. You can play it in the browser: Here are my observations. Game engine Using a game engine helps a lot. It solves a lot of problems that you don’t want to deal with in 48 hours or, probably, never. I ch … | Continue reading
Jack Rusher is asking for nREPL feedback from Clojure tooling authors: After implementing an nREPL server for a new Clojure runtime, I’m begging the other tools maintainers to work with me to define an actual standard that works.🥹 Since I am also a tool maintainer AND … | Continue reading
No, I am not working on second version. This is just a list of ideas based on 8 years developing DataScript and 3 years building web-applications with it full-time. Maybe you’ll find inspiration in these? Feel free to borrow anything you like! UUIDs for entity IDs Makes it easier … | Continue reading
Horizon: Forbidden West seems like a great game: fantastic design and art direction, great music. Only one thing falls short: cut scene editing. In this article, we’ll analyze one particular cut scene, discuss every mistake, and step by step edit a better version of it. The probl … | Continue reading
Using Humble UI from the REPL | Continue reading
Humble UI approach to layout | Continue reading
Overall shape of Humble UI project, a Clojure UI framework | Continue reading
New Sublime Text plugin for working with Clojure | Continue reading
Clojure Sublimed is a Clojure development environment for Sublime Text. | Continue reading
A non-comprehensive and opinionated guide to best monitor for programming | Continue reading
Why Skija and JWM use Python instead of existing build tool | Continue reading
Ideas and inspirations for new Clojure framework for desktop apps | Continue reading
4-day coding marathon | Continue reading
My setup for long-form writing in Sublime Text | Continue reading
What happens when you set fontSize: 32 in your favorite editor | Continue reading
Detailed look into all the machinery involved in rendering Emoji | Continue reading
Brief transcript of What I Know podcast with Phil Libin on entrepreneurship | Continue reading
Macs/4K 120Hz displays compatibility list | Continue reading
Introducing Skija, Java bindings for Google graphics library, Skia | Continue reading
I get at least 27 tech annoyances on a single day | Continue reading
is that it doesn’t change | Continue reading
Why putting alpha in your project name does more harm than good | Continue reading
A non-comprehensive and opinionated guide to best monitor for programming | Continue reading
File synchronization can be fun and painless if you don’t have to deal with corporate bullshit. | Continue reading
Simple tips on fixing small details in UI | Continue reading
Cleaning up and organizing single-file utils namespace | Continue reading
“Premature optimization being the root of all evil” is the root of all evil | Continue reading
A few notes on SwiftUI and why UI frameworks should not try to be “smart” | Continue reading
Chrome team breaks existing web to make Chrome perform better | Continue reading
Software abstraction ladder becomes too tall and starts to fall | Continue reading
Everything is going to hell and nobody seems to care | Continue reading
If you think about publishing an article, starting a blog or even just sharing a short rant on Medium, please consider what you’ll be putting your readers through. | Continue reading
Migrating a web app from Ring to Pedestal | Continue reading
Building uberjar from deps.edn | Continue reading