December 14, 2015
My name is Micah, and you've found my new blog!
Is this site broken?
- Progressively Enhanced
- Light and Lightning Fast
Is it going to win any design contests? Heck no! Does it do what the web was designed to do? It sure does! This site has the power to take the words that I type and make them accessible to the entire world. Pretty sweet huh?
Putting the Hypermiling in HTML
If you aren't familiar with hypermiling, it's the practice of optimizing your car and your driving habits to get the most possible miles out of one tank of gas. As I started to build this blog I became obsessed with figuring out the shortest, quickest path between me typing on a computer and a person reading the words.
Now this doesn't mean FTP'ing into the server and editing HTML files, but it does mean creating a super lean build process, automating deployment, and using every trick in the book to deliver that HTML file to the reader as quickly as possible. This is what that process looks like:
- Blog articles written in Markdown
- Source code pushed to Github repo
- TravisCI checks out master and compiles site using NodeJS based static site generator, Metalsmith
- Dist folder is automatically pushed to Amazon S3
- Cloudflare CDN is instructed to clear cache and pull new assets forward
- Static site is served to client over HTTPS using HTTP/2 from the nearest Cloudflare CDN
What about large viewports?
I totally agree. Without CSS, those line lengths are going to be terrible. But the point of starting with no CSS is to determine what parts of CSS we miss the most. Setting a max width, or using columns, or something of that nature will certainly be my first CSS rules.
What about CSS resets or Normalize?
I'm actually looking forward to embracing the differences between each browser. I've never really stopped to see how Safari rendered markup differently than Chrome. This will be a great opportunity to see if those differences actually break user experience, or if they are just a barrier to making the site look the same in every browsers.
What about social widgets?
Really? Next question.
What about analytics?
To be honest, I almost broke my no JS rule, and added Google Analytics in anyway. But then I thought to myself, "what is it that I want analytics for?"
- To see how many hits I get?
- Well that sounds self serving, and not really in the user's best interest.
- To determine where my traffic is coming from, and what devices they are using?
- Now this is information I could actually use to serve my users better. But if I always build for the least capable device, on the slowest connection, I should be serving all of my users to the best of my ability anyway.
For now, the benefits of analytics don't out-weight the......weight of analytics. Plus, this way I can get some baseline performance measurements and then research the best approach to analytics when I do decide to add it.
What about Modernizr?
This is a blog. It has content that I will want people to read, watch, listen to. What is the minimum viable product for all of those things to happen? You are looking at it. The internet was created to make the world smaller. To make information and opinions available to anyone willing to listen.
This is my hello world. This is my platform for sharing my thoughts and opinions with the world.
I've got a bazillion ideas bouncing around in my head on what to do next. I can't promise them in any particular order, but these are the things I hope to cover in the near future.
- Metalsmith and my static site setup
- How Nunjucks templating language is used on the site
- Automated testing using Browserstack and other fun tools
- TravisCI and how I turn commits into deployments
- Amazon S3, Cloudflare and how you can host a blog for very little money
- The power of HTTP/2 and its impact on architectural decisions
- Performance metrics of this site at launch vs each time I add a significant feature