Buying something in bitcoin using only the protocol spec and man pages? Tweeting from a Linux from scratch install? Writing a correct tar command on the first try? Writing a quine on your favorite language without google?
Buying something in bitcoin using only the protocol spec and man pages? Tweeting from a Linux from scratch install? Writing a correct tar command on the first try? Writing a quine on your favorite language without google?
My take on it was that lots of this old software was implemented by candlelight with a magnetized needle, a 512KiB HDD platter and a steady hand; so I should be able to reimplement it in a modern language with modern tooling in a lot less time, while learning a lot about the system. Like, dig command output means a lot more to me now than it did at the start, and I now appreciate what articles like the OP mean now.
https://robertheaton.com/2018/12/08/programming-projects-for...
The project goals are not as lofty as those proposed by nishanth_v's friend, but Mr. Heaton goes the extra mile to turn each project idea into a step by step mini-curriculum with lots of extension points.
Then, he goes another extra mile by allowing readers to email in their buggy projects, and running a companion series where he teaches people how to debug / fix / improve their code by refactoring reader's attempts at the "...Advanced Beginners" projects.
Recommended.
Not quite the same as I'm not following or reimplementing any established standard, but it's interesting and fun to Greenfield a c++ project using minimal dependencies to do things like:
- invent and parse a DSL - modularise components and connections between them - possibly cyclic directed graph traversal - efficient near-real-time audio processing (working in chunks within a time budget) - multithreading / parallel module processing - spit the outputs into an audio device and/or wav files - eventually put a GUI on top
In the same vein, I think building or designing some of the components in an OS or Systems book[1] could have a similar positive result.
[1] https://mitpress.mit.edu/books/elements-computing-systems-se...
I usually get it to run a simple loop to print hello world and do the inevitable Fibonacci generator and get bored. No fancy things like functions!
One of these things was crudely repurposed into a domain specific language for a job as well which was handy.
If I can dream, an LDAP implementation with a similar target as GP wound be fantastic.
That’s not a short one though (: