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.

PERMISSIONS REQUESTED

Here, Trello needed to create their own section of the description to discuss why certain permissions are needed. More on this later.

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.

One method we can use to speed up our routes query is to use Zeus to speed up the output of rake routes. This is as simple as installing Zeus, running a Zeus server, and running zeus rake routes. This change alone reduced my time for the Zeus command to about 1.25 seconds, which is about a five-fold reduction.

Read on →

Harvesting Artifacts For Free Blog Posts

You probably have a bunch of blog posts that you have already written that could be published today, but you may not be aware that they even exist. This post shows some ways to unlock this potential content for your business or personal blog.

Artifacts

In the course of doing business, there are a number of artifacts that you typically create that would make excellent material for blog posts. These artifacts could include:

  • internal shared documents
  • general project documentation
  • workflow / process guides
  • diagrams
  • presentations
  • lessons learned / retrospectives
  • high signal emails
  • new project steps

What took hours of work to write up and possibly days or months of hard-won experience or research can be shared with your customers or clients and help them. Obviously you should remove anything that is your company’s secret sauce, confidential, or detailed plans, but why not share your overarching conventions for others to benefit from and potentially improve?

Read on →

Replace Local Cron With Jenkins

In this post I’ll cover why I set up a local Jenkins server, and what benefits you might gain by doing the same. This post is probably most suited for developer types, but you may try it if you have many repetitive tasks.

What it looks like in action

Here is what my current Jenkins dashboard looks like:

My local Jenkins dashboard

You may notice that it seems more aesthetically pleasing than other Jenkins installs. This is due to using the Doony plugin, a series of UI improvements to Jenkins that make it much better to use. My favorite is a “Build Now” button that will kick off a build and take you to the console page to watch the build (typically a three or four step process otherwise.) This is handy for testing out new or newly modified jobs. The console output itself looks much better as well. Doony even has a Chrome extension so if you work in a stuffy office, then you can get a sexier Jenkins just for yourself.

What I specifically use it for

There are many things that need to be done to keep a computer system running at its best, and I try to automate as many of them as possible. With a local Jenkins server, I can do this and easily keep tabs on how everything is running.

One easy application is to keep the system updated. On Linux, you’d sudo apt-get update && sudo apt-get upgrade -y. On Mac, running brew update && brew upgrade nightly keeps me running on the latest and greatest. Anything that needs backwards revisions of software (databases, etc.) should have its own virtual environment or be running on the latest anyway.

Read on →