Migrating from Octopress to Jekyll

I mentioned in a previous post that I was interested in moving from Octopress to Jekyll because it seemed more supported. I ended up doing it and it took less time than I thought it would. Here's a quick recap summary.

Basics

I created a new Jekyll 2.0 project and then:

  • copied over the existing posts
  • copied over the debug blog posts
  • copied RSS
  • copied existing styles and javascripts
  • generally made sure everything worked as before
  • got comments working with Disqus

New publishing strategy

To get publish my blog, I previously used a hand-rolled script to copy files to S3. I thought "there has to be a better way", and some basic research revealed s3_website. This gem rocks. I would recommend it for any Jekyll site deployed to S3. It reduces code that I have to maintain. But wait, there's more. It checks what is currently on S3 and uploads only the diff. When it figures out what to upload, it can upload gzipped versions in parallel to speed it up. Deploys can go from a minute to about ten seconds. Plus, it has great support for redirects, which I used to give some existing posts and other resources some better names.

Read on →

Systematizing Dinner

"What's for dinner?" is the refrain heard around the world at around 5 PM. What if you knew the answer to that and had a healthy meal halfway cooked every night of the week?

Overview

There are clear benefits to coming up with a system for dinner. You can decrease the time, money, and effort you spend on fulfilling basic food needs. You can also consider what kind of meals you would like to eat and make sure they are healthy.

To accomplish systematizing dinner, we ended up going with a subscription meal planning service. I'll give the overview that they have on their website, as it does a good job of explaining what the service is:

The Fresh 20 is a meal planning service, created for busy families and singles who want to eat fresh, healthy meals, and save time and money. Our meal plans rely on simple, healthy, homemade lunches and dinners using just 20 fresh, seasonal ingredients per week. No more grocery lists with 80 items that will eventually go to waste. Our meal plans are carefully created to utilize everything on the list so you can stop throwing money down the drain. The Fresh 20 mixes and matches a small list of ingredients to create 5 balanced meals that play off each other. We include detailed guides to meal prep, original recipes everyone will enjoy (even picky eaters) and motivation to help you stay the course on busy weeknights. Because we are committed to our customers, and to health and happiness for all, we now offer Vegetarian, Gluten Free, Kosher, Meals for One and Lunch, in addition to our Classic Meal Plan.

How It Works In Practice

Getting stuff and prep

We go to the store one day on the weekend, and don't need to run to the store during the week since we have a complete list. We can grab milk and eggs and such as well. Making this a habit on the weekends helps us make better choices during the week. So this takes an hour or two after you consider driving and parking and such.

Read on →

Older Posts That Are Still Interesting

Here are some short posts (long in aggregate) that I wrote on a throwaway blog on Posterous around 2009. Posterous got acquired by Twitter, and I didn't like it all that much anyway, so I exported and sorted by interestingness. Fair warning: they are a bit rough, but might be useful.

How to Figure Out If You Should Get More Education

I was talking to a woman in the information security field last night. She talked about getting more certifications a few times. I say to her, "In software, a lot of times certifications are kind of a joke." Meaning, a lot of certifications are merely memorizing the documentation or don't really show that the person knows what they are talking about. She said that many of the certifications were useful–but not without the proper experience to back them up. When she was hiring people, she would first sort through the resumes to find people with the certifications that made sense, and then approach those people first. The fallback was the people with fewer certifications. However, she wanted to see if other people thought the same way.

Next, she said something that I found very interesting. She said that she created two resumes for herself and sent them both to a few companies in her field. In both, she used different names. In the first, she listed her current skills, experiences, and certifications. In the second, she did the same but also listed the certifications she was considering going for. If the second resume got many more responses, it was clear that the certification had market value.

I thought this was an effective approach because she got information before needing to actually take the time to pursue the certification. At first, I thought it was similar to split testing, but what made it interesting was that she was not trying to optimize some asset she currently had. Rather, she was optimizing for future actions. It reminded me a bit of lean startup techniques, in that she was testing a value proposition rather than building the product first and seeing who would buy it later. For something that might take a couple of months of nightly study, it seemed like something worth testing first. I've long thought a useful technique has been asking the question, "What are we trying to learn, and how might we learn it faster?" This is undoubtedly orders of magnitude more effective in terms of ascertaining the value of a certification.

One of the signals a certification gives is that the person is willing to stick with something long enough to get it, and also has an interest in doing something in that area in the future. So it can be useful, but not universally. There were some people with a lot of certifications but only a year of experience. These people would likely need to work for a bit to get more broad experience before they would be able to effectively use their certification knowledge.

Clearly the market value of some educational experience is not the only thing you should consider. Is it going to make your career more interesting or add meaning to your life? But these are questions for another time. I hope you enjoyed this technique.

For more on split-testing in the physical world…

Split-testing Online Profiles

Occasionally while going through personal writing, I come upon an idea I wrote down in the heat of the moment and that seems good later. I have a Vim function that prints out the date, so that's how I start personal writing entries.

Read on →

Why You Should Explain Your Android App's Requested Permissions

I recently installed the Trello app for Android. Looking through the description, I saw a great example of explaining the device permissions that the app wanted (text below):

Trello Permissions Information

Here is the text:

PERMISSIONS REQUESTED

For more information on our privacy and security policies please see https://trello.com/privacy

FULL NETWORK ACCESS - We use network access to communicate with trello.com and sync your data between all of your devices.

CAMERA - When you tap the camera button, we use your camera to enable you to attach a photo to a Trello card.

MODIFY OR DELETE THE CONTENTS OF YOUR USB STORAGE MODIFY OR DELETE THE CONTENTS OF YOUR SD CARD - We use storage access to store your data on your device so that you have fast access to it, even when you're offline.

This is an excellent example of how to explain why the permissions requested are both necessary and useful to the user.

Breakdown

Let's break the example down.

Read on →

Faster Ruby on Rails Routes

In this post I'll talk about the benefits of generating your Ruby on Rails routes more quickly, and how to implement it.

Background

Rails looks at the ./config/routes.rb file to generate the mappings between URLs in your application and what controller actions those URLs correspond to. In your app, you can say redirect_to new_post_url and Rails knows that you mean http://www.panozzaj.com/posts/new (for example.)

The problem: Slow Routes Generation

Generating routes in a medium-sized Rails application could take upwards of ten seconds. This is a bit slow for feedback. Sometimes you are just exploring the routes in an application, and it could take a while to get better information. Instead of tens of seconds, why not get it down to a few seconds, or – even better – milliseconds.

Speeding Up Rails Route Generation

I'll take an app that I am currently working on that has only a hundred or so routes defined and a bunch of gems installed. Before any changes, rake routes takes about seven seconds to generate.

Read on →