You're knee-deep in a sprint.
 
 
 A teammate is out sick. Product wants the filtering module updated by EOD. You’re juggling two different refactors and a Slack thread that just won’t die. You think: 
 
 “I’ll just ask ChatGPT for the price filtering logic — it’ll save me an hour.” 
 
 
Fast forward: the code runs, the tests pass. Ship it. 
 
A…

I've been helping teams and organizations improve their approach to agile and lean delivery for a decade now, and by far one of the most difficult things to wrap one's head around is the idea of iterative delivery of value. I don't know about you, but I'm tired of these various hypothetical images depicting what agile delivery is supposed to look like. Is it a skateboard that becomes a car?…

 
What problem are we trying to solve?
 
 
 You're a software product team. Your job is to steadily deliver working product. Generally this means there's two types of work you're going to do: 
 
 Work that directly correlates to delivering value to the customer 
 Work that directly correlates to the ability to keep on delivering value at the same pace 
 
…

GenStage is a miracle of UX for developers. There's only one catch: because of its purpose, it's built for the machine, not for the developer. Let's go over what GenStage is for, and see just how simple it is to start using it. 
 
 
Why would you use GenStage?
 
 
 
GenStage is what you would use if you had 'some work' ( events ) that needed to go through one or…

 
Choosing the right editor
 
 
 
 
Intro: My editor history
 
 
 
Here are my 'credentials'. You know, establishing why you should be reading this at all. 
 
When it comes to editors, I've honestly fumbled around quite a bit in the past fifteen years or so. I had not encountered an editor until some dude taught my Comp Sci 6/9 class and…

Part of being a professional programmer is learning new languages (seriously — past a certain point, you should be fluent in a couple of languages, but that's another blog post), and part of being a good programmer is being effective at doing so. The very first step in learning a new language is being able to write some code with it. Further steps usually involve mastering the syntax as well…

I just found a great example of the variability of the need of creating maintainable code. 
 
Somewhere around 2006, I created a script that posts to the Livejournal community daily_tao a new chapter of the Tao Te Ching every day. Today in 2016, I had a need to look for the script, the second time in maybe the last eight years that I had to look at it. 
 
I temporarily wasn't…

 
The value of a rapid test suite
 
 
 
 
Developers and codebases
 
 
 
The bare minimum required of a developer is 'make this change without breaking anything else in the code', and if you've been around software development for any period of time, you know that's harder than it seems. 
 
Most of the time that a developer spends on any given…

 
Elixir, because:
 
 
 
I think of Elixir as an idea whose time has come; or rather, a great gathering of ideas. 
 
 Erlang has solved the problem of distributed computing (and therefore, of concurrency) decades ago, and now concurrency is a very desirable tool, as the amount of data we crunch regularly has increased exponentially. 
 TDD has brought a more…

 
What this entry is and is not about
 
 
 
This entry talks about estimates in a relatively perfect world. This entry does not talk about problems that teams run into when dealing with estimates in a world where estimates are often misunderstood and where parties try to pile up additional meanings and metrics to estimates. 
 
 
 
 
Why talk about…

Someone I worked with once said, 'The code didn't demonstrate that I hit a wall, just that I understood a wall existed.' 
 
This colleague had been using the technique of Test-Driven Design (TDD) to methodically get the codebase up to a point where it could be refactorable and, at the same time, to a point where a problem with the current design decisions could surface.
He was…

 
Spreadsheets
 
 
 
Spreadsheets are evil. And do you know why? Because they're too powerful. Here is the sweet spot of spreadsheets: tables of related data on which calculations need to be made . Here is not the sweet spot of spreadsheets: everything else . 
 
Spreadsheet software is so powerful nowadays that you can make visualizations for almost anything. And…

Shu Ha Ri comes from the world of Japanese Noh theater, and has been since attached to the world of martial arts and <a title='Alistair Cockburn's words on Shu Ha Ri' href=' http://alistair.cockburn.us/Shu+Ha+Ri '>Agile development</a>. Roughly, 'shu ha ri' means 'learn / detach / transcend'. The link has some words about that meaning. I'd like to talk about my particular take on Shu Ha Ri,…

 “Life is going to present to you a series of transformations. And the point of education should be to transform you. To teach you how to be transformed so you can ride the waves as they come. But today, the point of education is not education. It’s accreditation. The more accreditation you have, the more money you make. That’s the instrumental logic of neoliberalism. And this instrumental…

So, the litany against fear goes like this: 
 
 I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain. 
 
 
And here's my…

I'm back from Rubyconf. 
 
Some people say Ruby is dead. We can probably gloss over Zed Shaw's famous <a title='Zed Shaw's famous rant on the Rails community' href=' http://web.archive.org/web/20080103072111/http://www.zedshaw.com/rants/rails_is_a_ghetto.html ' target='_blank'>rant</a>, since it's from roundabout 2007. My understanding is that the thought came about because of the…

The first class went really well. 
 
My teaching tempo is still pretty good, though I did underestimate how much information I was giving the new students. Next time, I need to make sure I don't overwhelm them, and keep them to a smaller set of basics. 
 
This feels right. I know it's what I'm going to keep doing. Now I need to balance continued growth with proper teaching…

<h1>What Sparring Is</h1>
Sparring is a playful and explorative interaction. 
 
Sparring is an exercise, a drill. The Japanese use the word KUMITE - which basically means 'grouped hands' or 'pair hands', 'joined hands', 'hands together' (the Wikipedia article suggests 'grappling hands'). 
 
Sparring is a two-person free-form exercise wherein you get to examine scenarios…

In the dojo where I spent my formative years as a martial artist, there is a school creed. A quick search online has revealed that many schools have a similar creed. Every class says it as we begin, after bowing in, before calisthenics. I hear it and/or say it about three times per dojo night. 
 
It's a simple creed, and clearly not unique. Here's what it says: 
…

Why are these things always so weird? Someday I'll understand why OSX is set up that way. And on that day, I'll probably weep. 
 
<blockquote>$ sudo /usr/bin/dscl . -append /groups/wheel GroupMembership <em>username</em>
<p style='padding-left: 30px;'></p>
</blockquote> 
 
This was found here : https://discussions.apple.com/thread/1230828?start=0&tstart=0

More to the point, should Rails die? 
 
Rails brought a lot of great things - it made it dumb easy to package an entire app together. It abstracted the complexity of the storage layer. It created an entire market. Things like Heroku, Railsonfire/codeship and other companies turned a profit by extending the benefits of Rails. And things like Capistrano were born. 
 
Everything…

 No object should have more than three public methods 
 Objects should not have getters or setters 
 Everything else must be private 
 If three private methods are doing something similar, then maybe those are the public methods of another class 
 Never inherit 
 Always compose 
 Changeability is the most important thing 
 A 'good' variable name is a name that…

I had an epiphany tonight about something that just about everyone knows: the three monkeys. And I wanted to share it with you. 
 
The three monkeys are accompanied by the words: 'See no evil. Hear no evil. Speak no evil.' The funny thing is that one monkey is covering his eyes, one monkey is covering his ears, and one monkey is covering his mouth! Let's examine that for a second.

<h2>You're training wrong! No, YOU're training wrong!</h2> 
 
A recent set of conversations have led me to examine the major difference in martial training. I'm going to start by separating training in two categories, making an imperfect black-and-white model of the martial world: 
 
<ul>
 <li>Traditional eastern training</li>
 <li>Jeet Kune Do-like…

If you're using Devise and rspec on Rails 3, and you want to override a controller, and you end up with an error that makes no sense whatsoever: 
 
 
 
 1
 
 
 Undefined method 'name' for nil:NilClass 
 
 
 
 
well then, you probably want to add the following line to your tests: 
 
 
 
 1
 
 
 @request . env […

This song is at least as old as 1973 and is originally from Italy (Giorgio Gaber - Dente della conoscenza). If you like finding patterns, making analogies and metaphors, and overall pondering, then examine the tooth of knowledge in the contexts of: science, religion, culture, society (etiquette, etc), and finally, the internet. 
 
 
 
(note : 'SHHH' is an inhaling sound)…

Ruby has a neat feature called at_exit which takes a block and then executes the contents of this block when the program ends. There are a couple of VERY important details: 
 
<ol>
 <li>It takes a block and converts it into a Proc object at the time of parsing. This means that the data has to be available in the binding, or you'll run into errors. Example: instance variables need…

The Art of Agile Planning (#aoap on Twitter, and AOAP from now on) is a 2-day course. The focus is on understanding the higher-level constructs of Agile and how they imbricate. In the course, one learns how the ideal Agile team is composed (hint: it's cross-functional and co-located) and what practices and techniques will be used to organize at all levels, from the developers' standup to the…

Here is a thought with which I've been wrestling for quite a while - the focus of society on knowledge and what it could be doing to us as people, human beings, and members of society, as well as to society itself. 
 
<h4><strong>Knowledge is power</strong><em> - knowing more can only help you</em></h4>
In the West (bounded to the east by Russia and to the west by the Americas),…

You can use xargs to grep the same word through different files. But how do you use xargs to grep different words through the same file?
Like this: 
 
 echo 'your fancy word finder stuff here' | xargs -i bash -c 'grep -n '{}' your/file/here 
 
Not something that's useful every day, but when you want it, hot damn is it nice to have.

We've been using git at work for a greenfield project and, so far, this has worked for us. It could be a useful template to get another team started.
We have gotten rid of the name 'master', which is only a convention anyway, and instead are using a few permanent branches:
<ul>
 <li>production (only stable code which gets deployed to production goes there. The only branch to be…

I flew overnight from Vancouver to be with you today. I landed in New York a few hours ago and caught a flight down here because I needed to tell you all in person that I think you’re awesome.
I was raised by a teacher. My mother is a professor of early childhood education. And from the time I went to kindergarten through my senior year in high school, I went to public schools. I wouldn’t…

Une pierre 
 
deux maisons 
 
trois ruines 
 
quatre fossoyeurs 
 
un jardin 
 
des fleurs 
 
et un raton laveur 
 
une douzaine d'huitres un citron un pain 
 
un rayon de soleil 
 
une lame de fond 
 
six musiciens 
 
une porte avec son paillasson 
 
un monsieur décoré de la légion d'honneur 
…

First, <a title='official Ruby site' href=' http://www.ruby-lang.org/en/ ' target='_blank'>get Ruby</a>. Install it as explained on the website. Once you're more comfortable with it, in a few weeks, you can check out <a href=' http://rvm.beginrescueend.com/ ' target='_blank'>RVM</a>. Not now though - you'd just confuse yourself. 
 
The two important command-line tools are going to be…

The Master had been clear on this point - the room was treated so the five physical senses would be useless. When Scott asked how, the Master laughed and told him it was magic. Scott had chuckled and shaken his head. Clearly, no point in arguing - not today's knowledge. 
 
Scott blinked and the test began. He relaxed and extended his consciousness into the ground below him and around…

Sensei helped me figure out that my punches are all wrong, and the issue has been traced to lower back muscles. Thankfully, I've got tons of subway time now, so I can practice standing. For those of you who don't study martial arts… That last sentence is not a joke.

On Monday, April 26th, I am starting a new job at Cyrus Innovation. It may well be fair that I am starting a new career - it's a hop, skip and jump for me. I'm switching from Systems Administration / Tech Support / Hell desk (not a typo, sadly) to Development / Programming. 
 
I am very much looking forward to it. It means a hobby/job switch: I will now do sysadmin stuff as a hobby,…

Hooks are a fascinating bit of Ruby magic. They are methods you can define with actions to run when something happens. You can put triggers in your code. 
 
<a href=' https://web.archive.org/web/20130210090846/http://www.khelll.com/blog/ruby/ruby-callbacks/ '>This blog post</a> explains them very well; and for more information, get 'Metaprogramming Ruby', which is a great book - not…

On February 28th, 2010, I took the test to become a second-degree black belt. 
 
Here is a summary of what I had to do, besides the calisthenics: 
 
<ul>
 <li>All my empty-hand forms, opposite side. There are eight of them. This meant that if the first step was with the left foot, I had to do it with the right foot. I suppose you could also call that 'mirror'. The names…

I will readily admit that I don't know all that much about Github or Git for that matter. I use them, they're handy, and that's where it stops. I read about a git feature called 'smart HTTP', which would allow to communicate both ways with git (push and pull) with HTTP or HTTPS. So, I asked Github about it - it would be nice for them to have this feature, because I currently can't push to…

Last night, after some kicking drills and sparring, sensei entrusted the adult class to me and told us to work on kusanku. The 'adult class' yesterday consisted of three sankyu.
I looked at the clock, rubbed my hands together and said 'Alright everyone, we have twenty-five minutes' worth of kusanku. Let me know if you have questions or doubts.' 
 
When we had finished walking…

There are a few gotchas: 
 
 If you have a SSD drive, you need to <em>modprobe pata_sch</em> to see it. 
 when using GRUB, install it on whatever drive the hard drive is, even if it's /dev/sdc – and let your FSTAB use /dev/sda. Chances are that /dev/sda is your liveUSB. 
 In the kernel, in the I2C options, don't let it pick automatically - instead, select the algorithm options…

Let's break the monotony with something funny: 
 
The English are feeling the pinch in relation to recent terrorist threats and have raised their security level from Miffed to Peeved ' Soon, though, security levels may be raised yet again to Irritated or even A Bit Cross. The English have not been A Bit Cross since the blitz in 1940 when tea supplies all but ran out. 
…

I was working on a parser for a very specific tree structure, and was frustrated that there wasn’t a simple way to parse it in irb. 'What??', I thought. 'I have to use my brain?! God forbid!'. So I set to using my brain a little more to create this tool. It’s not much, but maybe it’ll make someone’s life a little easier. 
 
Install: (set up gemcutter)
 gem install ListBrowser

One can't actually move a remote branch, but you can copy a branch and delete a branch, so… 
 
Copy oldbranch in repo to newbranch . 
 
 
 
 1
 
 
 git push {repo} {oldbranch}:heads/{newbranch} 
 
 
 
 
Ex: git push origin foobranch:barbranch 
renames foobranch to barbranch 
 
Remove a remote branch: it’s all about the colon!…

I don't really have a better name for this. It's also not completely clean, but it works. I had, almost a year ago (362 days ago), written a blog post about <a href=' http://trevoke.net/blog/2008/12/20/lexicographic-permutations-in-ruby '>lexicographic permutations</a>. That was about permutations of elements within one array.
Someone on ruby-forum asked about permutations between…

<a href=' http://railsblogger.blogspot.com/2009/03/in-queue_15.html '>Calling RAKE tasks within the Rails environment</a>. 
 
Good to know.

I came across this beauty in some old code of mine: 
 
 
 
 1
 2
 3
 4
 5
 6
 7
 
 
 def same_modality? list 
 check = list [ 0 ][ 0 ] 
 list . each do | i | 
 return false if check != i [ 0 ] 
 end 
 return true 
 end 
 
 
 
 This was 'necessary' because I got an array of one-element arrays back, and…