February 2012
1 post
Ryan's Tech Tools for newborns
On Twitter I mentioned that being a parent of a newborn has shown me how many iOS devices I actually need in my life, and that the answer is “3-4”. In this entry I’m going to (quickly) explain what I mean. My current “happy baby” make up, hardware wise is: 4 iOS devices (2 iPhone 3GSes, 1 iPad, 1 iPod Touch 2nd Gen) 1 iHome radio/speaker set. The iPod Touch is...
Feb 12th
January 2012
2 posts
1Password Hint (Because I'm not just about...
I like to complain about things, but I have to do a tip today. Quickly. I use 1Password a lot. I’ve used 1Password since 1970 on my AT&T Unix machine. Ok, maybe not that long. But really long. Some websites have acquired multiple passwords that I’ve stored in 1Password. Maybe because some website’s policy is to make you change you passwords once every 6 months,...
Jan 26th
The Talent Crunch: Not where you expect it
The Talent Crunch - not where you expect it There’s a talent crunch in technology today, that much is true. Everyone says they can’t find enough rockstar/ninja coders for their San Francisco based startups, paying slightly less (or a lot less) than market rate for some percentage of equity, where engineering is expected to work 60-80 hours a week. All while non-technical cofounders...
Jan 7th
1 note
December 2011
2 posts
Using Mutt on OS X - tips and tricks
Introduction A few months ago I switched to Mutt as my email client. I used my previous email client for 14 years, and had accumulated 150,000 messages. Yes, I had been using the same email client since 1997. Since then a lot has changed in the online world: the rise of IMAP, Gmail making webmail a viable first option for a lot of people, etc. Some of these changes my old email client...
Dec 30th
Writing behaviors
I’m a big fan of behavior driven development. I like getting a vague ticket, sitting down in front of the product manager and having a conversation. Say we are building a banking application: Me: “It says here the system should find duplicate records. What do you mean by duplicate?” Them: “Any record with the same amount and made on the same date” Me:...
Dec 13th
November 2011
2 posts
Writing tests
Sometimes I feel bad when writing tests for a bit of functionality ends up taking “so much time”. Then I think about how long it would have taken to get right without tests. Not just time as in hours to implement, but calendar time involved. You do it once, submit it. The client says “this doesn’t work”, and you fix it. And usually you do this pattern at least once. Now, each...
Nov 29th
A brief history of homosexuality in the UK (and...
My wife brought this clip to my attention today: Little Britain: The only gay in the village It’s a clip from the BritCom Little Britain. The plot is that one man thinks he’s the only homosexual man in the village, but lo and behold, there’s a new person in town - a homosexual male hairdresser. Wow. To me this seems to be on par with a German sitcom bit about the only Jew...
Nov 11th
October 2011
4 posts
How to get people to work for free on your project
A post on Reddit’s r/forhire has gotten some attention in that community over the last day or so. The basic premise is: “Some people don’t want to look at jobs offering only equity compensation”. Including me. I’ve written about this before, but I am Not your perfect elephant. I’m probably not going to work crazy hours and be super first-love passionate about...
Oct 28th
Using Foreman to manage your (development only)...
Often developing Rails apps I need several things running at the same time. Rails server, beanstalkd, background processor etc. This is not a new problem, and the Foreman gem handles this very well. Most of my deployments are on Heroku. Heroku gives me easy scaling for early stage startups, letting my customers defer the harder deployment problems until they really have to. Heroku gives my...
Oct 28th
Presenter Pattern and rails: my workflow, gemified
In the Presenter Pattern, Rails 3 and html_safe I made a promise: I need to spend some time and talk more about my structure for Presenters, but that’s fodder for another article. Today I started a new Rails app for a client, and wanted to pull in my work with presenters. So, the answer was either copy and paste all my code into this new app, or write a gem. So, gem it was:...
Oct 20th
The 99%
Megan McArdle’s piece on the 99% has an excellent graph of jobs vs unemployeed. I have two questions Where did these numbers come from? Are they the official unemployment numbers (U-3), or the (probably more accurate) U-5? Why does the “Number of Unemployeed” graph go up so steeply in 2008 to (about) mid 2009? These are the things I’d like to know
Oct 10th
September 2011
1 post
Presenter Pattern, Rails 3 and html_safe
I’ve been playing with the Presenter pattern lately, and ran across an issue: it felt like I was writing a lot of HTML in a .rb file. First off: there doesn’t seem to be any real resources into getting into Presenter patterns in Rails. Or rather, there are a few from 2008, but nothing modern. (Except draper, which I think is too complex. Or I don’t yet understand why it needs...
Sep 23rd
1 note
August 2011
2 posts
SASS variables and the Rails 3.1 Asset Pipeline
I’ve been playing with Rails 3.1 lately, and ran across a leaky abstraction in the way the new Asset Pipeline handles SASS, variables and mixins in particular. In my project I wanted to create a SASS file with global settings. For example: $tip_background_color: #AFFFCB; $border_style: thin black solid; $shaded_background: gray; These SASS variables I could then reference from other...
Aug 17th
1 note
Creating a gem that works on both Rails 3.0.x and...
Today I was trying to create a Rubygem that can be used with Rails 3.0.x or Rails 3.1.x. I bundle gem created the gem, and got busy figuring out how to specify my dependency on two version numbers. Introducting the spermy operator The Spermy operator in a .gemspec file lets you specify a dependancy where you don’t care about certain levels of version numbers. For example,...
Aug 14th
July 2011
2 posts
Sometimes you ARE going to need it
So one of my clients is a typical “iPhone app with a web backend” type project. I ask one of my guys to give me a web backend. If I had done it, I would have implemented the web backend in Padrino, for Ruby, and had everything return JSON I like Padrino in this case because it’s a very small framework, for writing small web apps - like APIs. I believed that A bunch of views...
Jul 12th
Finding the perfect elephant
grossberg Email: “I am hoping to meet a development resource for a startup project I am working on”. What does that even mean? A twitter friend of mine posted this today, and I thought a longer reply was worth while. You see, too often I see people trying to find “the perfect elephant” for their pre-cash startup. There was a lot of jargon in that phrase, so let me unpack...
Jul 5th
April 2011
3 posts
Fighting with Ajax, Redux
My previous blog post was about me tearing my hair out with a JSONP request. All afternoon, acutally. Want to avoid that same level of pain? Take a look at a sample repo I just put up on Github that uses (the very helpful) Roberto Decurnex’s Rack JSONP Middleware. Which, once Roberto told me how to set it up, worked great Ahh yes, the sample repo: Rack JSONP example. Look through the...
Apr 20th
Fighting with Ajax
I just had a very frustrating day fighting with Ajax. I thought I’d document some of these things. Does your GET or POST hit the server but you see no response data come back? I saw this because I was debugging this in a separate file (using Open File in my browser), outside my (Rails) project. WTF I thought Turns out that even though I thought it hit the server, it was returning no data...
Apr 19th
2 notes
My mobile setup - Rails development on the Road
Introduction The last two weeks I’ve been on my honeymoon. However, there is a disadvantage of going on vacation when you’re self employed - that means no money is coming in either. To keep some small amount of money coming in I put in 2-3 hours a day of work, during downtime. This happened to work for the clients involved, so it all worked out. However, I knew I didn’t want to lug my main...
Apr 3rd
1 note
March 2011
3 posts
What makes a good programmer?
So, I guess this is part II to my previous article “How do you know if you have a good programmer?” On Hacker News there was an interesting comment: - Can they get things done? - Can they act on their own initiative? - Can they think 2 steps or more ahead? - Can they code? Can they code well? - Can they think and think well? Can they think *independently*? I...
Mar 18th
How do you know if you have a good programmer?
So there’s this question is management: “How do I know if this coder I have is any good?”. The answer is simple: Perform a 360 degree review. Get opinions on this guy from other developers, manager the programmer works with, etc etc. Now that you have that baseline of information, and have many opinions from technical peers / team members, sit down with the coder and watch...
Mar 7th
Expectational Debt
I was listening to 5by5’s Back to Work’s latest “Expectational Debt” episode. One great way to get a lot of expectational debt? Work 60 hour weeks for 8-10 weeks straight. And this expectational debt, in my case, involves stupid stuff that I’d be able to do with a normal 40 hour week. Like “hang out with my wife more”, or “answer personal email better”. It’s...
Mar 2nd
February 2011
2 posts
Churn
I believe I have stumbled upon the very definition of churn: The Story For a certain project of mine, I originally implemented the system to support many “legal letters per case”. Fast forward a month later, where we are told by business to only support one letter per case. After questioning them explicitly and incessantly about “are you sure you’ll only ever send one...
Feb 26th
Lessons learned over the last 72 hours
My current project is crunching hard towards a release. This weekend was release weekend. I learned the following things: It’s important to know when you’ve hit 0 productivity. Sign of this: looking at your Skype windows, then switch Spaces to GitHub, then switch spaces back to your Skype windows, then switch Spaces back to Github…. and repeat. Congrats - you’ve reached...
Feb 14th
January 2011
2 posts
Categories of bugs
Common bugs categories I’ve run into over the years: Customer to me: “I told you to do that, why didn’t you?” Customer to me: “I didn’t tell you to do that, why didn’t you?” Customer to me: “I didn’t tell you to do that, why did you?” Users to me: “wow, this part of the app really sucks” Me to computer: “Why...
Jan 31st
Creating a new Ruby Package (and putting it up on...
So, in the sprit of the previous article on this blog, I’m going to document how to make a Ruby package and put it up on RubyGems. Create your project. You can use Jeweler for this, or newgem. I like newgem, because I’m familiar with it. The instructions in this article assume newgem infrastructure * hack hack hack* * hack hack hack * $ rake check_manifest. Your manifest...
Jan 27th
December 2010
1 post
Creating a new Python Package (and putting it up...
Creating a new Python package OMG this is easy, why haven’t I done this before? NOTE: you can ignore github-tools — really that is meant to only help the gh_pages documentation generating. And, in fact, we have some pretty awesome tools without it!!! $ paster create -t basic_package PACKAGE_NAME * hack hack hack* * hack hack hack * Test install it somewhere with: $ pip -e...
Dec 29th
November 2010
1 post
Selecting text in screen and coping to Mac...
I’ve moved a lot of my day to day development to happen inside of GNU Screen. I’ve learned about selecting and copying text to the Mac OS X clipboard, so I thought I’d share: Enter Scrollback mode: Control-A, then [ Use arrow keys to navigate up, or across. Control-U scrolls up half a page Use the LEFT and RIGHT arrow keys to move. vi commands seem to work here too. Press...
Nov 20th
September 2010
2 posts
I think I get BDD now (and why we don't have tools...
Disclaimer: The Road I’ve been on Let me start this off saying that I’ve never worked in a strict Agile shop. The kind of “story cards on the walls, pairs of programmers, onsite client” strict Agile shop that does things very close to what the book says. Oh, I’ve been on projects that give lip service to agile. Some of them were awesome teams, in spite of not...
Sep 25th
On why programmers (might appear) arrogant
This question was asked on stackexchange.com. I responding, and I think my answer may be enlightening.
Sep 19th
August 2010
3 posts
Aug 28th
Loading & Handling Vim plugins that require...
I like playing with vim sometimes. One of the neat features of Vim is that you can compile it with support for other languages (Python, Ruby etc etc). With Vim support for these languages, you can also write plugins, for Vim, in these languages. Without? You have to use VimScript. So, if I was to write a Vim plugin, I would do it in Ruby or Python. Great. Except these plugins depend on...
Aug 16th
Bug reports
I handle bug reports much better if people say exactly what’s wrong, other than “it doesn’t work, here is the logic you were supposed to implement”. Because seriously? If you repeat back to me the logic you want me to implemented, especially after we spent a good portion of a day a few days ago verifying that it works… don’t come back to me and say “it...
Aug 12th
July 2010
2 posts
On Story Points As A Programmer Metric
So, my current project uses story points to track developer productivity. This is good (it’s better than some other metrics, like lines-of-code-per-week or something), and bad. For example, I just completed about one week’s worth of story points in about 3 hours. There are a few potential reasons for this: Story point inflation: over time the numbers might get bigger The initial...
Jul 30th
On Rates
So there’s been some buzz on the blogosphere, and the twitter, about ADA Winner Mike Lee’s rate ($1,000 / hour). (Three articles: original, follow up from Mike, and a response. (There’s also an excellent point by point rebuttal to the response article on the comments of the same, which is essentially a blueprint of how to make a rational argument on the Internet. Read this...
Jul 2nd
June 2010
2 posts
Today's lesson from Dreaming In Code
From Dreaming in Code (page 119 in my paperback edition) … I heard this principle from a veteran software developmer and author named Dav Shafer who had come on board Salon in the early days to try to bring our ambitious but naive crew of journalists up to technical speed. When we scratched our heads about how slow work was going on Table Talk, an online conference system we had rashly...
Jun 29th
Yikes...
Project degrading fast. Given this rate of decline, asking a simple question next week (like “Do we have tape”) will be met by blank stares, contradictory information, and three meetings.
Jun 14th
May 2010
1 post
Question to Agilists: Story Points vs Super...
Agilists: So Scrum uses story points to be able to plot size of tasks and (ultimately) plot how how long a project will take to accomplish. So there’s a decent sized meme out there about top programers being 2-10 times more productive than their counterparts. My questions to agilists is: in a normal scrum shop, do you see this correlation too: do your top performers complete 2-10 times...
May 10th
April 2010
4 posts
Git Workflow Pain Points
Writing this down here so I can remember it and do research on this later (looking at Mercurial’s MQ - patch queue extension in particular) Remote branches + collaboration means lots of intermediate commits (as I pass code back and forth to my pairing partner) I’d normally rebase away, but can’t since they are pushed Git commits + bisect hygiene The fact that a normal...
Apr 26th
Adding trailing whitespace highlighting to EVERY...
So today the topic of trailing whitespace came up. Git complains about trailing whitespace, but only in the diff: wouldn’t it be great to see this in your editor? I did some Googling search around, and found remy sharp’s b:log: Trailing white space in TextMate. I uses a similar technique to my Adding #pragma mark to EVERY LANGUAGE you work with (in TextMate): create a source bundle,...
Apr 22nd
My wife's insights into the development process
Today, after talking with my wife about a particularly “interesting” day, she said: So sometimes my coworkers ask what it’s like to be a computer programmer. After watching you work, listening to you on conferences, and hearing you talk about it, computer programming seems to me like… On your projects, it seems that sometimes you have someone yelling at you:...
Apr 17th
Adding #pragma mark to EVERY LANGUAGE you work...
If you’re an old school Mac hacker you know about #pragma mark. I’m told this started with MPW, then was implemented by every IDE on the Mac since that point. (I think I started using it under CodeWarrior, but I think I preferred BBEdit’s implementation at the time). Anyway, moving to other languages I’ve missed this way to organize code. Today I got frustrated and...
Apr 7th
March 2010
1 post
No Way to be blameless
Introduction This is the first entry on my new personal blog. At some point I’ll move over my old personal blog entries into this system. I like using a personal blog, in addition to my business blog, because there are some statements I don’t really want to be associated as Official Words From Wilcox Development Solutions. Especially articles like this one (all about self doubt). ...
Mar 23rd