JSR-168 Portlet Week

This was a fun week. I went to UIUC on Monday, IU Tuesday – Thursday, and back to UIUC on Friday. I kind of took the week “off” from Sakai duties – I spent most of the days without mail or IM even open. I had this desired to write a JSR-168 portlet that was similar to my Visual Basic Sakai Desktop.


Part of this idea is to get people unstuck from the notion that Sakai is just a web-site. Web services in Sakai are the *coolest* thing. It changes Sakai from a monolithic application that everything must be integrated into into something that can integrate lots of places.
I needed to come up with a way for Sakai to integrate to the LEAD and TeraGrid portals for the OGCE project. I promised Marlon a document on how to use the Charon iFrames to do this, but it seemed that by the time I wrote it all down, it would be quicker (and much cooler) just to do it in the form of a JSR-168 portlet.
So I started Sunday at 9PM with the “Hello World” JSR-168 portlet from Oliver Wehrens (thanks). By 1AM Sunday I had hacked together a portlet that logged into Sakai and retrieved the sites via web services and did a target=_new approach. This stuff is amazingly easy. But I will admit to HATING the Dom API. Complex things are easy in the Dom and simple things are hard. Sheesh.
I could not sleep so I just got in the car and drove down to UIUC for my meeting with Von and crew about distributed portal authentication approaches. I slept a few times as I got tired and arrived about noon at UIUC. Great meeting – the stuff I talked about w.r.t. SAML at Penn State the week earlier came in very handy. The picture of federated authentication and authorization is becoming clearer. Lots of work yet to do and not really needed in Sakai for about a year – but folks like LionShare, Shibboleth, and LEAD are really banging their heads on this problem and the problem is slowly starting to yield.
Monday night, it was a nice jucy Alexander’s steak with Von and off to Bloomington. First thing Tuesday was to meet with Marlon and crew to define what we would need to do. We came up with a number of needed features and I set off with Marcus Christie as my mentor. I cranked all day Tuesday making code changes. Dinner Tuesday was with Dennis – always a great time catching up on stuff w.r.t. Tony H and the UK and the grid and everything.
Wednesday code continued and about 1PM I hit something nearly releasable in terms of features so I gave it to Marcus to make sure it worked in uPortal and GridSphere – things went well – he built up the specific deploy files for each and gave me wars. He loaded the wars into both systems and viola! It all worked. I was ready to release but Marcus (always the slave driver) wondered if it would be more useful with the automatic account feature done *before* I left so he could use it more effectively in the LEAD portal. Sheesh – here I was done 1.5 days early and he wanted to add a feature.
The feature went in smoothly but then I hit a snag. I wanted to put all of the software up for them to play with (Sakai, Pluto, the new portlet) on their own server. This server was *slow*. A checkout of Sakai took 30 minutes and compile took 40 minutes (too little memory methinks). So to speed it up, I started hacking out large pieces of Sakai to speed the compile. I took too much out and Sakai started being not very happy. Too much work and too little sleep kept me from figuring out what was wrong. So I wasted a lot of time and got distracted from cleaning up the code.
Wednesday night was dinner at Brad’s. I stayed too late and drank some red wine. So no code got done Wednesday night. Thursday I had a headache from the red wine so all day I kept screwing up and making little mistakes. If I would have just re-checked out Sakai from SVN all would have been smooth. But no I kept missing the point and wasted hours. Finally I had to leave for dinner with Lance and the code was *still* not ready to release. Fifty lines of new code which was completely working on my mac was failing horrible on the IU server and for about 18 hours I just could not figure it out. In the interim, Marcus had added some neat features allowing me to talk to uPortal and GridSphere portably.
After dinner with Lance talking about the memory leak stuff and 2.1 architecture, etc etc etc I had the long drive back to UIUC for my Friday meeting. Finally about the Illinois border my headache went away. Upon arrival at the hotel in UIUC, I figured out every single bug in about 30 minutes and had everything working. Sheesh.
Friday morning I finally got to test everything in all combinations and re-integrate all of Macrus’ code. There was a small NPE when it ran under Pluto which I fixed. And then after another round of tests, I could release the software. Whew! I was 10 minutes late to the UIUC afternoon meeting where I could show it all off :)
Great meeting at UIUC talking to Joe, Jim, and the CLEANER guys. This 168 portlet gives us a nice clean way to explore the notions of Sakai in a portal without having to hack either Sakai or the portal at all. As we figure out requirements like AUTHN/AUTHZ connections, we can make the portlet better.
After the meeting, I drove back to Michigan and collapsed into bed. Five days, 1000 miles, 5 meetings,lots of help from Marcus, and voila I have my JSR-168 portlet.
It is not production ready. Hopefully people like Andrew, Marlon, and Marcus will help me get there.
I am now really looking forward to getting more involved in the uPortal 3 stuff now that I have a little better idea of 168.