Posts

Showing posts from December, 2003

Big Dig

Image
I passed over and through the ' Big Dig ' this weekend for the first time. It was funny driving over the L.Z.B.H bridge as everyone had their cameras out taking pictures (including me). The whole experience was rather anti-climactic. In the end the bridge is just a bridge and the tunnel is just a tunnel - a rather Spartan drab tunnel at that. Given the cost one might expect some gold plate. When we stopped to visit down town Boston I was surprised to see workers already taking down the old elevated central artery. In retrospect I guess its probably one of the easiest tasks of the whole project. I read someplace recently that city folk are now worried that all the pigeons who made their home under the elevated road will now invade the city. They had similar worries about rats when the project began.

Personal Art

I received an email this week from Mike Thomas of www.somoht.com , another blogger of the blogsphere who had stumbled across this site. I of course paid a reciprocal visit and must say I really liked his site. In addition to the standard commentary of a blog Mike has scanned art he created over the years and made it available for public viewing. I too have done some painting, drawing and sculpting. I'm not a trained artist, but have dabbled for relaxation and fun. I've never recorded any of it digitially before but it seemed like a cool idea. I've added a top level information category called Art that contains an image gallary of my current scans. All of these images are of things I created in the 80s. I've used the PHP based photo album software called Quick Digital Image Gallary as the hosting engine.

The Year of the Digital Camera

Image
Lots of people I know received digital cameras this Christmas. In my family there were four. If you add in friends like Bob the count goes up. My nephew Steve said he had heard on the news it was going to be the 'Year of the Digital Camera'. When I hear this phrase I can't help but think of the David Foster Wallace book Infinite Jest in which year names have been bought by corporations and much of the narrative takes place in the 'Year of the Depends Adult Undergarments'. My camera is a snazzy little Casio Exilim EX-Z3. 3.2 megapixel, SD card, 3x optical zoom.

True Companion

Image
True Companion or T.C. as he was known died yesterday from lethal injection after a short battle with cancer. T.C. was 10 years old. A pure bred Siberian Husky , T.C, exhibited all the standard personality traits of the breed - strong willed, energetic, friendly and very vocal. In fact, his howls contained so many different tones you could swear there a language contained within. He will be missed.

Drink Wheel

If you are planning to imbibe a quantity of holiday cheer you can estimate your safe limit with the help of this handy web site .

Tolkien and Wagner

GirlHacker blogged today about the connections between Tolkien's Ring mythology and Wagner's. She points to some interesting content. Its well worth a read I have to admit a certain fondness for Wagnerian music and German culture in general. If you're not familiar with the Ring Cycle, this link has a good overview of the story: Der Ring Des Nibelungen .

The Spaceship and the Zeppelin

SpaceDaily has an interesting article comparing the problems of rigid airships with those of the space shuttle. As I think about this and the lessons it implies about software, I can't help but think of EJBs as the big bloated Zeppelins of our day. I'll show you what I mean by considering a few of the points of the article in the context of EJBS High Unit Cost -- Complexity of building high quality EJB. Narrow Design Base -- Design being driven by a few corporate interests Narrow Contractor Base -- Expensive and complicated licensing Mammoth Ground Support Equipment -- Expensive infrastructure requirements Inappropriate Traditions -- Warmed over CORBA Low Safety Factors -- 88.888 up time The Publicity Spotlight -- J2EE hype machine Fanatical Promoters -- Corporate hype machines

Eclipse 3.0 m6

I downloaded and installed the Eclipse 3.0 m6 build today. I don't have plans yet to adopt it as my primary edit environment but I wanted to kick it's tires and see how it feels. My initial impression is that its slower and clunkier than 2.x, but heck, its beta software. Some of the clunkiness stems from the plethora of new features in the Java IDE. I really think the Java IDE has reached the point of diminishing return when it comes to adding new features. It already had lots of bells and whistles I never used - now it has even more. I'm sure I will learn to love some of these new things in time but I feel sorry for new adopters who will have to wade through all the additional complexities in order to learn the platform.

PE version 0.82

I've updated PE to version 0.82 . Along with some bug fixes this version introduces a tab bar for changing open edit buffers.

How Tree Syntax works in Groovy

Thanks to Jame's feedback I've been making steady progress in learning Groovy. Today I had a few minutes and wanted to learn more about how the tree syntax mechanism works. What I found was surprisingly simple and elegant. Instead of this feature being a special part of the language, it's just a cool use of the core Groovy features. Imagine code like this. builder = NodeBuilder.newInstance(); builder.people() { person("Pete"); person("Jayne"); } The code builder.people() is evaluated as a simple method call. In Groovy a method is called by calling the invokeMethod() method on the objects class. So at runtime this code will call BuildSupport.invokeMethod(...'people'...) . The BuilderSupport base class (base class of NodeBuilder) has overridden invokeMethod() and rather than attempting to find and execute the method 'people', as most classes would do, the builder class instead creates a new Node with the

Guess the movie

GirlHacker has posted a little quiz that asks you to correlate a movies rating description with the actual movie. It's fun.

Groovy GPaths

I finally got a chance to play around with Groovie's GPaths. I encountered some confusion in using them but did surmount the problems with the help of some System.out.println statements (why no println command?). I started my exploration with a another look at tree syntax but this time I used a NodeBuilder instead of a MarkupBuilder. This change let me build a tree of objects instead of output some markup. protected createTree() { builder = NodeBuilder.newInstance() root = builder.people() { person('James') { location('London') projects { project('geronimo') } } person('Bob') { location('Atlanta') projects { project('drools') project('jessy') } } } return root; } I then tried to build a Gpath that selected a p

Epigrams in Programming

These quotes from Alan J Perlis seem to have been around for a while, but I'd never seen them. I tracked them down after reading 19. A language that doesn't affect the way you think about programming, is not worth knowing. in the Nice manual . Others that spring out from the list: 31. Simplicity does not precede complexity, but follows it. 58. Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it. 95. Don't have good ideas if you aren't willing to be responsible for them. 104. The proof of a system's value is its existence.

Bloggerhythm or Blog Tide

I want a new word or phrase for a trend I've noticed in my blog postings and those of the bloggers I read. There are clear peaks and valleys in posting rates that don't always directly correspond to the blogger's time to blog. The two candidates that jumped into my head are: bloggerhythem - their bloggerhythem is slow this week and blog tide - my blog tide is rising but the more I think of them the less I'm convinced they describe the problem appropriately. Anyone have a suggestion?

Generic throws clauses in Java interfaces declarations

Anyone who has written an EJB to expose a POJO (Plain Old Java Object) has encountered the problem - your POJO implements an interface and you would like to reuses that interface declaration when you write your EJB's remote interface declaration; but you can't because the remote EJB methods must throw RemoteException and the base interface methods don't. So what do you do? Pragmatic Programmers out there might write some code generation code that builds the remote interface but more likely than not you copy-paste-modify the original interface. All this leading inevitably to a future maintenance problem This isn't just a J2EE issue either, other code can have layering designs that change the sort of exceptions that are thrown but not the basic signature of the methods. (Its just such code I'm dealing with today at work that's sparking this rant). What I'm dreaming of is support of some sort of generic exception declarations in an interface. Rath

Tree like structures in Groovy

As I've mentioned before, Groovy is a Java scripting language being developed in part by the prolific James Strachan . I was home sick on Friday and spent some time looking at it. One aspect of the language I find particularly intriguing is its built in support for tree syntax . Here's a little HTML generation snippet I wrote in Groovy that uses the tree syntax h = new MarkupBuilder() h.html() { head() { title("Page Title") } body(){ h1("Hello World") div(id:'Foo') { div("Content") } } } This code would generate some simple HTML like: <html> <head><title>Page Title</title></head> <body> <h1>Hello World</h1> <div id='Foo'><div>Content</div></div></body> </html> The cool thing is that the content of the tree syntax can be more Groovy code. In

I've been frogged

See the frog comment below. I didn't make that. I do like frogs however.

frog

frogs

Debuggers

A lot of bloggers are talking about the merits of using debuggers vs. print statements. It all seems like a mighty waste of time to me. Both are very useful and should be in the skills toolbox of anyone doing development. My current project at work is multi-threaded networking code that's hard to debug with a debugger but that doesn't mean I don't ever use one. In fact the whole topic is so stupid I don't know why I'm wasting any time blogging about it. Arg.

Gary Devendorf's Blog

I keep finding blogs of people I know. This is pretty cool. Most of you that read this know Gary but if you don't he's a ex-Iris/IBMer now working for the evil empire - Microsoft, not the Yankees. Gary was my mentor for public speaking and we did a few LotusSphere and Dev Con presentations together.

Starburst Memorials

Image
The Columbiad company will send you into space for only $12,500. Catch is you must be dead. You have to love their logo - a flying urn. They have a pretty website too.

Pay the Ground

Image
In keeping with the holiday season I wanted to share this information on one of the odder and funnier Christmas traditions I've ever heard of- the Caganer. The Caganers was originally brought to my attention many years ago by an entry in memepool.com but the links that post contains are now dead. I thought it was interesting enough I wanted to bring it back again. The tradition of the Caganer comes to us from the region of Spain known as Catalan. The Caganer is a figurine that's typically added to Nativity displays to bring good luck. The odd thing is that figurine is depicted defecating or "paying the ground" as one maker of the figurines described it. (That's a nice earthy euphemism) The e-shop Caganer.com has quite a collection of figurines if you're interested.

Doug Ross's blog

I stumbled on the blog of an old co-worker and friend today. Doug moved back to the Midwest quite a few years ago and except for a few email we haven't kept in touch. It will be fun to hear what he has to say. Doug's a very smart and entrepreneurial guy with a wide range of interests. I have to give Doug a lot of credit for my progress as a developer. He was preaching unit tests and black box object layering way before it became vogue.

Blogger bug?

I've lost the text of two posts in as many days because of some issue with my session disappearing and Blogger requiring me to re-login. It always seems to occur when I run a spell check but I don't know if that has anything to do with it. Regardless I'm a little wary of that feature right now so forgive my horrible spelling.

Inner classes

I love Java's inner classes. Most non-ui Java developers seem to ignore them, but I think that's a mistake. Here are a few ways I like to use them: 1. Common implementations of an abstract type. Using interfaces in an API instead of classes is usually a good idea but it adds a level of indirection. You can compensate by using inner classes to make your API a little easier. Let's say you have a class and a related interface like this: public interface Value { int getIntValue(); String getStringValue(); } public class Foo { public void doit(Value v) {....} } Using the interface instead of an explicit object add a lot of flexibility but unless you provide a default implementation of the interface you've pushed off some tedious work onto your callers. Rather then creating a separate implementation class I like to use inner classes in this case. You could start out with the most common implementation like this... pub

Nuclear Space

It's been exciting to hear some of the latest talk coming from the Whitehouse regarding space policy. I wonder whether the folks at nuclearspace.com will find a voice in them. They have an interesting vision, albeit a bit unsettling. I can't help but think of the mad scientist from Repo Man. Radiation, yes indeed! You hear the most outrageous lies about it. Half-baked goggle-boxed do-gooders telling everybody it’s bad for you. Pernicious nonsense! Everybody could stand a hundred chest X-rays a year. They ought to have 'em too. On the topic of Repo Man, these folks have the entire transcript . Its a fun read. The movie had such classic lines.

Elephants missing link

Here's an Interesting science tid-bit from Reuters on some new fossil finds in Ethiopia. Fossils Bridge Gap in African Mammal Evolution

Bloggers Block

I think I need to read this page: Overcoming Blogger's Block .