<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: selfboot</title><link>https://news.ycombinator.com/user?id=selfboot</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 03 Jul 2026 10:26:43 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=selfboot" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>Hi HN,<p>I’ve always loved Simon Tatham’s puzzle collection — especially Bridges, Slitherlink, and Signpost. I’ve been playing them for years on desktop and Android.<p>Recently I decided to port the collection to iOS with a more modern native UI and some usability improvements, while keeping the original puzzle generation logic intact.<p>The core puzzle engines are still Simon’s original C implementations. I built a thin Swift layer around them and focused mostly on:<p>Native SwiftUI interface<p>Better touch interactions<p>Dark mode<p>Offline support<p>Fast puzzle generation<p>Clean, minimal UI (no ads)<p>A few technical notes:<p>The puzzle logic runs as compiled C modules bridged into Swift<p>Puzzle state is serialized/deserialized to allow undo/redo<p>I implemented a custom rendering layer to support dynamic grid scaling<p>All puzzles are generated locally (no backend)<p>One thing I found interesting is how well the original C codebase is structured — it’s surprisingly modular for something that supports so many puzzle types.<p>I tried to stay faithful to the original mechanics while improving the mobile UX.<p>Would love feedback, especially from anyone familiar with the original project or who has thoughts on puzzle UI design.<p>App link: <a href="https://apps.apple.com/us/app/simon-puzzles/id6756353841">https://apps.apple.com/us/app/simon-puzzles/id6756353841</a><p>Thanks Simon for building such a timeless collection.</p>
]]></description><pubDate>Fri, 27 Feb 2026 05:33:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47176851</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=47176851</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47176851</guid></item><item><title><![CDATA[New comment by selfboot in "Ask HN: Share your personal website"]]></title><description><![CDATA[
<p>My blog: <a href="https://selfboot.cn/en" rel="nofollow">https://selfboot.cn/en</a>
Side Project: <a href="https://puzzles-game.com/" rel="nofollow">https://puzzles-game.com/</a>
and vibe coding app: <a href="https://apps.apple.com/us/app/simon-puzzles/id6756353841">https://apps.apple.com/us/app/simon-puzzles/id6756353841</a></p>
]]></description><pubDate>Thu, 15 Jan 2026 02:02:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46627011</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=46627011</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46627011</guid></item><item><title><![CDATA[New comment by selfboot in "First game built with Claude Code 《sand-blast-block-puzzle》"]]></title><description><![CDATA[
<p>To be honest, the function is a bit simple, and Claude code should be able to do better.<p>I have also built games using Cursor, and I have to say that the current AI is really strong.<p><a href="https://puzzles-game.com/" rel="nofollow">https://puzzles-game.com/</a></p>
]]></description><pubDate>Tue, 15 Jul 2025 05:30:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=44568098</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=44568098</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44568098</guid></item><item><title><![CDATA[New comment by selfboot in "Show HN: Crossabble, a weekly word game/puzzle"]]></title><description><![CDATA[
<p>very cool ~
I recently made a puzzle game, <a href="https://puzzles-game.com/" rel="nofollow">https://puzzles-game.com/</a>, which is also adapted to different screens and adds numeric keyboard support, which is somewhat similar to what you mentioned in your blog</p>
]]></description><pubDate>Tue, 15 Jul 2025 05:28:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=44568082</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=44568082</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44568082</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>A deep dive into the creation process and internal structure of SSTable files in LevelDB. This article takes a problem-driven approach to analyze how SSTable achieves high read/write performance through mechanisms like block storage, index optimization, and filters. It focuses on the implementation details of the TableBuilder class, including the construction of DataBlocks, IndexBlocks, and FilterBlocks, as well as engineering techniques like index key optimization and compression strategies. Through source code analysis, it demonstrates how LevelDB solves key problems in large-scale data storage, quickly locating data blocks, reducing unnecessary disk I/O, and balancing storage space with query efficiency. With concrete code examples and flowcharts, the article helps readers deeply understand the ingenious design of the SSTable file format and the core implementation principles of LevelDB as a high-performance key-value storage engine.</p>
]]></description><pubDate>Sat, 28 Jun 2025 06:46:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44402742</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=44402742</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44402742</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>I have been trying for a long time but can't figure out how to play this game. Is there anyone who can give me some ideas?<p>The rules of the game are simple: jump over a piece to remove the jumped piece. Try to remove all pieces except one. Drag a piece to an empty space to move it. The target position must be exactly two holes away from the starting piece, the directions must be orthogonal, and there must be a piece in the middle hole.
But I always end up with a few pieces that are far apart and can't be solved. What's the idea of playing this kind of game?</p>
]]></description><pubDate>Thu, 26 Jun 2025 00:05:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=44382992</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=44382992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44382992</guid></item><item><title><![CDATA[New comment by selfboot in "A modern puzzle games collection written with AI"]]></title><description><![CDATA[
<p>The original Simon Tathamʼs Portable Puzzle Collection has been a favourite of logic-puzzle lovers for decades, but it was written for the desktop environments of its time. This project brings those timeless games into the 21-st-century browser while preserving every rule, control and challenge you already know.</p>
]]></description><pubDate>Thu, 19 Jun 2025 05:08:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=44315614</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=44315614</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44315614</guid></item><item><title><![CDATA[A modern puzzle games collection written with AI]]></title><description><![CDATA[
<p>Article URL: <a href="https://puzzles-game.com/en/">https://puzzles-game.com/en/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44315613">https://news.ycombinator.com/item?id=44315613</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 19 Jun 2025 05:08:39 +0000</pubDate><link>https://puzzles-game.com/en/</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=44315613</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44315613</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>This article delves into the implementation details of the high-performance LRU cache in LevelDB, covering its cache interface design, the LRUHandle data structure, doubly linked list optimizations, and sharding mechanism. By analyzing core designs like clever reference counting management, the dummy node technique, and lock sharding to reduce contention, it showcases the optimization strategies for an industrial-grade cache system. Combining code and diagrams, the article helps readers understand how LevelDB achieves a high-concurrency, high-performance cache and how these design techniques can be applied in their own projects.</p>
]]></description><pubDate>Mon, 16 Jun 2025 08:26:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=44287608</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=44287608</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44287608</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>This article details the background and origins of MCP, its relationship with OpenAI Function Calling, and how to configure and use MCP Servers in Cursor. It explores practical scenarios like web automation, GitHub repository analysis, and chart generation. While MCP shows impressive capabilities in GitHub code analysis, web manipulation still has limitations. The article also highlights MCP's core constraint: its reliance on the LLM's function calling ability, which is affected by token limits. Although MCP offers a standardized solution for AI tool invocation, its practical value is currently limited, positioning it more as an experimental technology with hopes for significant improvements as model capabilities advance.</p>
]]></description><pubDate>Fri, 23 May 2025 06:54:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=44070555</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=44070555</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44070555</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>This article provides an in-depth analysis of LevelDB's write mechanism, detailing the complete process from the Put interface to WAL logging and MemTable persistence.<p>Through source code analysis, it reveals how LevelDB achieves 400,000 writes per second throughput through core technologies like WriteBatch merging strategy, dual MemTable memory management, WAL sequential write optimization, and dynamic Level0 file throttling.<p>It also explores engineering details such as mixed sync write handling, small key-value merge optimization, and data consistency in exceptional scenarios, helping you master the design essence and implementation strategies of LevelDB's high-performance writing.</p>
]]></description><pubDate>Sat, 25 Jan 2025 04:46:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=42819577</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=42819577</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42819577</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>If you’ve worked on any non-trivial C++ project, you’ve likely encountered process coredumps. A coredump is a mechanism where the operating system records the current memory state of a program when it encounters a severe error during execution.<p>There are many reasons why a C++ process might coredump, including:<p>Illegal Memory Access: This includes dereferencing null pointers, accessing freed memory, array bounds violations, etc.
Stack Overflow: Caused by infinite recursion or large arrays allocated on the stack
Segmentation Fault: Attempting to write to read-only memory or accessing unmapped memory regions
Uncaught Exceptions: Program termination due to unhandled exceptions
When encountering a coredump, we typically need to examine the core file for problem analysis and debugging. Analyzing core files can be challenging as it requires a deep understanding of C++’s memory model, exception handling mechanisms, and system calls.<p>Rather than focusing on core file analysis methods, this article will present several real-world cases to help developers proactively avoid these errors in their code.</p>
]]></description><pubDate>Sat, 11 Jan 2025 09:51:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=42664651</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=42664651</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42664651</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>Zero front-end foundation, with cursor and claude 3.5 to implement a complete minesweeper game.<p>This Minesweeper game offers two game modes:<p>- *Classic Mode*: Traditional square grid minesweeper, identical to the one bundled with Windows. Each square is adjacent to eight neighboring squares (horizontally, vertically, and diagonally).
- *Hexagonal Mode*: An innovative hexagonal grid minesweeper where each cell is a regular hexagon adjacent to six neighboring cells. This mode offers a fresh gaming experience, requiring players to adapt to new spatial relationships for logical deduction.</p>
]]></description><pubDate>Sun, 22 Dec 2024 10:31:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42485532</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=42485532</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42485532</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>Over the weekend, I used Cursor and Claude3.5 to create a complete maze game based on an existing maze generation library. You can try it at [Maze Game, Online Maze Generation](<a href="https://gallery.selfboot.cn/en/games/maze" rel="nofollow">https://gallery.selfboot.cn/en/games/maze</a>). It has comprehensive features, supporting various types of maze map generation and online maze gameplay using mouse controls.<p>Previously, when having Claude write code, I used well-known libraries with detailed documentation. AI models were already trained on these libraries, making it easy to write code.<p>However, this time, I used a [relatively obscure maze generation library](<a href="https://github.com/codebox/mazes">https://github.com/codebox/mazes</a>) without documentation. Since the AI model had no knowledge of this library, getting AI to use it for my task was challenging.</p>
]]></description><pubDate>Mon, 09 Dec 2024 12:08:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=42365451</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=42365451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42365451</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>I have been using cursor and Claude3.5 to write some fun projects. Recently, I suddenly had the idea to quickly write a online sokoban game. So I took some time off on the weekend and used Claude3.5 to help me realize a complete box-pushing game.<p>It has many difficult levels built in, and also supports custom levels to share with friends.<p>Welcome to challenge！</p>
]]></description><pubDate>Tue, 19 Nov 2024 01:46:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=42179352</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=42179352</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42179352</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>From time to time, I see some beautiful racing chart pages online, showing how data changes over time, which looks really cool. After researching, I found that there are ready-made JS libraries that can generate such charts, but I couldn't find a suitable tool that could automatically generate racing charts after uploading data.<p>So I thought about implementing one using Claude3.5, but the process wasn't smooth, and I encountered quite a few pitfalls along the way. I started working on it in July, trying intermittently multiple times, until recently when I finally managed to implement a simple version. This article records the process of implementing this tool using Claude3.5 and documents the pitfalls encountered along the way. You can experience the final result here, and feel free to leave comments for discussion.</p>
]]></description><pubDate>Sun, 29 Sep 2024 11:05:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=41686522</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=41686522</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41686522</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>This article provides a detailed analysis of the time complexity of skip lists. By breaking down the search problem, reversing the entire search process, and finding an appropriate L level, it ultimately derives the time complexity of skip lists. Based on the understanding of time complexity, it further deduces how to choose the probability p, and the reasons for choosing the maximum height in Redis and LevelDB skip lists. Finally, it tests the performance of skip lists through a simple benchmark and compares it with unordered_map.</p>
]]></description><pubDate>Sat, 28 Sep 2024 00:06:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=41676737</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=41676737</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41676737</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>OpenAI released a new model, o1-preview, claiming stronger code generation and understanding capabilities, with various evaluations showing good results. I immediately tried the new model, including using the popular prompt for generating SVGs with new Chinese interpretations, as well as explaining LevelDB code. Overall, the new o1-preview model shows improvement, but hasn't created a generational gap.</p>
]]></description><pubDate>Fri, 13 Sep 2024 05:19:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=41528201</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=41528201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41528201</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>Skiplists are probabilistic data structures that can replace balanced trees, offering fast insertion, deletion, and search operations. LevelDB's skip list implementation is concise, stable in performance, and suitable for storing data in memory MemTables.<p>This article starts by discussing the drawbacks of current binary search trees and balanced trees, introducing skip lists as a data structure. Then, based on the original paper, it explains the implementation principles of skip lists, followed by a detailed analysis of LevelDB's implementation code, including iterator implementation and extreme performance optimization for concurrent reading.<p>Finally, it provides a visualization page that intuitively shows the skip list construction process.</p>
]]></description><pubDate>Mon, 09 Sep 2024 09:11:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=41486715</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=41486715</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41486715</guid></item><item><title><![CDATA[New comment by selfboot in "[dead]"]]></title><description><![CDATA[
<p>This article explores the implementation of core utility components in LevelDB, including the Arena memory allocator, Random number generator, CRC32 cyclic redundancy check, and integer encoding/decoding tools. It analyzes the design considerations, implementation details, and optimization strategies of these components, demonstrating how they efficiently support various operations in LevelDB.</p>
]]></description><pubDate>Fri, 30 Aug 2024 02:23:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=41397248</link><dc:creator>selfboot</dc:creator><comments>https://news.ycombinator.com/item?id=41397248</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41397248</guid></item></channel></rss>