Better Headers

April 21, 2021 at 2:02 pm

I upgrad­ed site secu­ri­ty and pri­va­cy today. The scan­ner at securityheaders.com was super help­ful and resource­ful. A few mali­cious edge cases are now closed up. Browsers and servers know to con­nect secure­ly instead of just try­ing to. Other sites won’t know you’re com­ing from this site when you click out­bound links. I have pre­emp­tive­ly opted out of Google’s Federated Learning of Cohorts (FLoC). I still need to man­age my Content Security Policy, but that takes some test­ing to make sure all exter­nal resources are account­ed for and noth­ing breaks. Go give your site a lit­tle check-up and make sure you’re mak­ing the web better.

Still Here for at Least Another Year

April 19, 2021 at 12:42 pm

I recent­ly re-upped my site host­ing for anoth­er year. *plug* Bluehost for the win. *end plug* That of course had me think­ing about impact and lega­cy. These ram­blings only con­tin­ue to exist because I put in vary­ing degrees of effort and money each year. Blogs (like life) are not a set-and-done thing but a con­stant, con­tin­u­ous, tending-to that must be fed to stay sur­vive. Having dead blogs lit­ter my RSS library, I know the ten­den­cy to entropy is always lurk­ing. URLs and site struc­tures some­times change; a tech­nol­o­gy stack might be upgrad­ed and feed func­tions don’t make the cut. Link rot is real and sur­pris­ing­ly fast.

My first post — in all its infan­tile ick — is still here. The feed has con­tin­ued to work for ten years even through hia­tus. Those are some minor accom­plish­ments that I’m going to be proud of today. It’s not much and it does­n’t have to be. We should be cel­e­brat­ing the zero vic­to­ries when all we do is stave off the heat death of decay. That’s more sus­tain­able than over­pro­duc­ing for the sim­ple sake of con­sump­tion. Now, time to tend some weeds both in my dig­i­tal and phys­i­cal garden.

One More for the Pile

December 3, 2020 at 2:45 pm

Today marks the offi­cial announce­ment that the com­pa­ny I cur­rent­ly work for is per­ma­nent­ly clos­ing. I did­n’t say ‘at’ because I’ve been work­ing remote from home since March anyway.

We made it fur­ther than most dur­ing this pan­dem­ic, but it’s still anoth­er name to add to the list. One more small busi­ness closed. Five fam­i­lies find­ing new paths. Thousands of cus­tomers pick­ing a new brand to buy. That last line should be read with a hint of sar­casm and a dose of crit­i­cism with a cap­i­tal­ist C.

I’ve still got a few pay­checks to col­lect before I join the other 20 mil­lion unem­ployed Americans or find some other way to make my liveli­hood. I cer­tain­ly feel for­tu­nate to have made it this far. I know oth­ers have been deal­ing with upheaval for most of 2020. The changes I’ve had to make in my life are hard to even clas­si­fy as incon­ve­niences. I’ve been lucky and privileged.

There’s still more stir­ring around, but I haven’t nailed down all the words. This might be all I have today. A sim­ple mark­er for where the trail changes direc­tion. A somber, grim, fore­bod­ing mark­er for the occa­sion — but hey, at least I cre­at­ed some­thing today!

Busy, busy, busy.

December 8, 2014 at 8:41 pm

You might have noticed the post­ing fre­quen­cy here at SpareType has dropped off a bit the last few weeks. Client work has picked up and hope­ful­ly I’ll be able to share some of that soon as items get com­plet­ed. In the mean­time, here’s a huge list of awe­some things from around the Internet that have been col­lect­ing dust in my brows­er tabs. Enjoy!

The State of Web Type — Do you need to know which OpenType fea­tures are sup­port­ed in which browsers? Then here is the Can I Use for typo­graph­ic features.

Do you know how many rules, selec­tors, and dec­la­ra­tions are in your CSS? Maybe you’re curi­ous how many col­ors or font fam­i­lies are hid­den in your style sheets? Plug in your URL or raw code to CSSStats and get the breakdown.

The folks at Tower are cel­e­brat­ing OS X Yosemite with An Illustrated History of Mac OS X. The illus­tra­tions are mar­velous. I think the Lion in the space­ship is my favorite, though Snow Leopard is close too.

Turn sta­t­ic mock­ups into trans­par­ent, float­ing guides with GluePrint.

Just want to code and not worry about web servers, data­bas­es, engines, or deploy­ment? Cactus is a free, sta­t­ic site gen­er­a­tor that com­piles Markdown, SASS, and Coffeescript out of the box. It also auto­mat­i­cal­ly refresh­es your brows­er when you save changes and can deploy to Amazon S3 to make your web­site public.

Flakes is a clean, open source design frame­work for build­ing inter­nal busi­ness appli­ca­tions — think sales lead man­age­ment and inven­to­ry track­ing screens. Just look at this form for enter­ing info.

Flakes Framework Screenshot of Form Entry Screen, Admin UI, CSS framework

How to Make a Performance Budget? What should you be mea­sur­ing, how should you mea­sure it, and what should your goal be in deliv­er­ing the best web­site performance.

DeviantArt has a new brand. I love the write­up about the process, but I’m not entire­ly sold on the logo yet.

Awesome home­page and all-around awe­some web­site by the folks at Underbelly. Really nice touch­es with the URL names.

Underbelly.is - Screenshot of creative agency homepage, blue washed desktop, full screen background

Tis the sea­son for cute, wintery-themed hol­i­day icons. Here’s an awe­some free set on Dribbble.

Speaking of the hol­i­days, here’s a Christmas present I would have liked as a child. Typeblocks — maple wood alpha­bet blocks.

Typeblocks - maple wood alphabet blocks, font blocks, laser cut

Finally, let’s wrap the post up with a lit­tle self-promotion. Society6 — which I have some art­work avail­able on — has some great hol­i­day dis­counts going on this week. Be sure to check out my store and pick out any last minute gifts you still need to get.

Analytics, or Is Anybody Reading This?

September 4, 2014 at 10:45 pm

Along with upgrad­ing to WordPress 4.0 today, the lat­est ver­sion of Yoast’s Google Analytics plu­g­in was released with sup­port for Universal track­ing. With every­thing updat­ed and squared away, I took a look at some of the num­bers and decid­ed to share. Click on any chart for a larg­er, eas­i­er to read version.

The Last Month Year over Year

My first snap­shot was a quick look at August 1st — 31st of 2014 and com­pare that to 2013. Over the last month, I’ve launched a redesign and been giv­ing my site more atten­tion as part of my move to free­lanc­ing and being my own boss. With 79% more peo­ple com­ing to my site, I feel great about the growth.

Google Analytics Numbers for August 2014 vs. 2013 - line chart, more users, more readers

But What Content Are They Reading?

Google Analytics - Top 10 Pages Visited for August 2014, table, pageviews, average time on page

Well, their not read­ing the new stuff. Darn. My most pop­u­lar con­tent for the month of August 2014 is older list-style posts that show­case type­faces. These image heavy posts rank well in Google Image search for a wide range of typo­graph­i­cal search terms. The home­page does make a strong show­ing at num­ber two; a free­bie rounds out the top ten. Next ques­tion, does August fit in with what peo­ple have been look­ing at on SpareType this year? The next table is top pages from January 1st, 2014 — August 31st, 2014.

Google Analytics Top 10 Pages for January - August 2014, unique pageviews

Yep, the trend con­tin­ues. The images are dri­ving a bulk of search traf­fic for sin­gle page views. Readers then bounce on out­bound links to where they can buy the fonts. It’s also good to see my free­bie resources in the top ten views for the year. Combined they’ve been down­loaded 491 times.

Year to Date

To fin­ish up this lit­tle peek at the num­bers, I decid­ed to look at January 1st, 2014 — August 31st, 2014 and com­pare it to that same time peri­od last year.

Google Analytics Chart - January 2014 to August 2014 Overview, Year to Date, Year over Year, pageviews, sessions, users, time on site

Again, improve­ment with more new users vis­it­ing the site. Pages per ses­sion and ses­sion dura­tion aren’t great though. It would be nice if peo­ple stuck around and checked the site out a bit. I guess that’s what every web­site owner would like though.

My take­away from glanc­ing at the num­bers is to keep mak­ing con­tent. I need to release more design resources. I need to keep pub­lish­ing posts and build­ing value. People are read­ing — or at least look­ing — at my web­site. I’m not shout­ing into empty space. That’s a good feeling.

What do you think?

Are these num­bers bad / good / meh? Am I read­ing them upside down or inter­pret­ing them wrong? Is there a met­ric you’re curi­ous about that I did­n’t cover? I’d love to hear from all 1479 users who stopped by SpareType last month.

The Redesign: Part Three

August 22, 2014 at 12:00 pm

The third and final post in the series about my recent redesign of Spare­Type is the fun one chock full of bits of code. With visu­als and process out of the way, it’s time to dig into the pieces that actu­al­ly make the site run. This isn’t going to be a com­pre­hen­sive break­down of every line of code but a look at my favorite pieces that do the most heavy lifting.

Typography

Font sizes and line-height are the per­fect can­di­dates for vari­ables in a CSS pre­proces­sor. I’m run­ning Sass because that’s the one I heard of first and it was easy enough to pick up the basics of imports and variables.

// =Variables for typography expressed in pixels
$title-text: 58;
$headline-text: 36;
$subhead-text: 28;
$primary-text: 22;
$secondary-text: 17;
$title-leading: 60;
$headline-leading: 44;
$primary-leading: 36;
$secondary-leading: 27;

So where did these num­bers come from? The Golden Ratio Typography Calculator, of course. This pro­vides a reli­able scale and hier­ar­chy while also address­ing read­abil­i­ty with an appro­pri­ate char­ac­ter per line count (CPL). While being respon­sive will cause that num­ber to fluc­tu­ate, I’ve designed for 65 CPL on desk­top sized screens which make up the bulk of my traf­fic. So what do we do with these num­bers? Say hello to the only mixin in my Sass so far.

// =Font size and line height mixin for pixels and rems
@mixin font-size($fontsize: $primary-text, $lineheight: $primary-leading) {
font-size: $fontsize + px;
font-size: ($fontsize / 16) + rem;
line-height: $lineheight + px ;
line-height: ($lineheight /16) + rem ;
}

This beau­ty allows you to pass it one of the vari­ables above then spit it out in pix­els for older browsers and rem units for newer browsers. The ‘16’ comes from the default type size in pix­els. This piece is awe­some because it does all the math in con­vert­ing pix­els to rem units. Hooray, for com­put­ers doing math. Now, the mixin in action.

body {
    @include font-size($primary-text,$primary-leading);
    color: $brand-color1;
    font-family: 'Source Sans Pro', sans-serif;
}
h1 {
    @include font-size($title-text,$title-leading);
}
h2 {
    @include font-size($headline-text,$headline-leading);
}

@include calls the mixin named font-size. The vari­ables for text size and line-height are includ­ed for that par­tic­u­lar ele­ment. Then we have some other CSS rules to start the over­all styling of the text with color and font-family. The color prop­er­ty also shows off anoth­er per­fect use of vari­ables for defin­ing color palettes to be reused through­out the code. Once com­piled from Sass to nor­mal CSS it looks like the following.

body {
font-size:22px;
font-size:1.375rem;
line-height:36px;
line-height:2.25rem;
color:#3c4d56;
font-family:'Source Sans Pro', sans-serif
}
h1 {
font-size:58px;
font-size:3.625rem;
line-height:60px;
line-height:3.75rem;
}
h2 {
font-size:36px;
font-size:2.25rem;
line-height:44px;
line-height:2.75rem;
}

Layout

My favorite piece of struc­ture for the site is the blog page with its tiles for each blog post. Amazingly, it’s a CSS only solu­tion. The secret is inline-block and column-count, which has plen­ty of brows­er sup­port when pre­fixed. Set the column-count and column-gap on a div that wraps the arti­cles. Then set the arti­cles to inline-block and 100% width.

.loop-content {
    margin: 184px 72px 18px;
    -moz-column-count: 1;
    -moz-column-gap: 72px;
    -webkit-column-count: 1;
    -webkit-column-gap: 72px;
    column-count: 1;
    column-gap: 72px;
}

.loop-content article {
    display: inline-block;
    margin-bottom: 72px;
    width: 100%;
    background-color: $brand-color4;
    border: 2px solid $brand-color1;
}

@media screen and (min-width: 850px) {
    .loop-content {
        -moz-column-count: 2;
        -webkit-column-count: 2;
        column-count: 2;
        max-width:800px;
    }
}

This tech­nique works great in a respon­sive design because you can update the column-count on wider dis­plays to spread out infor­ma­tion. You can adjust the width of the wrap­ping div and the col­umn widths inside will adjust accord­ing­ly. Again, hooray for leav­ing the math to the com­put­er and let­ting the brows­er cal­cu­late widths. I’ve also used this tech­nique in the foot­er for lay­ing out wid­gets there.

Multiple Thumbnails

The last piece of code I’d like to high­light is WordPress spe­cif­ic and actu­al­ly involves installing a plu­g­in. The Multiple Post Thumbnails plu­g­in allows you to reg­is­ter extra fea­tured images for your posts. It does take some cod­ing to get work­ing, but that flex­i­bil­i­ty allows for lots of tweak­ing to fit your design goals. All the code and instruc­tions for imple­ment­ing the plu­g­in can be found on this Github page. It dove­tails per­fect­ly into WordPress’s built-in media man­ag­er and cus­tom image sizes reg­is­tered through functions.php. Plus, there is no limit to how many fea­tured images you can add.

SpareType Multiple Thumbnails (Featured Images) for WordPress, plugin, screenshot

Those three pieces of code real­ly do 80% of the work around the site. They are pow­er­ful, under­stand­able, and adjustable which makes them amaz­ing tools for work­ing with the site’s design. As I makes tweaks and intro­duce new code, I’ll be high­light­ing the stand out pieces here on the blog so keep an eye out for those.

For now, that wraps up the redesign series about the site. If you real­ly want to fol­low along, I am doing all of this out in the open on Github. Plus, there’s always the RSS feed so you can catch all of my blog posts. Now, go code something.

The Redesign: Part Two

August 18, 2014 at 2:30 pm

Welcome to the sec­ond post about my recent redesign of SpareType. Part one cov­ered the visu­als, while this post will dive into how I changed my think­ing and process. I’ll share a few key code snip­pets pow­er­ing the new design in part three com­ing soon. For now, let’s talk about process.

Holy shit. I’ve been doing this all wrong.

Have you ever had that thought? It’s a tough real­iza­tion. I had that moment a few months ago. I was feel­ing like an old dog in my web design game. I knew of these things called Github, Grunt, and Sass but wasn’t tak­ing advan­tage of them. I hadn’t updat­ed my skills or my process. My mind­set also need­ed a reboot.

My first break­through moment was for­get­ting about a fin­ished prod­uct. Coming from the print side of graph­ic design, I was still hold­ing on to that idea of get­ting every­thing right before hit­ting the print but­ton. I kept par­a­lyz­ing myself with the list of things to do before I could release the redesign. But that’s not true for a web­site. If I don’t like the way com­ments show up today, I can update a file and they can look bet­ter tomor­row. A web­site can — and should be — in a con­stant state of improvement.

Make it more better.

The idea of con­stant improve­ment notched per­fect­ly with the idea of ver­sion con­trol. If I want to always be try­ing new things, I need a safe­ty net to CMD‑Z the things that don’t work out. I threw all my cod­ing pride out the win­dow and start­ed with the Git basics. “I’m smart enough to fig­ure it out,” had to take a seat while I dust­ed off the instruc­tion man­u­al and read the baby steps. I’m still not com­plete­ly using Git cor­rect­ly for branch­ing and merg­ing, but I have the con­fi­dence to break things in my code and undo them.

Github Screenshot of SpareType 2014 Project, version control, redesign

At the same time I was start­ing to crawl with Git, I was lucky to stum­ble across Codio. Before, I bounced around edit­ing code in Dreamweaver or the built-in theme edi­tor in Word­Press. Some­times I just used the file brows­er pro­vided by what­ever host­ing com­pany the project was on. I did­n’t have an inte­grat­ed devel­op­ment envi­ron­ment (IDE) and set­tling on one place to code and work has been a huge orga­niz­ing force in my process.

Codio is web based and fully inte­grat­ed with Git and Github. It’s lib­er­at­ing to no longer be shack­led to a local pro­gram or files. I’m just mov­ing stuff from one spot on the Internet to anoth­er. This also has the ben­e­fit of forc­ing me to learn the dark arts of com­mit, push, pull, and branch. Codio’s other inte­gra­tions with the soft­ware I was inter­est­ed in learn­ing — Sass and Grunt — made it eas­i­er to start learn­ing about them. Of course I screwed up at first — four­teen com­mits before Grunt was pro­duc­ing the right out­put. And it could still get better.

Codio Screenshot - Homepage, World's Most Powerful IDE, integrated development environment

The Biggest Game Changer

As cliché as it sounds, if you feel like you need to do some­thing, just do it. If you need to use [insert tool, pro­gram­ming lan­guage, new-fangled boon­dog­gle here], start using it. Screw it up, read more doc­u­men­ta­tion, copy some code, screw up again, get one tiny thing to work, screw up again, rinse, repeat. Along the way those tiny things that work start to stick and that’s called learning.

I’ve learned a lot the last few months both tech­ni­cal­ly in my code and in my approach to think­ing about what I do. It’s also made me appre­ci­ate oth­ers shar­ing their learn­ing on the Internet. Hopefully, I can con­tribute a small piece and inspire oth­ers to make things more bet­ter. I leave you with a few of the key arti­cles that helped teach me the last few months and bring about my process changes.

Site Performance Starting Point

August 15, 2014 at 11:00 am

With the redesign this week, I’m shift­ing to a more con­tin­u­ous devel­op­ment process. Tweak, break, fix, rinse, repeat. Before things set­tled too much I want­ed to get a per­for­mance base­line of the new theme in action. You have to have a start­ing point in order to judge improve­ment — so here are the numbers.

Size
in KB
Requests Empty cache
in seconds
Primed cache
in seconds
Cached Size
in KB
Home Page 30.1 10 2.95 2.82 24.6
Blog 210.1 12 4.16 2.69 202.6
Post 1 286.1 23 5.12 3.59 280.4
Post 2 220.9 16 2.79 2.99 220.9

 

Methodology

All num­bers come from Firebug 2.0.3 run­ning on Firefox 31. Times above are the aver­age of three tests for each scenario.

Takeaways

Already on the to-do list is to imple­ment a build process with Grunt. That will take care of low­er­ing the request num­bers once the mul­ti­ple JS and CSS files are com­bined. It should also trim a few kilo­bytes once it ugli­fies everything.

Second, and more impor­tant, is upgrad­ing host­ing. The shared host­ing on Bluehost is great. I’ve never had any prob­lems, tons of fea­tures, and things work won­der­ful for the price. Now that I’m get­ting seri­ous and look­ing at the num­bers, per­for­mance is where you take the hit. Waiting for a response from the serv­er var­ied wild­ly with the quick­est response tak­ing 837 mil­lisec­onds and aver­ag­ing 2.69 seconds.

Not a bad start­ing point but it will def­i­nite­ly get better.