Alexander Obukhov

250 posts

Alexander Obukhov

Alexander Obukhov

@sprql

Software Engineer

Katılım Temmuz 2016
546 Takip Edilen49 Takipçiler
Alexander Obukhov retweetledi
Adam Wathan
Adam Wathan@adamwathan·
So many tools could learn from this. Keyboard shortcuts should be driven by being physically efficient, not by necessarily actually sharing letters with the action being performed. We had this right in the "keyboard sticker" era, everyone does it wrong now!
Adam Wathan tweet media
Stephen Haney@stephenhaney

@ivbobrov @paper 100%... we think about keyboard hand vs. mouse hand a lot

English
13
5
144
31.9K
Alexander Obukhov retweetledi
Marcin Krzyzanowski
Marcin Krzyzanowski@krzyzanowskim·
if cli has tui - you do it wrong if cli startup time is 5s - you do it wrong the new wave of cli tools undermine the power of cli tools the unix systems used and tuned for perfect.
English
3
1
21
3.5K
Alexander Obukhov retweetledi
José Valim
José Valim@josevalim·
Very suspicious that OpenAI and Anthropic both dropped major announcements within hours of me publishing this: dashbit.co/blog/why-elixi… They want to silence it. Don't let them. Read it twice. Share it with your colleagues and friends.
English
41
80
631
77.3K
Alexander Obukhov retweetledi
Natalia Ova
Natalia Ova@hndcrftdsftwr·
The best thing about working with Codex/Claude Code is that when you give it a task, no matter what it is, it doesn’t get upset because it’s hard or because it doesn’t like it. It just gets to work without unnecessary questions. ❤️
English
0
1
0
45
Alexander Obukhov retweetledi
Zed
Zed@zeddotdev·
The ACP Registry is live in today's Zed release Register your agent once, and it will be available to every ACP-compatible client. Adopting ACP has never been easier! Thank you to @JetBrains for pushing forward the registry specification 🙏
Zed tweet media
English
10
17
274
17K
Alexander Obukhov retweetledi
José Valim
José Valim@josevalim·
Congratulations @duboc_guillaume! There is still work ahead, but having a whole PhD thesis on Typing Elixir is a massive step forward! Thanks to the CNRS, Remote, Dashbit, Fresha, Starfish*, and Supabase which made this research possible!
José Valim tweet mediaJosé Valim tweet mediaJosé Valim tweet mediaJosé Valim tweet media
Guillaume Duboc@duboc_guillaume

Defending my thesis today at 1:30pm CET: "Typing Dynamic Languages with Set-Theoretic Types: The Case of Elixir". A few years of research on typing Elixir using set-theoretic types. Feel free to join, Zoom link in my website.

English
4
30
289
11.6K
Alexander Obukhov retweetledi
Natalia Ova
Natalia Ova@hndcrftdsftwr·
RFC + Claude Code skill here: 👉 github.com/handcraftedsof… Looking for feedback from people building dev tooling, agents, CI, or AI infra.
English
0
2
0
89
Alexander Obukhov
Alexander Obukhov@sprql·
@dhh @dhh would you suggest installing Omarchy on Intel based MacBook instead of Debian/Ubuntu?
English
0
0
0
28
DHH
DHH@dhh·
The early success of Rails was assisted heavily by having solid documentation out of the gate. So I'm trying my best to do the same for Omarchy. Constantly improving and updating the manual. learn.omacom.io/2/the-omarchy-…
English
46
30
962
48.6K
José Valim
José Valim@josevalim·
I review ALL of the code that coding agents write and I'd love a better DX. Reviewing tool calls suck. Waiting to review at the end is a waste of time. I want to drop comments in the code as the agent works. We are hoping to explore this in Tidewave.ai soon!
English
7
2
77
4.4K
José Valim
José Valim@josevalim·
As someone who uses coding agents daily, it is only fair I also write about when they do poorly. I have tasked Opus to write a concurrent download manager in Rust and it had glaring race conditions. The problem was: write a small HTTP application with a /download endpoint. The endpoint receives a key= and a url=. You will stream chunks every time the download data changes by 1%. Once completed, emit a final chunk with the path. If another client tries to download the same key, while the download is in progress, it will use the same feed. So if the download is at 50%, it will continue from that 50%. If the download is completed, then just emit the final chunk. We are assuming the client will always give the same URL for the same key. The chunks are JSON and are either {"status":"progress","size":Int,"total":Int} or {"status":"done",path:String}. The concurrent bugs it had: * If one client was downloading, and another attempted to download, it would immediately check if the file existed, which would be true, but the file was incomplete, returning the wrong result * It kept a subscriber_count and used the subscriber_count == 1 to detect which client would manage the download. Therefore if two subscribed at the same time, both see subscriber_count == 2 and nothing would be downloaded (this one was spotted by the agent on code review) Once those were fixed, then the following issue was introduced: * If one client starts downloading at the same the download finished, the new one would get stuck without updates Plus some resilience issues: * There were no timeouts on download. So if it got stuck, all new requests will connect to a download stuck at x% (this one was spotted by the agent on code review) * If the download crashed midway (either due to an error or because the whole server crashed), then the file would remain in disk, which a rebooted server would assume to be a complete download (so we have to use .part files instead) Only 2 of the 5 bugs were spotted by the agent. I bet there are many ways to improve the quality of the code without me being in the loop. But without a deligent code review, the quality of this software would be low. I may not have identified all bugs either.
English
14
10
139
17.9K
Thorsten Ball
Thorsten Ball@thorstenball·
Installed Sprite, saw that they don't require you to reload your shell to have the binary on PATH. Asked Amp to figure out how they do it, "ah, they put it in ~/.local/bin". Told Amp, "modify our install script to also do that, but make sure to test it on new Sprite" Did it
Thorsten Ball tweet media
English
6
2
100
12.2K
Alexander Obukhov retweetledi
José Valim
José Valim@josevalim·
Today we celebrate 15 years since Elixir's first commit. To mark the occasion, we shipped an early release candidate for Elixir v1.20 which has TYPE INFERENCE FOR ALL CONSTRUCTS.🎉 In the latest article, I break down the next ~15 weeks and the challenges for the next ~15 months.
English
25
111
571
33.2K
Alexander Obukhov retweetledi
Mitchell Hashimoto
Mitchell Hashimoto@mitchellh·
Ghostty 1.0 came out a year ago today. Since then: - Command Palette - Background Images - Quick Terminal Size - Graphical Progress Bars (OSC 9;4) - Undo/Redo Close (macOS) - Terminal Bell (audio, graphical, and more) - Custom Cursor Shaders - animations/trails - SSH Improvements - auto terminfo copying, env fixes - Quick Terminal on Linux - Global Keybinds on Linux - Server-Side Decorations (SSD) on Linux - Performable Keybindings - Bitmap Font Support - Alpha Blending on both macOS and Linux - Apple Shortcuts Integration (macOS) - GTK rewrite with native GObject Coming in 1.3, already in nightly/tip: - Scrollback Search - Scrollbars - Key Tables / Chained Keybinds - Copy as HTML/RTF - libghostty started and already shipping in 3rd party production code on all platforms including web Organizationally: - Non-profit established - Subsystem maintainers established with ~10 maintainers - Community team established with another ~10 members Commits: 5,154 Unique contributors: 310 See you in 2026. 🚀
English
52
66
2.2K
172.3K
Alexander Obukhov retweetledi
DHH
DHH@dhh·
Microservices is the software industry’s most successful confidence scam. It convinces small teams that they are “thinking big” while systematically destroying their ability to move at all. It flatters ambition by weaponizing insecurity: if you’re not running a constellation of services, are you even a real company? Never mind that this architecture was invented to cope with organizational dysfunction at planetary scale. Now it’s being prescribed to teams that still share a Slack channel and a lunch table. Small teams run on shared context. That is their superpower. Everyone can reason end-to-end. Everyone can change anything. Microservices vaporize that advantage on contact. They replace shared understanding with distributed ignorance. No one owns the whole anymore. Everyone owns a shard. The system becomes something that merely happens to the team, rather than something the team actively understands. This isn’t sophistication. It’s abdication. Then comes the operational farce. Each service demands its own pipeline, secrets, alerts, metrics, dashboards, permissions, backups, and rituals of appeasement. You don’t “deploy” anymore—you synchronize a fleet. One bug now requires a multi-service autopsy. A feature release becomes a coordination exercise across artificial borders you invented for no reason. You didn’t simplify your system. You shattered it and called the debris “architecture.” Microservices also lock incompetence in amber. You are forced to define APIs before you understand your own business. Guesses become contracts. Bad ideas become permanent dependencies. Every early mistake metastasizes through the network. In a monolith, wrong thinking is corrected with a refactor. In microservices, wrong thinking becomes infrastructure. You don’t just regret it—you host it, version it, and monitor it. The claim that monoliths don’t scale is one of the dumbest lies in modern engineering folklore. What doesn’t scale is chaos. What doesn’t scale is process cosplay. What doesn’t scale is pretending you’re Netflix while shipping a glorified CRUD app. Monoliths scale just fine when teams have discipline, tests, and restraint. But restraint isn’t fashionable, and boring doesn’t make conference talks. Microservices for small teams is not a technical mistake—it is a philosophical failure. It announces, loudly, that the team does not trust itself to understand its own system. It replaces accountability with protocol and momentum with middleware. You don’t get “future proofing.” You get permanent drag. And by the time you finally earn the scale that might justify this circus, your speed, your clarity, and your product instincts will already be gone.
English
181
1.2K
8.3K
990.8K
Alexander Obukhov retweetledi
Mitchell Hashimoto
Mitchell Hashimoto@mitchellh·
As promised, the Ghostty search UI for GTK is on the way (PR is open). There's polish to do, but it's fully functional. For those who haven't paid attention, the macOS app (in tip) already has this.
English
25
19
801
50.6K
Alexander Obukhov retweetledi
Dave Thomas
Dave Thomas@pragdave·
So, I'm looking for a job! Internal or external consultant, devrel, training, team fixing, design, architecture. WFH or travel the world. So, if you know any company that has a Dave-shaped hole, please email me. Some more about me on my site. Links below. Many thanks.
English
10
71
204
27.9K
Alexander Obukhov retweetledi
Natalia Ova
Natalia Ova@hndcrftdsftwr·
Every day, millions of people click “Reject all.” Formally, it’s to protect privacy. It literally means “reject everyone”, “reject everything.” A micro-moment of refusal, repeated hundreds of times. Somewhere deep down, we’re training ourselves to say “no” to the world.
English
1
1
0
46
Alexander Obukhov retweetledi
FFmpeg
FFmpeg@FFmpeg·
FFmpeg makes extensive use of hand-written assembly code for huge (10-50x) speed increases and so we are providing assembly lessons to teach a new generation of assembly language programmers. Learn more here: github.com/FFmpeg/asm-les…
English
92
1.2K
8.7K
460.6K