Totally Nerdy Information

Mike Heath’s Blog

I was just looking for some Spring documentation when I cam across this posting, http://springframework.org/node/654 that was linked from the Spring home page.  In the picture on the left, there’s a shiny head that I happened to recognize as my coworker, Jason Allen.  I looked a little closer and found myself in the picture.  I’m the guy wearing the black baseball cap on the right of the picture.  You can also see the face of a good friend of mine, Mike Youngstrom, towards the back of the crowd.

openssl s_client

I’ve been playing with SSL client authentication in Apache httpd today at work.  It’s something I’ve always wanted to play with but haven’t had a good reason to invest the time until now.

In the process of testing my configuration, I came across openssl s_client. It’s one of those things I should have already known about but didn’t.  I wish I would have stumbled across it years ago. Basically it works similar to nc (netcat) except you can use it with SSL/TLS. So if you want to do HTTPS by hand to connect to Google you can do:

openssl s_client -connect google.com:443

Google’s server will send back some information about your secure connection at which point you can type:

GET / HTTP/1.1
Host: www.google.com

(don’t forget an extra carriage return after the last line) and happily watch Google redirect you to a normal HTTP URL.

openssl s_client will also let you to STARTTLS with SMTP. I wish I would have known about that when I was building my SMTP server on MINA. I implemented STARTTLS for it and and was an absolute pain to test and debug. Using openssl would have made my life much easier.

GSoC Application Rejected

I’m feeling a little bummed this afternoon. I got the following email from the GSoC people:

Dear Applicant,

First of all, Google and the open source organizations taking part in
Google Summer of Code would like to thank for applying to take part in
the program this year. Unfortunately, your application was not one of
those selected to take part in the program. Universally, the quality
of the submitted applications was very high, but we had a limited
number of slots available. This often difficult decision was made by
the organization you applied to, so any questions regarding
application selection should be directed at them.

We hope you'll consider applying next year.

Kind regards,
The Google Summer of Code Program Administration Team

The $4,500 stipend would have gone a long way towards a MacBook Pro and other fun toys. Oh well. I’ll just have to remain content with my employer issued Dell.

The good news is that I won’t have anything distracting me from getting my thesis done. If you can call that good news…

After upgrading Git to 1.5.4.2, I was having problems checking out projects from Apache’s subversion repository. When I would try to do something like:

git svn clone --stdlayout https://svn.apache.org/repos/asf/mina/asyncweb

Git would output:

Initialized empty Git repository in .git/
Using higher level of URL: https://svn.apache.org/repos/asf/mina/asyncweb => https://svn.apache.org/repos/asf
W: Ignoring error from SVN, path probably does not exist: (175002): RA layer request failed: REPORT request failed on '/repos/asf/!svn/bc/100': REPORT of '/repos/asf/!svn/bc/100': Could not read chunk size: Secure connection truncated (https://svn.apache.org)
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories

It would churn for a LONG while and finally die spewing out:

RA layer request failed: REPORT request failed on '/repos/asf/!svn/vcc/default': REPORT of '/repos/asf/!svn/vcc/default': 400 Bad Request (https://svn.apache.org) at /usr/bin/git-svn line 3813

I Googled for a solution, of course, and didn’t find anything. Git would create a project folder but it didn’t have anything in it except for the .git directory. I tried doing a ‘git svn rebase’ and it would fail. Out of desperation I tried doing ‘git svn fetch’ and voila! Git started pulling down the project and its history. It still takes a painfully long time to find the project’s history and fetch it but the flexibility and dynamics of Git make the required patience worth it.

Who needs an architect?

When I work from our Orem Office, I’m surrounded by people who call themselves ‘architects’. I’ve always hated this title in the software industry. It doesn’t mean anything. If you take a room full of five software architects and ask them what it means to be a software architect, you’ll get five different definitions. My definition of a software architect is “the old guy that doesn’t fit into any other role.”

Apparently Martin Fowler has struggled to find a good definition of an architect too. I came across Fowler’s “Who needs an architect?” article and found it particularly insightful.

ADBCJ 0.1 Release

This past weekend I made a 0.1 release of ADBCJ, my asynchronous database driver framework.  I also wrote a brief tutorial on how to use ADBCJ.  This release is primarily for testing and feedback on the API.  The MINA based MySQL and Postgresql drivers are working well, although they only support int and varchar data types.  I still need to work on some performance tweaking, adding support for pipelining, and adding connection pooling support.  That will all be included in a 0.2 release which I hope to get out late February or early March.

Once the 0.2 release is finished, I will be spending most of my time doing performance testing and writing about the results for my thesis.

« Previous Entries