Time Off Leads to Better Work, Duh

Shawn Blanc:

There is no shame in taking time “off” of your work, in order to learn something, experience something, and be inspired.

This is the ebb and flow of work. This is having multi-year cycles where we grow in our mastery of creation beyond just mastery of tools and workflows. This is why resting well is so valuable and why learning, thinking, and discovering cannot be underrated.

So common sense right? It’s hilarious that we need to be told to take a vacation. Yet, until recently, I didn’t appreciate the drastic effect time away can have on your work.

I took two weeks to go to Europe with Kelly this Summer.1 No computer, no working, just sight-seeing and resting. It was amazing, my horizons were widened, and I came back ready to kick butt.

  1. She truly brings balance to my life. Goodness.

Heroku Redirects with rack-rewrite

A month ago, I moved this blog over to Heroku, and I’ve been really happy. It’s made writing and deploying a lot easier. But I needed a way to redirect the feeds to FeedPress and display my nice 404 page, which I had no idea how to do.

I did some digging and found out I could use Rack::Rewrite. Understanding how exactly to get this to work took me longer than I would’ve liked, but I finally figured it out.


First you’ll need to add the Rack::Rewrite gem to your Gemfile:

# Gemfile
source "https://rubygems.org"
gem 'rack-rewrite'

Once you run bundle install it’s time to write our rules:

# config.ru
require 'rack/rewrite'
use Rack::Rewrite do
  r302 '/atom.xml', 'http://feedpress.me/theboldreport', :if => Proc.new { |rack_env|
    rack_env['HTTP_USER_AGENT'] != 'FeedPress'
  r302 '/atom.articles.xml', 'http://feedpress.me/theboldreport-articles', :if => Proc.new { |rack_env|
    rack_env['HTTP_USER_AGENT'] != 'FeedPress'

The code above redirects the atom feed to the FeedPress feed unless the User Agent is FeedPress.1 It’s important to note, that you want to put your redirects at the top of your file.2

Now, for the 404 Page

For this, we’ll use a Rack middleware called Rack::NotFound. First we need to add the rack-contrib gem to our Gemfile. If you followed the steps from my move to Heroku, you already have this gem installed.

# Gemfile
source "https://rubygems.org"
gem 'rack-contrib'

Run bundle install and we’ll add two more lines to our config.ru file.

# config.ru
require 'rack/contrib/not_found'
run Rack::NotFound.new('/path/to/your/404/index.html')

What took me a few weeks to figure out, is actually quite simple to do. You can check out the Rack::Rewrite project page for documentation. The rack-contrib documentation is kind of non-existent, but it’s also on GitHub if you want to read through it. Hope you find this helpful!

  1. FeedPress still needs access to the original feed, or else it becomes a never ending loop of redirects and the feed would be blank.

  2. I honestly don’t know if this makes a difference, but I had them lower in the file and they weren’t working so… I don’t know.

Maybe I Should Be Living in Switzerland

Chantal Panozzo sums up why she’s not completely excited to be living in the U.S. again:

While I enjoy being close to family again, returning to the United States made me realize who I’ve become: someone who can’t believe companies aren’t required to pay into a pension fund beyond Social Security. Someone who is offended that most women in America don’t have the maternity benefits she had.

And someone who is mad that she must own a car for lack of efficient public transportation. Someone who, because of all of this, is still debating where she ultimately wants to call home.

Such a fascinating read. Made me think about whether I’m living in the right place.

‘Is There Potential for “Ethical Analytics”?’

Laura Kalbag has some interesting thoughts that I’ve been pondering myself:

Are all analytics bad analytics? Is there room for “ethical analytics” that only tracks anonymous data with limited uses?

Just the other day, I removed Google Analytics from this site. The reason being that I’m not going to track people who don’t want to be tracked. I won’t be just another person who has no regard for the privacy of my readers.

All that being said, it’s my hope that an ethical way of gathering stats comes to exist. I don’t believe that all analytics are bad analytics, considering that some can be very useful. But a line has to be drawn, and if the choice is between not having access to interesting statistics or invading the privacy of others, I choose to lose the stats.

My Podcasting Equipment List

There are lots of podcasting equipment guides, but I decided to write my own. I’ll probably flesh it out more as time goes on, but at least I have somewhere reliable to point people when they ask me about gear.

Unboxing the Sony MDR-7506 Headphones

I recorded an unboxing video for the Sony MDR-7506 headphones. I had used these headphones before when I worked at my college radio station. Interestingly, although less expensive, they’re an upgrade from the Beats Pro. The sound is more accurate, and they’re so light, you can use them for hours.

‘On The Verge’

Jeremy Keith:

If the message coming down from above is that performance concerns and business concerns are fundamentally at odds, then I just don’t know how the developers are ever going to create a culture of performance (which is a real shame, because they sound like a great bunch). It’s a particularly bizarre false dichotomy to be foisting when you consider that all the evidence points to performance as being a key differentiator when it comes to making moolah.

Jeremy continues:

For such a young, supposedly-innovative industry, I’m often amazed at what people choose to treat as immovable, unchangeable, carved-in-stone issues. Bloated, invasive ad tracking isn’t a law of nature. It’s a choice. We can choose to change.

The Verge’s Nilay Patel is so full of crap. The argument presented makes it sound like this is the only way, and if you’re against it, then you’re against people feeding themselves and their families.

It’s a choice. I don’t want The Verge to go away, or to fail. I just fundamentally disagree with the way they’re choosing to do business.

Ad-supported businesses need to reevaluate, and ask themselves how far they’re willing to go to please their advertisers. Unfortunately, these companies seem to be under the false notion that they’re the ones in charge, and content makers are only reinforcing that notion.

There is a fork in the road: change or lose your audience. People are tired of it.

Working Remotely Can Be the Dream

Mark Nichols:

During the hardest times, working remotely can feel like a punishment. For what, though? Your defection from the norm? Your overconfidence, maybe — your inability to do something that seems so easy? You suddenly have all these questions and insecurities keeping you up at night. What’s happening?

Mark’s experience has not been mine in the slightest. I’ve had the fortune of working with companies that really understand remote working. Without that, you’re left with the insecurities Mark has experienced: feeling out of the loop and alone.

I used to think that a company had to be completely remote for it to work. However, I currently work somewhere where only some of us are remote, and it’s been great. But it’s because online communication and collaboration has been engrained in the company culture even when you’re working at the office.

My recommendation is this: if you’re feeling out of the loop and alone, you should address those concerns with your supervisor. If things don’t get better, you might need to find a company who wants to put the effort into remote working.

Matt Gemmell on Working from Home

Matt Gemmell writes an excellent piece on working from home. You can tell he’s been doing it for a while, and I love his emphasis on creating a routine. If you don’t have a routine when you work from home, you’ll never get anything done.

Personally, the thing I would’ve dedicated a little more time to is the work-life balance. Working from home, and in Matt’s case, owning your own business should afford you the luxury of working less, not slaving away more. But, to each their own.

‘20 for 20’

Paul Armstrong:

My wife and I celebrated 20 years of marriage on July 1st 2015. I’m far from having any of what makes marriage work, let alone work for two decades, but here are some simple things I’ve learned and working on.

Chris Bowler on Blogging Tools

Chris Bowler:

I realize many folks consider talking about your blogging toolset is akin to talking about your relationship issues in public. Loudly. But I appreciate hearing how the writers I respect get content on their site and hopefully someone can benefit from hearing about my own.

I’m so glad Chris decided to ignore the haters of process. I love hearing how people work towards being more efficient, and Chris has a setup, that although simple, is powerful in making it easier for him to write. I plan to implement parts of it in my own process. Thanks, Chris.

The MovieByte Podcast: Best CGI Baby

TJ and Joe are joined by Tim Smith to talk about Pixar’s latest film. They answer the question, can Pixar return to their former glory with a resounding YES! They also take a few minutes to celebrate the work of James Horner, talk about Robert Zemmeckis’ firm stance that there will be no ‘Back to the Future’ remakes, discuss the new ‘Supergirl’ TV show trailer, and talk about Chris Pine and Zachary Quinto signing on for a fourth ‘Star Trek’ film.

I’m a huge fan of The MovieByte Podcast, and I had an absolute blast chatting with these guys.

The Sad State of iOS Development

Brent Simmons:

Yes, there are strategies for making a living, and nobody’s entitled to anything. But it’s also true that the economics of a thing may be generally favorable or generally unfavorable — and the iOS App Store is, to understate the case, generally unfavorable. Indies don’t have a fighting chance.

The platform is awesome. We love writing iOS apps. It’s fun and massively rewarding in every way except monetarily. As a craft — as a budding art form, perhaps — it’s juicy.

How sad is it that people who’ve put immense amounts of work into making their iOS apps great, can’t make a living from it? Could it be true that developers actually discard ideas before even trying them due to this?

One thing is for sure, indie devs making apps “for love” can’t go on forever.

Hosting a Jekyll Site on Heroku

I love using Jekyll. I use it for this blog, my personal site, and it’s the first thing I suggest when people want something with content that needs to be updated. However, deploying gets complicated when you’re using a variety of plugins and you don’t want to host with GitHub Pages.

I had setup Deploy to do this automatically when new commits were pushed to the master branch. But I wanted something better; something that didn’t feel like so much of a hack. I was having to compile the whole site locally, and sometimes I’d forget to use the right config file, so things would break and I’d have to scramble to fix quickly.

One day, the lightbulb when off, and I started to wonder if I could use Heroku to host my Jekyll sites. After doing some calculations, I felt like I could improve the deploy workflow, and save a little money.

So how the heck do you do it?

Well, it was a bigger pain in the butt to figure out than I thought, but once you understand the pieces, it actually is pretty simple. Unfortunately, most of the articles that walk you through this process were published a while ago, so they were using out-of-date gems, and deprecated commands.1 But by combining the process of this article and this article, you find yourself with a great solution. Hopefully you’ll find this useful.

Ignore the Site Folder

First things first, you’ll want to ignore your _site folder. You’ll be building the site on the server now, so there’s no need for these files to be cluttering up your repo. In your .gitignore add the following line:

# .gitignore

Exclude Vendor in _config.yml

You’ll also want to exclude vendor in your _config.yml file. This folder is generated by Heroku I believe. I didn’t actually test why this needs to be done, but I did it.

# _config.yml
excluded: ['vendor']

Add Gemfile

If you don’t have one already, you’ll want to create a Gemfile.2 I recommend you visit RubyGems.org for the latest versions of these gems.

# Gemfile
source "https://rubygems.org"
gem 'foreman'
gem 'jekyll'
gem 'rack-contrib'
gem 'rake'
gem 'thin'

Once you’ve got these gems in your Gemfile, run bundle install and make sure your Gemfile.lock is checked into your repo. The build process will fail without the Gemfile.lock.

Add Procfile

Next, add a Procfile. We’ll be using thin to serve up our site. You do that with the following lines:

# Procfile
web: bundle exec thin start -p $PORT -V
console: echo console
rake: echo rake

Add Rakefile

We need to tell Heroku to build our site, and we’ll do that by attaching a command to the rake assets:precompile task that Heroku runs. Create a Rakefile, and add these lines:

# Rakefile
namespace :assets do
  task :precompile do
    puts `bundle exec jekyll build`

Add config.ru

Now, we need to tell Rack how to serve up our files. We want it to do this statically so we’ll add a config.ru file and add the following lines:

# config.ru
require 'rack/contrib/try_static'

use Rack::TryStatic,
  :root => "_site",
  :urls => %w[/],
  :try => ['.html', 'index.html', '/index.html']

run lambda { |env|
  return [404, {'Content-Type' => 'text/html'}, ['Not Found']]

Lastly, make sure you’re using relative URLs for assets. I ran into a javascript error for calling jQuery over an insecure connection. Which meant changing the line.3

<!-- You'll change a line like this -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<!-- To this -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

That’s it! Now just push your repo to Heroku, and it’ll build the site and serve it. If you’d like to dig through the repo for this site, it’s on GitHub.

  1. Not to mention, it was difficult to find a pattern of how people do this. You’ll usually do research on something like this and all the blog posts will point you to the same steps. Not here. There were like four different ways, some that seemed simple, and others that were quite complex and required knowledge of routes in Sinatra. Craziness.

  2. You can do this by going into your terminal, cd into the directory of your Jekyll site, and type bundle init. You’ll need to have the bundler gem to do this, so if you don’t have that, type gem install bundler into your terminal to install.

  3. I add this information because my JS wasn’t working and I spent like 20 minutes just scratching my head as to why. Opened the console, and found the issue immediately. Should’ve done that in the first place.

Instacast Discontinued as Vemedio Runs out of Money

Benjamin Mayo reporting for 9to5Mac:

Popular podcasting app Instacast for iOS and Mac is shutting down as the founders can no longer fund it or any of Vemedio’s other projects.

Hering seems to imply that profitability issues are the cause as the email plainly states “I ran out of funds to keep the project going”. The company’s Twitter account is now private and vemedio.com now redirects to a simple ‘Discontinued’ page.

I’ve been using Instacast for as long as I can remember.1 It’s sad to see it go, but “running out of money” is a real thing, and I can identify with that. Instacast was my favorite due to their sync to a Mac App which—contrary to what is popular—is essential to me. I love listening to shows on the Mac, and I don’t feel that listening to podcasts while I work distracts me.

With Instacast out, I’ll be using Pocket Casts. They have exceptional sync, and their design is great. They’re coming out with Apple Watch support soon, which I’m really looking forward to since I recently ordered one.2

  1. I tried looking up when the app came out, but all the Vemedio pages point to a discontinued page. I want to say I’ve been using Instacast since 2010.

  2. I’m so excited! I ordered a Apple Watch Sport 42mm Space Gray with Black Sport Band. I’m also interested in getting one of these.

New Beginnings

For the past two years, I’ve run my own business, Anythin’ Goes. I’ve been so incredibly happy to work on some awesome projects with great people. On Monday, I begin a new chapter.

As some of you know, I’m getting married to my best friend in May. Since December, I’d been looking for a great company to join. Looking for a job is a difficult process. You end up reading a lot of job descriptions; some are written well, others are really not.

Two weeks ago, I interviewed with Matt Crest. The first interview went really well. On the second interview, I was convinced. I really wanted this job. I was excited about the work, and I felt I fit with the team.

Monday, March 30th, is my first day at Artletic. I’m so excited about this opportunity. I’ll be able to use my skills to help the team, but I know there will be much for me to learn from this great group of people.

I’ve interviewed with a lot of companies in the past four months, and I thank them all for chatting with me. I also want to thank all of you who made intros for me, hired me in the last two years, and who sent me job listings you thought I’d be great for. That type of generosity can never be fully repaid, but I promise to try my best.

I want to give a special shoutout to Matthew Kammerer, Jory Raphael, Nicole Dominguez, Chris Kennedy, Jonathan Cutrell, John Locke, Myke Hurley, and Bermon Painter. If it weren’t for you, there would’ve been months that I wouldn’t have been able to pay my rent. You didn’t know it, but your help was monumental, and I thank you.

Now, on to new beginnings.

Andrew Wilkinson on Building a Lifestyle Business

Andrew Wilkinson talks about being In-N-Out Burger instead of becoming McDonalds. It’s quite encouraging to read something like this from someone who’s had so much success in our industry. Here’s my favorite part of the article:

Meanwhile, there are thousands of internet businesses out there, quietly making tens, and even hundreds of millions of dollars, who have taken the same path as In-N-Out. They don’t need to be first, second, or even tenth, in their space, and have instead chosen to focus on a small percent of a massive market. They answer to customers, not investors, and focus on making their employees, customers, and themselves happy.

‘On Productivity’

Brian Krogsgard:

I should admit something: I have almost no such hacks and I do not focus heavily on my processes and how to streamline them.

Now, I do think I’m a fairly productive person. I get a lot done during the day. Since I started my own business, I tend to balance the day with research, writing (which is what pays bills, if you will), customer support, site maintenance, and development.

I love this post by Brian. We can get caught up in all of these things that you “should be doing to be productive” instead of doing what works for you.

Pebble Pre-Sells its New Watch on Kickstarter

There are twenty-nine days to go, and Pebble has already made over $10 million in pre-sales of it’s newest watch: Pebble Time. Who says there isn’t a smartwatch market?