The initial version of this site was an attempt to start with a single HTML page and then document the building of a complete blogging system. I wanted to learn more about React, NPM, TypeScript and other web technologies. And I wasn’t getting much out of tutorials that used a lot of boiler-plate code to get things started. I’m a big believer that the best way to understand what’s under the covers is to start by knitting the covers together yourself.
I also wanted to document the mistakes and false trails that a typical project goes down. It’s easy to take something that works and then write up the minimum set of steps that get you to that point. But most of the learning in software development, like most tasks, comes from making decisions, learning what was right and wrong about those decisions, and then moving forward or backward to the “next right thing”. In fact, an alternative name I thought of for this site is my core development tenet, which is “do the next right thing.”
I didn’t get that project to the point where there is an actual blog system. It turns out that documenting every decision takes time, and that in turn takes a lot more energy than I wanted to continue spending before I was able to write in a fully featured blog system. So I took the initial project, moved it into a sub-folder of this site, and installed WordPress.
But I wanted to preserve the initial site, warts and all. So you can read the initial HTML page, which documents the development of the original site, here. The current iteration, which I have yet to check in from my laptop, has things at the point where I have a static data model being passed through my React components to represent the articles, and does a basic rendering of the list of articles. I’m going to keep the project around and may continue to work on it. The thought processes involved are a pretty good indication of some of the stages of learning and mistake correction that any real software project goes through.
So remember: It’s the job of people selling you on a technology to make it look easy. But the “typical” application always has a few “atypical” aspect to it, or you’d already have a pre-packaged solution available for the problem area. Don’t be frustrated when the tutorials don’t give you the exact answer. Instead, figure out the details from the examples, understand the principles, and forge ahead. Do the next right thing. And if that turns out to be wrong and the next right thing is backtracking, then that’s the next right thing. Sometimes moving backwards is moving forwards. Enjoy the process.