I might be able to top that. About eleven years ago, I went through this process:
1. I wanted to redo my web site. But I hated using PHP which is all my shared host allowed.
2. Maybe I'll design a little programming language that transpiles to PHP. Then I can program my site using that.
3. I have the parser working and producing an AST. You know, writing a little interpreter that walks that AST is practically trivial. I'll do the PHP backend later, but let's give that a try.
4. Whoa, I have a working language! Neat! But, man, that tree-walking interpreter is slow. Maybe I could translate the tree to bytecode and write a little bytecode VM...
5. Bytecode is so fun! But I'm relying on the .NET VM for most of the heavy lifting like the GC and object representation. I wonder how that stuff works. Maybe I should try writing a little VM in C++...
6. That wasn't as bad as I expected. I learned a whole bunch. Maybe I should write some of this down.
So, uh, now I work at Google on a programming language and wrote a textbook on building interpreters [1]. I never did finish that website. (I just ported my blog to Jekyll at some point instead.)
I read once that a famous author got started because they read some trashy novel and was so incensed that it had been published that they decided they could do better.
Jim Butcher with Dresden Files, or someone else? Because that pattern-matches to "highly promising book recommendation" for me.
"... struggled mightily until deciding (out of frustration) to reverse course and follow Chester’s rigorous writing techniques to the letter, doing all the plot outlining and character background sheets and so on that the English literature folks often scoff at as the workmanlike tools of genre hacks."
- So, tell me, how did you land a job on Google?
- Yeah, I was trying to redo my website...Roughly around this same time, I was a very burned out game developer at EA. My job was doing data analytics on telemetry data reported by games. Basically, any time you started a game of Madden, the game would phone home to an EA server and tell EA which stadium you picked, which teams, game mode, etc. EA wanted to use that data to know what to prioritize in future versions. I was working on some rudimentary code to scrape those log files. Nothing that felt like making games in the least.
At the same time, my employment contract prevented me from doing game stuff on my free time. Most game companies essentially own your brain and don't let you do your own game-related stuff on non-work hours. So here I was nominally in the game industry and because of that, I was doing less stuff that felt like making games than ever before. It sucked.
In a fit of pique, I made a throwaway account on Reddit to whine about this. A complete stranger saw and said, "Well, if you know C++, Google is hiring and I could give you a referral..." I already had an interview lined up at ArenaNet in Seattle at the time. The recruiter for Google rushed to get an interview with Google going while I was in Seattle. I wasn't super interested because what the hell do I know about working on search engines and server stuff? However, I wasn't about to turn down the opportunity to see a Google office. My plan was to stay in games.
Then I bombed the ArenaNet interview because the interviewer didn't know what amortized complexity was and I couldn't do a good job of explaining it. (They asked what the cost to append to a growable array was and I said "constant time on average" and they looked at me like I was an idiot.)
Somehow, I managed to squeak through the Google interview. I had no idea at the time how few people get offers. If I did, I probably would have been a lot more nervous and fucked up the whole thing.
So, yeah, I got a job at Google and moved across the country because of a whiny throwaway account I created on Reddit.
I've seen you around here a lot and enjoyed your comments, but until now, I never realized you're the author of "Crafting Interpreters" and "Game Programming Patterns"! These are some of the best resources I've ever read on-line! Thank you for doing those!
You're welcome! :)
For example, I included multi-lingual functionality as I wanted google to give me better result when people searched the keyword in my city.
As I had never been satisfied with my design, I found a way how to safely separate content and layout /color/etc. Then I was curious if anyone visited the website, a simple analytics was built. Wait, I also wanted to know in real time of any visit, so I set mobile notification if anyone visited the page or clicked on specific button. This list keeps.... haven't mentioned about my form builder, dynamic popup, and chatbot.
Thanks for sharing the experience, I thought I was that unique.
Off the shelf CMS ends up being a mix of feature factories and lock-in traps, though, which probably explains why NIH is so particularly pernicious in this case.
We need a SQLite for CMS.