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.
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?
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.
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.
Here is the five-second marketing pitch from Google regarding Go:
Go is an open source programming environment that makes it easy to build simple, reliable, and efficient software.
Beyond that, one thing that kept coming up when I heard people talk about Go was how it handled concurrency. My focus lately has been on writing scalable web services, so concurrency is something that gets my attention.
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.
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.
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.
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:
I take security pretty seriously. Some might even call me a little paranoid when it comes to password strength. It’s no surprise that I love two-factor authentication then. Not only can I have a super strong password, but I can now require that I have a security token in my possession in order to login. In other words, even if you knew my 16 character random password for gmail, you still could not login without also having my security token.