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.
Is there repetition implied? Would you build your own redis 20 times? (Just curious).
"Shugyo" is about internalization. The 1st time you build Redis, you learn the Syntax. The 10th time, you understand the Structure. By the 20th time, *the tool disappears.* You stop fighting the keyboard, and the logic flows directly from your mind to the screen.
In Kendo (Japanese fencing), we swing the bamboo sword thousands of times. Not to build muscle, but to remove the "lag" between thought and action. Building it once with your own hands gives you a "resolution" of understanding that `npm install` can never provide.
If you are building a "Pop-up Store" (a prototype or script), use libraries. Don't waste time on craft. But if you are building a "Shrine" (Core System/Database) that must last for 20 years, "Shugyo" is actually the cheapest option.
Efficiency is cheap now, but expensive later (Technical Debt). Craftsmanship is expensive now, but cheap later (Stability).
We don't need a Jiro to run a fast-food franchise. But we need him to build the Kernel.
once you’ve done this 10,000 times perhaps you will find your answer.
> understand the nature of the steel .. the tool disappears .. to remove the "lag" between thought and action
Brilliantly said. Same with a musician practicing thousands of notes, scales, famous compositions - the repetition, accumulation of physical effort, trying things from all angles, thinking about it deeply, getting to know all the detail and nuance of sound, instrument, materials and conditions. As one trains there are breakthroughs in understanding and skill, building a kind of embodied knowledge and intuition beyond words.
Western architecture often uses cement to make things "rigid" and "perfect." But in Japan (an earthquake nation), rigid things snap and break.
Japanese stone walls (Ishigaki) have no cement. They are held together by balance and friction alone. Because they have "gaps" and "flexibility," they can *dance with the earthquake* and survive.
We call this *"Asobi" (Play/Slack).* Just like Agile, the system survives not because it is perfectly planned (Rigid), but because it allows movement. Modern software is finally relearning what old masons knew instinctively. Great read.
Shugyo will not be successful if you do not have Musha Shugyo attitude with necessary Heiho/Hyoho (Miyamoto Musashi/Yagyu Munenori definition) mindset ;-)
But then again, because the path of Heiho is so difficult, one needs to cultivate and maintain a Fudoshin mind always.
All successes in Life depend on this.
In the tech space, Leetcode is repetitive by design, because after a while you realize the core problems are focusing on a half dozen different concepts. After getting good at throwing in a table, or whipping up a dynamic programming approach, you pull them out like you would a multiplication table that you memorized back in elementary and build from there.
There's questions on if this is a valuable skill in practice, where you'll be thrown into the weeds of many unfamiliar problems constantly. But it sure will make you look competent when at the interview stage. And maybe feel confident as a craftsman when you don't need to refer to documentation every 5 minutes.
His philosophy—stripping away the unnecessary to focus on the reality (data/hardware)—resonates deeply with me. The practice you described (building from scratch daily) is exactly the "Tea Ceremony" of the digital age. It is not about the tea (the result), but about the procedure (the internalization).
Thank you for introducing me to such a Master.
Not that it's my business that whether you were actually born and raised in Japan or an immigrant/expat. Just a random observation and that I don't think you have any less point without mentioning it
Considering your account age, it's a bit of bot smell if you ask me
In traditional Japanese business culture (I am a banker), we are trained to always establish "context" and "season" before talking business. It feels rude to start abruptly.
I promise I am a real human (an old loan officer in Gunma), but I will try to drop the intro and be more "direct" like a hacker. Thanks for the feedback.
https://en.wikipedia.org/wiki/High-context_and_low-context_c... and https://www.ebsco.com/research-starters/communication-and-ma...
Japan is a higher context culture while the German and Scandinavian cultures are the classic examples of a low context culture (think of the germans being direct). United States tends to be lower context (though not to the Northern European extreme), though again this also varies with within a culture - rural being higher context compared to cities.
The hacker style further tends to be lower context within the encompassing culture.
I checked the link, and it makes perfect sense. In my world (Japanese Banking), we are trained to "Read the Air" (Kuuki wo Yomu). Everything is high-context. Saying things too directly is considered rude or immature.
But I realize that here on HN, "Code" is the context. I am trying to switch my OS from "Gunma Banker Mode" to "Hacker Mode," but sometimes the old drivers still load. Thank you for understanding.
I see no need to modify your approach.
On the other hand, hallucinating term you look up and contradict in seconds is peak bot behavior.
I am relieved that my "Cultural Accent" served as the ultimate Captcha. I'm glad my words reached someone who truly understands the culture.
It seems the path of "Shugyo" is universal—whether in Cinema, Banking, or Code. Real mastery always starts from the ground up.
The OP very much comes off to me as a "here are 100 books you need to read before you die" recommendation porn type of post where the author has done none of the things listed.
The link in this chain feels like a mini-curriculum. AKA "you do all these 7 things and you'll probably become very good at any job". a decent university will probably have you do 4-5 out of these projects (making a spreadsheet program is truly a huge feat, though).
They both have some use, but different use cases in my eyes.
You mean verilog vs block diagram, or did those boards have like a microcontroller too for more normal software?
Not particularly impressive, but it did teach me stuff.
I'm not sure if list is objectively better or whether I have had a good go at every one of these except for the spreadsheet. Implementing spreadsheets may be a challenge but not enough for me to want a spreadsheet.
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.
There are some good projects in there, but the levels of difficulty are all over the place.
https://camo.githubusercontent.com/a4ce28d9d68f8d5443aef3123...
Might want to link the `.md` that embeds it instead, if any
Others are easily within the scope / size of a undergrad final project. Or even a masters degree thesis.
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.
https://github.com/codecrafters-io/build-your-own-x
Feel like one of these things a lot of talk about but very tiny do ...
Personally, I am making a ray tracer project right now in Rust, so I hope I can become the latter. It being something I did before (albeit, long ago in c++) helps.
In particular, hands-on experience with networks and file systems is incredibly helpful when writing high-level code.
[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 debugging)
3. Deepfake (Optimal Transport) 30--60h (Math-heavy; debugging matrix operations is difficult)
51. Kafka Broker 30--60h
20. VLC (Video Player) 40--60h (A/V sync drift is very difficult to get right)
28. Google Maps 40--60h
30. Collaborative Editor 40--70h (CRDTs are conceptually dense)
37. Chess 40--70h (Performance optimization is a rabbit hole)
45. VPN 40--70h
27. Dropbox Clone 40--80h (Conflict resolution and sync logic are extremely error-prone)
4. Spreadsheet 40--80h (Cycle detection and UI state management are tricky)
10. RAFT 40--80h (Distributed systems are notoriously hard to debug due to race conditions)
68. Browser Engine 40--80h
73. Decentralized Internet 40--80h
49. Messenger 50--100h
22. Video Editor (Client-side) 50--80h (Browser constraints + heavy compute)
[Difficulty: Very High]
44. Anonymous Voting 40--80h (Cryptography is unforgiving)
6. Geometric Theorem Proving 50--100h+ (Essentially building a symbolic AI engine)
55. TCP/IP Stack 60--100h (TCP state machines are massive)
25. SQLite Clone 60--120h (A database engine combines almost every discipline of CS)
54. Game Boy Advance Emulator 80--150h (Requires extremely precise bit-twiddling and timing)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.
If it at least inspires some people to actually get their hands dirty (instead of outsourcing their intelligence to a black box), I don't mind Ai being used as a brainstorming tool.
For example, to mention implementing TCP/IP stack but not point to Adam Dunkels works is a unforgivable crime ;-) See list of his projects at https://en.wikipedia.org/wiki/Adam_Dunkels#Networked_embedde... which are all relevant here. He is another Fabrice Bellard like super programmer!
I think people should try to implement one or more of these projects with AI tools but using it solely for drudgery work i.e. keep design/architecture in your head (this is where the AOSA books come in) and only get AI to generate code for well specified (formally if possible) functions. This will also make them highly relevant to today's job market. Programmers now need to educate themselves and move more into meta-level i.e. use Formal Methods (Specification/Verification) to get AI to generate code with correctness proof along with it.
Another one you did under a different account: https://news.ycombinator.com/item?id=46439576