This Site is Handmade
Essentially, everything about this site is hand-coded by me. There are font libraries that I didn't make and clever ideas on how to implement things that programmers have kindly shared, but it's all assembled by me.
As such, things might behave weirdly, and I would not recommend that you copy and paste my solutions into your needs without actually understanding that my code works perfectly for your needs. Said differently, in no way do I provide a warranty, nor do I guarantee that bad things won't happen if you cut corners.
Do your research. Test. Then deploy.
All the information is current as of July 2024.
Hosting
I went with Dreamhost for this site. I had previously used them for the generic brentlarowe.com years ago when I also ran a personal Ubuntu node using Linode. At that time, I wanted a Minecraft server and a file server, and the snap package of Nextcloud (which was very easy to deploy) commandeered the web service. But that's less than important now.
Using them again and going with the top-level domain of "info", I reserved the host "larowe", but I still have brentlarowe.com pointing to larowe.info using a 301 redirect. The simpler website also gives a really easy email address to remember: brent@larowe.info.
Design
I knew I wanted something simple for the site. I believe that design is extremely useful, but it is so easy to be overly reliant on design to do the lifting of information. My vision for this site is to be full of information that is accessible, befitting my professional focus on the importance of connecting people with the information they need at the time they need it. I expect I will be continually improving that for this site as time goes on.
I made a couple design choices to hopefully make it easier to read things -- I chose an Adobe-available font, Futura, as the main sans serif font; I also decided to use an off-white background which I find to be easier on the eyes than bright white. I also chose to have hyperlinks be a bit obscured, instead relying on plain language that indicates there is something else to read or see. That can result in some hidden links, like the "Hand-crafted" link that got you here, but it's more important to me that people engage with the thoughts and move organically rather than to be coached that other pages exist. A person only has a few moments to engage with the content; why waste it on things that are different from the information you would like them to learn?
Architecture
I'm hosting the web root in a directory that is separate from the environments and application data that will query and insert data on the MySQL database sitting in the background. Named "SNAL" ("save now, analyze later" -- thanks, Nila!), it will also hold tables for my blog posts (eventually), allowing for retrieval of posts in a certain category (for example, posts on my data science stuff, or posts on my energy use thoughts).
At present, the DB situation is very, very lightweight. Since this is a personal project of mine, there's no need to scale much up, but I'm pleased to see that Dreamhost offers the ability to scale things up should I need to. I am aware that, at some point, remaining in a cloud-based structure is less cost-effective than rolling one's own server, but I figure I've got a long way to go before that's an issue.
Coding
I'm using PHP for most everything. I want the content to be rendered cleanly for users, but also maintain security for the information that I'm storing. Using PHP and having everything rendered server-side first makes sense, allows for flexibility in design, and extensibility as I tackle other challenges. While I will likely be using other languages to do other tasks, starting everything in PHP is a good choice at this stage.
I'm also writing up all of my database connectors in python. While I am having to brush up a little on the syntax and standards, using IDEs is helping out tremendously in that effort. I'm very satisfied with JetBrains' suite of products, and PyCharm is working well for my needs at this stage.
I've done analysis in R, Tableau, BI, and QlikSense; not to mention Excel. For this site, I'll be using R as exclusively as I can. It's a hard program to master, but so much more precise if you know what you want to show in your data visualizations. I'm not sure if it's capable of being quite as pretty as some of the visualizations I've seen with Tableau...
But currently, the coding is quite simple, with the trickiest thing written being a PHP script that automatically detects what subdirectories exist below the location of the script, display them, and hyperlink them allowing one to see the content in those nested directories. I got a ton of help from other coders in creating it, and it works. I'd like it to display the title of the page, but that's an effort for another time.
I'm using a suite of programs made by JetBrains, having used their DataGrip product for years when handling information management tasks while at the University of Chicago Laboratory Schools; I test my work locally using MAMP to run a PHP server and ensure the code is behaving as expected; I use GitHub to track my versioning; I use Tower when I want a nice graphical interface while managing the repository; and I use good ol' Terminal when I want to pull updates into the local branch on my web hosting service. This is, of course, done through SSH.
Content
I write all of my own content, which can be a bit rambling. I will probably tighten things up as time goes on, but will probably never change the meat and potatoes of the content -- if anything, it'll be trimming off unnecessary phrases that happen because I write in a nearly stream-of-consciousness way.
Linked in the nav bar is the podcast that I create with my friend, Zach. I currently use Adobe Audition to record my end of the podcast, then I take his MP3, mix it, clean up the levels, trim out the coughs and sniffs and other unpleasant noises, and ensure that it is suitable to listen to comfortably while driving down the road. I hate content that can't get the volume levels consistent.
I have plans to write up the Dungeons & Dragons campaign that I'm running for friends of mine, and will also hopefully pop up some DAW created music... At least, that's the plan!
Management
All of this is managed with Basecamp, which is best when used with others, but I find it to be sublime at being what I need it to be to capture action steps, thoughts, resources, and keeping it all together for self-accountability. Granted, my day-to-day task management tool is, and has been for a very long time, OmniFocus. The GTD method of popping something into an Inbox and then enacting the discipline to check that Inbox, file it accordingly, review the projects/lists/groupings that are important in your life, and then acting on those items is extremely liberating. One is able to achieve so many things that bring them joy, keep on top of obligations that pay the bills, and remind themselves of the interesting thoughts they had.