steve.fm

A work in progress

Perfect Crispy Sweet Potatoes

I made these home fries for my sister-in-law over the weekend and she asked me to type the recipe up for her — so I figured it’d be a good idea to share it with the rest of you. Super simple and flavorful. Cook them up and let me know what you think.

Ingredients

  • 1 sweet potato
  • 2 cloves garlic
  • 2 tbsp olive oil
  • 1 tsp salt
  • 1 sprig/pinch of thyme
  • black pepper

Instructions

  1. Peel the sweet potato and dice it into 1/2” pieces.
  2. Smash the garlic cloves with your knife and remove the skin
  3. Heat the olive oil in a medium frying pan over medium high heat until it shimmers.
  4. Add the diced sweet potato and smashed garlic to the pan, stirring to coat in oil.
  5. Add salt and continue stirring every few minutes.
  6. Once the sweet potatoes start getting crispy on most sides, add the thyme and cook for an additional minute.
  7. Transfer to a plate lined with a paper towel and add additional salt/pepper to taste.
Read more about Cooking / / /

You Host a Podcast?

Yessir. New episodes are typically released on Tuesdays and you can listen on iTunes, Overcast, or wherever you get your Podcasts.

What’s it called?

Point by Point

Do you host it with anyone?

JP Camara — he’s a good friend, a programmer, and a lot funnier than I am.

There are quite a few episodes here, where should I start?

We think things really start heating up around Episode 4 — Garbage People Doing a Crappy Job… but you can start at the beginning if you’d prefer.

What’s it about?

Well… on the surface, we consider life’s questions and talk about things that interest us. When pressed, I really think it’s about something deeper — it has to do with the creative process, trying something even though you might be bad at it, learning how not to be afraid of failing out in the open, figuring out that practice doesn’t make perfect but it certainly makes you better, and that it’s rewarding to do something just because it’s fun.

Read more about Uncategorized /

Some Photos from Philadelphia, PA

We sat outside the Walnut Street Cafe and ate breakfast during our first morning in town. I snapped these photos from underneath the building.

Read more about Photography / /

Philadelphia, PA

Daring Fireball has been online for over 15 years now, and I think I’ve been reading the site for about 5 or 6. John Gruber, the site’s proprietor, writes and talks about a lot of things nowadays, from general topics in technology, to Apple Products, baseball, James Bond, and politics. It didn’t take long to pick up on his love for good booze, and he’d occasionally bring up a bar in Philadelphia called Hop Sing Laundromat — and more specifically, it’s owner, Lê.

The last time I visited Philadelphia was completely by chance. It was on a summer break from college when I was staying with my friend Chris in New Jersey for a week-or-so break from living back at home. We travelled downtown via the Walt Whitman bridge, and I swear I learned plenty of other historical details but I’ve forgotten them since. We got a hoagie, I experienced Urban Outfitters for the first time and bought a book on making cupcakes. After that, we met up with a friend of his, went for a hoagie, and drove back.

To be honest, I didn’t really take much away from that experience other than baking a hell of a lot of cupcakes the following school year — and that it might be fun to return to Philadelphia at some point.

Fast forward to graduating college, getting my first and second jobs out of school, discovering Daring Fireball, and reading countless articles about Hop Sing. It took three years since my discovery to finally make the trip with my wife and two of our friends.

There’s something about anticipation that can either enhance or spoil an experience. After getting in late, we quickly got dressed in clothing that would allow us entry — something nice, certainly no shorts, sneakers, flip flops, or hats — and grabbed enough cash for a few drinks each. We all piled into a Lyft and were quickly on our way. All I could think about was how awful it would be if we got to the gate and something went wrong… what if they wouldn’t let us in?

Lê met us at the door and asked us a few questions, snagged our IDs, informed us about the cash-only nature of the bar, that phones were prohibited at our table, and let us in. We got in. We. Got. In.

After all that, I’d say it was worth the trip. Anticipation definitely worked in our favor… but after all that stress, I realized I could do with a strong drink. Good thing I was in the right place.

Read more about Society & Culture / / / /

Today is Equal Pay Day

Lately, it seems like there is a day for everything, but Equal Pay Day is worth observing — and it’s a cause worth supporting.

Equal Pay Day was started by the National Committee on Pay Equity (NCPE) in 1996 to highlight the gap between men and women’s wages. Equal Pay Day is held every April to symbolize how far into the year women need to work to make what men did in the previous year, according to the NCPE. It is always on Tuesday to “represent how far into the next work week women must work to earn what men earned the previous week.” In other words, because women earn less on average, they must work longer for the same pay.

Absolutely bananas.

Read more about Society & Culture / /

The Food Lab: Real Texas Chile Con Carne

This past Christmas, my wife’s parents bought me The Food Lab by J. Kenji López-Alt. It’s definitely one of the best cookbooks I’ve ever owned. Kenji sets up a great foundation for every topic, and encourages experimentation to achieve better results.

The first full recipe I attempted was the Real Texas Chile Con Carne. Using whole dried chiles for the base made for an impossibly rich and smokey flavor. I shared it with friends this past February and can’t wait to make it again. From the recipe:

Real Texas chile con carne is made with beef, chilies, and not a whole lot else. This is the real deal. A bowl of hot Texas red with chunky, fall-apart tender beef chuck and fresh dried chilies.

Why this recipe works:

  • Using a blend of whole dried chilies delivers maximum flavor to the stew.
  • We sear whole chunks of beef chuck before cutting them into chunks. This ensures that the beef sears instead of steams, delivering better browning and more flavor in a minimal amount of time.

Note: This makes for a moderately hot to hot chili. You can vary the heat by adding or removing the hot chilies and the canned chipotles.

Read more about Cooking / / /

Re: Design

Redesigning things is one of my favorite things to do. While that can come at the expense of other creative pursuits, it can also have a positive effect – Blowing up and rebuilding designs enables me to do more. I hope this new format will be a step forward.

I want this site to be more than just a collection of posts about building the site. Instead of building a "meta-blog" about creating a blog, I'd want to create a site that lets me flexibly post things that cater to my interests.

In the future, I'm hoping to post more about photography, to share things I find, to post recipes I've been making, or to post updates to projects I'm working on. Caverly.co will continue to be my place to explore regular creative projects. The hope is that this site will be a home for writing, photographs, and sharing.

Defining the Problems

As I mentioned earlier, much of my motivation for changing a design hinges whether or not that design is working for me. This could be expressed in myriad ways, but it typically boils down to two things: first, a lack of features or functionality, and second, my desire to shake things up and try something new.

This time around, it was a bit of both. Recently, in my spare time at work, I've been working on tackling a few deficiencies with our WordPress deployment. It's not typically something that I get to do, so I was excited to get my hands dirty and solve some problems. Once I cleared those out of the way, I realized I had whet my appetite to solve some of my own problems.

In order to tackle problems, I find that it's helpful to define them. Primarily, I didn't think the format of the site lent itself to different types of content. Secondarily, I didn't like how unfinished things felt. I'm fine with having a site that looks like a rough draft for a little while, but the last time I tackled something was in September 2016. It was time for an upgrade to fix some of these issues.

Finding Inspiration

After I looked at the default WordPress templates, I started to think about the elements I would need for the type of site I was hoping to create. My favorite publications these days are newsletters like NextDraft, online and print magazines like The New Yorker, and mostly technology blogs like Daring Fireball. (I also spend far too much time on Pinterest and Instagram.)

In capturing the essence of my favorite sites, I wanted posts about the same topic to be more easily discoverable. I can read for hours by scrolling a feed of posts or clicking through to items that are truly related. WordPress has a great taxonomy for organizing content, so I decided to start there. I would continue with my long feed of posts, but create more meaningful links to related content. I would also build sections for popular posts, monthly archives, and popular categories to help generate more interest.

Now that I had figured out what components I wanted to include, i turned my attention to creating a visual design with more finish. Oftentimes, to overcome blank page syndrome, I'll look through photographs to find scenes or colors that inspire me and drop them right into an artboard. I used the above photo of the mountain from Unsplash and created this design. 2017 Redesign

Implementation

To be honest, there's probably a good amount of this design that I'll never implement – like that featured post section with the hero image; it's super snazzy, but having to click to "read more" isn't something I love making people do. If you're already here reading, I'm not going to stop you. There are probably parts I'll implement that aren't a part of this design as well – like pagination, and a footer that lets people know who made the site.

I spent the majority of my weekend coding the design into a new WordPress template. All-in-all, I'm happy with it. It's a great start.

Read more about Building Steve.fm / / / /

Issue with WordPress Plugins

One of the benefits of open-source software is that when things aren’t working as expected, you can fix it.

I noticed there was an issue with the accessibility of the site today when I tried to “tab” to the navigation menu. Whenever I hit the tab key, the focus would move to the first link on the page, not the navigation menu. Try as I might, I wasn’t able to access the menu via the keyboard even when I tabbed through the entire page.

When i looked at the site’s HTML, the answer became apparent very quickly: tabindex="-1". For posterity:

<li id="menu-item-1" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-1 active">
   <a title="Home" href="https://steve.fm/" tabindex="-1">Home</a>
</li>

Since I wasn’t generating the menu items myself, I could only assume it had to do with the plugin. I did some quick traversing of the files for a place where it said tabindex="-1" and I found it in the nav-menu-walker.php file in the plugin directory for My Bootstrap Menu.

//Menu Item with no children
else {
    $inner_atts_array['href'] = !empty($item->url) ? $item->url : '#';
    /*Review here*/
    $inner_atts_array['tabindex'] = "-1";
}

Apparently, they even had a comment to review the code… Who knows? Anyways, there was no reason to set the tabindex value there… being able to put it in focus doesn’t benefit us in any way.

Read more about Building Steve.fm

WordPress Pagination

Initially, I had hoped on working on getting the code blocks to render better, potentially with some inline formatting — but then I realized that my older posts were no longer showing up on the page. Guess I’ve written quite a bit!

As usual, the WordPress Codex has the information I need. Their page on pagination references the next_posts_link() and previous_posts_link() functions that should do the trick. I’ll add this right before the get_footer() function in my index.php file.

<div class="row">
    <div class="col-sm-9 col-md-7 col-sm-offset-2">
        <nav aria-label="pagination">
          <ul class="pager">
            <li class="previous"><?php previous_posts_link(); ?></li>
            <li class="next"><?php next_posts_link(); ?></li>
          </ul>
        </nav>
    </div>
</div>

Wrapping them in Bootstrap, they generate exactly the HTML I want. For now.

Read more about Building Steve.fm

Bootstrap Javascript Not Loading

Remember that functions.php file we worked on awhile ago? I actually made a pretty big mistake in it that caused Bootstrap’s javascript and JQuery to not load.

<?php 
    add_action('wp_enqueue_scripts', 'add_theme_styles');
    add_action('wp_enqueue_styles', 'add_theme_scripts');

    function add_theme_styles() {
        wp_enqueue_style('stevefm', get_stylesheet_directory_uri().'/stylesheets/stevefm.less');
   }

    function add_theme_scripts() {
        wp_enqueue_script('jquery.min', get_stylesheet_directory_uri().'/bower_components/jquery/dist/jquery.min.js');
        wp_enqueue_script('bootstrap.min', get_stylesheet_directory_uri().'/bower_components/bootstrap/dist/js/bootstrap.min.js');
   }
 ?>

Basically, I created a function called add_theme_styles() and another function called add_theme_scripts(). When adding them to the built-in WordPress actions, I had accidentally used the tag wp_enqueue_styles instead of wp_enqueue_scripts, which isn’t actually called by WordPress. This resulted in my scripts not loading.

Once I updated my code to fix the mistake, things worked fine… but it had me confused for quite awhile.

<?php 
    add_action('wp_enqueue_scripts', 'add_theme_styles');
    add_action('wp_enqueue_scripts', 'add_theme_scripts');

    function add_theme_styles() {
        wp_enqueue_style('stevefm', get_stylesheet_directory_uri().'/stylesheets/stevefm.less');
   }

    function add_theme_scripts() {
        wp_enqueue_script('jquery.min', get_stylesheet_directory_uri().'/bower_components/jquery/dist/jquery.min.js');
        wp_enqueue_script('bootstrap.min', get_stylesheet_directory_uri().'/bower_components/bootstrap/dist/js/bootstrap.min.js');
   }
 ?>
Read more about Building Steve.fm