Use your widget sidebars in the admin Design tab to change this little blurb here. Add the text widget to the Blurb Sidebar!
Filed under: Software | No Comments »
I’ve been thinking a lot about finding time for side projects.
Finding time to build stuff in your free time is hard and you need to balance it against other stuff – for me, a 27 year old post grad, that includes balancing it against several things, in order of priority
- My girlfriend and my family
- My friends
- My job
- My own need to relax and watch Lost.

where's the self actualization?
Where does the self actualization happen? Is coding a means to an end, or an end in itself? Well one way I like to figure stuff out like this is to look at the people I admire and see what it is that I admire about them. So let’s look at some present and past day coders that I admire and what to be like.
1st up – Jeff Atwood & Joel Spolsky

DHH & Jason Fried

It’s not good enough to
It’s not enough just to be a good programmer. You need to make useful stuff and work for yourself these days to really be the bomb. What can you get done in 25 minutes a day?
Filed under: Software | No Comments »
Follow the 80 20 rule – eat until you are 80% full. The japanese do this.
It’s easier to change your environment than it is to develop self control.
We make about 200 food decisions a day.
We’re bad at estimating how much we eat when we eat in higher quantities.
If you eat a lot, eat with friends. If you tend to eat a little, eat alone.
Filed under: Software | No Comments »
At railsconf this week I was staying at a hotel, and immediatley I’m looking for a place to charge my iPad, iPhone, and Macbook at night. This is no easy task. On the second or third night I’m turning on the light on my nightstand lamp only to see that there are two outlets built in!

You know what sucks? I spent 10 minutes looking for a decent looking lamp like this for home – we’re always plugging in laptops to watch Hulu in the bed, as well as dealing with iPads, kindles, iphones and cell phones – normally we are dealing with plugging into the badly placed wall outlets, which suck.
This would be a prettier and easier solution… if there were decent ones online.
So if you find any, leave a comment.
Filed under: Business, Software | No Comments »
This is a hard post for me to write, because I’ve always considered myself a generalist. I majored in the arts, and I don’t consider that a big loss in my tech career. I’ve always thought that being well rounded is going to serve you, and society, a lot better then being terribly specialized. It’s hard to describe exactly why I’ve felt that way. I guess, I’ve always thought that there are several important factors to being good besides just having a particular skill set. Knowing yourself really well – understanding others, communicating well, beleif in a cause greater than the day-to-day – I’ve come to beleive that these are all terribly important to being happy.
Lately though, I’ve been thinking that it really sucks to be too much of a generalist in certain cases. Programming is a great one. It takes a long time to master a specific technology. I worked in ASP/ASP.NET for about 5 years straight, and there are plenty of people out there who were doing things better than me. About 6 months ago I switched to being a full time Rails developer. It’s tough to go from being very adept with a specific language, framework, IDE, development operating system and deployment operating system to entirely new ones. I worked a lot in my free time to make the transition go a lot smoother and even now I still struggle to balance being productive in the short term with improving my skills in the long term.
So it kills me when I see consulting companies refuse to pick a technology. I suppose it just comes down to not wanting to turn down work. But you have to ask yourself: would you hire a company that’s going to end up spending a good amount of the project learning an entire environment from the ground up? I wouldn’t. I’d hire the experts. If I want something half-assed I do it myself
.
There are a lot of reasons not to be “technology indepedent”. It’s hard to hire people – they don’t know what they are going to work on, and neither do you. The interview ends up being general and vetting candidates gets complicated.
It’s also hard to train people. You pretty much can’t do it, and nothing is as demotivating as being told to learn about an area you know nothing about and told to prepare for “an undefined task” in the future. You can’t really prepare for an undefined task and I’d rather reorganize my iTunes library or work on my Emacs customizations – at least I know I’ll get something out of those.
Plus, let’s not forget about the whole delivering a less than quality product factor. Timelines get shorter every day, and chances are even if you learn enough to go back and refractor everything you messed up earlier in the project, you aren’t going to do it. The programmers are already probably worn out from having to learn how to do everything on top of the actual execution.
On the other hand, if you pick a technology, you can recruit programmers for free – we all talk, and if you’re a good place to work we’ll know about it. The reverse is true as well. Training and vetting candidates just got a hell of a lot easier. Picking projects got easier too – you can say “no” without even thinking about it. As clients get more technically savvy, they will more realize the content of the blog post is true and look for experts – and if you’re a small company, you can only be an expert in so much.
I realize that a lot of consulting companies are already doing this – but for all the companies that are, there are 5 that are not.
Filed under: Software | No Comments »
I have several principles of writing good comments, so here they are. General guidelines: keep it short, people. Let’s lower the number of WTF’s per minute.
In-line Comments
Don’t use em. They clutter the code. If you need an in-line comment, it’s a code smell that you should be extracting it to another (preferably instance) method.
Class Heading Comments
They are awesome, use them when you can’t choose really descriptive names especially.
Don’t do the modified date and naming signature. It’s dumb and gets out of date quick enough. It’s hard enough to maintain code.
Method Comments
Can be useful as an addition to names that can be hard to read. Better to break into tiny methods with theiir own names though.
HTML Comments
Waste of time almost always. HTML is a verbose enough language already, don’t make it more so by adding more comments. If you want to delinate sections, use indentation and partials.
Schema Comments.
I like this….commenting in migrations is probably good enough.
Design decisions, links to blog posts, etc
This is hard because, sometimes this stuff is really helpful when you’re trying to understand “wtf” happend.
Anyways, what are you pet peeves or guidelines for writing good comments?
Filed under: Software | No Comments »
Install growlnotify
Add the following to your ~/.bashrc
alias growl=”growlnotify -s -m done”
specgs() {
spec “$@”
growl
}
Then just run specgs from now on
Filed under: Software | No Comments »
Computer Science is not a worthless degree.

Indeed, quite the contrary.
Computer Science is freaking amazing.
However, it’s not the be-all end-all. The best computer sciencetists are also the best at living and being people. Nobody wants to work with a douchebag. Programming is not just a means to an end but what you create with it certainly matters. You could create a spam program, a computer virus, or a useful tool that saves marriages and cures world hunger. It’s magic, baby, and we’re all wizards.
But it’s not the be all end all. Jeff Atwood likes to say say that we are Typists First, Programmers Second which is true, but I’d say that we are Human Beings first, and typist second. And the best of us are good human beings.
So how do you get to be a better human being? Major in philosophy. Or at least read some.
I’m not the only one.

Being is Being
Buddhism
The basic tenants of buddhism are very simple. Be mindful (aware). Do not drink caffiene, alchohol, or anything that might alter your state of mind. Beware the harmful power of words. Giving is the path to happiness. If you’re interested, read Peace Is Every Step by Thich Nhat Hanh (affiliate link).
Being a Liberal Arts major
Liberal arts is getting a lot of hate these days as people point at non-pratical displicnes as the reason why there are so many people who are unemployed. Geek have always liked to hate non non-computer science majors because we all suck at programming and we like to make ourselves feel cool because we got made fun of in high school.

I’ve heard some people say that you they would tell wanna be programmers to major in English.
Filed under: Software | No Comments »
Here’s the article and the subsequent discussions on hacker news.
I don’t really care about convincing people to write unit tests – I’ve worked on projects without any automated testing done by the developers and probably no automated tests by the QA peeps and that went just fine.
However, I have a couple of points to make. But first off I’m not talking about unit testing – I’m talking about straight TDD with state verification, which I vastly prefer.
Testing has more benefits than preventing regression
It’s not just about preventing regression. In a lot of cases, integration testing / user acceptance testing and manual QA is better than that. It’s impossible to write tests that cover all the use cases of the code you write or verify it to any significant certainty. Even a relatively straight forward class would be too hard to fully test in a reasonable amount of time. It’s
However, testing has more benefits in order of desirability.
It’s quicker than firing up a web browser when you’re righting plain old code.
When you’re working with interpreted languages, you don’t get the same level of confidence that your code will at least mostly work when you’re “done” coding up something. One thing I’ve done to get the same effect is to use this sweet textmate bundle, Validate On Save which just checks your Ruby syntax.
Say you’re writing a function that parses a URL and verifies that it meets a particular spec.
def is_correct_url?(url)
url =~ /*scott*/
end
If you only test when it’s convient, you might just get this working with a regular expression testing program.
But if you write the tests first you can just stay in terminal/text editor without having to fire up a browser to see if youre little URL checker works correctly.
it "should not accept urls that do not have my name in it" do
scott_url?("http://www.bob.com").should eql nil
end
it "should accept urls with scott in it regardless of case" do
scott_url?("http://www.SCOTT.com").should eql true
scott_url?("http://www.scott.com").should eql true
end
And if you go in an add more features to this little url checker, it’s pretty easy to see if it works and still supports the old functionality.
It helps other developers understand your code
In the above example, you can either have long-ass comments above the method which will bloat the length of your code. Or you can have a stupid spec file that will be out of date immediately. Or you can have tests. Personally, I prefer tests, because they integrate with CI and are easy to modify and we know they are up to date because they get run all the time.
Remember: code gets read a lot more often then code gets written.
Filed under: Music | No Comments »
I’ve been listening to underground hiphop almost exclusively for 7 years or so now. Here’s what I’ve collected for your listening pleasure.
There’s a lot of good underground hiphop out there. Personally, I find it the best stuff to code to. Half of that is because I don’t really know that much good techno.
Here’s my top underground hiphop artists as of today. Download some of their albums, and give ‘em a listen. You might find something you like.
Atmosphere

Slug (rapper) and Ant (producer) have revolutionized modern day hiphop. Slug raps about mid-west living (he’s from Minneapolis), women, alcoholism, self deprecation, among other things. Out of all the groups on this list, Atmosphere is the only duo (slug’s never gone solo except for collaborations) and they’ve toured more and released more material than most bands of any genre.
Recommended Album: God Loves Ugly
Mac Lethal

I’ve still never heard a sound quite like his – if you like your rap music with harmonics, he’s your man. He likes to rap about the South, pop culture, drinking, and himself. He also does the whole emo rap thing quite well with songs like Take me in my sleep, a very sad song about a mother dying – his mother, I think.
Recommended Album: Love Potion #5
Eyedea

Put out the most philosophical rap album ever. Recently returned from a stink with Nirvana influenced Carbon Carousel. Common themes in his lyrics are philosophy, battle rap, depression, introspection.
Recommended Album: First Born
Sage Francis
Still alive and kickin’. The only one on this list who reps New England (Providence, specifically). His raps are at times poetic and emotional, at other times angry and political.
Recommended Album: Personal Journals
Buck 65

Another very unique sound. He’s quite abstract at times. In this album, he talk’s about a variety of different things – baseball references, ex girlfriends, and so forth. I saw him live once and I had never listened to him. He had a broken arm and did this funny dance on the stage and has a very cowboy smoker voice. Then he went to the turntables and absolutely killed it. Needless to say, I copped his album shortly aftewards.
Recommended Album: Talkin’ Honkey Blues
Brother Ali

Might have the best delivery out of everyone.
Recommended Album: Shadows on the Sun
Aesop Rock

Highest WPM of all the rappers on this list. Wait no, Dose is probably faster. Sweet tattoo, right?
Recommended Album: Float
Dose One

The best abstract poet rapper out there.
Recommended Album: Deep Puddle Dynamics.
Filed under: Software | No Comments »
Ever since I decided that I wanted to move an editor that fully supports keyboards (VIM or Emacs) I’ve been evaluating my choices on the mac. Here’s a quick rundown of your choices.
GNU Emacs
This is defacto, standard Emacs such as you could use it on a remote terminal. The only real mouse interaction you can do is manually selecting text in a buffer and I think you can copy and paste it back in (maybe not). Certainly, running it with a mouse in OSX Terminal means that you can copy things out of a buffer as in the rest of Terminal.
Pros:
- It forces you to use the keyboard.
- It’s “real” emacs, no enhancements. Thus, anything you can do that you can do on pretty much any Emacs install (windows, linux, headless linux).
- It’s probably lighter weight the XEmacs installs.
- You can basically live in Terminal a lot more instead of switching to some other install.
Cons:
- OSX comes with Emacs 22 by default, so you will probably want to replace it with a precompiled Emacs 23 for OSX that you’ve found via google. (not much of a negative)
- Some operations are faster with the mouse – selecting blocks of text, copy and paste, at times, navigation within a file.
- Less OSX integration.
- In my experience, themeing get’s confusing because you have a Terminal theme, which is inherited in some manner by OSX. (probably the MOST annoying thing for anyone who cares about pretty syntax highlighting, esp. compared to Textmate which is far away the best in this area in the history of computing).
- Font’s won’t be up to par with the rest of OSX.
Aqua Emacs features page
I’m not going to launch into the same depth for Cocoa Emacs and Aqua Emacs, because they are relatively similar, but here’s a quick list of things that are different.
Pros of Cocoa Emacs over Aquamacs
More true to the “XEmacs” way. In general, it rides the middle line between being a version of Emacs reimagined for OSX and a straight GNU Emacs install with a window. All in all it’s pretty bomb.
Aquamacs over all
Copy and paste “just works”. This is huge. When you have a heavily OO design you and you just want to move stuff around between objects or whatever, having copy and paste not work like other OSX apps just sucks. I’ve tried the Mark and Yank, and that’s great, but I still think it’s slower.
Fonts & Themes are amazing.
Full screen support out of the box. (You can compile it into Cocoa Emacs (google it) and download Megazoomer to turn it on in GNU Emacs vs the Terminal (which is amazin, btw, Megazoomer ftw)).
Enjoy!