HN user

DenisDolya

29 karma

C purist dedicated to bare-metal systems programming. My philosophy: zero dependencies and zero dynamic memory allocation. I consider malloc an enemy, preferring predictable stack-based and static memory for ultimate stability. Due to limited hardware access, I craft and debug my code directly on a smartphone. This constraint has forced me to become a disciplined architect, focused on tiny, high-performance binaries where every byte is justified. My goal is to push the limits of pure C and maintain "zero-bloat" open-source tools.

Posts36
Comments65
View on HN
github.com 1mo ago

Show HN: Ttar 2.4 KB freestanding TAR archiver written in C, no Libc

DenisDolya
9pts0
github.com 3mo ago

Show HN: I wrote a ~2KB executable file HTTP file downloader without Libc

DenisDolya
9pts6
news.ycombinator.com 4mo ago

Ask HN: What are your favorite microcontrollers?

DenisDolya
2pts0
news.ycombinator.com 5mo ago

Show HN: TurboLibBMP 0.1.1 – single-header BMP in C (no allocations, embedded)

DenisDolya
1pts0
news.ycombinator.com 5mo ago

Show HN: TurboLibBMP stb-style BMP decoder/encoder in C no allocations, embedded

DenisDolya
1pts0
news.ycombinator.com 5mo ago

Show HN: BPU – An embedded scheduler for stable UART pipelines

DenisDolya
11pts5
news.ycombinator.com 5mo ago

Ask HN: Efficient Linux terminal output methods

DenisDolya
1pts0
news.ycombinator.com 6mo ago

Ask HN: Who can invite me to lobster.rs?

DenisDolya
2pts5
github.com 6mo ago

Show HN: Ferki-Escalator 1.1 – now without libcap

DenisDolya
1pts1
news.ycombinator.com 6mo ago

For me, Hacker News is probably the best community on the internet

DenisDolya
40pts40
news.ycombinator.com 6mo ago

Show HN: A cross-platform toolkit to explore OS internals and capabilities

DenisDolya
7pts2
news.ycombinator.com 6mo ago

Ask HN: What is the new "reading" feature in DeepSeek?

DenisDolya
1pts0
news.ycombinator.com 6mo ago

Ask HN: Is it even possible to crack a Wi-Fi password from a phone?

DenisDolya
1pts2
news.ycombinator.com 6mo ago

Show HN: Stb_XML – A 6KB XML parser that's 193× faster than libxml2

DenisDolya
2pts0
news.ycombinator.com 6mo ago

Ask HN: What is better to do, big projects or small ones?

DenisDolya
2pts1
news.ycombinator.com 6mo ago

Show HN: Bitmask.h a 300-byte C99 library for embedded bit operations

DenisDolya
2pts0
news.ycombinator.com 6mo ago

Show HN: Missing puzzle in binary analysis: finding num constants in .so/.bin

DenisDolya
4pts0
news.ycombinator.com 6mo ago

Happy New Year

DenisDolya
4pts2
news.ycombinator.com 6mo ago

Ask HN: STB libraries make your work easier or you makes no difference?

DenisDolya
2pts1
news.ycombinator.com 6mo ago

Ask HN: Why can't I find NDK for Linux ARM64?

DenisDolya
1pts1
news.ycombinator.com 7mo ago

Ask HN: How do you identify premium checks in Android app when learning modding?

DenisDolya
1pts0
news.ycombinator.com 7mo ago

Show HN: Console table editor with special syntax for writing them

DenisDolya
1pts0
news.ycombinator.com 7mo ago

Ask HN: How do I make LLM write long code for my tasks?

DenisDolya
1pts0
news.ycombinator.com 7mo ago

Ask HN: What is better to use lead-free/leaded solder?

DenisDolya
10pts11
news.ycombinator.com 7mo ago

Ask HN: How to create APK file on pure C, without Java?

DenisDolya
2pts1
news.ycombinator.com 8mo ago

Ask HN: Can recursion be more useful than regular loops?

DenisDolya
5pts5
news.ycombinator.com 8mo ago

Show HN: SLFG: We Made Gets() Safe. Everyone Said It Was Impossible

DenisDolya
2pts3
news.ycombinator.com 8mo ago

Show HN: I'm created simple CLI-calendar without time.h

DenisDolya
2pts1
news.ycombinator.com 8mo ago

Ask HN: Is it safe to use TP4056 with protection and 18650 cell with protection?

DenisDolya
1pts0
news.ycombinator.com 8mo ago

What C coding style do you use (K&R, C89, C99, etc.) and why?

DenisDolya
4pts2
Mindustry 1 month ago

It would be great to add units with missiles that would fire at long distances and air defense to shoot them down.

Wow, this is impressive, everything is so realistic, it feels like I'm not in a browser but in a dark room with a PC where this game is running, I really liked it, it looks very nostalgic.

This is seriously impressive — 6 BIPS by a single developer is insane. The correctness-first approach and clean architecture really show. But honestly, at this point, to make it truly useful, you probably just need to write your own OS next Thanks for sharing this it’s inspiring to see what focused systems work can achieve. How did you not burn out doing all this?

Honestly, in many systems projects it is often simpler and safer to minimize or even avoid malloc entirely: rely more on stack, static buffers, or simple arenas. This usually leads to fewer bugs and more predictable behavior than building complex lifetime systems on top of the heap.

This is an impressive piece of engineering, no doubt. The API is clean, performance work is serious, and it’s clear a lot of effort went into making this fast. But let’s be honest: without autograd and a real training ecosystem, this is not a PyTorch replacement, it’s a very nice numerical toolbox. Also, tying GPU acceleration mostly to Metal makes this far less useful outside the Apple ecosystem. Right now, it looks like a technically excellent project searching for its real-world niche. If you add proper differentiation, broader GPU support, and prove that this scales with real users, then it could become something truly important. Until then, it’s great work — but not a revolution.

Nice start, but right now the program exits immediately because after selecting difficulty you just return from main. You never call initBoard() or displayBoard(), and there is no game loop (input -> update -> render). So there is no actual game yet.

bombMap is filled with rand()%2, which means ~50% of tiles are mines and the `mines` variable is basically unused. That’s not Minesweeper, that’s Russian roulette. Better: clear bombMap first, then place exactly `mines` mines randomly without duplicates.

tileMap is int, but you print it with putchar(). Zero prints nothing, so your board is mostly invisible. Either store ASCII chars ('#', '.', '', '1'..'8') or map numbers to chars when printing.

Utils.hpp include guard is broken: you have #ifndef but no #define. So the guard does nothing. Add #define or use #pragma once.

Utils::catchReturn() always returns 0, so errors are swallowed. You print “sending further” and then… don’t send anything further. Just return renum.

In editDiff(), custom values are not validated. Width/height should be 1..32, mines < wh. Otherwise you can overflow your arrays.

Also this line looks wrong: std::cout << Game::boardWidth; boardWidth is not static, and printing it there does nothing useful.

Main advice: first make a minimal playable version: - select difficulty - initBoard() - displayBoard() - simple input loop - win/lose check

No UI polish, no docs, just make it playable first. Then iterate.

Just focus on making one complete working path instead of half-implemented features.

MathPages 6 months ago

Great resource, I especially liked the nostalgic design.

Everything seems to be fine, but from the very beginning, when you look, you're looking for intuitive buttons that give you an understanding of what's going on. Everything is a little more complicated here, but still, well done.

The design is beautiful, although I personally prefer simpler ones. But that’s just my preference.