Den

Den

@fedosov.me

Full-stack Developer & IT Consultant. Vue/Nuxt · TS · Rails now: — https://syn-co.me/ — see everyone's working hours — lightweight system monitor — https://github.com/denisfl/sumi — https://micrajs.dev/ — reactive framework

27 followers101 following113 posts

For a large class of apps — CRUD, admin panels, dashboards, forms — that's enough, with no separate front end. htmx's gap is the state that lives only in the browser: whether a dropdown is open, a form draft, the active tab.

The server doesn't need it. That's the seam Micra fills: htmx delivers the markup, Micra holds the local state on top. In 2.7.0 the wiring is three lines — mount on swap-in and one autoCleanup() for teardown.

The browser already did server-driven UI — through links and forms, but those replace the whole page. htmx lifts that limit: any element can send a request, with any method, and the response replaces the piece of the DOM you point it at.

A whole layer goes away — no client model to keep in sync with the server. Behavior is written on the element itself: hx-get, hx-target, hx-swap are right there in the markup, no hunting for handlers across JS files (htmx's author has an essay on this — locality of behaviour).

If u write long threads, use standalone blogs instead of using strange paid solutions.

Bluesky@bsky.app

If you like writing long threads on Bluesky, wait until you discover "blog posts." Start blogging with @pckt.blog, @leaflet.pub or @offprint.app today and get 25% off your first year, on us.

I remember when jQuery sat on almost every site — just to reach the DOM. Then the frontend grew: React, Vue, Svelte. For good reasons, but not for everything. Plenty of sites are still simple: server HTML plus a little interactivity.

View full thread

Change the state, the markup follows. No "look up the node by selector, poke style.display." Only the state changed. A switch works the same: a boolean in state, a method that builds the class string, one binding re-rendered on click. The same trick drives a dark-mode toggle.

Micra isn't a replacement for React, Vue, or Alpine — a tool for a narrow niche, ~7 KB, MIT. If htmx, Stimulus, Alpine, or something else fits better, use whatever fits your work.

I remember when jQuery sat on almost every site — just to reach the DOM. Then the frontend grew: React, Vue, Svelte. For good reasons, but not for everything. Plenty of sites are still simple: server HTML plus a little interactivity.

The idea is plain: you write ordinary HTML and mark it up with attributes. Classes stay for styling; data-* carry behavior — data-component (where a component lives), data-show (when to show it), @click (what to call).

I’ve added LLM benchmarks for github.com/denisfl/micr.... It’s clear that smaller models struggle to retain long specifications, but on ~90% of the typical solutions Micra was created for, the results are more than satisfactory. On frontier models, I expect solid perf. even for complex solutions.

I certainly wasn’t planning to write code on a Saturday evening, but it just sort of happened…

So it's time to say hello to Micra.js denisfl.github.io/micra.js/ — a reactive UI framework. Most pages don't need a 45 KB SPA framework. They're server-rendered (Rails, Laravel, Django) and just need a sprinkle of reactivity: modals, forms that validate, etc.

Benchmarks are live: denisfl.github.io/micra.js/ Still verifying whether my Alpine.js adapter is written correctly — but I tried to be fair and honest in comparison. Early results show Micra.js performing extremely well in reactive scenarios — especially list updates and state writes.

В пуско-наладочном режиме начинаю тестировать онлайн мониторинг с алертами в телегу. Хочу за выходные допилить мелкие баги. Если кто хочет потестить на своих серваках, напишите.

Working on how to integrate evergreen notes into my existing system. So far it’s all trial and error. The tricky part is that there are notes and there are documents. I don’t want to separate them as different entities, but merging them doesn’t feel quite right either.

Released a small batch of Inbox improvements. Mostly subtle refinements like better alignments and a cleaner calendar grid with the timeline.

Being a big fan of 37signals, I borrowed their circular progress bar that shows how many tasks for today are done out of the total. I love noticing these tiny details that make an interface feel human. AI can’t invent things like that.

Switched my Inbox transcription from Whisper to Parakeet v3. The speed boost on a Raspberry Pi is insane — short voice notes now transcribe almost instantly.

I made some small design changes in the Inbox. It feels super cozy on mobile now.

Since yesterday, I released my open source solution that I use instead of Evernote, etc. Honestly I was big fan of Evernote and Obsidian for a long time, but I was needed to make some customizations. In one day I just got my Raspberry Pi and install RoR and configure Whisper for my needs.

I haven’t taken any notes or looked at my to‑do lists for over a week. Now I’m just sitting here with a notebook and a pen, and my mind’s completely blank.

Incomes section has been delivered this morning 🎉 Now you can see invoices incomes and add some income manually.

Yay, I finally put together a simple PWA 🎉 The hardest part is still ahead — coming up with an icon and actually drawing it. And yes, that’s exactly the part I’ll procrastinate on until the very end 🙈

Started working on new Create Invoice flow for True North. The first prototype was good, but had some limitations. So now I am trying to extend the flow.

Added quick task save to truenrth.app — just press Enter to reset the timer and start a new task. Tiny feature, but surprisingly satisfying.

Alright, here we go. The landing page still has AI‑generated text for now. There’s a lot to polish and refine. But one thing I’ve realized: it’s impossible to finish everything. truenrth.app is finally taking shape — slowly, quietly, but in the right direction.

Yesterday I spent a lot of time experimenting with handwriting recognition. So far the conclusion is this: my cat reads handwriting better. Cyrillic characters are recognized especially poorly. But as a challenge, it's incredibly engaging. Five hours flew by without me noticing.

Den reposted

The 2025 State of HTML survey is out 2025.stateofhtml.com And I love the opening stat — Lazy Loading FTW! Built-in, simple to use, attributes and elements are HTML's super power. And you can see that reflect in other attributes with the largest increase (details/summary, dialog, fetchpriority!)