Hacker Newsnew | past | comments | ask | show | jobs | submit | selfboot's commentslogin

Hi HN,

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.

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.

The core puzzle engines are still Simon’s original C implementations. I built a thin Swift layer around them and focused mostly on:

Native SwiftUI interface

Better touch interactions

Dark mode

Offline support

Fast puzzle generation

Clean, minimal UI (no ads)

A few technical notes:

The puzzle logic runs as compiled C modules bridged into Swift

Puzzle state is serialized/deserialized to allow undo/redo

I implemented a custom rendering layer to support dynamic grid scaling

All puzzles are generated locally (no backend)

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.

I tried to stay faithful to the original mechanics while improving the mobile UX.

Would love feedback, especially from anyone familiar with the original project or who has thoughts on puzzle UI design.

App link: https://apps.apple.com/us/app/simon-puzzles/id6756353841

Thanks Simon for building such a timeless collection.



To be honest, the function is a bit simple, and Claude code should be able to do better.

I have also built games using Cursor, and I have to say that the current AI is really strong.

https://puzzles-game.com/


very cool ~ I recently made a puzzle game, https://puzzles-game.com/, which is also adapted to different screens and adds numeric keyboard support, which is somewhat similar to what you mentioned in your blog


It's inspired by Simon Tatham's classic puzzle collection, nice!

A similar type of puzzle I made in the past: https://www.quaxio.com/sliding_puzzle/puzzle.html


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.


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?

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?


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.


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.


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.


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.

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.

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.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: