8/21/2005

Mighty Mouse

Apple's marketing is so powerful... I first saw the Mighty Mouse yesterday and I went out and bought one today. Yeah, call me a Mac Fanboy, a lemming, or a card carrying member of the Apple Cult. But I have an excuse!



See, here's the deal. I've wanted a 3 button scrolling mouse for my Mac for 2 years. I bought a Kensington Studio Mouse about a year and a half ago, but it really sucked. It's little scroll area didn't work well for me and it just didn't look as cool as the rest of my Mac. In fact, the last part is the problem. None of the other mice that have been out looked as cool as my Mac. So, I stuck with the Apple Pro Mouse that came with my iMac.

But, seeing the Mighty Mouse made me realize I had to have one. It's just so cool. It's sleek. It's white. It matches my Mac. Plus, it gives me buttons.

After I got the mouse, it took no time to install. I unplugged the Pro from my keyboard and stuck in the Mighty. Boom. Working. Then I installed the Mighty Mouse software so I could program the buttons. This required a restart, but it's forgivable. Mouse drivers are a bit low level and you can't just restart the window manager (Aqua) on the Mac.

Once the Mighty Mouse software was installed, things got even better. By default the two top buttons are the primary click (as if you didn't have a left and a right), the middle is Dashboard, and the sides are Expose. I reprogrammed the top buttons to be left and right and left the others as is to see if I liked them. Two hours later, and I think I'm going to keep the middle and sides programmed to Dashboard and Expose.

I have to say, I've really been missing out by having a single button mouse on the Mac. Just having the ability to scroll makes it feel like you can do things faster. The cool thing is that I can scroll vertically AND horizontally. Love it.

Bottom line: This mouse ROARS!*

* Obscure reference to The Mouse That Roared. I played Professor Kokintz in the play in 7th grade. I've never seen the film, but it seems like a must-see Peter Sellers performance.

8/05/2005

Lisp programming and RSI

There's an interesting thread on comp.lang.lisp about Repetitive Strain Injury and Lisp. It's not the RSI or Lisp's relationship to it that is interesting. People are posting lots of links and information about alternate keyboards and keyboard mappings. If you're like me and interested in that kind of thing, check it out.

SphereXP

Stuck in Windows? So am I. It's pretty boring. However, I just found a cool application that might make your life a little more entertaining. Check out SphereXP! It's a 3D window manager that runs on top of Windows XP. It's very cool, and it only takes a few minutes to get the hang of it.

I can't say much about it's stability or it's quirks because I've only been using it for 30 minutes. However, it sure makes switching from Visio to my browser entertaining! :-)

What's Happening

The last coding project I was on using Spring and some other cool technologies ended abruptly about a month ago. The project was cut due to funding (rather the client didn't secure it before starting). So, I've moved on to another project.

I'm currently working on a business process project. A "business process project" is where you go in to a business, map out their current process, and then make some recommendations for how they can improve. This is usually something that business analysts and Industrial Engineers are particularly suited for. I happen to be the latter.

I haven't really practiced Industrial Engineering in the last 10 years or so, but this is my third process project in the last year. I think the reason is that I just happened to be familiar with the client and I know my way around manufacturing.

I really prefer writing software. In fact, that's why I switched careers 10 years ago. When I was an engineer, I would go home at night and tinker with my computer. I would install Slackware on some old machines or perhaps sit down and hack out some VX*REXX toys. In other words, I engineered by day and hacked by night.

It's comin' back around again!
This is for the people of the sun!
It's comin' back around again! Uh!

-- "People of the Sun" by Rage Against The Machine

I'm back in that mode. I go do my flowcharts by day, but by night I'm tinkering with CLOS. I use my Dell Latitude D800 by day, but by night I'm a Mac hacker. I'm back to living a double life.

So, I'll continue to lead my double life until October when my current project wraps up. After that, hopefully it will be back to software and one life to live.

7/20/2005

Google Moon

A posting on Paolo Amoroso's blog made me aware of Google Moon. This is a cool demonstration of how the Google Maps technology is "earth-independent". (Hopefully I just coined a phrase, but I suspect the science fiction community beat me to the punch decades ago.)

In addition, check out the link to Google Earth. I just downloaded it, and I don't have time to play right now. It looks like a hoot, though.

7/15/2005

IBM sales no more OS/2

Slashdot has a story about IBM officially ending sales of OS/2 this year. Goodbye old friend! I fondly remember when you ran Windows 3.1 faster than DOS could. I'll also remember when I was writing 8086 assembler code in your DOS box so that when I screwed up interrupt vectors I could just close the DOS box and reopen. You saved many a three finger salute.

Optimus Keyboard

Slashdot has a story about the Optimus keyboard. I WANT ONE!!! I don't know if I would ever truly reprogram the keys, but it just looks SO cool...


Optimus Keyboard

6/10/2005

From one Spring Controller to Another

It's been a BUSY week for me. I'm heads-down on my current project trying to get some code cranked out before next Wednesday. I'm not sure I'm going to make it, but I'm giving it hell.

I'm using the Sring Framework and its MVC layer on this project. I ran into a problem where I wanted to do some work with one controller and forward the result to another controller. It turns out, that ain't exactly pretty in this version of Spring MVC. It's actually a problem that Spring Web Flow is going to solve. Unfortunately, it's too late for me to pull the plug and switch to Web Flow.

I found Tamer Salama's Weblog post about Spring controller forwarding extremely useful. FYI - I went with the RedirectView option, but I put my information on the URL as parameters.

6/02/2005

SiteMesh Is Lovely

Aaron, my coworker, has a great post about SiteMesh vs. Tiles. The project that he's referring to is the one we've been working on together. SiteMesh is one of the tools that has made the project a joy so far.

I think Aaron's assessment is right on. However, I will clarify one thing with his statement about third party tag libraries. The problem wasn't that SiteMesh was filtering out the custom tags. The problem was that SiteMesh was filtering out the HTML/JavaScript generated by the Alphablox tag because it was in the "head" portion of the decorated JSP. To work around this, we set up a special decorator to put the Alphablox tag in the head of the decorator instead of relying on it being in the decorated page.

Like Aaron, I really like SiteMesh and hope to use it again on my future projects.

5/27/2005

Deep cop-out

I decided not to write my own deep copy yesterday and went with the serialization solution. This turned out to be the way to go. I didn't even use the optimized byte streams I mentioned and the deep copy of my object takes a very tiny fraction of a second. I'm staying with that option for now.

5/26/2005

Faster Deep Copy Using Serialization

JavaTechniques | Faster Deep Copy of Java Objects presents a trick to make deep copy using serialization faster. The author provides FastByteArrayOutputStream and FastByteArrayInputStream which speed up the copy. However, the performance gain provided still doesn't put the technique on par with writing your own deep copy.

If you haven't guessed. I'm trying to avoid writing a deep copy method. :-)

Java Tip 76: An alternative to the deep copy technique

Java Tip 76: An alternative to the deep copy technique presents a really neat deep copy technique. Dave Miller, the author, uses serialization to deep copy an object graph. The only thing stopping me from using this technique from now on is the performance compared to cloning. However, it's a really quick and dirty way to do deep copy if you don't have to do it often or just want to prove something out.

5/25/2005

Green Tea: Breath Be Gone

Another benefit of Green Tea is that it kills things that cause bad breath. Maybe this is the real reason my wife wanted me to start drinking it. Now my coworkers are reaping the benefit as well.

Trang, part 2

Well, I just got through checking the DTD that I built with Trang. I actually only had one thing to change so far. Trang even inferred the optional elements and the + operators for my elements. Kudos!

Trang

Trang is the gift that just keeps on giving. Ever since I started using James Clark's nXML mode for Emacs, I've also been using his Trang tool to convert DTDs to Relax NG compact schema. This allows nXML to validate your XML as you type it! It's really a great Emacs mode that also features tag completion.

However, I just discovered another great thing about Trang. I am writing an application that I need a configuration file for. I decided that I would make the configuration file XML and use Jakarta Commons Digester to read the file in and turn it into Java Beans. I mocked up my XML, and it turned out to be a little complex but workable. Since an administrator will edit the configuration file with an editor, I want the Digester to validate it using a DTD to make things more bulletproof.

SO, I was faced with creating a DTD for my XML file. Ugh. At least it's not a Schema. But, I still didn't want to do it. I remembered that Trang had different input and output options, and I wondered if it would create a DTD from my sample XML as a starting point.

Being brave and lazy, I fired up Trang against the XML and told it to spit out a DTD. VOILA! Within a second I had a working first cut at a DTD!!!

Thank you Trang, from the bottom of my lazy heart!!!

5/24/2005

European Common Lisp Meeting Presentations, Videos, and Sounds

Edi Weitz has posted the presentations and videos of the European Common Lisp Meeting. Also , Kevin Smith pulled the sound tracks from the videos and posted them .

Courtesy of Lemonodor.

Ryan Shaw � Greasemonkey Stole Your Job (and Your Business Model)

Ryan Shaw � Greasemonkey Stole Your Job (and Your Business Model). Interesting idea: bright kids redesigning your site's UI and threatening your job as a user-interface designer. However, another perspective might be increasing the longevity of a site you no longer have time or patience to maintain.

Bottom line is that Greasemonkey is cool.

5/18/2005

Google Desktop Search for the Enterprise

In "MSN Enterprise Search?" I speculated that Microsoft is trying a "free is better" power move on Google. I was wrong. I was misinformed - no, I was uninformed.

Today when I logged into Google, I realized MSN Enterprise Search will be a late response to a Google first strike. Enter Google Desktop Search for Enterprise. Currently, it appears to be free.

So, there you go. MS is struggling to stay in the game.

5/17/2005

Ajax (not the foaming cleanser)

Edd Dumbill is talking about Ajax. It looks as if there is a Ajax summit going on. Also, the Ruby on Rails guys are getting all Ajax-y with it. I'm one of the many watching from the sidelines and tossing out the occaisional barb.

I'm wondering why we don't just abandon HTML. Sure, HTTP is a fine protocol for doing alot of stuff. Let's keep that. However, DHTML and things like Ajax are attempts to cling to a presentation method that we're clearly outgrowing.

Here's an idea - why don't we come up with a cross-platform, easy to program user interface language. Something that tools can sit on top of. Also, it's gotta' be something you can validate for correctness like XML. I don't want any more of that quirky parsing behavior (Do you hear me IE?).

Yeah, I've heard of XForms. But I don't think that cuts it. Clearly we need to encapsulate the event model as well as the presentation. We also want rich interactivity. Why should we limit ourselves to forms? We want canvases and crazy custom controls built for our cross-platform UI language.

You gonna' come at me with Java applets or Macromedia Flash? Please... You've seen the lack luster appeal of those technologies as well as I have.

Yes, Avalon does sound good. But, you know that's only going to be on one platform! Sure, the Mono gang may be able to port it. However, Microsoft will still be in charge of the standard.

Shouldn't we have a rich, cross-platform, distributed UI standard/language/toolkit by now? I think we could if everyone would turn away from their lock-in strategies and general silliness.

MSN Enterprise Search?

I'm not sure why this raises my eyebrows, but Mary Jo Foley is reporting that MS has an enterprise version of their desktop search product in the works. I'm guessing this will compete with the Google Search Appliance.

I wonder if this will be a way for Microsoft to undercut Google like they did with Netscape. Perhaps they will release their Enterprise Desktop Search (or whatever they'll call it) for free. Where does that leave Google? Microsoft learned the first time that "free" beats "superior technology" in the technology RoShamBo.