Archives for: 2005

Dec 23, 2005 : My road trip out west

It's been quite a while since the actual trip (June 22 - 29, 2005), but I promised (and wanted) to blog about this. A bonus side-effect of waiting so long is that my memory automatically distills out the most important parts of the trip. I've forgotten lots of the details already :-)

My photos from the road trip are in my gallery now so I have no reason to procrastinate on this any more.

First, I'd like to direct your attention to the map of my route.

Day 0 Recieved a phone call from Cornerstone University expressing interest in interviewing me. I was excited, but was planning on leaving the next day. Impressively, they found time in about a dozen peoples schedules to interview me the very next morning.

Day 1 Interviews at Cornerstone University, then had lunch with Cherith at Calvin. She gave me many CDs to listen to, and some paper and colored pencils. Then I started out for St. Louis. I spent the night at my friend Andy's house there.

Day 2 Historical Route 66 goes from Chicago to St. Louis down across the southwest very close to where I was heading. So I often stopped at Route 66 curiosities and I spent several hours this day on the original roads themself. They were pretty slow going because its just a 2-lane road with lots of towns having stop lights and low speed limits. After a while I hopped back on the highway. I didn't make it too far that day. I camped at some random state park. I even had to call my friend Chris to see if it was a park or not, the atlas wasn't too clear. Camped right in front of a lake. Quite nice. There were two people out practicing on their racing boats. Those were pretty loud.

Day 3 Got up real early, around 6 or 7 I think, so I could make up for the short day before. Drove and drove and drove. I had to fill up for gas 3 times. Today was the most fascinating, watching the landscenery change into rolling hills of northern Texas and into the red sand and rock formations of the southwest. Awesome. Pictures don't do it justice; as they don't for many other parts of the trip either. In McLean, TX, I stopped at the Devil's Rope Museum. Tons and tons of stuff about barbed wire. I bought a $1 collector's piece (people collect this stuff!) from a 1800s ranch. There was also this place where an eccentric millionaire (got lucky rich off of argon or something) had several cars each buried half-deep in the middle of a field. People spray paint them all the time. Weird. Before getting to Gallup I took a detour through some reservations and right past El Morro national monument. Rained a little. It was nice. In Gallup, NM, I stayed with a friend's family.

Day 4 Friend's sister showed me around downtown Gallup, which isn't much. Bought a few souvenirs. Friend's step-dad gave me good directions to Glen Canyon. Bought a can-opener at a walgreen's since it was time to start eating canned food (I had packed canned vegetables, cereal, granola bars, and pb&j fixings). The drive was amazing. Cherith would be so jealous of the fantabulous rock formations, especially as my route took me near Monument Valley. Camped right in front of Lake Powell (formed in Glen Canyon due to the dam). Very beautiful again. A can of green beans for dinner. That night there was a cool lightning storm in the distance.

Day 5 Swam for a little bit before leaving. Drove to the north rim of the Grand Canyon. Looked at it. It's big. I was told so, so I wasn't too surprised by the depth or width of the canyon, but I didn't anticipate how many different side-canyons there were. I mean, it's not just straight and long. I had thought about hiking to the bottom, but they really don't recommend going down and back up in single day and you have to get camping permits months in advance. So I hiked down for about an hour and then back up. It was fun, but it wasn't much different than any other steep rocky trail. Camped just outside of the canyon park in a a state park (I think .. maybe another national park). The elevation actually is very high just outside of the Canyon, so it was very chilly. It was pretty rocky too since basically it was lots of woods and you just pick a spot and camp yourself there. I was really cold that night.

Day 6 Drove an hour or whatever to the nearest town and ate some waffles at a restaurant. I needed some tasty food. Drove up through Utah, taking some backroads for a while, which as nice. Then took the highway and saw lots of limestone or salt stuff or whatever (sorry, Cherith! I don't know my geology well enough). Drove to Arches National Park and looked around for an hour or so before it got dark. Spent the night in a hotel in Moab.

Day 7 Went back to Arches Natl Park and looked at everything. Hiking some of the back paths was really fun. To follow the path you had to find a little stack of rocks every 5 or 10 yards. I took one path that was a lot longer than I expected. Drove across Colorado to Denver. I was staying with my friend Aaron there. Hit the city right around 5pm and my exit was right where the rush hour traffic jam started, which was fortunate. Aaron and I went downtown, walked around, and had a few beers. It was fun to hang out with him one last time since he was getting married in a few weeks and would be going to grad school back in Denver.

Day 8 Left around 8am denver time, which is 10am Michigan time. It's a long boring drive and I was going to stop for the night somewhere in Iowa or Illinois, but it was only like 8pm when I reached that point and I didn't feel like finding a campground or a hotel, so I decided to just keep driving. I reached Chicago at around 1am, which sorta refreshed me for a bit. Got back to Grand Rapids around 3:30am. Lotsa driving :-)

Overall I didn't have as much time to be alone and ponder the deep thoughts of life that one might want to after graduation and before getting a job, but that was okay. It was still awesome seeing lots of stuff I'd never seen before and I liked being able to go my own pace all by myself. And now I know more about some of the great spots out there so I can go back with Cherith someday.

Dec 14, 2005 : keeping track of all the projects

I swear it would take a full time job just to keep track of all the open source java projects for the enterprise, to say nothing of non-java and personal/desktop applications. I'm finding new stuff all the time... And it's good stuff too!

So what's the market look like for consultants who advise about what technologies are available and what would be best for the consulting organization's need?

Dec 11, 2005 : Higher Ed and open source / community source

There are some great Open (or Community) Source projects for higher education that are under-linked. I only found out about these by word-of-mouth or the digital equivalent.

  • JA-SIG currently sponsors 3 projects
    • uPortal is designed particularly for use in education. Supports "channels" and JSR-168 portlets
    • CAS Central Authentication Service lets you have one single sign-on service for all your enterprise applications; CAS can be connected to many many types of authenticators (ldap, sql, jaas, etc)
    • HyperContent does website content authoring & publishing
  • Kuali is a Financial Information System
  • Bedework does institutional calendaring
  • Sakai is a Learning Management System
  • University of British Columbia has started talking about a community-source Student Information System
  • University of Indiana has a "OneStart Workflow" that soon will make its first release. It lets developers route documents (e.g. for approvals) around an organization based on business processes. It'll be used as part of Kuali

: Lots of Software Engineering readings

MIT's 16.355 Software Engineering Concepts has quite a few readings & notes. And they look quite good too. I wonder if I'll ever come back to the site and read them...

Dec 05, 2005 : JA-SIG conference

I am attending the JA-SIG conference in Austin, TX.

Nov 21, 2005 : hilarious C-SPAN

Prime Minister's Questions from the British House of Commons was on C-SPAN last night. Truly funny. All the "honorables" really tore into Tony Blair and he threw it right back at them. Half the time he was stifling laughter himself. I wish US politics was like that ... then I might actually pay attention to the shenanigans.

Nov 14, 2005 : my largest stacktrace

92 lines, no wrapped exceptions edu.cornerstone.portal.portlet.forms.model.SupportListItem
	at java.util.ArrayList.writeObject(
	at sun.reflect.GeneratedMethodAccessor116.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(
	at java.lang.reflect.Method.invoke(
	at java.util.ArrayList.writeObject(
	at sun.reflect.GeneratedMethodAccessor116.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(
	at java.lang.reflect.Method.invoke(
	at java.util.ArrayList.writeObject(
	at sun.reflect.GeneratedMethodAccessor116.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(
	at java.lang.reflect.Method.invoke(
	at org.apache.myfaces.application.jsp.JspStateManagerImpl.serializeView(
	at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedViewInServletSession(
	at org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedView(
	at com.sun.facelets.FaceletViewHandler.writeState(
	at org.jenia.faces.template.handler.ViewHandler.writeState(
	at org.apache.myfaces.renderkit.html.HtmlFormRendererBase.encodeBegin(
	at javax.faces.component.UIComponentBase.encodeBegin(
	at com.sun.facelets.FaceletViewHandler.encodeRecursive(
	at com.sun.facelets.FaceletViewHandler.encodeRecursive(
	at com.sun.facelets.FaceletViewHandler.renderView(
	at org.jenia.faces.template.handler.ViewHandler.renderView(
	at org.apache.myfaces.lifecycle.LifecycleImpl.render(
	at org.apache.myfaces.portlet.MyFacesGenericPortlet.facesRender(
	at org.apache.myfaces.portlet.MyFacesGenericPortlet.doView(
	at javax.portlet.GenericPortlet.doDispatch(
	at javax.portlet.GenericPortlet.render(
	at edu.cornerstone.portal.portlet.util.MyFacesModalPortlet.render(
	at org.springframework.web.portlet.mvc.PortletWrappingController.handleRenderRequestInternal(
	at org.springframework.web.portlet.mvc.AbstractController.handleRenderRequest(
	at org.springframework.web.portlet.mvc.SimpleControllerHandlerAdapter.handleRender(
	at org.springframework.web.portlet.DispatcherPortlet.doRenderDispatch(
	at org.springframework.web.portlet.DispatcherPortlet.doRenderService(
	at org.springframework.web.portlet.FrameworkPortlet.processRequest(
	at org.springframework.web.portlet.FrameworkPortlet.doDispatch(
	at javax.portlet.GenericPortlet.render(
	at org.apache.pluto.core.PortletServlet.dispatch(
	at org.apache.pluto.core.PortletServlet.doGet(
	at javax.servlet.http.HttpServlet.service(
	at javax.servlet.http.HttpServlet.service(
	at org.apache.pluto.core.PortletServlet.service(
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(
	at org.apache.catalina.core.ApplicationDispatcher.invoke(
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(
	at org.apache.catalina.core.ApplicationDispatcher.include(
	at org.apache.pluto.invoker.impl.PortletInvokerImpl.invoke(
	at org.apache.pluto.invoker.impl.PortletInvokerImpl.render(
	at org.apache.pluto.PortletContainerImpl.renderPortlet(
	at org.jasig.portal.channels.portlet.CPortletAdapter.getMarkup(
	at org.jasig.portal.channels.portlet.CPortletAdapter.renderCharacters(
	at org.jasig.portal.MultithreadedCharacterChannelAdapter.renderCharacters(
	at org.jasig.portal.ChannelRenderer$Worker.execute(

Nov 12, 2005 : wishlist

My wishlist has been updated for the upcoming season. And I fixed my blog theme so it's not pink (that was fun for a while) and it has the navigation menu again.

Oct 31, 2005 : teaser and programmathon review, or, asynchronous blogging

thumbnail: route of trip out west First, a teaser! That's the route I took on my road trip out west this summer; each night's location is marked. I've been meaning for a very long time to blog about this. And perhaps this map will serve as motivation for me to do so fully.

Second, this weekend I did a 48 hour programmathon with a few friends. 9am Fri - 9am Sun, +1 hr for DST. I joined around 4pm, coding commenced around 5pm, we worked till 4am, slept till 10am, coded till 4am, slept till 8:30 and coded till 9:30. So about 30 hours of coding if my math is right. Most time was spent on getting jmonkeyengine (darn quaternions!) to work, and figuring out how to do trig again. It would be nice to start with a base (like our current game) if we do it again. By the end we got a reasonably playable asteroids game. We didn't spend time on packaging for distribution/download, so you can't see it now. Perhaps someday.. yeah right :-)

Oct 27, 2005 : 48-hour programmathon!

Friday 9am until Sunday 9am (49 hrs actually, due to daylight savings time) some friends are getting together to do some intense game programming. The idea comes from here and the ad-lib game development society. I'm not joining until after lunch friday, but it will still be quite an interesting time. Fun certainly!

We are allowed to sleep :-)

Oct 20, 2005 : Hibernate many-to-many relationships and Criteria queries

In hibernate, if you have a many-to-many relationship and you try to query it using a Criteria query you need to add:


If you don't, you get a full cartesian join between the primary object and the related objects. So you get all the combinations listed, not just one per object like you'd like.

For example, using annotations I have a class like this:

@Entity(access = AccessType.FIELD)
public class PrintOrder {
	@ManyToMany(fetch = FetchType.EAGER)
	@JoinTable(table = @Table(name="tblPrintOrderProcesses"))
	protected List<PaperProcess> paperProcesses;


Then the Criteria Query should go something like this:

/** HibernateDaoSupport is a spring class and in this example is only relevant for the getSession() call */
public class MyDAOClass extends HibernateDaoSupport
	public .. some method() {
		Criteria criteria = getSession().createCriteria(PrintOrder.class);
		Property sort_property = Property.forName(sortField);
		Order sort_order;
		if (asc) {
			sort_order = sort_property.asc();
		} else {
			sort_order = sort_property.desc();
		List list = criteria.list();

So now you get only unique PrintOrders instead of multiple PrintOrders when the order has multiple paperProcesses.

Sep 30, 2005 : JSF and Java 5.0 Enums

Rich Hightower explains how he set up JSF to use Java Enums but his code can be greatly simplified.

First, instead of manually mapping keys to enum constants, you could add a key parameter to each constant which gets passed to the constructor. See Sun's Enum guide for more info. And then you could loop through MyEnumClass.values() to find what you need for the reverse mapping.

But you don't need to specify keys at all. Using .toString() and Enum.valueOf() work just fine as a key in JSF. (You'll see them used later in the converter.) Besides, putting keys in your Enum just so JSF can use them is mixing presentation and logic. Your Enum class doesn't need anything special to work with JSF.

The backing bean still needs to provide a list of choices for each select box. But we can do it with a generic method.

/** provide all choices from the ColorType enum */
public Map getColorTypeChoices() {
	Map<String,ColorType> choices = new HashMap<String,ColorType>();
	for (ColorType type : ColorType.values()) {
		choices.put(type.getLabel(), type);
	return choices;

And the converter can be improved to a single one-size-fits-all Enum converter.

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;

public class EnumTypeConverter implements Converter {

	public Object getAsObject(FacesContext context, UIComponent comp,
			String value) throws ConverterException {
		Class enumType = comp.getValueBinding("value").getType(context);
		return Enum.valueOf(enumType, value);

	public String getAsString(FacesContext context, UIComponent component,
			Object object) throws ConverterException {
		if (object == null) {
			return null;
		Enum type = (Enum) object;
		return type.toString();


For each enum class, use this as the <converter-class> in faces-config.xml

The JSF tags are straightforward:

<h:selectOneListbox id="colorType" required="true" value="#{formbean.form.colorType}">
	<f:selectItems value="#{formbean.colorTypeChoices}" />

Based on all the improvements made here, I'm pretty sure they could be further simplified by creating a selectItemsFromEnum facet. More on that later, hopefully.

: Jakarta's Commons-Email vs. Spring's Mail support

Has anyone compared Commons-Email with the Spring mail abstraction layer? They seem to be very similar.

Sep 27, 2005 : If i had a million dollars...

"If I had a million dollars" is playing

Me: what if I had 8 million dollars?
Nick: you'd be full and I'd be pissed!
Me: huh?
Nick: i thought you said "ate my million dollars"

: distributed web services

An advogato article starts a discussion on free software v. free services. Clearly there is movement from locally installed software to server-provided services. Free software groups can't follow the movement the same that way for-profit groups can because they don't (easily) have funds to support service infrastructure. But the idea of distributed p2p (or whatever the latest appropriate buzzword is) services should be possible. I'm surprised we haven't seen anything like this yet. Not sure what sort of problem area it would solve though . . . hmm ... hammers and nails.

Update: just found How open source will fit in with SOA and Web services via Web Services and XML

Sep 26, 2005 : Spring Framework and Java Generics

I'd like to have a templated class instantiated by spring.

But there are no plans for java 1.5 dependencies in spring (but couldn't you add optional support for the features ...)

And moreover, it seems that generic instantiation requires the type at compile-time so it wouldn't be possible anyway.

Sep 21, 2005 : the way data should be

Census data + Google maps = super-accessible data

Sep 16, 2005 : IIS & Tomcat: same machine, same port, different IP address

Co-worker Ryan, and I, managed to get it set up without too much difficulty.

Sep 14, 2005 : ICE - In Case of Emergency

Put your "In Case of Emergency" contacts in your cell phone under "ICE" or with a name like "ICE - Dad". The ICE campaign helps emergency workers easily contact friends and family of someone who is unconcious. More info in this news article and others.

Sep 11, 2005 : fear drankie!

h2g2 last night at calvin for free

Sufjan Stevens tomorrow night (not free). He's become quite a bit more popular since last year, even getting reviews by Rolling Stones and the like. Last year's concert was great and I'm sure tomorrow's will be awesome too.


Aug 31, 2005 : xpath and namespaces

After a lot of googling, I finally found how to get xpath and xml namespaces to work together. The way I ended up doing it was this to duplicate the default namespace and reference it everywhere.

XML file:
<web-app xmlns="" xmlns:j2ee="" ...>


Aug 30, 2005 : sick

i am sick and it's dumb

Aug 01, 2005 : the first day of the rest of my life

Today I start my first real job, as a software developer for Cornerstone University. I'll be porting apps from Lotus Notes Forms to uPortal, and then doing all future uPortal development projects.

Jun 21, 2005 : gallery

Installed gallery2, liked it, configured it. (Re-)organized all my photos. Published to 2339 images and videos. They weighed in at 1.1 gigs, before I applied my awesome recursive resizer & reducer script.

Jun 16, 2005 : suse linux notes

earlier I had to create a /dev/pilot symlink to get SuSE 9.2 to recognized the palm pilot. I failed to note that the symlink linked to /dev/usb/ttyUSB1. (Not sure how I figured out which one it was supposed to go to) Today the symlink was there but it still didn't work. I ran /etc/init.d/hwscan start and then it worked. Weird.

Also, after upgrading the kernel I have to re-run sh /usr/share/doc/nvidia/ and reboot.

Jun 14, 2005 : lately

trying to learn dvorak keyboard mapping (it's better ergonomically)

went to indiana for a weeding last week; i was an usher so i got all tuxed up

went to Toronto with Cherith for a friend's weeding and visited Point Pelee and her parents and brother on the way back

pictures for those to come, sometime, maybe

home to midland for a few days this week

applied for lots of jobs in the GR area

travelling out to the Grand Canyon and stuff next week!

May 31, 2005 : my worldview

If a quiz means anything....

You scored as Cultural Creative.

Cultural Creatives are probably the newest group to enter this realm. You are a modern thinker who tends to shy away from organized religion but still feels as if there is something greater than ourselves. You are very spiritual, even if you are not religious. Life has a meaning outside of the rational.

What is Your World View? (updated)
created with

Cultural Creative
















May 29, 2005 : website redesign

Website redesign! It doesn't look like crap any more!

The look & feel are a wonderful medley (ie. hack job) of a template from OSWD and the TicTac template from b2evo (this blogging software).

I converted all the html to php so I can easily adjust the header & footer (it was a javascrite writeMenu(); !). But I don't have to use .php extensions: .htaccess has Options +MultiViews to do content negotiation. Pretty urls now.

Content-wise I updated and renamed college and highschool. Various updates all over the place, including the resume. And since my blog is updated somewhat frequently and I stopped updating my index page, there is no index! It just redirects to my blog.

All I have to do now is make the blog page margin between the left menu & content be appropriate for all browser widths. And configure the photo gallery (currently broken for unknown reason, probably time to upgrade to Gallery2 anyway) to use the them.

May 18, 2005 : done with school forever!

So I took my last exam tonight. I'm done with school forever. And I made it out with writing comparatively little :-) Good thing because I don't like writing essays, especially not verbosely. If anyone has something worthwhile to say, they should be able to say it in two paragraphs. Anywho, for the record, I last night I tried to figure out the longest papers I've written and this is what I found:

  1. 22pp (originally 8pp at 9pt single spaced) - CS Senior Project paper (but Andy Schamp wrote over half of it)
  2. 10pp - Cultural Anthropology interview write-up (easy, just had to write about interviewee's answers to given questions)
  3. 8pp - CS Perspectives term paper
  4. 7pp - Doctrine of Revelation paper
  5. ... a few 5-pagers ...
  6. 4.5pp (spanish) - Lit of Spain II paper
  7. 4.5pp (spanish) - Survey of Spanish Lit paper
  8. ... lessers

May 12, 2005 : *ake me

  • Take me
  • Shake me
  • Break me
  • Make me

May 05, 2005 : sr project thoughts

Well Andy & I presented our Sr Project, Konfidi, yesterday. I guess it felt a little anti-climatic, but it really was not to benefit us but rather to share with our audience. Not as many questions as I had hoped for, but it went pretty well. I didn't even get nervous. I think, however, we didn't convey enough of the awesomeness of the project. Seriously, it's a sweet project and very exciting.

The presention slides and audio will be available soon. Paper probably not for a few weeks since we want to get some more feedback and maybe try to publish it. In the mean time, head over to (doesn't work in IE for some reason probably related to CNAME DNS records.. i don't know) or the project which includes a mailing list and the SVN repos of our code (and paper & presentation, if anyone wants to check that out now). After some polishing, I'll try to advertise this through some OSS communities and see how much interest we can generate from other developers.

May 03, 2005 : Using Cygwin, Keychain, SVN+SSH and TortoiseSVN in Windows

This is verbatim from my friend Andy:

How to use Cygwin, Keychain, SSH and TortoiseSVN together in windows.

A while back, I set up keychain to work under Cygwin so that I could easily manage various SSH keys with ssh-agent, since I prefer to use public keys for authentication.

I think that TortoiseSVN is a useful SVN client with a handy shell extension for Windows.

Recently, I switched Subversion servers to one which requires ssh+svn authentication. Having gotten used to typing my passphrase in once per session, I soon grew tired of punching the whole thing in every time.

Here's how you can set up TortoiseSVN to use SSH keys managed by keychain:

I'll assume you already have WindowsXP (though perhaps other versions would work as well), Cygwin, SSH, Keychain, and TortoiseSVN all installed and working properly, including setting up public/private key pairs and deploying them properly to the target SSH servers, including the svn servers you wish to use. This may not be as easy as it sounds, but there is good documentation on the web sites for each of these tools.

Create a batch file in a convenient location, called something like ssh.bat, containing the following line, replacing the paths to bash and ssh as appropriate:

c:\Cygwin\bin\bash.exe --login -c "/usr/bin/ssh %*"

Now open up the TortoiseSVN settings by right-clicking on a folder in the explorer and browsing the TortoiseSVN context menu.

In the Network tab, set the SSH client to the ssh.bat file just created.

Now, if you haven't already done so, open cygwin. Keychain will ask you for one or more passphrases for your SSH keys. Once the keychain session is created, any further interactive bash sessions will have access to the ssh-agent.

From now on, whenever you attempt to use TortoiseSVN to connect to a Subversion server using svn+ssh authentication which you've set up with your public keys, you won't have to enter a password or passphrase.

May 02, 2005 : old blog entries

My old blog entries are still available. Here's a monthly listing:

Old index page (2001 - Dec 2003)
Dec 2003
Jan 2004
Feb 2004
Mar 2004
Apr 2004
May 2004
Jun 2004
Jul 2004
Aug 2004
Sep 2004 (none!)
Oct 2004
Nov 2004
Dec 2004
Jan 2005
Feb 2005
Mar 2005
Apr 2005

Apr 29, 2005 : Sr Project Presentation

Andy Schamp & I will be presenting our Sr Project:

Konfidi: Stopping Spam with Trust Networks

Wed, May 4 @ 3:30pm
Calvin College, NH253

Abstract: We have developed a system to filter emails based on the trustworthiness of the sender. This uses a network of PGP cryptographic signatures to determine authenticity and a network of topical trust to determine trust ratings between people. The system can be applied to many other topics, such as rating the accuracy of information in a webpage, or trusting an online merchant.

A formal paper, all of our code, and website will be announced shortly after the presentation.

: President Bush at Commencement

President Bush will be the commencement speaker for us graduating seniors at Calvin College.

: new blog

new blog software

<< Previous Page

<< Previous Page

<<  2005  >>
Jan Feb Mar Apr
May Jun Jul Aug
Sep Oct Nov Dec




Syndicate this blog XML

powered by