Monday, July 12, 2010

My Problem With The Relational Database

I build modern applications using modern tools, but I have to put an inordinate amount of effort into what is essentially screen scraping an interface from the 70's.

Let's not throw the baby out with the bathwater though. The RDBMS is built on a solid foundation: relational theory. It's interface needs an upgrade to play nicely with modern tools. SQL is not that interface. But I'm not sure what is.

Tuesday, March 16, 2010

Why do I have so many boxes underneath my TV?

These are all the boxes that live underneath my TV. Nothing too exciting: DVR, receiver, Blu-Ray, Wii... The most exotic toy is the AppleTV.

So why am I bothering to post this? Because this article got me thinking: that's a lot of shelf space for hardware.

Seriously! It's a a couple optical readers and a couple hard-drives. You can fit those in a backpack now. Why do I need two whole shelves when I connect them to my TV?

Granted, I can't fit everything onto PC hardware, we're actually rather close. With a Windows Media Center (gasp!) we can consolidate the AppleTV, the Blu-Ray, and the DVR into a single box. My question is: why is it so hard to find a box that does this? and why is it so unusual to try?

Friday, February 12, 2010

Loader constraint violation when trying to generate an AXIS WSDL.

I've got an RPC style web service implemented using Apache AXIS. It was developed using JBoss 4, but when I deployed it on JBoss 5, I got this nasty error:



There seems to be a conflict between axis-jaxrpc*.jar and JbossWS. Both of them contain definitions for the QName class.

The solution? When using JBoss 5, exclude axis-jaxrpc*.jar from your WAR files.

Thursday, February 11, 2010

Upgrading to JBoss 5 - JBossXBRuntimeException: White spaces are required between publicId and systemId

I have a WAR file that deploys and starts fine in JBoss 4. When I deploy it to JBoss 5 though, deployment fails with approximately this stack-trace:



Directly above that trace, I notice that it's trying to resolve a bunch of Spring schemas. In particular:



A grep of my project tells me that that schema is referenced in only in my applicationContext-hibernate.xml. According to this post (), the error occurs because JBoss is attempting to validate that file, but fails for some as yet undetermined reason. The current solution is to move applicationContext-hibernate.xml to a sub-folder, on the classpath, below WEB-INF (ie. WEB-INF/classes/applicationContext-hibernate.xml). Make sure you update all of your references to applicationContext-hibernate.xml including the command that builds your WAR.

Wednesday, December 9, 2009

Magic Incantations for Installing asdf-install in Clozure Common Lisp

I'm on my way to bed, but I wanted to document this first.
  1. Follow the instructions here: http://common-lisp.net/project/asdf-install/tutorial/setup.html
  2. Skip the command "(asdf:operate 'asdf:compile-op :asdf-install)". It didn't run for me, but everything seems to work fine without it.
In my case, that means adding the following to my openmcl-init:
(require 'asdf)
(pushnew "/Users/matt/lib/asdf/" asdf:*central-registry* :test #'equal)
(asdf:operate 'asdf:load-op :asdf-install)
None of the other results in Google had it quite right, and they sent me on an hour long wild goose chase.

Saying stuff like "(asdf-install:install 'md5)" now works.

Monday, November 16, 2009

The Flattened Requirements Matrix

I have no idea if something like this exists in the project management literature (ick, project management), but it's a hack I'm in the processes of putting together because I'm sick of less organized projects spinning out of control.

Here's the scenario: I have a ton of new features I need to spec out and a developer who will be doing most of the coding. I also need to make sure it gets done "right". Of course we're using my definition of right here because I'm in charge (sorta)... YMMV.

I don't like long spec docs. And saying "make it do this" never works. The outcome is never the correct "this".

Instead, this is what I'm trying.

I have a Google doc and each feature is a heading. Under the heading I have a paragraph describing what the feature should do. Below that I have subsections titled "depends on" and "dependents". Each is a list of links to either more specific features or back to more general ones. I repeat until people stop asking questions with "obvious" answers... assuming they actually read it.

I call it the Flattened Requirements Traceability Matrix

Friday, April 10, 2009

Making Django's Built-in Auth Tests Pass

Django (web framework)Image via Wikipedia

I added the built in auth framework to a relatively fresh Django project today, and upon running my tests, I got a large number of failures coming from auth. This problem does not appear to be fully documented so this is what I did.

First, notice that most of the errors are template missing errors. Fix these by
  1. Installing the admin tool. Auth relies on some of its templates.
  2. Stub out any other missing templates (ie. login, logout).
Next, the test cases will complain about missing text in your new templates. Just add in exactly what its asking for as plain text.

Finally, some of the password reset tests were complaining about getting redirect (301) codes instead of success (200) codes. This was an error on my part. They're looking for a link in the password reset email and GETting it. I wrapped the link in an HTML anchor, and the regex in the test was grabbing the closing HTML tag. Removing the HTML fixed that problem. Finally, I just had to add some missing text as above, and all the tests passed.
Reblog this post [with Zemanta]