Five-Figure WordPress Resources

Posted: March 30, 2017, filed under: Links, Tutorials+Tips

Of all the talks I've given, the "The Five-Figure WordPress Website" is my favorite. It's a thorough look at the process I use to make WordPress websites in my freelance practice, and I'm really happy to share the process it's taken me many years to fine tune. With that in mind, here are a bunch of resources that I've found particularly helpful over the years and hopefully you will too!


Squarespace vs. WordPress vs. Whatever: My Final Answer

Posted: March 30, 2017, filed under: Tutorials+Tips

If I had a nickel for every time I heard this question:

"I want to make a website, but I know nothing about websites. Should I use Squarespace or WordPress? Something else?"

In reality I'd have less than a dollar, but I hear it enough that it's time to write a serious post answering the question. Here's the quick version:

Your website is primarily photo and image content: Squarespace.

You have mostly text/blog content and limited time/money:

Read More →

Back in business!
An update from sunny LA.

Posted: March 17, 2017, filed under: Updates

It turns out LA isn’t always sunny, but there are definitely palm trees.

While my few month ski-bum sabbatical was enjoyable and revitalizing, I now realize that mountains, fresh air, and care-free living are totally overrated. Err…what I’m trying to say is I took my break and am ready to get back to business (and away from frustrating Utah liquor laws)!

I moved to LA. Yes, that’s true.

I write from my new home in sunny Los Angeles, West Hollywood to be exact. New York City treated me well the past few years, but the time has come for tamales, sunshine, and something a little different. Plus I get to be with some of my very favorite people and a little dog named Zoe.

I’m looking for work! Here’s how I get work.

When people ask me “How do you get work?” my response is:

I tell people I’m looking for work. Then, while I wait for referrals, I do a bunch of stuff for free. That includes talking at meetups, doing free workshops, and writing blog posts. Finally, I cross my fingers and have faith that it will come when I need it. It’s a very exact science, let me tell you.

So far that’s worked out just fine, and now is the ultimate test! I’m starting from scratch here on the west coast. Let’s see if my own advice applies. If you or anyone you know is looking for part-time or project-based WordPress and front-end work or private tutoring help with a project, send them my way.

Can I help you with anything? Get in touch.

Ski bum sabbatical

Posted: December 7, 2016, filed under: Updates

I currently write from my new home at Goldminer’s Daughter Lodge in Alta, UT. I’ve made quite the transition from life in New York City. After a few months back at home in Pittsburgh, I have migrated to Utah for a ski bum sabbatical at Alta, a ski resort outside of Salt Lake City. I’ll be working as a bartender at Goldminer’s and fulfilling my bucket list item of skiing 100+ days in a season (today will be number 1!).

I had planned to write a long, heartfelt post about burnout and working too hard and how I’m totally over New York, but instead I will simply bid my web presence adieu for the time being and head for the slopes. Actually, it is currently 2°F, so I will take my time getting out there…

Oh yeah, during this time all Tackle Box classes are $10 each! So, for the cost of a decent sandwich you can learn web development. Check them out here.

How to render a code block of Haml in Haml

Posted: April 28, 2016, filed under: Tutorials+Tips

I’m currently working on a style guide for a Rails app (fun!). The documentation is built as a baby Rails app of it’s own, thus in Haml, an HTML pre-processor (think Sass, but for HTML). Like any style guide worth it’s salt, I wanted to have a block of the markup for each element alongside a representation of the element itself (example). That way, a person could grab that block of code to use that element.

The problem of syntax highlighting is easily solved with the amazing Prism JS library, but it took me forever to figure out how to not render the Haml inside the Haml <pre> and <code> tags. The answer is a filter called :preserve. Other than this blog post by the wise Chris Eppstein, I have found 90% of Haml documentation incredibly cryptic, at least by my standards which, granted, as a front-end and WordPress developer may be quite high.

That being said…

In the hopes of saving someone somewhere a bit of time and headache, here, officially, is how to render a code block of Haml in Haml:


See the Pen A Code Block of Haml in Haml by Lara Schenck (@laras126) on CodePen.

Why don’t code schools teach WordPress?

Posted: April 7, 2016, filed under: Thoughts

In the coding classes I’ve taught (which, for the record, have been part-time, not bootcamps) students’ intentions are often to make their own websites, work on existing ones, or to incorporate web development into a freelance practice. Regarding bootcamps, I’ve met several graduates who began their careers with freelancing, where a lack of WordPress competence quickly becomes an issue.

Freelance WordPress projects are a fantastic way for novice developers to gain the problem-solving skills and portfolio they need to transition into a full-time tech job, yet ‐ to my knowledge ‐ proper attention to WordPress is rarely allocated more than a day in coding courses, if that.

There’s no doubt that knowledge of JavaScript, frameworks, and the like is valuable in a product-focused tech industry, and that WordPress is not a particularly “cool” technology. But WordPress also powers at least 25% of the web, and it is undeniably a skill set in high demand with a relatively low barrier to entry.

Am I missing something? Why don’t more code schools take this into account?

Year in Review

Posted: January 25, 2016, filed under: Thoughts

I genuinely enjoy reading other people's updates, and it was depressing when my 2015 Facebook "Year in Review" was, like, three posts, two of them Instagram repeats. What happened to original content and life updates? This isn't Facebook, but there is no better place for life updates than your very own blog. Plus it's healthy to intersperse the tech-y posts with personal ones.

Read More →

The Twig for Timber Cheatsheet

Posted: October 16, 2015, filed under: Tutorials+Tips, WordPress

Timber is a library for WordPress that allows you to work with object oriented templates using the Twig templating engine. I've written about it before, and have used it on just about every project I've done in the last year and a half. I'm even teaching a class on it!

Anyhow, although Timber ultimately simplifies templating in WordPress, there's a bit of a barrier to entry. If you haven't worked in a templating language before, it takes some time to get a handle on what's possible. The following are some introductory Twig concepts and snippets I've found particularly useful when working with Timber and Advanced Custom Fields.


Let's say you have an ACF option for the display of the header that is either an image or text. You could check like this:

<header class="single-header">
    {% if post.header_display == 'Image' %}
        {# Markup for header image #}
    {% else %}
        {# Markup for plain text header #}
    {% endif %}

Shorthand Conditional

That's all well and good, but what if you want to put a class on the <header> tag that indicated the display choice? It's pretty gross looking to do it this way:

<header class="single-header {% if post.header_display == 'Image' %}header-image{% else %}header-text{% endif %}">

Luckily, we can use shorthand conditionals!

<header class="single-header {{ post.header_display == 'Image' ? 'header-image' : 'header-text' }}">

Read More →

@include upperspace;

Posted: August 27, 2015, filed under: Tutorials+Tips

I’ve made a few websites over the past year or so, and I finally feel like I’ve nailed down the process. Of course there’s a lot more to it, but potentially the most useful, simple, and adorably named part has been a typography mixin I call upperspace:

@mixin upperspace {
    letter-spacing: 1px;
    text-transform: uppercase;

I’ve been jamming on a class called .meta lately as well, and they work together nicely:

$size-base: 1.1rem;
$size-sml: $size-base*0.8;

$color-text-meta: #999;

.meta {
    color: $color-text-meta;
    font-size: $size-sml;  

.meta--upper {
    @extends meta;
    @include upperspace;

I’ve been a little anti-extends lately, but after reading Una Kravet’s post on Atomic OOBEMITSCSS (nice), I’ve opened up to them again.

Anyhow, just a simple Sassy snippet for your viewing pleasure.

Pricing and Economic Relativity

Posted: July 9, 2015, filed under: Ideas, Research

I'm usually not one for non-fiction, but the times have changed. I'm currently reading Predictably Irrational: The Hidden Forces that Shape Our Decisions by a cool dude named Dan Ariely. In short, we humans are constantly influenced by "hidden forces" that cause us to make decisions that don't always make logical sense. Can't say I'm surprised.

I'm only about a third of the way into the book but the content is super applicable, particularly if you deal at all with pricing. I'm so excited about it, in fact, that I've regressed to college student mode and wrote a nice, summary/commentary of a few points for your reading pleasure. First up:

The Decoy Effect

I like this one. Here's a chart:

Credit to the book for this, and to me for recreating it.

Imagine you are choosing to go on a romantic vacation to either Paris or Rome (something I am not doing, unfortunately). They are both very romantic locations with delicious food and drink, and it would be hard to choose between the two. Say you have three options for hotels:

  1. Rome, breakfast included (A)
  2. Rome, no breakfast (A-)
  3. Paris, breakfast included (B)

There should still be no difference between Paris and Rome but because of how we respond to relativity, the Rome without the breakfast package makes the Rome with a breakfast package more attractive, and Paris is cast aside. This is completely irrational; the decision between Rome and Paris should still be as challenging.

The lesser Rome is the "decoy", or the A- option, and exists to make A look better. But then there's B (Paris) or the "comparison" option. It may be of the same quality as A, but has slightly different characteristics. The relativity of A to A- makes A the most attractive option. If B had a decoy, or a B-, a similar effect would take place.

Read More →

It’s identity crisis, not impostor syndrome

Posted: July 1, 2015, filed under: Thoughts

Let’s be done with impostor syndrome.

I think we've gotten to a point where non-impostors, myself included, are using impostor syndrome as a way to describe ever-human insecurity. It's not productive anymore, and belittles the experience of those who really are dealing with it.

If I was a fake, I wouldn't be able to make websites. But I do make websites, and I'm paid to make them and teach people to make them. That's not to say I don't feel like a fake every five minutes, but a lot of cooler and smarter people than me have admitted to feeling the same.

I think there's another word for what we web people are calling impostor syndrome: identity crisis.

The web is in its awkward twenties.

And so are many, many of the people working on it. Fortunately or unfortunately, with your twenties comes the inevitable, quarter-life identity crisis. I'm living it, and it's not that fun.

Read More →

WP Super Cache and Browser Caching

Posted: June 21, 2015, filed under: Tutorials+Tips, WordPress

I've been jamming on WP Super Cache these days. As great as Super Cache is (and it is great), however, you will consistently be failing in YSlow's "Expires Headers", Web Page Test's "Cache Static Content", and Google Page Speed Insights' "Leverage Browser Caching". Shouldn't a plugin with name "Super Cache" take care of all things caching? Not necessarily.


"Supercaching" vs. Browser Caching

Super Cache stores copies of your posts and pages in static HTML in wp-content/cache/. These are then loaded instead of querying the database and processing a PHP file every time. So, when you update a post and don't see the changes reflected immediately, that's because the cached, static HTML file hasn't been updated. You then delete the cache to make sure the new content is reflected when its rebuilt. That's "Supercaching".

There's another thing called browser caching that's also pretty cool but not accounted for in WP Super Cache. Browser caching means saying, "Hey, browser, remember what this file is until I tell you to forget it". For example, when you cache your stylesheet, the browser won't need to load it again when you go to another page that uses the same stylesheet because it remembers it from last time.

This is where CDNs (Content Delivery Networks) can be awesome, too - if many sites use and cache jQuery from a CDN (which they do), linking your site to jQuery on that CDN means the browser likely will already have it memorized i.e. cached.

Read More →

Sassy WordPress and some updates

Posted: May 31, 2015, filed under: Updates, WordPress

I gave a talk at WordCamp Montreal last fall called "Sassy WordPress":

I'd explain a few things differently now (which I will be June 16th at the NYC WordPress Meetup, actually). Everything goes from "do this" to "don't do this" pretty quickly, and you learn a lot in six months. Anyhow, here are some updates and an opinionated take on the word "module".

Read More →

Let’s try “Full-Stack Designer” instead of unicorn

Posted: May 18, 2015, filed under: Thoughts

At An Event Apart last week, one speaker asked, “How many of you refer to yourselves as designers? … Developers? … Or maybe you design and develop…so…unicorn?”. The latter had the most hands, along with a few modest chuckles.

Let’s take a step back here. Because there is no better way to describe our set of skills, we have a roomful of people (myself included) identifying with a mythical beast that does not exist.

In early 2012, Sacha Greif wrote about unicorns. He described them as:

… a designer who can come up with your identity, design your site, create UIs with great user experience for your web and mobile apps, and on top of that code his or her work in HTML/CSS (and why not throw JavaScript in the mix!).

This skill set is not so uncommon anymore. Sure, in all likelihood these individuals are happily employed or working for themselves, but they certainly exist, and the “unicorn” metaphor no longer applies (and arguably didn't before, I think bluefin tuna is more accurate).

Read More →