Bootstrapping a simple compiler from nothing (2001)
Published in 2014, this chronicle by @emersonrsantos details the mechanics of building a profitable, self-funded business without venture backing.
Core Principles for Independent Builders:
Charging customers from day one acts as the ultimate filter for building software that solves genuine, high-urgency problems.
Keeping fixed overhead low and leveraging lean infrastructure allows founders to stay alive until market tailwinds kick in.
Small, repetitive improvements in customer retention and conversion rates yield massive returns over multi-year horizons.
Community Debate Themes:
The community focused on B2B customer acquisition channels, cold email vs SEO distribution, and balancing full-time employment with side-project development.
CATEGORY Bootstrapping & MRR →
HISTORICAL ERA Cloud & Mobile Era (2014–2019)
COMMUNITY SCORE 192 points
TOTAL DISCUSSIONS 30 comments
Going even "deeper", you could try starting with ROM BASIC on a PC and building the beginnings of an OS from there ( http://en.wikipedia.org/wiki/IBM_BASIC ↗ ).
I have written a simple assembler (that supported labels) using the DOS DEBUG utility, but never had enough time to go through the levels of abstraction beyond that. If I did, my next steps would've been a text editor, followed by a simple C-like compiler.
Another interesting "bootstrapping" problem I've heard of is this: Suppose you rm-rf'd a *nix system, and all that was left was the kernel and shell process running in memory. How much of the system could you "rebuild" with only that?
When you program with today's tools and all that we have, you forget very fast, how it was in the beginning and how difficult it is to start from scratch.
Today you always have some sort of compiler or cross compiler. Starting totally with nil (not even an assembler) is really not so simple.
This little article shows nicely, how bootstrapping can work. Pulling myself out of the mud on my own hair (like the Baron Muenchhausen from literature).
But don't forget: He still had the operating system not bootstrapped ... so repeating the whole computer history would need some more bootstrapping to do ....
This reminds me of an interesting question posed on reddit in /r/programming a few years ago: if you were stuck in a room with a blank PC with only a floppy drive and disk, what's the bare minimum that would need to be on the disk for you to eventually write a full-fledged operating system[1]? The whole thread is a fascinating read, and features a cameo from lutusp.
[1] http://www.reddit.com/r/programming/comments/9x15g/programming_thought_experiment_stuck_in_a_room/ ↗
Interesting. This is a great example of the power in abstraction. By continually building upon available tools, we're able to develop new, higher level toolkits that can be used to further the process.
Ironically, this project steps back, abandoning modern utilities in favor of a more educational/interesting process (which is good, sometimes). I too enjoy passion-projects such as this.
This was great.
Exist sometime like this but more high level? For example, I wonder how start with python, lua or obj-c, create my own syntax and continue the development with them after a while.
I think nimrod & julia (and certainly freepascal) do this but wonder how they do that.