<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: laladrik</title><link>https://news.ycombinator.com/user?id=laladrik</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 14 Jun 2026 23:30:00 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=laladrik" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by laladrik in "The state of building user interfaces in Rust"]]></title><description><![CDATA[
<p>When I was a student I had to make quite a few Qt application with C++ (for Linux).  However, I bring the food on the table doing web (recently only the backend).  During that time, the languages for web were something like Python - concise, convenient in terms of ecosystem and distribution, but bloated in terms of memory consumption.  "Hello World in Java almost doesn't hang" he-he.  Anyway, my first thought when I found Rust I dreamed to make a GUI application.<p>Unfortunately, I had the expectation that it should be as simple as making an HTML page. My failure to find a library or a framework to make GUI application made me learn a lot about how GUI works.  I realized that making GUI for browser and for desktop are quite different problems.  Browser makes easy what's difficult having a desktop oriented GUI framework - text rendering.  However, the situation is fair the other around.  GUI framework makes easy what's difficult in a browser - drawing arbitrary shapes.  As a result, a web-frontend programmer struggles to figure out how to write some text having something like Qt, a GUI programmer tries to find the API to the bitmap in a browser.<p>It's fair noticed in the previous comments that a GUI framework brings a lot.  That's because the problem is complex:<p>1. Create a window<p>2. Communicate with the window compositor (you do in WinAPI too btw).  How to access the system tray and the child window.<p>3. Communicate with the operating system.<p>4. Handle the user input. Callback vs event streams.  The user has 4 keyboards for some reason.<p>5. Rendering.  Subpixels, shapes, different DPI.  The user has 6 monitors.<p>6. Text rendering.<p>7. Widgets.  Where probably the most difficult part is to make a textbox, because it involves the solutions of all previous steps.<p>The steps above touch only the visual part.  There's also audio, accessibility, somebody wants the GUI framework to solve the networking.<p>After all of this research, I picked simply SDL for my project.<p>1. It's easy to compile.<p>2. It's small.<p>3. It relies on the subjectively common dependencies.<p>4. It's fairly straightforward to upgrade.  Given that, you have to create a lot from scratch the part with updating is smaller comparing to a Qt-based solution.<p>5. It has batteries.  My favorite is SDL_ttf which allowed me recently to implement selection of the text which is quite a bit through towards a textbox.<p>Having a project on SDL requires a lot of knowledge, but not a lot of code.</p>
]]></description><pubDate>Sat, 13 Jun 2026 17:08:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48519208</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=48519208</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48519208</guid></item><item><title><![CDATA[New comment by laladrik in "Ask HN: Favorite text heavy blogs that are a joy to read?"]]></title><description><![CDATA[
<p>This one looks good to me.  <a href="https://matklad.github.io/" rel="nofollow">https://matklad.github.io/</a>.  Coincidentally the author has recently posted about CSS for blogs <a href="https://matklad.github.io/2026/06/04/css-unavoidable-bad-parts.html" rel="nofollow">https://matklad.github.io/2026/06/04/css-unavoidable-bad-par...</a>.<p>I have my own blog, but I'm unhappy with its design as well; therefore I'm not sharing it.  Nevertheless, I find particularly challenging two things:
1. Make tables readable from a smartphone.  There are a few tricks which allow you to make a responsive table.  However, those tricks implies that you use <ul> or <div> instead of <table> which defeats the point of having a table.
2. I had an article where I needed to put a tiny mind map. Eventually I put it as a picture, because the solutions to draw a mind map with JavaScript made the page as twice as heavy.</p>
]]></description><pubDate>Wed, 10 Jun 2026 08:50:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=48473410</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=48473410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48473410</guid></item><item><title><![CDATA[New comment by laladrik in "Ask HN: Who wants to be hired? (June 2026)"]]></title><description><![CDATA[
<p><p><pre><code>    Location: Ireland
    Remote: Yes
    Willing to relocate: No
    Technologies: Rust, Go, C/C++, Postgres, RabbitMQ, Redis, GNU/Linux, Docker, Python.
    Résumé/CV: https://alexmarkov.xyz/resume-long.html
    Email: barber-stoic-come@duck.com
</code></pre>
Senior Software Engineer with 15+ years of experience with strong system design skill.  Deep knowledge of GNU/Linux to build high-load web systems serving millions of requests.</p>
]]></description><pubDate>Mon, 08 Jun 2026 18:37:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48449479</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=48449479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48449479</guid></item><item><title><![CDATA[New comment by laladrik in "Vim 9.2"]]></title><description><![CDATA[
<p>You know, that new inline Vim's diff algorithm looks really tempting.  I wish I had it in my Neovim</p>
]]></description><pubDate>Sun, 15 Feb 2026 12:12:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47023084</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=47023084</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47023084</guid></item><item><title><![CDATA[New comment by laladrik in "What Every Programmer Should Know About Memory [pdf] (2007)"]]></title><description><![CDATA[
<p>Well, the article is old, but it's good enough to deserve one more link to it :)</p>
]]></description><pubDate>Mon, 09 Feb 2026 18:13:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46948702</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=46948702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46948702</guid></item><item><title><![CDATA[New comment by laladrik in "Ask HN: What are you working on? (February 2026)"]]></title><description><![CDATA[
<p>Keep working on a GUI calendar for Linux which would CLI users happy to use <a href="https://semana.alexmarkov.xyz/" rel="nofollow">https://semana.alexmarkov.xyz/</a>.  Just recently I've shaped the architecture a bit.</p>
]]></description><pubDate>Mon, 09 Feb 2026 17:50:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46948370</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=46948370</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46948370</guid></item><item><title><![CDATA[New comment by laladrik in "RustToolsGDB"]]></title><description><![CDATA[
<p>During the last couple of years working on Rust programs I collected a number of GDB scripts.  Eventually, they  evolved into the project. Also, I wrote an article about how I came up with each of the scripts <a href="https://alexmarkov.xyz/blog/rustToolsGdb.html" rel="nofollow">https://alexmarkov.xyz/blog/rustToolsGdb.html</a></p>
]]></description><pubDate>Thu, 25 Dec 2025 17:21:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=46385724</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=46385724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46385724</guid></item><item><title><![CDATA[RustToolsGDB]]></title><description><![CDATA[
<p>Article URL: <a href="https://codeberg.org/laladrik/RustToolsGDB">https://codeberg.org/laladrik/RustToolsGDB</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46385723">https://news.ycombinator.com/item?id=46385723</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 25 Dec 2025 17:21:17 +0000</pubDate><link>https://codeberg.org/laladrik/RustToolsGDB</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=46385723</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46385723</guid></item><item><title><![CDATA[New comment by laladrik in "Understanding your Linux graphics driver stack"]]></title><description><![CDATA[
<p>That's a good introduction.  There is a video which I'd say complements the article.  It's called "Getting pixels on screen on Linux: introduction to Kernel Mode Setting" [1]<p>1. <a href="https://www.youtube.com/watch?v=haes4_Xnc5Q&list=PLz9LbZJP-TZ0pG5t9TWma9KzetXmXeJ54" rel="nofollow">https://www.youtube.com/watch?v=haes4_Xnc5Q&list=PLz9LbZJP-T...</a></p>
]]></description><pubDate>Mon, 22 Dec 2025 14:19:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46354303</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=46354303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46354303</guid></item><item><title><![CDATA[New comment by laladrik in "Ask HN: What are you working on? (Dec 2025)"]]></title><description><![CDATA[
<p>Recently Khal [1] released JSON interface.  In short, Khal is a Linux CLI calendar application.  I'm working on a proof-of-concept GUI[2] for the interface.  I expect to implement typical views for a calendar application:  daily, weekly, monthly.<p>1. <a href="https://github.com/pimutils/khal" rel="nofollow">https://github.com/pimutils/khal</a><p>2. <a href="https://codeberg.org/laladrik/Semana" rel="nofollow">https://codeberg.org/laladrik/Semana</a></p>
]]></description><pubDate>Sun, 07 Dec 2025 22:48:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46186103</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=46186103</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46186103</guid></item><item><title><![CDATA[New comment by laladrik in "Go is portable, until it isn't"]]></title><description><![CDATA[
<p>The conclusion of the article says that it's not the language problem either.  Under the title "So, is Go the problem?"  Or do you mean something else here?</p>
]]></description><pubDate>Sun, 07 Dec 2025 22:43:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=46186069</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=46186069</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46186069</guid></item><item><title><![CDATA[New comment by laladrik in "Why is Zig so cool?"]]></title><description><![CDATA[
<p>Yeah, that's a pity that D didn't gain the popularity.  It brought some features which were borrowed to mainstream languages.  However, the features didn't help D to become popular.  I have a hunch that templates from D were the inspiration for the comptime in Zig.  Also, Reading D is almost easy as reading Zig. I remember I couldn't get my head around async/await from Python 3.5.  I knew it was based on generators.  However, the stack switch was absolutely mysterious to me.  I understood it only from the implementation of fibers from the D's standard library.</p>
]]></description><pubDate>Mon, 10 Nov 2025 22:04:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=45881557</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=45881557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45881557</guid></item><item><title><![CDATA[New comment by laladrik in "My First Complete Game"]]></title><description><![CDATA[
<p>Hello everyone,  I started programming because I wanted to make games.  However, I got a chance to bring the food to the table making on web sites.  A few months ago I came across a list of challenges for a programmer.  One of challenges was creating a clone of Space Invaders.  I created a clone of the game and wrote the article. In the article I wrote about the challenges related to gamedev which I faced.  With gamedev background I wouldn't have them, I guess.  However, for me as for a backend programmer, they were something.  I hope the article is good enough to inspire other programmers like me to complete their first games.</p>
]]></description><pubDate>Tue, 30 Sep 2025 20:09:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45430596</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=45430596</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45430596</guid></item><item><title><![CDATA[My First Complete Game]]></title><description><![CDATA[
<p>Article URL: <a href="https://laladrik.xyz/blog/myFirstCompleteGame/">https://laladrik.xyz/blog/myFirstCompleteGame/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45430595">https://news.ycombinator.com/item?id=45430595</a></p>
<p>Points: 6</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 30 Sep 2025 20:09:23 +0000</pubDate><link>https://laladrik.xyz/blog/myFirstCompleteGame/</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=45430595</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45430595</guid></item><item><title><![CDATA[New comment by laladrik in "Enhanced document symbol menu for Zig"]]></title><description><![CDATA[
<p>Hello, I've been playing with Zig the last couple of months.  The navigation between document symbols in Neovim is a bit complicated the document has symbols with the same name.  I improved it adding the path to every symbol.  For example you have two structures:<p><pre><code>    const App = struct {
        fn init() @This() { return .{} }
    };

    const Connection = struct {
        fn init() @This() { return .{} }
    };
</code></pre>
You get the following items in the navigation list:<p><pre><code>    App::init
    Connection::init
</code></pre>
Essentially, it's a configuration of Telescope and Nvim-Treesitter.  You can take the file from here <a href="https://laladrik.xyz/zig_document_symbols.lua" rel="nofollow">https://laladrik.xyz/zig_document_symbols.lua</a>.  However, if you curious about the process of creating a custom Telescope menu and inspection of the source code with Tree-sitter, checkout the entire article.<p>Also, while I working on it, I found that LuaJIT 2.1 compares strings as fast as integers.  Eventually, I did a little research about it and published the results here <a href="https://laladrik.xyz/blog/luaStringComparison/" rel="nofollow">https://laladrik.xyz/blog/luaStringComparison/</a></p>
]]></description><pubDate>Tue, 22 Apr 2025 16:47:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=43764085</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=43764085</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43764085</guid></item><item><title><![CDATA[Enhanced document symbol menu for Zig]]></title><description><![CDATA[
<p>Article URL: <a href="https://laladrik.xyz/blog/enhancedDocumentSymbolMenuInNeovim/">https://laladrik.xyz/blog/enhancedDocumentSymbolMenuInNeovim/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43764084">https://news.ycombinator.com/item?id=43764084</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 22 Apr 2025 16:47:10 +0000</pubDate><link>https://laladrik.xyz/blog/enhancedDocumentSymbolMenuInNeovim/</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=43764084</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43764084</guid></item><item><title><![CDATA[New comment by laladrik in "Navtive FlameGraphViewer"]]></title><description><![CDATA[
<p>I fail to see the reference to be honest.  I remember the term from OpenGL, when I rendered something to a framebuffer (actually its attachmets) and then applied to the current framebuffer.  It helped me to do effects like night vision.  Does using offscreen rendering imply using OpenGL?<p>Does GPU rendering mean that I have to involve OpenGL/Vulkan?</p>
]]></description><pubDate>Thu, 09 Jan 2025 23:29:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=42650926</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=42650926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42650926</guid></item><item><title><![CDATA[New comment by laladrik in "Navtive FlameGraphViewer"]]></title><description><![CDATA[
<p>A clear.  I hid it in my mind.  I haven't tried the approach with indices, because... well, I was lazy to do it.  However, I agree that this approach would be better, then the current one.<p>> You describe that attempt in detail.<p>I appreciate if you put a quote, because I fail to find the description of the attempt in detail.  In fact, instead of assuming that a vector is pinned I wrote this "I realized that the problem is related to the fact that vectors of children move in the memory if they don't have enough space to extend."<p>> The code you ended up with is still dangerous code, because your boxes are still not guaranteed to remain pinned in memory.<p>You are right, boxes are not pinned, but the data, which the point to, is pinned, isn't it?  My pointers point to that part of memory.</p>
]]></description><pubDate>Sat, 28 Dec 2024 15:00:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=42531467</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=42531467</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42531467</guid></item><item><title><![CDATA[New comment by laladrik in "Navtive FlameGraphViewer"]]></title><description><![CDATA[
<p>Ok, now I remember what was the deal with Hotspot. It makes it possible to work with a flamegraph of mine. However, it takes almost half a minute to load my perf.data. However! I totally recommend Hotspot over my hack in case when you need to have a comprehensive view of the data. In particular, I love to see the off-CPU load, which my FlameGraphViewer doesn't show.</p>
]]></description><pubDate>Sat, 28 Dec 2024 14:45:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=42531361</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=42531361</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42531361</guid></item><item><title><![CDATA[New comment by laladrik in "Navtive FlameGraphViewer"]]></title><description><![CDATA[
<p>> The author isn’t talking about implementing an ECS or b-tree here.<p>Do you mean that b-tree might work here better?<p>> They’re just populating an array from a file when the program launches, then freeing the whole thing when the program terminates. It’s really not rocket science.<p>That's exactly why I consider indices.<p>> since they assumed memory allocated by vec would be pinned (it isn’t)<p>Could you tell me, please, where you read in the article that I assume it?  I wrote in the article "I realized that the problem is related to the fact that vectors of children move in the memory if they don't have enough space to extend." and even made an animation for clarity <a href="https://laladrik.xyz/VectorMove.webm" rel="nofollow">https://laladrik.xyz/VectorMove.webm</a>.  However, if you see the assumption in the article, please, let me know.  I correct it or elaborate.</p>
]]></description><pubDate>Fri, 27 Dec 2024 16:23:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=42523449</link><dc:creator>laladrik</dc:creator><comments>https://news.ycombinator.com/item?id=42523449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42523449</guid></item></channel></rss>