Каким должен быть редактор кода в 2024 году? Почему Vim морально устарел, а IDEA, кажется, сдает позиции? Популярность Zed, минимализм SublimeText, гибкость Emacs и многое другое в новом выпуске. | Continue reading
Squint is a light-weight dialect of ClojureScript with a compiler and standard library. “The idea is that when you squint, it still looks like CLJS”. | Continue reading
Visual programming and textual code should co-exist next to each other, not replace one another | Continue reading
Clojure macros have two modes: avoid them at all costs/do very basic stuff, or go absolutely crazy. Here’s the problem: I’m working on Humble UI’s component library, and I wanted to document it. While at it, I figured it could serve as an integration test as well—since I showcase … | Continue reading
We explore how to build local-first sync on top of simple file storage | Continue reading
In Clojure, we all love the REPL. We love playing with our code and seeing results applied live without ever restarting the app. But in any project, there comes a time when your state becomes more complex than a simple set of functions. Evaluating the buffer does not cut it anymo … | Continue reading
In Clojure, we all love the REPL. We love playing with our code and seeing results applied live without ever restarting the app. But in any project, there comes a time when your state becomes more complex than a simple set of functions. Evaluating the buffer does not cut it anymo … | Continue reading
How I build a website for choosing movies | Continue reading
Looking for an ergonomic way to define components | Continue reading
Why we need OOP, even in Clojure | Continue reading
Илья рассказывает, как мы просрали многозадачность, а Никита ругает консольный интерфейс Гита. | Continue reading
Somehow we forgot how to center rectangles and must find our way back | Continue reading
Дата и время — не самый простой домен. То зимнее-летнее время, то часовые пояса не кратны часу. А что, если не надо привязываться к часовому поясу? Еще в чате распределенной команды написали, что митинг в 5PM, так когда подключаться? Как синхронизировать время с колонией на Марсе … | Continue reading
Unique challenges that DST presents for clock/watch designers | Continue reading
Clj-Reload is smarter way to reload Clojure code during development. | Continue reading
I was a bit out of touch with modern front-end development. I also remembered articles about web bloat, how the average web page size was approaching several megabytes! So all this time I was living under impression that, for example, if the average web page size is 3 MB, then Ja … | Continue reading
The problem Do you love interactive development? Although Clojure is set up perfectly for that, evaluating buffers one at a time can only get you so far. Once you start dealing with the state, you get data dependencies, and with them, evaluation order starts to matter, and now yo … | Continue reading
This is a checkbox: It’s square, it has a checkmark inside, and its distinguishing feature is that you can select any number of them at the same time: Different operating systems rendered them differently during their evolution: macOS Sonoma (2023) OS X Mavericks (2013) OS X Le … | Continue reading
Что такое Open Source, как тут программировать и получать опыт, как зарабатывать и стоит ли вкатываться | Continue reading
London Clojurians is an open and friendly community that supports the adoption and practice of Clojure in any of its forms. | Continue reading
Introduction to Humble UI, a new JVM Clojure library for desktop GUI applications. Why is it needed, how is it implemented, how deep is the rabbit hole, who could it be useful to, and what can you build with it? | Continue reading
This post follows the implementation of VDOM for Humble UI. We look at various aspects of the problem, weigh our options, and decide on the solution. In some cases, it’s not clear how to proceed, so we just state the problem. Follow along if you are curious about how the sausage … | Continue reading
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