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.

Perfect.

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

Meanwhile…

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 dribbble.com. 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:

Prerequisites

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.

Working From Home For The First Time in 3 Years – Expect Some Writing/Open Source From Me

Like many of you I’m working from home for a while. As a mental health strategy, I’m going to do some writing and coding in the hour or so I get back each day from not having to commute.

The first post, which will follow today, will be my thoughts on working from home. I worked for home for many years and did really well at it, so I’d like to offer some thoughts about what I thought helped me.

Thankfully I never changed my office set-up so I’ve been able to slide right back into the flow of working from home. I have a better mic and a really good headset, but overall it’s the same setup I used for five years as an independent consultant.

It’s interesting, but I’d actually rather be at the office. I grew to like being downtown and since my commute is usually by bicycle, I didn’t even had the drag of traffic or crummy train service to drag me down. I’m looking forward to returning to the office as soon as we’re able. For now? I’ll be writing to connect with my fellow humans.

New Book- The HTML and CSS Workshop: A New, Interactive Approach to Learning HTML and CSS

I only wrote a chapter in this new book, The HTML and CSS Workshop: A New, Interactive Approach to Learning HTML and CSS, but it is a new book and my name is on it and it’s on Amazon, so it’s still 💯 cool. I wrote the chapter on Themes, Colors, and Polish.

Here’s what Packt says:

Cut through the noise and get real results with a step-by-step approach to learning HTML and CSS programming

Key Features

  • An HTML and CSS tutorial with step-by-step exercises and activities
  • Structured to let you progress at your own pace, on your own terms
  • Use your physical print copy to redeem free access to the online interactive edition

Book Description

You already know you want to learn HTML and CSS, and a smarter way to learn HTML and CSS is to learn by doing. The HTML and CSS Workshop focuses on building up your practical skills so that you can build your own static web pages from scratch, or work with existing themes on modern platforms like WordPress and Shopify. It’s the perfect way to get started with web development. You’ll learn from real examples that lead to real results.

Throughout The HTML and CSS Workshop, you’ll take an engaging step-by-step approach to beginning HTML and CSS development. You won’t have to sit through any unnecessary theory. If you’re short on time you can jump into a single exercise each day or spend an entire weekend learning about CSS pre-processors. It’s your choice. Learning on your terms, you’ll build up and reinforce key skills in a way that feels rewarding.

Every physical print copy of The HTML and CSS Workshop unlocks access to the interactive edition. With videos detailing all exercises and activities, you’ll always have a guided solution. You can also benchmark yourself against assessments, track progress, and receive free content updates. You’ll even earn a secure credential that you can share and verify online upon completion. It’s a premium learning experience that’s included with your printed copy. To redeem, follow the instructions located at the start of your HTML CSS book.

Fast-paced and direct, The HTML and CSS Workshop is the ideal companion for a HTML and CSS beginner. You’ll build and iterate on your code like a software developer, learning along the way. This process means that you’ll find that your new skills stick, embedded as best practice. A solid foundation for the years ahead.

What you will learn

  • Get to grips with the key features of HTML5 and CSS3
  • Learn how to integrate animation, media, and custom themes
  • Understand how you can easily customize and maintain CSS
  • Develop your own mobile-first approach while designing websites
  • Learn how to diagnose and resolve common style and structural problems

Who this book is for

Our goal at Packt is to help you be successful, in whatever it is you choose to do. The HTML and CSS Workshop is an ideal HTML and CSS tutorial for the HTML and CSS beginner who is just getting started. Pick up a Workshop today, and let Packt help you develop skills that stick with you for life.

Table of Contents

  1. Introduction to HTML and CSS
  2. Structure and Layout
  3. Text and Typography
  4. Forms
  5. Themes, Colors, and Polish
  6. Responsive Web Design and Media Queries
  7. Media – Audio, Video, and Canvas
  8. Animations
  9. Accessibility
  10. Preprocessors and Tooling
  11. Maintainable CSS
  12. Web Components
  13. The Future of HTML and CSS

HTML5 Boilerplate 7.3.0 Released

We just released HTML5 Boilerplate 7.3.0.

In addition to the changes below, we also started using Github Actions to publish our npm package. It was pretty easy. I wrote up the process.

HTML5Boilerplate Changelog

  • Updated to Modernizr 3.8 (2b2bb45)
  • Updated to Gulp 4 (#2151)
  • Updated package.json (#2162) and enabled package-lock.json (abe2087),(#2145)
  • Remove redundant rules from .editorconfig (#2157)
  • Small docs maintenance updates (#2155), (#2164), (#2165), (#2167) & (#2168)
  • Bump lowest supported version of node to 8.x (#2142)
  • Remove .jscsrc config and remove gulp-jscs from package.json (#2153)

Thanks again to Christian Oliff for his work on this release. I continue to appreciate his help on tasks and his attention to detail. I’d be a mess without him on the team.

And, as always, thanks to our many contributors. You are the best!

As always, are you interested in helping out? Check out our current issues, submit an idea for a new feature or look at one of the other H5BP projects to see if there’s something else you’re interested in helping with. It’s fun.

Download the latest from github or install it from npm.

Using Github Actions to Publish the HTML5 Boilerplate npm Package

We just released HTML5 Boilerplate 7.3.0. As part of that release we integrated Github Actions in order to publish our npm package when we cut a Github release. Doing so was pretty easy. This is how I ended up doing it.

To start, I enabled Github Actions for the repo. To do so check “Enable local and third party Actions for this repository” on the “settings/actions” tab of the repository.

Next, I created a workflows directory inside our .github folder and added a new file called npmpublish.yml

Here’s what that file looks like. It’s based on one of the default Actions that Github provides, conveniently.


name: publish npm

on:
  release:
    types: [published]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
      - run: npm ci
      - run: npm run build

  publish-npm:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
          registry-url: https://registry.npmjs.org/
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.npm_token}}

Let’s go through what it does. The first line gives the action its name.


name: publish npm

This is the name that will show up in the Actions tab within Github.

The next section indicates that this action should run on a release event, specifically when a release is published. Github releases are basically enhanced git tags and we use them to neatly package up our dist folder for easy consumption as a zip folder. The type property actually accepts a list, but since we’re publishing to npm, we only want to do this when the code is actually released.


on:
  release:
    types: [published]

The next section contains the jobs that we will run, build and publish.

First up is build. I just used the default runs-on option- ubuntu-latest, since I’m not doing anything particularly fancy. This just means my work will run on a machine running Ubuntu.

Following that are some default Actions:

  • actions/checkout@v1, which checks out your repository, so that your workflow can access the contents of your repository.
  • actions/setup-node@v1, which installs a specific version of node for your project to use. In our case we’re using node version 12.

Finally, with the environment set up, we run two commands. npm ci, which is a continuous integration version of the more familiar npm install command. npm ci uses package-lock.json and some other optimizations to build out node_modules dependencies more quickly than npm install. Then we run npm run build which is our standard build command. That is an alias for gulp build and it generates the contents our our dist folder.


 build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
      - run: npm ci
      - run: npm run build

At this point we’re ready to publish to npm. That happens in our next job, npm-publish. Here we have a new wrinkle, the needs property. This just means that it requires the previous build job to be there before it can run. After that, the setup is similar. It runs on ubuntu-latest, it checks out the code and sets up our node environment. The one change in the environment set-up is that it sets the registry-url to https://registry.npmjs.org/. This is the default, but your organization might have a different private registry. You would set that here.

Finally, we run npm publish which does the actual job of publishing the project out to npm. This is just the standard npm command. This command uses the environment variable NODE_AUTH_TOKEN for authentication. The following section shows how to set up authentication for npm.


 publish-npm:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: 12
          registry-url: https://registry.npmjs.org/
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.npm_token}}

To set up a token to use for authentication with npm, first go to npmjs.com/ and open up the tokens page.

Click on the “create new token” button.

Select “read and publish.”

Copy the newly created token.

Head over to Github. Click on “settings” and then “secrets.” Add a new secret. Call it npm_token and then paste in the npm token.

And that’s that. Authentication for npm is set up.


This is just a basic example of what you can do with Github Actions, but was super convenient for me, so I thought it was worth sharing.

HTML5 Boilerplate 7.2.0 and main.css 2.0.0 released

We just released HTML5 Boilerplate 7.2.0 and main.css 2.0.0. Even with the major release number on main.css, both of these are basically maintenance releases. Open Source isn’t always about the big stuff.

We also did a bunch of clean-up around the related H5BP projects, with updates to HTML5Boilerplate.com and h5bp.org. We integrated main.css as a direct dependency on both projects and did some other clean-up.

HTML5Boilerplate Changelog

Download the latest from github or install it from npm.

main.css Changelog

  • Add .stylelintrc config (#18)
  • Rename visuallyhidden to sr-only (#27)
  • Fix broken link to ‘printing tables’ page (#20)
  • Alphabetize properties (#20)
  • Add stylelint-config-recommended to package.json
  • Add CONTRIBUTORS.md(#9)
  • Minor devdeps and README updates (#11), (#24)

Download the latest from github or npm