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 »
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!
Filed under: Software | No Comments »
Most of you probably know ol’ Giles from the internet and whatnot.
The movie is about a bunch of stuff, not really sure what yet. I think mostly about pimping your programming career but who knows with Giles.
Anyways, I bought his video this morning, because I was bored and slightly intruiged. I’m going to head over to my buddy Chris Apolzon’s house to watch it in a bit. If I get around it, or you request it so, I’ll post whether or not I enjoyed the video later. The first 10 minutes was pretty entertaining.
update: highly recommended! I like it! I’ve been looking for books that give a good treatment of the subject matter address in the video for a while. We’ll see how applicable it is in the coming months.
Filed under: Software | No Comments »


- Old school cover, old school wisdom
Before reading this book, if you had asked me what the most significant challenge in the average adults life was to be, I probably wouldn’t have said “Dealing effectively with others, of course!”. Likely, I would’ve said some crap about inner peace and spirituality. Love-able people don’t talk about how they came to be so love-able. Maybe, they just woke up some day and it was there, like puberty.
But Dale lays down some serious pipe in the inner workings of like-ability, backed up by examples of how prominent historical figures in history have displayed these very characteristics. It reminds me a bit of my study of Cyrus the Great in Xenophon’s Cyropaedia and how he won the allegiance of so many.
I have no idea how this book came to my attention. Really. Isn’t that funny? All I can remember is something about how “If you’ve had problems dealing with people, you need to read this book yesterday”.
Here’s the basic outline of the strategy proposed to win friends and influence people.
Fundamental Techniques in Handling People
- Don’t criticize, condemn or complain.
- Give honest and sincere appreciation.
- Arouse in the other person an eager want.
Six Ways to Make People Like You
- Become genuinely interested in other people.
- Smile.
- Remember that a man’s Name is to him the sweetest and most important sound in any language.
- Be a good listener. Encourage others to talk about themselves.
- Talk in the terms of the other man’s interest.
- Make the other person feel important and do it sincerely.
Twelve Ways to Win People to Your Way of Thinking
- Avoid arguments.
- Show respect for the other person’s opinions. Never tell someone they are wrong.
- If you’re wrong, admit it quickly and emphatically.
- Begin in a friendly way.
- Start with questions the other person will answer yes to.
- Let the other person do the talking.
- Let the other person feel the idea is his/hers.
- Try honestly to see things from the other person’s point of view.
- Sympathize with the other person.
- Appeal to noble motives.
- Dramatize your ideas.
- Throw down a challenge.
The sweet part about the book is that each and ever bullet point is baked up with real-life examples from common people at the time Dale was travelling around giving speeches, and from historical figures.
Chapter 5: The Secret of Socrates
In talking with people, don’t begin by discussing the things on which you differ. Begin by emphasizing—and keep emphasizing—the things on which you agree. Keep emphasizing, if possible, that you are both striving for the same end, and that your only difference is one of method and not of purpose. Harry A. Overstreet, author of Influencing Human Behavior, considers the word “no” as one of the most difficult handicaps to overcome. When a person says, “No,” they have invested their pride of personality, which demands that they remain consistent with themselves. They may later feel that, “No,” might not have been the best answer, but they have their precious pride to consider. Once having said, “No,” they feel they must stick with that decision. The most important thing you can do is get them saying, “Yes,” right from the beginning.
Socrates was one of the greatest philosophers the world has ever known. He changed the whole course of human thought by introducing a technique now called the “Socratic method.” This technique was based upon getting a “yes, yes” response from his opponents. He would ask questions, to which his opponents would have to answer, “Yes,” to. By asking many questions in this vein, he kept his opponents saying, “Yes” instead of “No.” His opponents would finally, without realizing it, find themselves embracing a conclusion they would have bitterly denied a few minutes before.
The next time we are tempted to tell someone he or she is wrong, let’s remember old Socrates and ask a gentle question – a question that will get the “yes, yes” response.
Principle 5
Get the other person saying “yes, yes” immediately.
Conclusion
I’d give this book a definite must read unless you live in a cave. I’ve seen a lot of people make the mistakes outlined in this book – it’s very interesting. One of the most interesting arguments in the book is the argument against criticism. Everybody criticizes at one point or another and I cannot recall anyone avidly speaking out against criticisms as a general technique. In parenting books, I think I’ve heard of the concept of positive reinforcement but it was never clear whether that stuff really worked.
The agruement itself is long and well thought-out so I suggest picking up the book and reading it yourself but this is what I recall: suddenly, early in the book, the author starts reciting the stories of Al Capone and John Wilkes Booth – this confused the hell out of me, until it’s explained the one thing they have in common for the purpose of the book: they all did many wrong things, and were criticized by the highest arm of the law to their extreme deteriment. All of them, however, still were quoted as having been wrong by the system, or someone else, or that they were still basically good people. The moral: people will always blame someone else, so it’s pointless to criticisze. That doesn’t mean that we shouldn’t punish murderers – just that if we want better results out of people in our lives encouragement and appretiation is probably a better tactic.
These arguments are what make How to Lose Friends and Influence People a timeless gem and a Essays on Stuff must-read.
Filed under: Software | No Comments »
The Game: Penetrating the Secret Society of Pickup Artists
Alright, not everyone is going to like this book. But it’s a book on understanding the female psyche that the vast majority of men won’t just learn through osmosis. Women think much differently from men, and in winning their favor, the mental approach of most young men is far off balance.
The Game follows a nytimes writer as he is immersed among a bunch of pick up artists trying to pick up girls and improve their “game”. A lot of lessons are learned, and he eventually becomes very good at picking up women. There was/is
This book will only work for certain types of men. For the easily tempted and bittered men who already have a grudge against people, or women in general – the never ending quest for the favor of beautiful women can tear their life apart, leaving them a hallow shell.
For the weak of will and faint of heart, this book will do nothing, except maybe remind them of problems that haunt them when they are trying to go to bed at night. Some men suffer from pride, and this is the greatest vice. Pride prevents men from admitting they are wrong and seeking help.
For the men who are neither grudge-holders or too prideful, this book will serve as a wonderful step forward in understanding what attracts women. The amount of knowledge in this book is worth that of 10 or more similarly sized books.
Some women will look at this book and think that they would never want a man who enjoyed reading about such things – fearing maybe, the objectification of women lies between the silky binding. If I were a woman, the last thing I would want would be a guy that secretly think that deep down he has failed in a large part of what most consider success in the art of being a heterosexual male – attracting women. Better he comes to terms with that half of himself. This book is written by a kind man who recognizes that all men and women are seeking happiness, and his perspective presents an honest approach to dealing with the challenge’s of manhood.
Filed under: Software | No Comments »
Man, does this suck. If you’re a professional who cares about his or her work, developing faster in the short term than some code monkey whose writing some massive if statement isn’t going to be easy.
- Coders didn’t start using OO because it was faster
- Hackers didn’t start TDDing because it was faster.
- Software Engineers didn’t start code reviewing because it was faster.
- Programmers don’t refactor working code because it’s faster.
- Agile software development isn’t faster
- Continuous Integration isn’t faster
- Cucumber is slow as crap.
We do these things because one reason and one reason only:
Because the whole code base would go to shit if we didn’t.
If a coder tells you tell you otherwise, they are
shitting you
photo credit: Son of Groucho
Saying ‘we need to write tests because it’s faster’ or ‘we need to refactor this large part of the code base to meet the new designs’ is just an easier way of saying
If we don’t fix this and I have to spend the next 3 months wading through this less than ideal code base I’m going to go ape shit.
If we’re just going to throw the code away than who cares?
No other discipline requires change as much as Software Engineering.
Nobody builds a house and then halfway through decides, you know what, I think this should be a house boat. Seriously. I really like the water. I went to my friends houseboat on the weekend and it was amazing.
If a plumber designed a plumbing system that didn’t work the first 3 times you tried it and then had to later add 3x as many features in v2 of the house, plumbers would have to be geniuses.
You ever inherited some code that was just a big pile of shit? Adding pretty simple code takes days. Everything you add breaks something else and you don’t even know it until the customer tell you two weeks later. You end up duct taping in solutions that cause more problems then they solve.
It only takes a few weeks of slipping up for a code base to devolve into a shitstorm. If we were all working on our own code bases it would probably be fine, but as soon as you add another person to a code base you’re running into a problem. At least we’d be able to quickly remember what we did and rework it. Not so when you’re reading other peoples code. Reading and changing a large existing code base is a lot harder than just writing something brand new.
Filed under: Software | No Comments »
Warning Shot: What is continuous deployment?
In a sentence, continuous deployment is:
On commit to trunk, the code is deployed to production
Why Continuous Deployment?
It requires full automation.
By definition, continuous deployment requires 100% automation. This is a good thing. I don’t see how anyone could think that further automation in an deployment process would be a bad thing. Manual steps only cause human errors and waste human time.
It forces you to do awesome monitoring.
I can imagine an setup where when the CI passes automated testing, it deploys to one machine in the cluster.
The machine is then monitored for say 30 minutes to an hour and it it doesn’t monitize about as well as the rest of the servers in the cluster for the same time period, the build will not go into the rest of the cluster automatically. Additionally other things would be monitored like
Performance. page loads, database loads, server loads, etc.
User behavior. bounce rate, signup rate, call to action rate.
If your integration testing doesn’t already rock, it will now.
Your organization, once dedicated to CD, has a responsibilty to develop and automated integration testing library that let’s you sleep at night.
It allows you to release changes one at a time
Batching changes together for releases kind of sucks. If something goes wrong, you don’t really know what’s causing it.
You can get changes out to the customer much faster
This is huge – you can speed up development from taking 2 weeks on a feature to one, but if getting it out the door still takes days, you haven’t gained terribly much.
Having your product quickly evolving, getting feedback, etc, is a huge win for any company with competitors.
You have more time to drink beers
Less time deploying = more time developming.
More time developing = more time for

photo credit: @joefoodie
Beer. Shit yeah.
Changes are low-overhead, so “low-priority” changes can easily get out the door in minutes
Since you don’t have to go through all the hassles of slating something in for deployment, if you want to just fix a header, you can fix a header and have it live on the site in 35 minutes. If it doesn’t work, just fix it and reploy. Total time is one hour. Any time you are doing any sort of release process, the total time is days, not minutes.
Your work style can be more linear.
Sometimes, because of the crazy release process, you have to start half-ass working on more bugs/features while you walk your bug or features through a complicated release process designed to batch the overhread of a release (aka qa, staging, production, post-production testing). Fully automating stuff can speed this up, but it’s unlikely you’ll get there with CD.
No more releases at strange times.
I’m not sure how most companies deal with this, but when you are doing a large release you often want to do it during off hours in case theres problems and you need to roll back. With CD, you do it whenever the hell you want because the process is practically bullet proof.
And finally, it lets you fly on the back of dragons

photo credit: crazbabe21
(I couldn’t find a picture of a dragon)
Filed under: Software | 8 Comments »
I use the word hate, because I’m angry and this is a rent. Chillllll winston.
Whenever I code in Textmate, I’m drinking the haterade.
I hate that you can’t quickly navigate up a file in Textmate (i.e. forward-paragraph) without either using your mouse or having to use some shitty OSX keybinding (alt-up, if you must know).
I hate that the in the app that I use most, you can’t use the mouse for everything. I use the mouse for most stuff in gmail – an f-ing web application. I use the mouse all the time in Omnifocus. I use all these apps less than I used textmate.
I hate that it’s not open source. If there’s anything I’m going to extend or heavily configure any time soon, it’s my editor. Sure, Textmate is heavily extensibile, but a) there’s probably a lot of stuff you can’t do and b) I tried to mess around with creating custom commands and entered a world full of suck.
It’s not free. I mean whatever, I love paying for software more than I love giving money to drunks. But the mailing list and IRC are relatively empty. I asked two questions and got barely and answer.
It’s only available on OSX. I’m not moving to from OSX anytime soon – it’s like a girlfriend where the sex is really good, but half the rest of the time she suck.
Now now, emacs sucks too
It certainly took me a damn long time to get up and running on emacs.
The lack of a definitive project based system is a huge hassle. Textmate.el is a big improvement -i.e. ido on file relative to where you are right now, but if you try it on a large rails poject, it goes to shit. I’ve literally had to kill Emacs.app 3+ times because I tried to type the wrong thing into textmate-goto-file and it freaked.
I also had to f around with Emacs to get ack in project work as well as textmate, which it now does. But gotofile still sucks because the caching isn’t as nice as Textmate. I could probably try to fix it soon.
Recap – Textmate sucks because
- It’s not free
- It’s not open source
- It’s not as easily extensible
- You have to use a mouse
- It’s only available on OSX
- You have to use a mouse.
- Did I mention the dependency on the mouse?
Recap – Emacs sucks because