20 ms·
Build Your Own X
- tranxen 4y agoThis is really awesome. I love how it covers a lot of different topics.
- intrepidhero 4y agoI was hoping to see "build your own virtual terminal emulator". But alas! Anybody have a suggestion?
- melissalobos 4y agohttps://www.uninformativ.de/blog/postings/2018-02-24/0/POSTING-en.html https://www.uninformativ.de/blog/postings/2018-02-24/0/POSTI...
- p4bl0 4y agoThe tutorials listed here can vary a lot in quality. For the text editor section for example, there is a very good tutorial in C which guides its reader through the development of a kilo-like text editor with buffer management and everything, and next to that a YouTube video claiming to teach how to build a text editor in Python but is actually a (poorly coded) simple GUI using the text editor component of the Tkinter library. Well, it can serve as a Tkinter tutorial, but not as a "build your own text editor" one.
- themodelplumber 4y agoI wonder if it'd be possible to update the listings with filters or ratings. Difficulty, hardcore-ness, ETA to MVP, whatever. Even some simple notes or emojis would help.
- kiawe_fire 4y agoI don't think this is necessarily a bad thing on its own - it's actually quite reasonable that one person's focus when "building a text editor" is going to be lower level along the lines of "how do I write a buffer and process key presses" while another person's focus might be "how do I embed a text editor in my app so I can add my own UI around it". But it probably does warrant some kind of rating or explanation for each tutorial, especially for the less experienced developer.
- notorandit 4y agoNonetheless quite often a suboptimal tutorial is much better than no tutorial at all. Anyway, IMHO taking a tutorial for a copy-paste solution is really a larger problem than low quality tutorial contents.
- dmd 4y agoIn this comment I will teach you how to build your own bicycle! Step 1: Go buy a bicycle. Step 2: Now let's paint it and get some cool stickers!
- redhal 4y agoGreat list. You might also want to checkout this one: https://github.com/practical-tutorials/project-based-learning https://github.com/practical-tutorials/project-based-learnin...
- eatonphil 4y agoInteresting, this page has been around for a while and did not used to belong to codecrafters.io. I guess they bought the original repo so it would redirect here? Or maybe the original author started codecrafters.io? Indication of change here: https://github.com/codecrafters-io/build-your-own-x/commit/604281c36b9f573baa6c8272e49defc1c43163bf https://github.com/codecrafters-io/build-your-own-x/commit/6... when the (non)copyright changed a week ago. Here's what I remember seeing (someone's archive of it anyway): https://github.com/Sevistuo/https-github.com-danistefanovic-build-your-own-x https://github.com/Sevistuo/https-github.com-danistefanovic-....
- moneywoes 4y agoLikely was sold by the guy so the biz can use it as a funnel for leads
- shreyshnaccount 4y agothey might just be selling an ad spot :)
- hwntw 4y agoThe title made me assume it was a reference to building your own x.org - alas! Nevertheless, a fascinating repository.
- sgjohnson 4y ago> The title made me assume it was a reference to building your own x.org Same. It would be an insane undertaking, and I was moderately disappointed upon clicking the link.
- amelius 4y agoI thought this was about building your own X11. Which seems to be missing from the list.
- marcodiego 4y agoI thought it was explaining how to implement an X server.
- atan2 4y agoThe idea is absolutely great... but the quality of the listed links/resources fluctuate a lot.
- arriu 4y agoI love this but it needs more Rust :)
- xigoi 4y agoBe the change you want to see in the world.
- lolive 4y agoNot sure it is off-topic or not, but I wonder what resources it would contain to help design a software with undo/redo feature.
- MaxLeiter 4y agoAm I missing something or would it just need to be a doubly linked list? It really depends on your program state being… stateful (so you can navigate forwards and back consistently)
- blt 4y agoIf you store the total application state for each step then it's simple, but consumes lots of memory. If you want to store something more like a diff, there are choices. For example, you could have code to undo each operation, but you can also implement undo by going back to some checkpoint and then recomputing all operations between the checkpoint and now. Latter consumes more CPU, but comparable memory and a lot less code surface for bugs.
- neilparikh 4y agoIf you use persistent data structures, you can store the total state, and you'll get deduplication of the common parts, which brings down the memory usage to a more reasonable amount. This is what git does essentially, which gets you O(1) checkout to arbitrary steps in the future/past. This also means you don't need to design/pick a diffing algorithm, which you would be locked into (since changing the diffing algorithm would mean you couldn't consume old diffs).
- account42 4y agoGit does store deltas when packing objects because storing all distinct objects as-is would be too inefficient for large repos. This isn't the same text diffs as shown to the user but there is still a diffing algorithm that all future git versions need to support (well, at least the patch counterpart).
- boyter 4y agoSurprised to see 2 of my blog posts on there. Both about building search engines. Oddly missing the posts that I would consider a lot better about the subject. Rather flattering though.
- russfink 4y agoPlease share your suggested pages!
- smitty1e 4y agoI added https://linuxfromscratch.org/ https://linuxfromscratch.org/
- poochkoishi728 4y agoIf you follow a guide or conceptually learn how write X, and write your own version of GPL code, are you now free from copyright restrictions?
- tamalsaha001 4y agoYes, if you have done a clean room implementation.
- xigoi 4y agoIt definitely helps to use a different language, as another comment suggests.
- Dracophoenix 4y agoI'd like to see the following added: *Build your own firmware/bootloader *Build your own FPGA/ASIC *Build your own sound library/engine/driver *Build your own GUI Toolkit/graphics library *Build your own font (vector and bitmap) *Build your own character encoding standard (à la ASCII, Unicode, etc.) *Build your own MMO *Build your own protocols *Build your own mouse *Build your own keyboard *Build your own mail client and server *Build your own VoIP client (à la Discord, Skype, etc.) *Build your own instant messenger ( à la IRC, AOL, etc.) *Build your own programming language *Build your own markup/typesetting language *Build your own compiler, interpreter and assembler *Build your own machine code & microcode *Build your own filesystem *Build your own softmodem *Build your own SDR *Build your own BBS *Build your own painting application/photo editor *Build your own internet browser *Build your own cryptography *Build your own compression algorithms *Build your own webcam and webcam client *Build your own virtual voice assistant *Build your own girlfriend ;)
- noduerme 4y ago>> Build your own girlfriend Or build your own religion. Them you can build as many humans as you want.
- metadat 4y ago^ Snarky yet accurate comment about Elon Musk and "The Mission".
- misterjinx 4y ago
- Dracophoenix 4y agoI knew someone would say this. "Never roll your own cryptography", despite the ambiguity of its phrasing, means never use uncertified crypto in production unless you're willing to take the risk. It doesn't mean to never build cryptography without an expert's permission. Everyone who has ever published world-class cryptography has rolled their own crypto.
- 55555 4y agoThank you, this will keep me entertained for months!
- eterevsky 4y agoOne advice: for any of these topics take a tutorial directed at language X and implement the solution in language Y. This will prevent you from mindlessly copying the code and will force you to understand what you are doing.
- SiDeGraf 4y agoLooks like a lot of fun. Will try it out!
- qalmakka 4y agoFor half a second my brain thought this post was about writing your own X11 implementation. I admit, I was intrigued.
- akatechis 4y agoIt's quite sad that "Build your own frontend framework/library" is just a bunch of "Build your own React" links...
- eatonphil 4y agoWhat do you think it should be?
- ccbccccbbcccbb 4y agoDreaming of HN where 100% of entries are like this and 0% are propaganda and narrative steering.
- qwertox 4y agoWhich propaganda? Would you mind referring to a recent example? This submission is indeed really great, but I don't see HN as being such a bad platform as you're suggesting it is. There's really a lot of value being shared here.
- ccbccccbbcccbb 4y agoEverything covid, global warming, world famine, broken supply chain -related.
- qwertox 4y agoOh, with referring I meant a link to a submission which you recently read and got annoyed by it.
- ccbccccbbcccbb 4y agopick any https://hn.algolia.com/?q=covid https://hn.algolia.com/?q=covid https://hn.algolia.com/?q=global+warming https://hn.algolia.com/?q=global+warming https://hn.algolia.com/?q=supply+chain https://hn.algolia.com/?q=supply+chain
- infinisil 4y agoI think https://lobste.rs/ https://lobste.rs/ is pretty good at staying focused on programming
- ccbccccbbcccbb 4y agoWill check, thanks!
- 4y ago
- xigoi 4y agohttps://zserge.com/posts/ https://zserge.com/posts/ has some good “build your own X” articles, including: * a clone of React.js and Vue.js in <1K bytes minified * a web-based code editor and office suite * a chess engine * a TCL interpreter * a two-step verification client * a simplified C compiler
- amelius 4y agoWhat I want is "Build your own X, but better".
- notorandit 4y agoThis thing is not really cool. It's much more! Kudos!
- rychco 4y agoI’ve had this list bookmarked for years and love referring back to it for ideas. It’s also one of the first things I send to new(er) programmers so they can make cool tangible stuff & avoid tutorial burnout.
- klaussilveira 4y agoI remember The Great Code Club (https://www.greatcodeclub.com https://www.greatcodeclub.com), started by Marc-André Cournoyer. It was a wonderful idea and it provided me hours of fun and learning. If you are into this sort of thing, you will love it.
- postalrat 4y agoBuild your own subtractive|fm|additive|granular|etc synthesizer.
- kaspian 4y agoI was scrolling up and down the repo looking for what I assumed was the tutorial - how to build your own X-server, haha