Build Your Own X
github.com
github.com
But it probably does warrant some kind of rating or explanation for each tutorial, especially for the less experienced developer.
Anyway, IMHO taking a tutorial for a copy-paste solution is really a larger problem than low quality tutorial contents.
*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 ;)
Or build your own religion. Them you can build as many humans as you want.
This might help, depending on how deep you want to go:
https://craftinginterpreters.com/ is excellent for this
Found a few links:
* https://blog.carlosgaldino.com/writing-a-file-system-from-sc...
* https://www3.nd.edu/~pbui/teaching/cse.30341.fa17/project06....
* https://stackoverflow.com/questions/4714056/how-to-implement...
This is something I've been interested in lately as well & came across this video: https://www.youtube.com/watch?v=M_VuXVErD6E
It's targeting a split keyboard, but I think it details the general steps involved pretty well.
Software point of view, you'd like to use QMK or ZMK, and KiCad to design the hardware (PCBs). Reddit's r/olkb and r/ergomechkeyboards are great places to start!
Bonus: QMK supports trackpads and nipple-pointers too! (Not sure about mice though)
The first M makes this infeasible.
> Build your own girlfriend ;)
Eww. And illegal.
Here's what I remember seeing (someone's archive of it anyway): https://github.com/Sevistuo/https-github.com-danistefanovic-....
* 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
Same. It would be an insane undertaking, and I was moderately disappointed upon clicking the link.
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.
Your data can be represented in a Merkle-tree. You provide operations add-node, delete-node, move-node etc., on the Merkle-tree and build a command processor that takes as input a checkpointed Merkle-tree snapshot (could be empty when you start) and a log of operations (essentially an sequence of operations). The command processor then applies the series of tree operations in the log to build the final state of the tree. The special checkpoint operation saves a snapshot of the Merkle-tree.
This basic set of operations should allow you to do unlimited undo/redo/transaction playback capabilities.
Also see: Command Pattern, https://en.wikipedia.org/wiki/Command_pattern
It’s the number one feature I miss when I’m using another editor.
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.
This is advertising, pure and simple. That’s not a bad thing, but it’s funny that you praised it as being the exact opposite.
It's much more! Kudos!