I Am Finley


Truth matters. Words matter.


Truth matters. Words matter. Without meaning, words are pointless.

When you hear “school shooting”, yesterday is what comes to mind. And yesterday was terrible. Seventeen dead. And it took just minutes for the media to start talking about ways to prevent this, both sides having their piece, their take. Before the bodies are even buried, before most parents even knew their kid was one of the dead ones, we are calling half the country evil for supporting gun rights.

The statistic being quoted by many last night and this morning is that in 2018, a year that we are only some forty days into, has seen eighteen school shootings, referring to the reporting from a group called Everytown for Gun Safety. That is truly an appalling number. 18 school shootings. When you hear “school shooting”, yesterday is what comes to mind. And yesterday was terrible. Seventeen dead. But yesterday is not what Everytown is calling a school shooting. They are counting all shootings at schools or involving schools. Truth matters. Words matter. Without meaning, words are pointless.

So what does this reporting from Everytown mean? Eight of those eighteen resulted in no injuries or fatalities. Two were suicides, one in the parking lot and one in the bathroom at a school. One was a gun fired unintentionally, no one hurt. Of these eighteen incidents, three people were killed— not including the two suicides— and roughly 30-35 were injured, according to The Daily Wire.

We all wish that yesterday was one bad day out of a million good days. We all wish we had a billboard that counted the days from the last school shooting and it had been at 30 years. But when “we include suicides, accidental discharges, purposeful shootings without injuries, and purposeful shootings without only ‘superficial’ wounds” as school shootings on par with what happened yesterday our words lose meaning. We become numb. Yesterday was just another school shooting. That was the new normal. But it isn’t. It isn’t the new normal.

Truth matters. Words matter. I hope that you agree.


In the Shithouse


As Republicans defend President Trump's language once more, I stand over here as a conservative without a party. These fake, ambulance-chasing Republicans are trying to defend a sitting president using language we wouldn't want our children repeating. I said after the election that I couldn't vote for President Trump because "I couldn't explain that to my daughter". I can't agree with them. This language is inappropriate for a world leader to be using to describe our allies.

But the Left wants this— too— to be about racism. It has to be about one of their -isms or -phobias. It always has to be. Why? Is it because victim identity is the new sacred? Had he called Norway, a predominantly white nation, a shithole, would so many Leftists be offended? Would they think he's talking about race?

I don't agree that this is about race. No, I think this is a case of a man that lacks control of his tongue. He described a poor, third-world nation as a shithole. He described a nation, not the people. Yes, there are, to quote a tweet, brown-skinned people living there. But it's a nation that you see no one aside from missionaries choosing to spend their vacation days on.

So you might read the above and think I agree with the term as an adequate word to describe these nations, if one is not the President of the United States. And you might be right. But my church sends a lot of money to these nations, bringing food, water, and the Gospel of the Living God to these people. My God redeems prostitutes, dines with tax collectors, and makes the poor rich. The shitholes are just as much His as are the bastions of freedom and wealth.

In my opinion, is not our government's job to raise these people out of poverty, clothe them, feed them, and give them water. But, Christian, it is yours.


Paid the Price


A young man was talking to me at church on Sunday about sports. He was bewildered that people pay to watch football when all the outcomes are planned ahead of time.

This got me thinking. Our Lord knows the outcome of every play in our life. Every misstep, every mistake, every error, every foul. Every success, every friendship made, every life saved, and every victory until time ends.

Yet, He paid the price so that we can play.


What Are You Doing to Stay Away from Echo Chambers?


If you’re a conservative in tech, it is next to impossible to live in an echo chamber.

Over the last week, my Twitter timeline exploded with rage over the two big GOP topics of the week: net neutrality and the big tax bill. If I was to believe my timeline, these two items were doomsday-grade events. There was no way that a human could stand by this massive tax bill or against net neutrality. Not a single dissenting voice.

Sometimes this is a real sign that something is truly important and should be stood for or against. Sometimes this is a sign of a lack of diversity in thought or ideology in your news feed.

Seeing all these voices — voices that I greatly respect — freaking out over the tax bill, I started to wonder if the GOP had truly jumped the shark. So I went to a few major news sources and a few minor ones. I sought answers and tried to understand the facts from my worldview. And found myself agreeing with the majority of the included items, while also understanding how others would see these as bad.

Echo chambers exist when we surround ourselves with a homogeneous group of voices. As a conservative, it is next to impossible to live in an echo chamber. If you want to follow anyone in tech that matters, you’re going to hear opposing views on political matters.

What are you doing to stay away from echo chambers?


Best Viewed in Chrome: Web Standards in 2017 #bbd17


This year we saw Groupon, Spotify, and DirecTV decide to only support Google Chrome. For the web standards crowd, that should enough of a rallying cry for the cause. But how did we get here? Does anyone give a shit anymore?

Last year, Jeffery Zeldman wrote:

Many web developers have “moved on” from a progressive-enhancement-focused practice that designs web content and web experiences in such a way as to ensure that they are available to all people, regardless of personal ability or the browser or device they use.

And this is the foundation for what has happened. Many web developers have moved on from Progressive Enhancement. Supporting multiple browsers is much easier with Progressive Enhancement. You rely on the error recovery that HTML and CSS provides. You build on that. Layout your page for your Lowest Common Denominator. Mobile. Then, if CSS Grid is available, enhance the layout. Provide a zip-code-based location lookup tool. Then, if the Geolocation API is available, add a button to use your location.

This was one of many big pushes of the Web Standards movement. Before the Web Standards movement, "Best viewed in Internet Explorer" was a common badge. Developers would choose to only support and test for one browser and, often, block anyone coming from different browsers. As I wrote in June, I remember when I first got my Mac in 2004, many sites blocked me altogether. IE 6 didn't exist for Mac and many sites required it.

So what? “What’s so bad about only supporting Chrome?”, you may ask. It represents over 75% of web traffic, right? So did Internet Explorer back in the day. That would be the same argument many used at that time. Back in that day, there were major feature differences between IE and Firefox/Netscape. Because standards didn’t exist, Internet Explorer and its competitors invented new features. Lots of new features. The features that were the same were often implemented differently. So supporting multiple browsers required lots of effort depending on what you needed. IT departments would prevent employees from installing other browsers and then build internal applications to run on IE only. But IE wasn’t available everywhere. My Mac couldn’t access my bank’s website in 2004 unless I set it to spoof the IE user agent. So the features that the bank needed were supported in Safari, but they had a block for browsers other than IE. If I didn’t know how to change my user agent, I’d have been blocked by something as important as accessing my bank.

Today, Edge, Firefox, Chrome, and Safari are relatively the same. Build something for Safari and it will mostly just work in Firefox. I built a project this Fall that took two months worth of work to build and only a couple hours to fix a few minor things in Firefox and IE/Edge. No big deal. But if I want to access the desktop site for Spotify on my 13" iPad Pro, they block it. I cannot install Chrome. Or Firefox. On iOS, my only option is Safari.

Support any user, no matter what browser they have. That is the job of a web developer. A user running IE 6 should be able to still view your website built in 2017. It may not have all the bells and whistles, but it should work. Because the web browser has great error recovery. A user that has JavaScript turned off and a screen reader reading the content of your site to them should be able to access your site. Unless you can make an argument that a feature is an absolute must, you should be progressively adding it.

So we are coming full circle. Overuse of JavaScript. Using JavaScript to build static, undynamic, barely-interactive websites. Supporting only certain browsers for no technical reason. Best viewed in Chrome.

We— those that believe in Web Standards, those that fought in the first battles and pushed our fellow developers to learn more and produce more inclusive, accessible, cross-platform websites— we need to stand once again for Web Standards. We need to make it clear what the best practices are and fight against the bad practices where we work. There are no excuses in 2017. Web development has gotten easier. Forking code for multiple browsers is significantly less necessary today. Changes are, usually at best, a few hours of work for big projects. No excuses.


Experiments in CSS Grid #bbd17


Two years ago when Web Tools was released, CSS Grid was not supported in its current form by any browser. Now it is supported by all of them. But, in my opinion, unlike most features of CSS that have come before, Grid needs some good tooling around it to help ease work with it in development. So I have started to work on some tools to help with Grid and along the way, I have been dabbling a lot with Grid.

Below is a basic experiment: reproduce the layout of the new App Store on iOS. Along the way, I also found good use for CSS Custom Properties — Variables. I hate that they aren’t called variables. — in setting the background of articles, the background and text color of the text block on each, and more.

CSS is getting more and more powerful. But, along the way, it is getting more and more simple. Where old layout techniques (tables, floats, flex box) were truly ill-suited for layout, CSS Grid is 100% made for layout. So go, dabble with Grid. Grab a comic book and reproduce the layout. Or a poster from the 70’s. Learn the ins-and-outs of it because this is the future of where front-end web development and web design is.


Great Thanksgiving Weekend


I needed the break. Our second child is scheduled to be delivered on December 18th. Of course, that means a ton of prep over the last couple months, including much-needed cleaning, a lot of furniture building, and rearranging everything. And then there is Christmas. Which I kind of love more than any other holiday.

So with an extended weekend because of Thanksgiving, we got a lot done in the Finley Home. Mostly during (well-fought) naps of our daughter Lottie. But I also got some good development time in to work on a couple of projects. I pushed two of the first updates Web Tools has seen in almost a year. For an app that I barely touch, it is still pulling about $200 a month in sales.

I also built a dresser, cycled 30 miles, got our live Christmas tree (see above), and ate a fair amount while attempting not to gain any — regret-inducing — weight. I'm down 25 pounds since the start of Summer and would prefer to keep it that way.

So: great weekend. Relaxation, code, family, and food. I give thanks to God for all of that. My wife is amazing, my daughter is a dream that I enjoy daily, and we have so many blessings in our life that I cannot begin to list.




I’m opinionated. If you’ve worked with me or hung out with me for any period of time, you know this. I’ve been building for the web since 2001, before JavaScript libraries, before CSS, before Web Standards. That is a lot of years of experience and with it, one learns a few things. The Standards movement was a major thing just as I was getting started freelancing. jQuery was just coming about as I entered and assisted in teaching a JavaScript class in college. Responsive Web Design was coined and defined as I started my first role at an agency in Chicago.

One learns a few things.

Of the last few years, I have pushed hard against using jQuery. Simply put, most browsers have solid support for new technologies that emulate many of the great features of jQuery. Those native features do it faster, better, and require less code. Remove jQuery and you remove 30+kb of resource load.

I have pushed against Bootstrap. It is a large beast of a library when most sites that include it use it for a grid system and not much else. A grid system can be written in less than 100 lines of CSS that’ll achieve the needs of your site specifically, so why include 200+kb of resources?

I have pushed against WordPress. It’s not good for the developer and offers a not-great experience for the client. There are better CMSs.

So this Summer and Fall, I decided to dabble.

I hadn’t built a website on WordPress in many years. The last one I built was before ACF took off. So I built a client a site in WP and I didn’t hate it. Much of what I have said against WP remains true. Especially after launching a large site on Craft earlier this year. But, for what it does well, it does well. Build a couple of custom plugins was a breeze. ACF made storing complex data from two third-party sources easy and displaying it easier.

I have never used Bootstrap but always maintained that it is best suited for prototyping and administration panels. So as I started building an admin panel for a current project, I decided to try Bootstrap. And I didn’t hate it. There are parts that I won’t touch. The grid system is actually one of them. The spacing utility classes, while useful if you are not writing a lick of CSS, are another. But, the component structure isn’t far from something like Atomic CSS and is actually a welcome thing for the needs of the project. Unfortunately, it requires that the page resources weigh over 300kb, which means I will likely scrap Bootstrap in a few weeks and rewrite with my own CSS.

We must, as developers, not become set in our ways and get dogmatic about certain things. There are things that we should be more opinionated about than others. I wasn’t necessarily wrong with either WordPress or Bootstrap. But, now that I have worked more with each, I can see the lure of them when it comes to getting something done quick and dirty. Atop that, I now have a more solid argument against some points of them.

So if you haven’t dabbled with something in a while or at all, maybe try. You may learn a few things.


Is iPad the Computer for You?


There’s no such thing as a laptop replacement, and if there were, the iPad isn’t meant to be one.

Matt Gemmell

Golly, I’ve been thinking the same thing since WWDC. As all the reviews of the new iPads and of iOS 11 have been hitting, the age-old— well, seven year old question has been iterated again and again. Is this the iPad that finally kills the laptop?

Seldom does the writer acknowledge that they mean “is this the iPad that finally kills my laptop?” It’s a very personal question. Apple sells many different computers.

For many, the iPhone is the only computer they need. They scroll through Facebook, reading articles and liking photos. They message their friends. They respond to the occasional email. They watch Hulu and Netflix. My wife is usually in this camp. Perfectly comfortable to never grab a bigger screen.

For others, very powerful, customizable computers are required. Video editing, graphic design, photo editing, and more. They can do everything and more on their MacBook or iMac.

And then there are those that are happy with their iPhone, but sometimes or even often need a larger display. They may use a word processor. They may communicate much more and desire a bigger software keyboard. They may even prefer a Bluetooth keyboard. They may build websites. Or design websites. Or edit photos and video.

Consumers pick the computers that suit their needs. You may find that you can do everything you need on an iPhone. You may want a bigger screen, but more portability than a laptop. Or you may need much more power for your day-to-day tasks.

For me, I haven’t touched my Mac in over a week. I haven’t needed to. I’ve found Web Tools, Coda, and a Droplet to be all I need to get my job done. Most of that time, it has been a 12.9" iPad Pro that has done the job, with an iPhone stepping in occasionally to handle an email or text message.

Is the iPad the computer for you? You won’t know unless you try.


DirecTV Will Only Support Internet Explorer Come July


DirecTV has announced that they will only support Internet Explorer starting in July. Sorry, my bad. They will only support Chrome. Still, just as bad a move.

I remember when I got my first Mac back in 2004. Many sites still only supported Internet Explorer 6. And IE6 didn’t exist on Mac. Only IE5 did. Off the top of my head, the biggest two sites that I frequented that did this were my bank and Old Navy. Yes, Old Navy, an ecommerce site, in 2004 only supported IE6. No reason for it, as they didn’t use much DHTML— the hip term for JavaScript at the time— and certainly had no features that would require a specific browser, but that was the way things were done in the early 2000’s. You picked one or two browsers to support and that was it.

When jQuery first came out in 2006, it was built around browser-detection based forking. If IE, do things this way; if Firefox, do things this way. It wasn’t long before they abandoned that and went to feature-detection. If the browser supported this feature, do things this way; otherwise, do things this way.

When iPhones first hit, the popular thing was to look for a user-agent string that included iPhone. If present, deliver an iPhone experience. Then responsive web design hit in 2010 and we started targeting screen dimensions.

This was the push for the longest time. Get away from detecting browsers and specific devices. Look instead at what the browser and device are capable of, and progressively enhance the UX from there. Build for the lowest common denominator.

But now, so many sites are built to require JavaScript. React, Angular, Vue, and other JavaScript frameworks have taken over front-end development. We are including so much JavaScript on our sites that we need task management scripts and package managers to keep everything straight. Our engineering has gotten more complex than ever necessary.

And, to make matters worse, we are starting to see developers getting back to supporting specific browsers. When your front-end uses very specific, new technologies, that is the choice a developer has to make. Either a) don’t use it, as the support isn’t great yet; b) use progressive enhancement and provide a feature when available; c) find a polyfill to provide support to the greatest number of users. There should be no d) only support Chrome.

If you don’t learn your history, you are damned to repeat it.