3 ms·
Nice! Looks like a good idea to implement something from scratch to improve the understanding of a language and also a tool. Any other ideas about stuff to impl
by diehunde 7y ago
Nice! Looks like a good idea to implement something from scratch to improve the understanding of a language and also a tool. Any other ideas about stuff to implement? Thanks.
- BookPage 7y agoI noticed my terminal emulator (Terminator) is a python app. I now have a todo item to try and write my own!
- eat_veggies 7y agoI built an http server and a markov chain library to learn python. They're both pretty worthwhile weekend-size projects. I heard cryptopals [0] is really good for learning both crypto and a new programming language. It might be cool to build things like a DNS resolver, an X window manager, gameboy game, or something from coreutils like grep or tar [0] https://cryptopals.com/ https://cryptopals.com/
- jsjohnst 7y ago> It might be cool to build things like a DNS resolver I wouldn’t recommend writing a recursive resolver as a weekend project, to many edge cases that you’ll get frustrated by, but that said, I do use writing an authoritative DNS server as a great way to fully learn a new language. You get file handling, grammar parsing, serialization/deserialization, bitpacking, network I/O, data structures, both tcp and UDP socket handling, deamonization, concurrency, etc etc. Covers most of the more difficult parts of many languages and once you’ve done it once or twice, doing it again for new languages is less about figuring out how to do it, but rather how to do it in X language. At last count, I think I’ve done upwards of twenty languages now.
- diehunde 7y agoNice! Crypto stuff indeed sounds interesting.
- kccqzy 7y agoI implemented a blockchain-based cryptocurrency for fun. It sounds cliche but the details are surprisingly complicated: what exactly do you use as the criteria to determine whether you should accept a block? What are the ways a malicious actor can try to send you an invalid block? Just how exactly do you confirm a double-spending attempt? How do you pick a block based on which to mine a new block? Etc. https://github.com/kccqzy/SimpleBlockchain https://github.com/kccqzy/SimpleBlockchain