New and Improved Killer Tofu!

Welcome to the new and improved Killer Tofu! Yes, there is a little visual sprucing up. The old logo is back (I love that logo) and the site has a little more minimalist flair. It also works fantastically on mobile and tablets now, too. That is not the big news though. The back end is now changed! The part you don’t see a.k.a. everyone’s favorite part. I am proud of it, so strap in for a technical explanation on how things are different now.

To start off, I am now running my site off a VM (Virtual Machine) controlled entirely by me. That means I can choose what is updated, when, and have complete control of the customization. It’s far more work, but the result, for me at least, is better. I have the VM hosted through Digital Ocean, which I can’t recommend enough. I originally chose them because they would let me run a FreeBSD VM, but abandoned that idea. The VM is currently running Ubuntu 16.10 x64 which is the latest version of Ubuntu as of this writing.

This site runs on WordPress software, which was a choice I made a while ago, but since then has some major drawbacks. The prime downside is that it is written in PHP. PHP is an interpreted language and due to that is slow. When the page loads, the server must compile the page and then serve it to you. A thing I found out a little bit ago though is that Facebook is still written in PHP. Due to that, Facebook has written its own PHP interpreter called HHVM (HipHopVM) and open sourced it for anyone to download and use. This significantly speeds up page load times. This is great, but it also is not 100% compatible with all PHP in the wild. I wanted to have a fallback in case HHVM crashed. In this case I installed PHP 7.0 (newest version of official PHP as of this writing) and have it render the page in the event some code crashes HHVM. HHVM also comes back alive every 60 seconds if the process dies. This all happens automatically.

I changed out the web server portion, too. I originally was running Apache (well, *I* wasn’t, my hosting company was), but I wanted to switch to NGINX. It is supposed to be event driven and have a lower memory footprint, which is great for a smaller VM with not a ton of memory available. That took considerable configuration because I had never used NGINX before this and it has its own configuration styles and files.

In terms of database, this is the least improved, it’s just the latest version of MySQL. The old standby. Nothing much to talk about here. Still works great.

The last cool thing, is that now the site is secured with an SSL certification. Check the little green lock in the corner of your browser. When I was on my previous hosting site it would cost an additional $50/year to get an SSL cert. It’s all tied up in registration fees and all kinds of nonsense. With the web becoming increasingly less secure, any additional hardening of security is needed. This might just be a little, personal website, but I still wanted to secure login info and anything else like that. There is an organization now called Let’s Encrypt which allows anyone with the means to get a *free* SSL cert for their site. It’s awesome. They even developed a tool called Certbot that automates a lot of the process. If you put it as a cronjob it will automatically renew certs for you every 60-90 days and you won’t ever have to worry about replacing dead certs again. This seems mundane, but it’s so tedious, annoying, and expensive usually.

OK, OK. So, you’ve listened to me ramble. It’s just that I’ve been meaning to do this for years now, and to finally have it completed feels amazing. I learned a whole crazy amount and hope to use that for my next venture which is to write my own website CMS style engine to port around. That’s a whole different story though.

Hopefully this will cause me to update this thing more, but as this is my 1000+ time making that remark, I’m not going to hold my breath, and neither should you.

Leave a Reply