?

Log in

Previous 10 | Next 10

Oct. 12th, 2006

beer

CITCON London

I'm in Germany now. Living the good life of sausages and beer. And going back to school soon to study what I have been practicing for the last several years. It will be interesting since the program will take a much more academic look at what I have been trying to teach myself. The question is always, "can I translate this into what I need to do to make software?"

Last weekend I went to London for a conference: CITCON, the Continuous Integration and Testing Conference. It was really good, and because food was provided by the conference I was able to spend 2 nights in London and not spend even 100 pounds (more along the lines of about 60). We went over all sorts of things at the conference such as what is a unit test, promoting continuous integration, and what is it, how to test different things (GUI, threads (I did that one), etc.). How to track your team and give valuable feedback about quality.

The conference was in the open spaces format. The way that works is that before the conference starts there is not list of presentations. We make them. As the organizers said, "You make this conference. If you don't get anything from it that is your fault." So people proposed things to talk about that they were interested in. After that, during a dinner, we all voted and whoever wanted to arranged the things into a schedule. Then it just happens. The schedule can change at any time by someone walking up and saying that things need to change to accomodate something. You may think that it would be chaos, but it wasn't. Everything worked really smoothly and everyone knew what was happening. And it was not as if there were just a couple of people. We had nearly 100 people there. All contributing and voting, and scheduling.

During the conference we had some fun things just happen. Someone started putting a list of "My favourite tools" on the wall and people started to vote. Emacs lost horribly to VIM! In response someone else put up a wall of "My most hated tools". That one didn't get as much attention since it happened later and a lot of people didn't notice it in time (the conference was only 1 day).

Sep. 7th, 2006

beer

Shurgard errrrm Peoples Storage

So we were moving our stuff to a little storage facility that we rented. I'm a little pissed at them right now because I am pretty sure that we were told we would have 24 hour access. Well it turns out that we only have until 10 PM. So we got 2 shelves moved and then couldn't get back into the elevator. So it will be an early morning.....yay!

Wine really stays with you. After drinking an entire bottle (large bottle too, but it we between Rebecca and me) I still felt a little tipsy until about noon and not quite right until about 5.

Sep. 3rd, 2006

beer

Back from a trip

Got back a couple of days ago from a trip down the Washington coast on my bicycle. My friend Karim and I went from Port Angeles to Portland (via Astoria) for a total of almost 400 miles in 9 days. We took it easy most of the time and had a lot of fun along the way.

Some of the highlights were the logging trucks that nearly killed us, the cars that honked at us, and the people we met. For 3 nights we joined up with this other guy who was going all the way down to San Diego (if he felt like it). Terry Rollins (as was his name, and according to him I was either "Adam" or "Alan") was a lot of fun to be with for a bit. He told us some stories about being on the road (he's done these long trips several times). We also got familiar with how giving people are to cyclists. We got some free firewood, some cheaper hotel rooms, interesting conversation, and just good people.

I think that I'm going to have to do this some more. I finally got to see all parts of the landscape that I had never seen before in a car, and it was much more satisfying to have to experience all of the terrain.

Today we just finished up a yard sale of a lot of our "junk". Some was junk, but some was really just our house sitting on the lawn. Now we need to figure out what to do with the rest of it all.

Aug. 15th, 2006

beer

Back in Seattle

So after an extended leave we are now back in Seattle. We spent about 2 weeks away visiting my parents and then did an unplanned trip down to Wyoming to visit my brother. He had recently been in a car accident and so is laid up for the next several months (shattered his heal and has all sorts of horrible screws in there now to hold it together).

We went out to Montana on Amtrak (Empire Builder line). I think that that really is the way to travel. The seating was roomy, you had food from the dining car which was pretty good (although the server we had was absolute crap).

After we got there we spent a lot of our time going from sporting goods store to sporting goods store trying to get things for the bicycling trips that we are going to be doing. We picked up a tent, some clothes, and a couple other little things. Then my brother had his surgery and he decided that we were going to come down and visit him.

Long trip to Wyoming short: Wyoming is a desolate place. It is dry, hot, and full of dust. My brother was in the middle of renovating his house when he got hurt and so when we got there the floors were half torn up and there was dirt and scraps everywhere. I couldn't stand it so I spent a couple of hours cleaning up until it got to the point that I could stand sleeping there (it had to be pretty bad since I am not exactly the biggest neat-freak on this planet).

Today Rebecca and I were supposed to go on our ride, but both of us were feeling sick. We decided to put it off until tomorrow and spend most of the day sleeping. It seems to have helped and so hopefully we will be on Bainbridge Island tomorrow at about noon.

Jul. 31st, 2006

beer

Quick update

Finished with work on Friday. Kendo seminar (PNKF Seminar) all day Saturday and the morning of Sunday. Kendo promotional exams on Sunday afternoon. Passed my exams so I am now nidan. From screaming to be heard at a bar on Friday, ki-ai throughout Saturday and Sunday I can now no longer speak. I've been whispering so far today and expect to be doing that for the next day or two.

This afternoon Rebecca and I are on our way to Montana to visit with my parents for a while before we leave the country for a couple of years. Rebecca is currently furiously cleaning the house because it may be shown while we are away.

Saw the Greenstage production of Henry VI. They combined all three plays together into a 3 hour production. It was pretty good. The worst part for me was that the mosquitoes came out and started to bite.

Apr. 3rd, 2006

beer

Everything is happening at once!

So, I've been applying to Universities in Germany. I actually should say "I've applied to a University". I applied to the University of Augsburg's Elite Studies Program in Software Engineering.

They accepted me! I'M GOING TO GERMANY!

At nearly the same time (it was all happening at once), REBECCA AND I GOT MARRIED!

Needless to say this has all been a little stressful (college, marriage, work, kendo, etc.) and now I have some stomach problems. It has been great fun all around. I am, however, looking forward to most of it fully sorting out in the next month. Once that is all done I should be able to calm down a little bit and enjoy things again.

Which brings up some fun code that I found at work today:

sub handler {
	if($some_condition) {
		$dbh = connect_to_db();
		# do some stuff that doesn't use $dbh
		#...
		# makes you wonder why it is there doesn't it?
	}
}

sub _do_something {
	# use a variable called $dbh, but it is never declared in here or anywhere
}

sub _do_another_thing {
	# use a variable called $dbh, once again, but it is never declared here or anywhere (once again)
}


All I could guess was that the code inside the initial conditional made a global since it didn't use my. This allowed the other 2 functions to use $dbh. This only worked because the conditional happened before the other functions were called and because this package did not use strict;. It is now cleaned up, but it was really kinda scary. Any small change to that code would have broken it (I would say "thankfully we have unit tests", but alas this code is old and was not covered very well (if at all).

Nov. 29th, 2005

beer

Code Complexity

In "Code Complete" Steve McConnell brings up something called code complexity metrics. He describes one in there were you essentially count up the number of branch points in a subroutine and that is the complexity metric of the code. If you are over 10 then you are probably working with a sub that is a little too complex. I thought that was interesting and I had just recently learned about PPI, so I thought I would give it a try.

I put together a short library (~100 lines) to try this out. It parses some code using PPI and then does some searches on the document for the metrics processing. You get back a hash of each sub in the given code and what the complexity measure for it is.

I gave it a whirl by run in against some code at work. The results were pretty interesting. The functions near or over somewhere around 10 where the ones that we have always complained about being ugly little beasts. I also had it print out the total, average, min, and max for the file it was processing. That gave some indication as to the health of the package. That also worked pretty well in really showed that the modules that we considered to be "Godzilla" modules really were and there was a reason for it: they are just too complex!

Well the other thing that I just thought of is that what the metric really tells you is how many (at a minimum) tests you should have for the given code. Since you really should test every path through the code the more complexity the more tests. And sure enough I think that some of that horrible code that it pointed out has some of the largest number of tests. The other thing is that the tests for that code is usually very complex and hard to follow (which is really not good). That is probably an unavoidable concequence of simply so much complexity in one place. Too many interactions. Too many branches.

If you are interested here are the metrics from the code that I wrote to get the metrics:

bash-2.05a$ ./metrics.pl ../CodeMetrics/lib/CodeMetrics.pm 
../CodeMetrics/lib/CodeMetrics.pm
Total: 10
Number of subroutines: 7
Average: 1.42857142857143
Min: 1
Max: 2

        get_count => 2
        dump => 1
        get_conditional_count => 2
        complexity => 1
        get_document => 1
        get_boolean_count => 2
        get_sub_complexity => 1

Nov. 13th, 2005

beer

Life goes on

Rebecca is down in California right now (since Thursday). Luckily I've had stuff to occupy me.

Thursday: XP User Group meeting at my place of employment. Pretty insane with the number of people we got there (we estimated about 40 people showed up). Ron Jefferies dropped by which was incredibly cool. He talked about story/task breakdown, project tracking, what software development organizations should strive for in terms of visibility, simplicity in design and it's impact on agility. The discussion lasted around 1.5 hours and a lot of good questions were brought up. Afterword we went out to a bar and talked some. I ended up stumbling home at about 1:30 AM.

Friday: Finished up coding for a project at work. I don't want to say it is finished because I know there are a lot of bugs lurking around in there and I've been thinking more and more about RTF lately (especially after the UG meeting). Tried to go to bed early, but it didn't work out to great because the insomnia hit again and I just kinda dozed all night.

Saturday: Got up at 5:30 AM (which wasn't great because of the horrible night's sleep I got). Met up with Karim at his place (he was still asleep when I got there). It turns out Karim had set his clock instead of his alarm and so was rushing all over the place trying to get ready because he thought is was already 8:00 when in fact it was about 7:15. We went down to Renton for the PNKF tournament. Karim did great and got 1st in his division (3-1 kyu). I feel good about my match, but I really need to work on a couple of things. After the tournament was over the sensei started asking me about my future in kendo and all I could say was that I need to get to more practices. It does bring up that I need to figure out how much this matters to me. It does matter a fair amount; I actually feel like I'm missing something after more that a week without doing it, but at the same time I don't have much extra time to get to the practices that I want to get to.

Things To Remember:

  • Promised Neal 2 bottles of Mead

  • Need to send location of the chai house to George

  • Should look at Class::Std again and see if I still need to submit a patch for the bug with stringification

Oct. 8th, 2005

beer

Essential Reading for Software Engineers

I've been doing a lot of reading lately and have come to the conclusion that a large number of the software engineers out there really need to get a good kick in the ass and learn! I've been thinking a little bit about what everyone should know and it comes down to essentially what everyone in every skilled field needs to know: history, trends, tools, and philosophy. There may be other things that are needed, but those are usually already covered pretty well (CS Theory, Data Structures, Algorithms, etc.).

So here is the reading list of what people should nearly be required to have under their belts before they are allowed to work on a large scale project. My feeling is also that if you ever want to call yourself "Senior Software Engineer" (whatever that really means) you should have thought about most of what these books discuss.


  • Code Complete (McConnell)

  • The Mythical Man-Month (Brooks)

  • Agile Software Development, Principles, Patterns, and Practices (Martin)

  • The Humble Programmer (Dijkstra)

  • The Structure of Scientific Revolutions (Kuhn)

  • Decline & Fall of the American Programmer (Yourdon)

  • The Pragmatic Programmer (Thompson and Hunt)



I may add to this list later to swap things out, but the basic idea is there. I think I'd want to put some more short articles in it just because they are a quick way to introduce the concepts.

Tonight: See "Serenity" again and then roast a chicken with stuffing and make a mango cheesecake.

Sep. 27th, 2005

beer

Universitaet

I need to get on top of applying for Universities. This weekend I'm going to spend some time putting together what I need, figure out what I don't have, and make sure I understand what needs to be done.

Tomorrow I've got a board meeting for the XP user group. We'll be talking about XPFest Northwest. Great fun....maybe the beer will be good.

Projects at work are getting a little out of control. Note: When the business says they need to get things "Back on Track" it really means that the dev group is going to be working overtime and putting out lower quality code. I haven't even had time to go back and fix things and still keep things moving forward. So I haven't been fixing things and leaving that for others instead.

Previous 10 | Next 10