All Posts

Who is responsbile for your learning?

Are you expecting too much from an author, speaker or teacher? Take charge of your own learning instead. Consider some tips from a recent “Learning how to Learn” newsletter.

Learning how to learn: the newsletter

Software developers are, by necessity, lifelong learners. We are constantly facing new challenges, new technologies, new methods of solving problems. But how can we make our learning more efficient? This is a question that I’ve been pondering for at least four years.

A modern approach to PHP development

This year at That Conference, I presented one of the few talks on PHP. The title of the talk was “A modern approach to PHP development.” My goal was to expose both PHP and non-PHP developers to some more recent developments in the PHP ecosystem.

Highlight PHP and HTML in Octopress

In yesterday’s post on Octopress, I briefly mentioned the Pygments lexer documentation. One of the things I found incredibly useful was understanding all the available lexers and which language code would invoke them. For example, let’s say you want to have a code block that highlights both PHP and HTML. How would you do this?

Better PHP highlighting in Octopress

I recently moved my blog from WordPress to Octopress. The experience was painless and I wish I would have done it much earlier. One thing that puzzled me was how Octopress handled PHP syntax highlighting. It seemed that it would only work if every code block started with the opening <?php tag. I found this quite annoying, especially when I only want to show one line of code.

Day one with Go

I have the habit of picking up a new programming language or two each year, not necessarily to master them or even to write production code with them, but just to be exposed to new approaches to familiar problems. For the last few months, two friends of mine have been urging me to try out Go, a relatively new language from Google. Since I had a 17-day vacation planned in Florida, I decided to give Go a try while I had abundant free time.

Pass Puppet command line options with Vagrant

This week, I finally blocked some time to seriously investigate Vagrant and Puppet. The documentation for both tools is decent. Taking the knowledge I gained from reading through the “Quick Start” documents, my next logical step was to spin up my own custom development environment for local usage. I quickly ran into some issues and wanted to enable the “debug” mode of Puppet. Since I’m not calling Puppet directly, it’s not as easy as tacking on a --debug option to the puppet command line. Instead, I need to tell Vagrant to run Puppet in debug mode, using the Vagrantfile.

The oppressive nature of mathematical facts

I was frustrated watching the news tonight, seeing reports of long lines of people waiting to buy lottery tickets for tonight’s $500,000,000+ jackpot. There are several angles of absurdity to consider here. For example, why all the excitement over $500 million? Wouldn’t any of these players be equally thrilled by $10 million or even $5 million? Another example: Several of the people interviewed, who had just bought hundreds of dollars of tickets, were unemployed, facing foreclosure, struggling to pay medical bills, and so forth. But putting all that aside, let’s just look at the math.

30x500 orientation

I recently enrolled in 30x500, an online class designed to teach you how to launch successful products. I know how to run a consulting business (been there, done that) and I know how to build software applications, but I had no real idea how to build and launch a product. After tweeting about my enrollment, a few people responded with curiosity, intrigued at the idea, but not yet ready to put down the money to join. Today was orientation, so I decided to start documenting my experiences right away, not only for my own benefit, but also for those perhaps on the fence about taking this class themselves.

Git goodies: see all unpushed files

My preferred workflow is to be able to push changes into production using git. However, sometimes the project/server doesn’t support this (yet). In these scenarios, it is very useful to be able to see which files have not yet been pushed to origin. Here is a nice one-liner that does exactly this: