My team is always looking for ways to improve on quality and one of the proposed ideas this year was to follow a model similar to large open source projects where basically every checkin is first proposed as a diff/patch and then vetted into the code base AFTER review.
Our current setup is a single large subversion repository where our team (~14 developers) all checkout the entire mainline branch we're working on and make commits to mainline as desired. Bugfixes are typically checked into mainline, then merged as requested by QA into the appropriate build. Once checked in the bug is updated in our bugtracker and handed over to another developer for code review.
But of course, the code is now already checked in, and we're in a state of flux until the second developer gets around to reviewing the code. If problems are found (more often than you might expect) then subsequent checkins are made and not only is mainline in a state of flux (what happens if QA branches here?) but we also have lost the nice clean atomic nature of a single checkin. Merges get harder and tracking the code associated with a bug is just a tiny bit more overhead.
I also believe that knowing a checkin has already been committed does something mentally to the reviewer. It's no longer as easy to request changes that might seem superficial or strictly style based. In the back of your mind as the reviewer you know that your comments will introduce a messy string of commits that you unconsciously weigh against the importance of your review.
Our QA lead has often suggested a solution to this problem where code reviews must be done in person and before the checkin. As much as I can see the improvement this would have on quality I personally have issues with the frequent interruptions and delays this would add to the process. Not to mention the challenge of working from home and/or late. Not a good idea.
So patches it is. I managed to convince my team leads that this was worthy of an experiment and so we chose three people out of a hat and for two weeks it was patches and only patches for all bug fixes. For those two weeks we would use TortoiseSVN to create patches of our changes and attach those patches to bugs in BugTracker. A reviewer would examine the diff rather than a subversion commit log and the process would repeat until the developer got it right.
I liked the process, but overall it just didn't really fly with the test group. Here are a sampling of some of the reasons :
Complexity in managing multiple ongoing bugs at once
Reviewing via diff lacked enough context, whereas reviewing a subversion log using TortoiseSVN actually let you see the entire files with highlighted differences
Adding binary files seemingly couldn't be done in a patch (rare but annoying)
Extra steps required are often slow on our repository because of size
What's interesting is that in retrospect I am having a hard time seeing what the real issue here was. I believe that with diff being as standard as it is and the tool support available out there that almost all of these issues can be solved with some infrastructure and automation around the process. As it is the resistance to the idea and my unwillingness to force unnecessary process has killed this effort for now.
Given the size of our team and the fact we are all working with fast direct access to subversion it's hard to justify needing to work with patch files. Particularly since "revert changes from this revision" is so easy to do.
I do think this is one of those things worth pushing again, I may just have to do the legwork to smooth the process and prove the utility before getting everyone on board.
So when I started this blog I wanted to make a point of not posting one angry rant after another. Essentially trying to follow the sage advice of bloggers like Scott Hansleman who says amongst other advice to: “stick to a topic”, “avoid politics”, “don’t blog bile” …
Well I’ll break all those rules now by pointing out my extreme distaste for a series of ads being run by the international fund for animal welfare (IFAW). You can see the ads at stopthesealhunt.ca which basically attempt to use guilt and self perceived shallowness to make people act.
Here are some examples of the ads being run at bus stops in my city :
Let’s put aside the actual question of whether or not hunting seals is immoral or wrong. The point I want to make is that these ads are based on the idea that somehow local/personal concerns should be trumped by global concerns. That any problems that we have in our day to day lives do not justify anger or action because there are bigger problems in the world we should be solving.
If we as humans actually worked like this we’d be frozen by indecision in simply trying to prioritize our actions in the global context. I believe we just do not work like that. We must continue to act locally, as our communities and our daily interactions with each other are the foundation for everything else we can accomplish. Trivializing one issue because a larger one exists does not nullify the original issue. The bus is late, ok fine that’s a problem. Seals are dying, that is a problem. People are starving, that is a problem. Apparently by IFAW’s logic we would be selfish fools to worry about dying seals knowing that humans are dying.
Here’s a laundry list of some issues I’d rather put effort towards before worrying about seals. (these are from the video above)
800 000 million are starving
one billion lack clean drinking water
two billion lack sanitation
two million dying from aids
Anyway, the point is that these issues are not mutually exclusive. I think cruelty to animals is important, but I’m offended when this type of marketing uses negative appeals to our emotions with flawed logic.
I have been grappling with the concept of a rewrite of a relatively successful software product that I’ve been involved with since start-up mode. In truth I was googling for compelling stories about why NOT to disappear for a year to do a complete re-engineering of your product (ala Netscape). Mostly because I’m concerned about the size of the effort and the resources we have to pull it off. Instead came across this article, espousing the need to fire all your developers!
Well I’m the guy who’s been promoted to a more senior developer role (not architect, our group shares that responsibility) but still by Mike’s logic the guy who should be fired (?!). I’m the guy who now is learning the ropes in management and who happens to really know the product and the business but now swimming in very exciting waters when it comes to our rearchitecting plans.
What I do have going for me is an incredibly strong team to work with. I’m undecided yet as to whether we actually need an ivory tower architect or if our guys can work this with the guidance of our CTO. We’ll see, as it’s still not too late to change course.
In any case I think I’ll keep an eye on more perspectives like Mike’s…
Depending on how I choose to count I am now dealing with my fifth or sixth post-secondary institution in my odyssey to finish my computer science degree. One thing that all of the schools I’ve dealt with have had in common is a slow and inflexible bureaucracy.
Of course as a younger man I blamed a lot of my own failings on what I perceived then to be a completely fucked up system (University of Manitoba) that was screwing me over. I paid them for a service and yet the treat me as if I should feel lucky to be there! (Can you imagine dealing with thousands of similar minded young punks who couldn’t be bothered to actually read the calendar??)
In retrospect though I can see that most of what was going wrong for me was based on my own mistakes and a failure to read the fine print. I did terribly in my first year of university (terrible = D average) and was put on probation at the UofM. In my frustration I simply packed up and took my business down the road to the University of Winnipeg. (Which also happened to be much closer to where I was working and living)
Ahh… I remember being so excited about this fresh start, getting away from the inept and massive machinations at the UofM and getting a much more familiar and friendly experience with the UofW (which was about 1⁄6 the size of UofM at that time). It only took registration to completely rid me of my naivety. I had gone from a large university with an annoying but efficient phone registration system to one where I was actually standing in lines and dealing with a slow human process full of uncertainty and questions. Worse, my crappy year of courses of course comes along with me; I’m still on probation and not every course I passed at UofM is even transferable to my new program.
It wasn’t long before I was grumbling and complaining about the inept staff at UofW. I was a little more on top of things this time around though and was able to get through two solid years of course work having properly navigated the probationary process and meeting requirements from the transfer. It was just as I was settling in that I accepted a transfer with work and moved to Vancouver.
By this time I was much better at being a student, having learned my lessons the hard way and I had a certain expectation that future navigation of the university bureaucracy would be much easier. Had I been starting over that might have been the case, but instead I was now dealing with inter-provincial transfer rules and a struggle to get credit for the years I had already put in. I messed around for a few months trying to get into UBC and finally had someone recommend that I try Langara college as it would give me a simpler route into the BC system and transferring from there to UBC or SFU would become much easier.
Langara was great, and because I wasn’t seeking credit with Langara for past work it was basically just a matter of signing up and attending. It all might have worked but ultimately I could no longer afford the time involved in getting to and from school during the work day. And for reasons that are totally beyond me, computer science is still one of those subjects that just does not seem to offer consistent night time access, at least not the universities I’ve been attending at the times I was there.
Which finally has led me to the wonderful world of distance education. For the last two years or so I’ve been attending Athabasca University which is based in Alberta and at the time of my starting was the only fully accredited post secondary institution in Canada to offer a computer science degree.
I should say now that I have been pretty happy with my experience with this school for the last couple years. My transfer process was smooth, the course selection/planning process was easy thanks to some good help from an adviser via email and about my only concern right now is how much respect this degree will actually get once I’m done all this work.
Of course anytime you want to do something just a little different then that’s when you run into the beuracracy and this school was no different. Here’s a timeline of what was involved in challenging a course for credit :
Feb 24 - Email to exam unit to get the professor’s contact info to gain permission to challenge
Feb 25 - Reply with professor name
Feb 26 - Email to professor with short summary and request
Mar 12 - Email the exam unit again asking for a different contact (still no reply)
Mar 13 - Reply requesting I try again and get back to the exam unit if no reply in 3 or 4 days
Mar 17 - Email to professor again
Mar 16 - Professor reply! (need more background for permission)
Mar 20 - Email professor with a customized resume
Mar 20 - Approval! Please contact the exam unit again to arrange
Mar 20 - Email to exam unit asking for next step
Mar 25 - Reply all from exam unit “can someone help Chris?”
Mar 31 - Still no reply from anyone so I submit what I assume is the right form and notify the exam unit that I didn’t want to continue waiting, let me know if I need to do anything else
Apr 5 - the request is approved! course materials are in the mail.
Wow, 42 days from start to finish just to process my request to challenge an exam. That doesn’t include shipping time, or the time it will take to schedule and take the actual exam etc.
I think the big difference between this experience and previous more frustrating challenges with getting things done was that on two separate occasions in this one transaction I had to reach out again in order to get the process moving again. At eighteen I probably would have just written this off as no longer on my plate and waited. If nothing happened it wasn’t my fault. I no longer have murderous thoughts at other’s ineptitude when deadlines pass and I’m stuck in the lurch, I think I just accept that when humans are involved things get slow and error prone. Treat your education like your job and always assume responsibility.
Still, no one enjoys dealing with this kind of crap do they?
This is one of my favorite pictures of my daughter Maggie. She’s not usually this sweet ;-) but at least a few times a day we get a few moments when she’s active, smiley and interactive. I took this picture last weekend, so she’s about nine weeks old here.
A lot of Maggie pictures tend to really distort her, and while often cute they don’t all equally capture that part of her that really defines her personality (in my eyes). The grin here is very recognizable and actually looks a lot like her cousin Josh. I rarely get any sense of what she will eventually look like, but I can see this smile lasting a few years at least.
In the spirit of using the blog as a personal online searchable storage medium here is a playlist of some covers on youtube that I totally get a kick out of… most of these are songs I came across in the past year and am now just logging so I don’t forget them.
Youtube is absolutely full of crap song covers by amateur artists in their basements. I think that’s cool and all, I can imagine myself posting something like that when I was first learning guitar but it’s not something I want to watch (does anyone?). These are a little different and with the exception of the first cover, which just rocks because it’s a wicked song, all do something a little different with the original song.
Fairytale of New York (The Pogues) - The Mahones With Damhnait Doyle (a lot like the original, very good)
Hey Ya (Outkast) - Matt Weddle of Obadiah Parker(very different, I had no idea the lyrics to this song were good. Matt has an amazing voice, wait for the end when he really belts it out)
I might be wrong (Radiohead) - Amnesiac Quartet(jazzy instrumental)
Idioteque (Radiohead) - Matt Weddle of Obadiah Parker(not as good as hey ya, but I happened it across it while looking at the others so here you go)
Who is it (Bjork) - Matt Weddle of Obadiah Parker(it’s a Matt Weddle playlist, this song is much more mellow than Bjork’s version, doesn’t really get good until about half way through)
OMG, I so love this freaky dog robot thing… we need more like this! Truly exciting the kinds of things that are going on, I can’t wait to have a robot servant.
Watch these all the way through, in the following order. The second one is f’n hilarious after you watch the first.
I came across this list of the best 15 science fiction series ever written. The reason I love seeing this is 1) it contains a bunch of science fiction series I’ve already read and thought very highly of and 2) contains some series I’ve never even heard of, which of course is exciting since it means I have some reading to do.
For all I know the guy who wrote the list is totally unqualified and preying on people’s ego by throwing familiar items on a list with a bunch of obscure ones, but I’m gonna go with it.
The series I’ve read so far :
Space Odyssey
I’ve only read 2001 so far, and only just recently. I had a total Aha! moment reading that book and finally getting bits of the movie that were totally nonsensical to me at the time. The book was great, the movie is overrated.
Rama series
My introduction to Arthur C. Clarke (RIP) and definitely my favorite work of his so far. I loved the matter of fact nature with which Clarke wrote, it helped make everything so believable. That and his respect for actual real science which is a total joy to read.
Hitch hikers guide to the galaxy
Douglas Adams is my hero. He is insanely brilliant in the same way George Bush aren’t.
Ender’s Game
Honestly I’ve lost track of all the Ender books, so I may not have read all of them, but I’ve read three or four and loved them all. For straight pure entertainment value I don’t know that I’ve ever enjoyed a sci-fi book as much as the original Ender’s game. I recently got Caitlin to read it and she loved it (she’s not exactly a hard core sci-fi fan)
Foundation Series
I got through all of these and I think all of the robot books as well. Very quick fun reads that had really nice tie in across books. I’m not sure these deserve the top ranking unless we’re just talking pure volume. They were enjoyable but not life changing enjoyable like Douglas Adams or Arthur C Clarke though.
First books on the list I’ll go for will probably be ringworld. This is probably the third or fourth time in the last year where I thought to myself I should read it.