27 comments

[ 14.6 ms ] story [ 578 ms ] thread
Highly recommend writing a BitTorrent client. The spec is easy to grok, it has a bunch of fun subproblems that you can go as deep or as shallow as you want into, and it's super rewarding being able to download something like the Debian kernel after all of your hard work. Magnet links and seeding are two fun things to tackle post basic implementation. It also got me really interested in peer to peer systems and DHTs like Chord!
This is a strange list. #58 is make your own malloc, ok. That's a moderately difficult project for a new developer (made harder if they don't know anything about what malloc actually does under the hood, you may need to study up a bit on operating systems and some other things before you even start). Followed by #59 where they suggest you build your own streaming protocol from scratch...

There are some good projects in there, but the levels of difficulty are all over the place.

(comment deleted)
(comment deleted)
Is this what the kids call "astroturfing"?
(comment deleted)
AI usage verboten? Or erlaubt?
(comment deleted)
I see comments suspecting this list is AI-generated. That might be true. But ironically, the practice of "building from scratch" is the best antidote to AI dependency.

Writing from Japan, we call this process "Shugyo" (austere training). A master carpenter spends years learning to sharpen tools, not because it's efficient, but to understand the nature of the steel.

Building your own Redis or Git isn't about the result (which AI can give you instantly). It is about the friction. That friction builds a mental model that no LLM can simulate.

Whether this post is marketing or not, the "Shugyo" itself is valid.

It’s definitely some marketing, but way less than it could be. It recommends looking at the redis docs to build a reds client rather than the websites own tutorial/paid product for doing so.
This is just AI generated slop with things being all over the map with no details/notes etc.

A far better way is to go through the book series The Architecture of Open Source Applications and pick one which catches your fancy - https://aosabook.org/en/ There are enough details/notes here from experts to show one how to think about an application so that you have something concrete to start from.

Some of these could take a day, like random tree / forest.

Others are easily within the scope / size of a undergrad final project. Or even a masters degree thesis.

Build something intentionally small and complete a tiny tool or protocol you can understand end-to-end. The satisfaction comes from clarity, constraints, and finishing the whole arc, not scale.
This is from codecrafters.io which is a platform that facilitates working on projects like these while essentially providing integration tests to keep you honest, as well some community. You work through well defined requirements to reach the full implementation. I’m currently working on their build your own redis project. It’s quite fun.

I don’t think this is AI generated. They ask the community for new project ideas, this list is probably made up of those they’ve received while plugging the challenges they already have implemented.

I think the most reliable way to understand a system is to directly implement the internals of a library.

In particular, hands-on experience with networks and file systems is incredibly helpful when writing high-level code.

This list seems almost certainly AI-generated.
This list is ridiculous, I was expecting something like A* pathfinding, or even kernel extensions.
I'm currently working through the second Ray Tracing in One Weekend book. Fun stuff.
Looking through this list makes me feel as if I am not a terribly good programmer, as these all feel well beyond my capabilities.
I think most projects do until you start breaking them into small easier to handle pieces.
Most of them are, even for experienced programmers, we just don't admit it ;-) They are the results from the hard work over time of one or more programmers.

However, do not let it stop you from starting something you might be interested in knowing/doing i.e. do not let self-doubt lead to paralysis. Start at your own pace and focus only on learning and not competing with others.

A good way to get started is to begin with studying prior work in the domain of your choice. For example i link to the works of Adam Dunkels in my comment here https://news.ycombinator.com/item?id=46441772 which you can study for your own implementation. They are all small being made for embedded systems and hence relatively easier to comprehend. Use AI tools as necessary to both understand and generate code.

I asked Gemini 3 Pro about the relative difficulty of each project in the list and got the following (parenthesized notes are also by Gemini). Gemini noted that the time estimate is based on the assumption that you already understand the theory (which time estimate would extremely vary anyway) and only accounts for pure PoC implementation and debugging. The numbers look reasonable at my sketchy glance but of course YMMV.

    [Difficulty: Low]
    42. Twitter Trends                        5--10h (If you understand the probabilistic math)
    2. Wordle Solver                          5--10h (Pure logic/algorithm)
    17. BMP Codec                             5--10h
    23. Auth Server (JWT)                     5--10h
    24. Autocomplete System                   5--10h
    66. Browser Extension                     5--15h
    15. Diff Tool                             8--15h (Algorithms heavy)
    9. Six Degrees of Kevin Bacon            10--20h (Classic graph problem)
    7. Googlebot (Crawler)                   10--20h
    65. Make                                 10--20h
    
    [Difficulty: Moderate]
    32. Web Server                           10--20h
    41. Time Sync Daemon (NTP)               10--20h
    53. Malware                              10--20h
    58. Malloc                               10--20h
    63. Shell                                10--20h
    19. Quantum Computer Simulation          15--25h (Assuming you know the linear algebra already)
    26. Background Noise Remover             15--25h (Math/Signal Processing heavy)
    11. Procedural Crosswords                15--25h
    39. CDN Caching                          15--25h
    47. Ray Tracer                           15--25h
    57. Load Balancer                        15--25h
    61. CI System                            15--25h
    62. Random Forest                        15--25h
    67. Stock Trading Bot                    15--25h
    56. Lock-Free Data Structures            15--30h (But debugging is painful)
    16. Visualize Object-Oriented Code       15--30h (Language parsing is the bottleneck)
    5. Container (No Docker)                 15--30h (Requires deep Linux systems knowledge)
    8. DNS Server                            15--30h (Strict RFC compliance required)
    70. OpenGL                               15--30h
    12. Bitcask (KV Store)                   20--30h
    38. Wikipedia Search                     20--30h
    50. Amazon Delivery (Vehicle Routing)    20--30h
    46. Zip                                  20--35h (Algorithms heavy)
    1. Bittorrent Client                     20--40h (Binary parsing and managing async network states)
    18. Filesystem (FUSE)                    20--40h (Debugging kernel interfaces can be slow)
    60. Smart Home                           20--40h (Hardware integration eats time)
    40. TikTok (Feed)                        20--40h (Mostly frontend/UI state complexity)
    21. Redis Clone                          20--40h
    29. Road Network                         20--40h
    31. Evolutionary Design                  20--40h
    34. Git                                  20--40h
    59. Netflix (Streaming)                  20--40h
    69. Automated Journal                    20--40h
    13. Audio Fingerprinting                 25--40h (DSP is sensitive to parameters)
    52. Knowledge Graph                      25--45h
    64. Bitcoin Node                         25--45h
    14. Dangerous Dave (Game)                30--50h
    48. Programming Language                 30--50h
    
    [Difficulty: High]
    33. Depth Estimation                     25--50h (Computer Vision math)
    35. GDB (Debugger)                       30--50h (Low-level systems programming)
    72. Audio Multicast                      30--50h (Syncing audio clocks over network is hard)
    43. SQL Optimizer                        30--50h
    36. Neural Networks                      30--60h (Debugging gradient calculations is tough)
    71. Laser Tag                            30--60h (Hardware debu...