The Only #hacktoberfest Help I Need is Someone to Close Spam #hacktoberfest PRs

They started before it was even October in the United States and they’ve continue to grow across three of our repos over the past 20 hours. I can’t wait for another month of this!

I really wish I could just opt our org out of this. The main project has 2000+ watchers!

HTML5 Boilerplate 8.0.0 Released

It took a little longer than I expected, but we released HTML5 Boilerplate 8.0.0 yesterday. As I mentioned a few weeks ago, it’s the 10th anniversary release, and if I do say so myself, it’s a pretty good way to celebrate 10 years of the project. It was a lot of work getting this one out the door, but I’m really happy with how it turned out.

I’ve been involved with HTML5-Boilerplate from before the beginning (I was working with Paul at Isobar/Molecular while it was still an internal project) so seeing it through this anniversary release was a lot of fun for me. Five years ago I wouldn’t have predicted I’d end up shepherding the project through this milestone. At the time I was basically just a watcher on the project who knew a lot of backstory, floating into issues where background was needed to explain something. My commits, at that time, were few and far between. So stumbling into the job of maintaining HTML5-Boilerplate and, by extension, managing the H5BP organization for the past three years has been a pleasant surprise.

For a number of reasons, this release, my third major release as maintainer, is the most satisfying work I’ve done on the project since the early days. Here’s what it includes:

Quick-start With npx,npm init or yarn create

The addition I’m most excited about is not a core part of HTML5-Boilerplate at all. Last week we released a very early version of create-html5-boilerplate. Similar to create-react-app, this application allows you to get started with HTML5-Boilerplate quickly and without installing any dependencies. With npx starting a new app or site based on HTML5-Boilerplate looks like this:

npx create-html5-boilerplate new-site
cd new-site
npm install
npm start

The above commands do the following:

  • Downloads and install the latest version of HTML5 Boilerplate
  • Installs dependencies
  • Bundles site assets and start a web server using Parcel
  • Opens a web browser pointed to http://localhost:1234/

This is very early days for this feature, but I think it’s a great start. Kudos to Vlad Tansky for his suggestion of this feature and his work getting it up and running and out the door. We’ll be working on more enhancements to this feature to get to a proper 1.0.0 release in the near future. If you’re interested in helping out, please drop by the new repo and pitch in.

We’re looking to add a small initialization wizard to get up and running with more values filled in and adding/removing some features. The first thing we’ll solve there is the long-running issue of the empty lang attribute on the html element.

That’s going to make me really happy.

I’m not saying that the empty lang attribute has kept me up and night or anything, but it’s always bothered me. The empty lang attribute has always been a “least bad” solution and not a good solution.

Sample package.json, Complete With Basic Parcel Scripts

We added a sample package.json to the project. In addition to being a starting point for people to get familiar with the npm ecosystem and the contents of package.json, it also adds Parcel to the project. Parcel describes themselves like this:

Parcel is a web application bundler, differentiated by its developer experience. It offers blazing fast performance utilizing multicore processing, and requires zero configuration.


The zero configuration part is especially nice to me. I have thought about adding a dev server and bundler to the project since those features are such a vital part of the developer experience in 2020. I never wanted to because the overhead and learning curve of some of those technologies is way too much for HTML5-Boilerplate. The simplicity of getting started with Parcel makes it a perfect choice for HTML5-Boilerplate. There’s just the one dependency in package.json, a couple of entries in the scripts array and then nothing else… If you don’t want to use Parcel, you won’t even notice that it’s there. If you do want to use it, run one command, npm start, and you’re up and running with a simple development web server and asset bundler. It’s really pretty great.

Once again, big thanks to Vlad Tansky for this feature. He suggested it and did a lot of the work getting this integrated into the project.

Sample Open Graph Metadata

This feature has been discussed for a while. The Open Graph protocol widely used these days so it’s a good addition to the project. The empty values in the sample markup are another area we’ll be filling in with the create-html5-boilerplate initialization wizard.

Remove jQuery

I wrote half of a book about jQuery and have broken bread/had drinks/talked tech/discussed opera (you can look it up- that’s one of the things I miss about being on Twitter) with members of the jQuery team over the years. I was a fan back in the day and remain a fan. I also recognize that, on the back of WordPress, jQuery is still in use on an enormous number of sites.

That said, while, at one point, jQuery was JavaScript for many people, that’s no longer the case. So, we removed it from the project. It’s been requested on multiple occasions.

For those of you who are still interested in using jQuery, we’ve documented the simple steps to getting it back into the project with our optimized snippet and will probably add it as an option to create-html5-boilerplate.

Set anonymizeIp to true in Google Analytics Snippet

Christian Oliff wrote:

By default Google Analytics records the full IP address of a user visiting the site, but that full IP address is never available to the Google Analytics property admin. By anonymizing the IP address you can make your site more GDPR-compliant as a full IP address can be defined as publicly identifiable information.

And so we anonomized the IP address.

Remove Browser Upgrade Prompt

My least favorite part of the project was removed.

Dependency Updates

We updated Modernizr to 3.11.2 (they’ve been busy!) and main.css to 2.1.0.

Documentation Upgrades, Galore

Docs! Docs! Docs! Documentation never ends.

Use GitHub Actions to Generate the Release, Upload the Zip File and Publish to npm

This isn’t visible to end users, but we’re now using Actions to generate the GitHub release, generate and upload the zip file and then publish the package to npm. Previously we were just publishing to npm.

All I need to do is tag the release on the command line, push the tag to GitHub and the Action takes care of the rest. This ensures consistency with the download package and automates a lot of manual steps. One of the most common issues withe releases over the years has been problems with the download file, so this ensures that the download package will be consistent from release to release.

I’m looking to do a few more things with Actions over the next couple of months across different H5BP projects. I’ll be sure to write it up here when I do interesting things.

One final note before I sign off. I added Christian Oliff to the maintainer line on the site with this release. Christian has been a great asset to the project over the years so I wanted to acknowledge how important his contributions have been. Without his attention to detail I’d be an absolute mess and the project would be in a very different place. Kudos to him for everything he’s done.

10 Years of HTML5 Boilerplate

some of the many contributors to HTML5 Boilerplate

While we’re preparing an upcoming release, I didn’t want the day to go by without mentioning that ten years ago today, HTML5 Boilerplate was released. Here’s the story of the project as we wrote it up a few years ago.

The History of HTML5 Boilerplate

Sometime in 2009…

“Wouldn’t it be great if we created a document that would be the starting point for developers?”

The boilerplate was started with the above quote in mind. While at Isobar / Molecular, Paul Irish began combining frequently copied and pasted chunks of code into a single document. The document would consist of basic, low level snippets to be used on upcoming projects. It began building on top of itself throughout each new project. This document was being created around the same time as the Isobar Best Practices.

But first…

The first written evidence of h5bp. See “starting template” at the bottom.

The Isobar / Molecular Standards Doc started in the summer of 2009. Work continued throughout the year. On April 30th, 2010, it went public (original post). Feedback was fantastic and a lot of people started adopting / following the guidelines laid out in this doc.

“Ongoing feedback was great (filling in a little bit since Paul left right after it launched) It was the #1 page on the isobar site forever and would make the rounds once every couple of months with a huge traffic spike as new people discovered it. It was actually very cool to have people come in for interviews and want to work with us because they’d seen the standards doc.” – Rob Larsen


The HTML5 Boilerplate was started in Jan 2010 under the name “frontend-pro-template“. Divya Manian and Paul Irish meet during SXSW at Halcyon (the coffee shop with s’mores). This was the first time they met in person to discuss the project, brainstorming was continued back and forth over IM.

On Mar 20, 2010, Divya made the first outside contribution. Up to this point, Adam McIntyre and Rob Larsen had contributed when it was still a Molecular project.

Things are getting hawt in huurrr… so hawt…

April 5, 2010, hawttt pink makes an appearance. Hawttt pink was first seen at Dan Cedarholm’s The clear choice when choosing something that’s hawttt and sexy and catches your eye, is #FF5E99.

Some sort of whimsy needs to be a part of every project. But, it’s a bit tricky on a project that will be used by everyone, so the text selection color is a perfect spot for this” – Paul

Paul also gave an early tease about the project to Rey Bango in an interview (skip to 3:15 of the Paul video). Intrigue!

It’s never too early…

wassup sass

May 14th, 2010, the team starts to experiment with Sass. Divya was the catalyst behind this because as she claims.. “Paul does not believe in being an early adopter :P”. But the project settled on using CSS to appeal to a wider audience.

Did you know…

Some of the names for the project that didn’t make the cut:

  • Pro Frontend Template
  • Starting HTML5 Template
  • Markup Zygote

Paul came up with the name HTML5 Boilerplate in the car on the way to his parents house. The project isn’t truly a “boilerplate”. A boilerplate is the bare minimum amount of code needed for a project. H5BP isn’t the bare minimum.

June 2010 Paul leaves Isobar and heads to a little startup called Google.

July 6, 2010 the project name is officially changed to HTML5 Boilerplate

HTML5 Reset-er-um-plate-ish…

The day before H5BP launched, HTML5 Reset went live. The projects had similarities. Divya had been pushing to launch earlier, but the desire for a build script was holding it back. The build script was such an important part of the project, performance, etc.. but the work was underestimated. The launch of HTML5 Reset made the team decide to launch the project without the build script… for now.

“If we wait a week, we lost and all this work was wasted” – Paul.

HTML5 Boilerplate releases…

In Aug 2010, the HTML5 Boilerplate ships. Contributors included: Jonathan Neal, Garowetz, Jdbartlett, Rob Larsen, and Mathias. About 120 watchers initially but not many commits, yet.

Aug. 13th, 2010, Rob kicked off the Ant build script. Even though it’s difficult to introduce Ant, Java and XML to front-end developers, the build script was extremely important. The build script was created with the ySlow and PageSpeed guidelines in mind. Ant was the proper solution.

Shi Chuan starts to contribute.

A mobile home…

Dec 16, 2010 Mobile Boilerplate launched

To infinity and beyond…

Since the launch, the growth has been linear.

Unilever was a major early adopter (where’s the pink bro?), and Twitter’s use in 2010 was huge as well. Because H5BP is a starting point, the project didn’t start showing up in the wild for a few months after the initial release. Many sites, which were currently in production, couldn’t start over and implement H5BP after it launched. But soon, many sites were using it.

As soon as it shipped people began contributing and reporting bugs here and there. GitHub FTW. Steadily The project climbed to the #4 most watched on GitHub. Since the release of Twitter Bootstrap, HTML5BP has settled at #5.

This doc was primarily written by Tony J Camp based on issue 844. Original notes here.

Connecting VS Code to an EC2 Instance Using Remote – SSH

I use VS Code almost exclusively now. It’s the best editor for Angular and TypeScript and that’s where I spend most of my time these days. It’s also a pretty good all-around editor, so even when I’m not working in TypeScript I still use it.

I recently found the need to edit a WordPress theme running on an Amazon EC2 instance. In many cases I would just SSH into the machine and make changes using whatever tools were available on the machine (emacs or vi, etc.) With the amount of work I need to do with this particular theme, I need a much more powerful editing environment, so I looked around for ways to connect directly with VS Code to work with the files directly. I didn’t want to go old school with sFTP or something, so editing in VS Code seemed like the way to go. It’s pretty cool. The setup I’m using is:


This article assumes that you’ve already got an EC2 instance running and have access to the .pem file you created when you set up your EC2 instance. You also need and OpenSSH compatible SSH client installed on the machine.

Getting Started

The first thing to do is to install the Remote – SSH extension. Go to the extensions panel in VS Code and search for “remote ssh.” There will be a result from Microsoft.

Install it.

From there, with key based authentication, I did something different than the instructions in the extension, which allow for the use of a username and password. I hit F1 to open the command pallete. I then typed “remote” to limit the results to this particular extension. I then chose “Remote SSH:Open Configuration File.”

Clicking on that menu item will open a new menu, which allows you to open a configuration file from one of two pre-configured places on the file system. Choose the first option. In my case it was C:\Users\rob\.ssh\config

VS Code will then open the file with blank values filled in.

Fill out the fields with your host, hostname, username (find it here) and, and this is the tricky part for key based authentication, a new field, IdentifyFile, which should point to your .pem. Save that config file and now you’re ready to connect.

To connect, hit F1 again and search for “Remote SSH.” Choose “Remote SSH:Connect to Host”

From there, select your recently configured host from the list that appears.

It will open a new VS Code window. Accept the one dialog that pops up and you’re ready to go. You can click “open folder” in the file window and start working like you normally would.

And that’s that, you’re ready to edit files on your EC2 instance, in VS Code.