HTML5 Boilerplate 6.0 Released

drink

If you’ve been paying attention, you will have noticed that HTML5 Boilerplate 6.0.0 came out a few weeks ago. If not, it did. 6.0.1 has since been released.

It was a long time coming and I’m super happy to have it shipped. It was a lot of fun. Working with a project like this invariably means you have to do new things, so getting a major release out the door (where you have to touch everything) is a fun, educational experience. And, of course, working with the community is also pretty great.

Thanks!

Anyway, it was a big release and featured a lot of nifty stuff including:

  • We finally removed IE8 Support. This was a change that we had been discussing for some time and it was one of the first things I pushed through when I started taking a more active role on the project. Thanks to everyone for their help and input on this one.
  • We finally added a sample web app manifest file. That code had been percolating for years and it finally shipped.
  • We upgraded to Modernizr 3 and added a sample Mondernizr config so that people can do their own custom builds locally. Our Modernizr file is now created at build-time and I reworked the default detects to be more, er, modern.
  • We found out someone unaffiliated with the project had published the project to npm, so we took control of the package (thank you npm– support you were awesome) and published an official npm package.
  • And… lots of other great work by many contributors, including a ton of great work late in the process by Christian Oliff. Thanks to everyone for your contributions.

As a note, we still have an open bug that we’d love to get your input on– macOS – VoiceOver / Chrome announcing visually hidden text out of order · Issue #1985 · h5bp/html5-boilerplate. It’s an Apple bug with accessibility concerns that we’d like to work around.

As for what’s next… I’ll be opening up a couple of new issues for discussion this week, I think. So keep your eyes on the repo and join in on the fun.

Filling the Void Part 1: Random Projects and SSL via Let’s Encrypt

As I mentioned last month, my last long-term project ended in December. Between the holidays and then two separate instances of thinking I had something lined up and it falling through, I’ve only been working part-time over the past few weeks. While I’d prefer to be working full time (please reach out if you’re looking for help with anything) I have made myself useful over the past few weeks with side-projects and tinkering with new technology. I figured it might be fun to go through some of what I’ve been up to. This is the first of two posts detailing what I’ve done on my “winter break.”

SSL with Let’s Encrypt

One of my favorite projects has been switching several of my domains over to HTTPS using the free certs from Let’s Encrypt. I was really excited when my long-time host, FutureQuest announced support for Let’s Encrypt, including automatic updates. I love that this free path to secure communication exists and was excited to take advantage of it when my host offered it. Paying a one-time $25 setup fee is a lot better than the cost of an SSL certificate.

I was worried about what the drive to encryption by Google and others would do to smaller web publishers and businesses. I understand the need for and heartily support encrypted communication across all channels, I just hated the idea that small-fry publishers would get punished (in search ranking, etc.) for being insecure when the cost would be prohibitive for many publishers. Let’s Encrypt removes that monetary hurdle. Great stuff.

Futurequest’s implementation was pretty easy so the only difficulty was in getting WordPress working well with SSL (all three sites so far have been WordPress.) Generally, that was okay. A clean WordPress install is fine, but once you get into a real-world installation things get icky. Every migration included at least one instance where the site in question completely blew up because of one plugin or another. The good news is I was able to work around all those issues pretty easily (deleting plugins is especially easy) and am now running up and running on HTTPS on three of my sites.

Pretty sweet.

Time for a Refresh

One of the earliest projects I worked on was a refresh of the $100,000 Club and the All Time Record Comic Book Sales SVG visualization (a scatter plot.) Both of those projects are on Angular 1 and going back and updating them several years later was a lot of fun. I’d had a few things I wanted to do with the visualization for a few years and I jumped at the chance to implement them. It’s much nicer under the hood now.

All that code is on github.

Random Projects

As the above indicates, I do a lot of comic book related research and code. I have continued to document the Edgar Church Collection and have also started to document other named comic book collections. Free data for comic book people.

I’d like to do something interesting with the Edgar Church data this year. We’ll see what I come up with.


That’s round one. Round two, with Angular 2, React and Auerlia, will drop sometime next week.

A Few Paragraphs on Angular 2

Look! I’m back! I may end up writing here more often that I have over the past couple of years as I’m significantly cutting back on the amount of time I spend on Twitter. If you’ve enjoyed me saying “get off my lawn” on Twitter over the past few months, you’ll have to come here to read those thoughts. There is the benefit of paragraphs and formatting on the site, so there’s that. If you’re curious what the hell I’m talking about, this tweet-storm is a great example. That kind of stuff will live here now, if the mood strikes me.

The mood has struck! Read on!


I just finished up a long-term consulting gig and, while I’m kicking off a shorter-term a project for another long-term client, I’m also looking to set up my next big project. That’s the big question for me right now- what am I going to be doing for 2017?

As part of that process, I’m finally going to do a deep dive into Angular 2. I worked with it a little bit at my last client, but that’s not really enough for me to really feel like I know it. People are interested in it. I’m interested in it. So… I’m looking at it.

I’m starting with Switching to Angular 2. I’ve got a bunch of Angular 1.* experience so a book written for people looking to move from 1 to 2 seems like a decent place to start.

Between the book and the exposure I had to it on my previous project, my initial take is that it feels like everything that’s right and wrong about the web all wrapped up into one package.

It’s “right” in that it’s really well put together. The general framework architecture combined with the use of TypeScript make it a very compelling alternative for certain types of applications and teams. Like Angular 1 before it, it works for me for some things.

It’s “wrong” in that it’s just ridiculous. It doesn’t make sense for most of what people actually need to do on the web.

Modern web development is generally too damn complicated for its own good. That complexity is heightened by the interconnected, patchwork nature of modern front end development. If you buy into this mode of development you are relying on a matrix of software that no human could possibly vet. You’re basically acknowledging you’re going to live with random bugs, dependency issues, and reams of alpha software you’re supposed to trust going into production.

Angular 2 is exactly that.

On my first project with Angular 2, I experienced weeks of flaky builds as the development landscape shifted randomly underneath us. Many dependencies were also flaky and/or barely maintained. So much fun! Once the builds stabilized, I was flabbergasted to take a look at how much code was required to run the application. node_modules had over 1000 dependencies and our main.bundle.js was over 4.5MB. This was for a read-only application. It didn’t even do anything. I can’t help but think that’s ridiculous. For complicated, large-scale applications I can see the benefits, but for something simple… holy cow that’s a lot of code to solve the kinds of problems I was able to solve with a few hundred KB of pure JavaScript in 2006.

More on it as I get deeper into this dive.


On a final, related note, I’m really interested in exploring a way to marry the best of modern web development with a more stable, accessible (in both senses) and minimalist approach. There’s got to be something more appropriate for smaller applications and general “web” development.

Happy Birthday Palatino Consulting!

My business turned two years old on Friday. Yay my business!

So, how’s it been?

Great.

It’s truly been a joy working for myself over the past two years. I really wish I’d done it sooner.

One thing that’s been a negative is the fact that I haven’t done any writing or speaking engagements since The Uncertain Web was released. It’s a bummer, but that’s the way it’s gone. I’ve been busy with paid work and, to be honest, I was a bit burned out from writing three books in three years, so a long break has been good for me.

I’ve actually got a pretty big backlog of ideas to go through. There’s been a lot of bullshit flowing through front end development over the past couple of years and I have “big thoughts” on all of it. Considering how busy I’ve been so far in 2016, I doubt that I’ll get a change to write about it, but if I do, I promise I’ll make you laugh.

I’ve also had the opportunity to work with a variety of technologies over the past couple of years, so I have opinions (real, working opinions) on just about everything out there right now. That’s fun and would be fun to share.

We’ll see.

(Don’t hold your breath, though!)

One thing that I have kept up with is open source work. I haven’t been a demon or anything, but I have been knocking off some work pretty consistently over this year especially. That’s always fun.

One thing I should mention is that I occasionally need some development help. I’m especially interested in WordPress, Angular and pure HTML+CSS freelancers. Shoot me an email if that sounds like you.

Doing the Same Thing Over and Over Again and Expecting Different Results

Here I am taking a shot at shorter form writing. Watch me write!

The biggest job/career related error I made this past year was going against my own policy and talking to a company I had a bad feeling about from the beginning. I’ve actually known about this company for a long time and think poorly of them. The thing is, a recruiter came along and told me how much they were paying for a high profile role they were trying to source. That number was higher than the honestly very high number I have in my head to go work for someone else at this point. So, against my better judgment and against my own stated policy of not talking to people unless I’m sure the company will be a good fit, I talked to them.

I’m a dumb-ass.

The one part of the conversation that sticks with me is the “big” question in the interview. Apparently, they’ve got a lot of separate development teams who have worked in multiple versions of Angular on different components that have to play nice together on the same page. As you can imagine that has caused problems. Apparently, they’re also kicking off some development using React. With that cluster in mind, they asked, how would I help solve the issues they were having with all these interoperability concerns at an architectural level.

My answer was simple. I said, “Stop doing that. Don’t use React and standardize on one Angular version.”

I could hear the frustration in the interviewer’s voice as he said, “that’s not really an option” as if pointing out the obvious solution to their self-inflicted problem was an insult to him personally. I could tell he wanted to hear some hair-brained technical solution (“I know we’ll write REACTANGULAR and it will normalize across all Angular versions”) that would rescue them from a disaster of their own making, without having to do hard work. He lead me down that path a little with some follow-up questions. The thing is, that’s precisely the kind of bullshit is never going to come out of my mouth. I wasn’t going to blow smoke up his ass just so that he can ignore the obvious solution. To me, when you’re doing something so fundamentally wrong, the best solution is to bite the bullet and do something fundamentally right to counteract it.

How they thought introducing an entire second library to the mix was a good idea is something that will forever confound me. They’ve already identified this as a problem and they’re willingly making it more complex. That’s insanity.

Suffice it to say, they didn’t like me for the role.

So many companies are obsessed with being on latest and greatest libraries and frameworks. If, like this company, you want to be a great engineering organization you should focus on doing great work. If you’re architecture is a patchwork monster it doesn’t matter if you’ve got the new and shiny. You’ve just got a new and shiny patchwork monster.