Tuesday, August 10, 2004

Layeritis

Does our industry suffer from layeritis? Sometimes I look at architectures and think "too many layers". I firmly believe layering systems properly is a good thing to do, but can you go overboard. I firmly believe that doing anything in the extreme is bad. The architectures I see in Java tend suffer the most from this disease. I often see a client layer, JSP/Servlet layer, EJB layer, Model layer, Data Access layer, and then the Database layer. For most systems, I see that EJBs are unneeded and a total burden on the system. If you need to distribute your objects, then use EJB by all means, but ONLY IF YOU NEED THEM! Sadly, EJBs are often misused because they are the cool toy in the toolbox (and plus they are COMPLEX...which a lot of developers love). I don't mean this to be a rant, but I see too many projects suffer from using what the books and vendors tell them to. They think it's the right thing because that's what is being taught. Don't do layers to be doing them. And be very careful with your layers too! If you find yourself changing more one layer for any change, then think about what you're doing. Some changes will ripple, but they should be avoided. If you're making a lot of changes that span layers, then you haven't layered properly. The point of this post is don't over architect and do the agile thing. Of course, this isn't a gripe about my new project, but a mistake I see occur in a lot in java projects...Don't make it in yours...

Monday, August 09, 2004

Excellent Article

OK, I must be slow, but I just found this great article on dynamic languages. It's a great read and an excellent advertisement for us dynamic supporters. I even got a new word out of it (meritocracy)! OK, so I admit it, I read this article instead of reading the JBoss documention like I should have(zzzzzz, is all that crap really needed?).

Sunday, August 08, 2004

How do you spell "Relief"?

I spell it S-M-A-L-L-T-A-L-K. Apparently, you spell complexity, J-A-V-A. Sorry for the mini rant, but Smalltalk has ruined me because now I always look at how I could get stuff down with the least amount of code. It just takes so much code in java to do the same things that I do in ST. Oh well, let the madness begin...=(

Saturday, August 07, 2004

The Java Bell Tolls For Thee

Well, it seems I am moving to a aava team at work next week. I will be there only temporarily to help them out. Don't fret I will still be doing Smalltalk when I get home at night and hopefully will be back in Smalltalk land soon. I hope to gain some insights in java code generation (which seems to be a new fire brewing in me). I've been thinking about programs writing programs lately (after some of the HttpUnit stuff I worked on) and I think I could do the same for java. We'll see...At least, I will be using eclipse. Wish me luck!
Weight Watchers Goal

I officially reached my Weight Watchers goal TODAY! Yes, I now weigh less than 179 pounds! How cool is that?! Overall, I've lost over 75 pounds. Now, it's maintenance mode for me! It took a little over a year to do it and man, do I feel GREAT! ROCK!

Wednesday, August 04, 2004

Dynamic Variables (ala more Seaside coolness)

OK, I've been meaning to blog about this for awhile. But, I just got around to it and since I was debugging some HttpUnitTest code involving Seaside...I thought, "What the HECK!" Anyway, so, what's worthy of blogging about Seaside that I haven't already. It's a cool little trick with Smalltalk's exception handling. First off, let me give you a little bit of background. When I learned Lisp, one thing that struck as being very cool was the notion of defining your own scope for variables. They don't have to conform to the boundaries of a method or a context. In fact, you can have them span several methods. While it is seldom needed, it is an excellent trick to have in your bag. I had been thinking for awhile that it would be a cool thing to have in Smalltalk. I thought immediately, I could have these dynamic variables defined in a block context and look up the stack when I needed their values. But, the code was messy. Well, one day I was looking at Seaside code and noticed that they use these "dynamic variables" for holding onto the current session in Seaside. But, he uses the plumbing already there in Smalltalk! He uses the exception handling framework! The code is so simple and I smacked myself on the head! BRILLIANCE! Here's the code taken from the Seaside source (I hope nobody minds)
    WADynamicVariable>>use: anObject during: aBlock
    ^ aBlock
    on: self
    do: [:n | n resume: anObject]

    WADynamicVariable>>value
    ^ self raiseSignal

Now, all you have to do is do something like the following code:
    WADynamicVariable use: 'poo' during: [self doSomeStuff]

Anytime, you want the value of your dynamic variable, all you need to do is:
    WADynamicVariable value

And it will return to you the value that is currently set in the stack for WADynamicVariable. Now, of course, you will want to create your subclass for your values so that it doesn't clash or you could have WADynamicVariable hold on to a dictionary of values and you access it via that (you could even use doesNotUnderstand to make variables easier to get to). Anyway, the code is simple and shows you what a little ingenuity in Smalltalk can do. There's a lot of cool things you can do with the exception handling framework in Smalltalk and use it in unexpected ways. This is just one of them.

Anyway, I thought it was a cool trick and a cool one to show off. I would like to thank the coders of Seaside for this idea. It's a good one!
Alternative Takes On Paul Graham

James Robertson and Eric Sink took away different perspectives than I from Paul Graham's Great Hackers article. They both have some great points that I hadn't thought about, but it seems they took a much stronger offense than I.
    Another is when you have to customize something for an individual client's complex and ill-defined needs. To hackers these kinds of projects are the death of a thousand cuts.

My take on this when I read it was the all too common trait of working on a project where the other developers didn't think about the client's problems at all or just hacked their way through it. I like thinking about design and solving the "icky" client problems in an elegant way. It disturbs me when my views are not shared and some developers just want to hack and slash without any thought of design. But, I see where James and Eric took this to mean working on client code was beneath great hackers. And now after reading more closely, they are right. Graham feels like he's a little too full of himself on this one(he's always written his essays in a overblown type of way and I've liked them for this). I still love Paul for being honest about Java and for being one of the few to be vocal about how bad it is. But, I should have read closer on this one. Eric's article was especially good. I guess my take is that a great hackers are those that get the job done for the client quicker and cleaner. In other words, they get the job and you don't have to spend a lot of time maintaining their code. A great hacker also has no problems maintaining his own code. Any developer that doesn't want to maintain his own code should not be a developer.

Tuesday, August 03, 2004

3 Leg Torso

I saw this band while I was at Camp Smalltalk and they literally dropped my jaw! Go check out their web site here. Awesome musicianship, challenging music, and a fun edge makes for an engaging listen. I couldn't wait till I got one of their albums which I got in the mail today and expect the other sometime later this week! They play a blend of classically inspired chamber music mixed with folk music, but that description sounds very bland. The music is very lively and animated. Take the thematic elements of 60's spy soundtracks (no rock, just the mood and suspense) and mix in some of those crazy Raymond Scott-like passages. This stuff is just too incredible. Go check it out yourself. They put on one hell of a show. I was so impressed, but sad at the same time. I only got to see the last 10 minutes of their show, but I'm glad I did! What are you waiting for? GO LISTEN NOW!

Monday, August 02, 2004

Another great Paul Graham article

Apparently, Mr. Graham has written a new article entitled, Great Hackers. It's a dosey too! He comes out with all guns ablazing and it seems the slash dot crowd is upset about it. Hehehehehe...Why does the curly brace crowd get so upset when you poopoo on their language? I've had to put with people poopooing on Smalltalk for a long time. And I don't get upset, I get even...=) I get even by being more productive. Amen, Mr. Graham. Keep up the good work. We need more people like him that are unabashedly unashamed to pledge their allegiance to what makes them productive. I salute you!

Sunday, August 01, 2004

Dark Side Of The Cell

Apparently, researchers have recently discovered that certain cells can oscillate at frequencies in the human hearing range. So, some musicians have decided to experiment with it! This is pretty cool stuff. Check it out here. Just when you thought they had done "everything" along comes something like this! VERY COOL!
Alice Cooper Staples Commercial

An Alice Cooper Fan Site has kindly posted the Staples commercial with Alice Cooper and his daughter at this location. IT'S FUNNY! =)

Saturday, July 31, 2004

Vacation Is Over

Well, the second half of my vacation was spent in Utah. All I can say is, "WOW!" The views were the best I have ever seen. We did quite a bit like horse-back riding in the mountains, hiking along canyon ridges, bob-sledding (yep, you heard that right), watching shakespeare, and unfortuantely catching a cold (which slowed me down, but didn't stop me!) All in all a great vacation. I had a blast. It was great hanging out with my wife, my bud Rusty, and his wife. A great time was had by all! Now, it's back in Nebraska. Oh well....=) It was a great vacation to clear my head and dream.

Friday, July 23, 2004

doesNotUnderstand: and code generation

One of the things that I love about Smalltalk is that it allows you to get into the internals and do all kinds of crazy things. One of these things is be able to catch messages that an object doesn't understand and allow the object to do something meaningful. Now, this is great for proxy objects. But, I've also found it helpful in creating new languages for html. Well, generally, doesNotUnderstand: usage is frowned upon and rightfully so. It's a powerful tool to use, but not one you want to use a lot. First off, code becomes harder to debug because you're going through a layer of indirection. It's also hard for beginners to your code to find what you're doing. Things seem to happen by magic. Well, I've been thinking what if I could take away the last restriction? By that, make doesNotUnderstand: a direct call. Well, in Smalltalk I can do that! I can compile a method on the fly, add it to my class, and call my new method. Sure, I still pay for the initial call to doesNotUnderstand:, but subsequent calls are direct message sends. Beginners new to code will now see these auto-generated methods and things run faster. I used this technique in the HttpUnitTest framework because we wanted as concise a language as possible to describe html rules to find content. In a way, this works like Lisp macros (sort of).

I thought it was a nice way to relieve myself of a lot of mindless code and let Smalltalk write it for me. This concept is used in Squeak to fill out accessors. if you call a method and it has the same name as an instance variable, it will create the method for you. Of course, this can be turned on and off. But, it's nice to have when you're writing code. Why write simple methods if the computer can do it for you?
Camp Smalltalk Is Over

Phew! What an exhausting week it has been! I haven't had this much fun geeking out in a long time. I can't wait for the next one! I would love to thank you Martin McClure for kicking so much butt and taking the initiative to do it. THANKS BRO! I would also love to thank everyone that came out to program and discuss my favorite topic: Smalltalk. it was simply GREAT. I enjoyed all of the hacking, conversations, and just plain having fun. The only bad part is that now I have a to do list and a passion to get HttpUnit (name might change) out in alpha and let people see what we did. I think we are almost ready for an alpha release and stay tuned here for more details. Special thanks goes to Roger Whitney and his partners in crime: Dave and Colin. I spent a lot of time pogramming with them and I hope I didn't burden with my silliness to much. It was great hanging out with fellow brethern for a week.

All in all I can't wait till next year(a boy can hope can't he). Now, the urge to go to OOPSLA is very high. I'm going to start praying to the Smalltalk gods right now!

Now, it's off to Utah to bobsled, horse back, hike, and watch Shakespeare! Over and out!

Thursday, July 22, 2004

More Painters And Hackers Quotes

Bill Clementson offers more great quotes from Paul Graham's "Painters and Hackers" book. Click here to read!
YACSR (Yet Another Camp Smalltalk Report

Lack of sleep is getting to me and coffee is required. Me having lot of fun. Me is sad that week is winding down. It's been great having a week of head in the clouds and making the impossible possible. I'm extremely excited about HttpUnitTest and I can't wait to release it for people to play with it. I hope Roger Whitney feels the same way (I think he does...we have been having too much fun!).

I mainly programed yesterday and talked a lot with folks. We had a lot of great discussions on everything from how to market Smalltalk to how to turn Smalltalk into a scripting language. All really good stuff and of course lots of java and microsoft bashing (but, of course, that could be me just hearing myself).

I'm finding love back in VisualWorks. It's been 4 years since I last used it and it has changed a lot. I plan to port HttpUnitTest to squeak nad VisualAge when I get home (it's not going to be very hard since the code base is very small still).

Well, over and out and tomorrow is the last day of Camp Smalltalk...=(

Wednesday, July 21, 2004

Camp Smalltalk: Day Two

Well, I'm working on the HttpUnitTest and we solidified the language to use for querying the html structure. I took a lot of inspiration from Seaside. I wanted something that was as concise as its html generation framework. I think we have achieved that very nicely. Here's an example for one of our tests:

self assert: (browser h1 allSatisfy: [:each | each text = '0']).
self assert: (browser a text includesAllOf: #('++' '--')).
self assert: ((browser id: 'counterValue') anySatisfy: [:each | each text = '0']).

This tests the code from the Seaside counter example. In the first example, I find all of the h1 elements currently shown in the browser object satisfy that their text is zero. The browse object pretends to be just that and is used for navigation. So, if I want to do a simple cick of a link I write the following:

browser clickLink: [:a | a text = '++'].

This code will find all "a href" elements and send it to the block and the first element that satisfies the block rule will be the link that we click on.

Today, we're going to add support for forms and more complicated navigation.

On a side note, we took a road trip Powell's bookstore and I had a blast! So many books, it makes your headspin. I bought three books (how can you escape a bookstore so large and buy no books?!).

Lastly, good and stimulating conversations have abounded. I am with true brothers. I can't express how proud I am to be a part of Smalltalkville this week. I am truly riding on the shoulders of giants this week.

Tuesday, July 20, 2004

Camp Smalltalk: Day One

Mommy, do I have to go home? Man, I'm having a blast. Great discussions continued and we got a lot of great work done. We went to go see some simply breath taking locations. Lots of fun! I went to bed tired and beaten. But, I loved every minute of it. Eric Winger is doing an excellent job of blogging the madness. He's doing a much better job than I!

Monday, July 19, 2004

Love is Camp Smalltalk

WOW! The first night of Camp Smalltalk was awesome. We have taken over Edgefield and the land of Dynamica has been created. It was really great being able to talk to a lot of people that I have respect for and have read their books. Really neat-o. It was also nice not to be constrained and think in the clouds. A lot of times when working on business software, it's just not practical to take full advantage of Smalltalk because everyone needs to understand what you are doing. But, on the project here, you can get away with a lot because those constraints are gone. Plus, it's great to exercise the brain and try experimental things out. In business software, experimental software just isn't feasible. So, you have to get your experimental stuff out in your spare time. So, it's nice to be able to collaborate with folks that want to push the envelope and try things out as well.

I talked and listened a lot last night. I learned a bunch. I can't wait to see how the week unfolds. It's so exciting! It's also nice to be able to bash java and enjoy the company of the some the brightest in the industry. ROCK!

I feel very intimidated to be in such great company. I'm just speechless. Smalltalk is the best! We have the brightest NO DOUBT!
Reclining Seats In Airplanes

Are evil and RUDE! They are nice, but are totally inconsiderate of the people behind them. There is very little room in the seat of an airplane (unless you fly first class) to do anything but sit. But, I like to bring my laptop to program and it's hard to open my laptop when some asshole has their seat leaned back...Grrrrr....End rant of today....

Saturday, July 17, 2004

Camp Smalltalk Tomorrow

Well, I head out to Oregon tomorrow for Camp Smalltalk. I'm so excited I can't wait. I get the chance to meet and program with a lot of great people. It should be a lot of fun! ROCK!
Alan Kay Quote Spotting

I saw Alan Kay's quote: "The best way to predict the future is to invent it" outside of a bookstore in the Detroit airport. I know it's nothing big, but I always love seeing things from the Smalltalk community outside of our community. Anyway, I thought it was cool...=)
Hackers & Painters: Big Ideas From The Computer Age by Paul Graham

Well, I just finished reading this book. I was hoping there would be some additional articles that are not on his site, but I had read them all before. No problem. It was great to read them again. One thing about Paul Graham is his writing energizes you into action. He simply reiterates that the direction that I have taken to run away from the mainstream is justified and the right thing to do. He has a lot of subtle java slams and why you want to go down the dynamic programming path (of course, he wants you to go down the path of Lisp, not a bad path at all). His writing is very passionate and a lot of fun to read. I highly recommend this book and his articles on his website.

Here's some cool quotes:
"We need a language that lets us scribble and smudge and smear, not a language where you have to sit with a teacup of types balanced on your knee and make polite conversation with a strict old aunt of a compiler"

Right on!

"Argue with idiots, and you become an idiot"

Preach on!

"Plans are just another word for ideas on the shelf. When we thought of good ideas, we implemented them."

"The top 5% of programmers probably write 99% of the good software"

"If we were all using the same language, it would probably be the wrong one."

"Lisp's power is multiplied by the fact that your competitors don't get it."

I think Smalltalk's power is the same.

"I suspect few housing projects in the US were designed by architects who expected to live in them. You see the same thing in programming languages. C, Lisp, and Smalltalk were created for their own designers to use. Cobol, Ada, and Java were created for other people to use.

If you think you're designing something for idiots, odds are you're not designing something good, even for idiots."

AMEN!

"Morale is another reason that it's hard to design something for an unsophisticated user. It's hard to stay interested in something you don't like yourself. To make something good, you have to be thinking, 'wow, this is really great,' not 'what a piece of shit; those fools will love it.'"

OH YEAH!

Anyway, do yourself and BUY IT NOW! It's one of the best book I've read in a long time. I hope Paul Graham publishes more. I love all of the books he has (his Lisp books are classics).

Tuesday, July 13, 2004

Alice Cooper - Bare Bones Tour

What a week this has been! I've got to see a lot of my idols this week! I got to see the Master last night and he did not disappoint as usual. He played a lot of older stuff (and a lot of obscure stuff just for us extreme fans). His band has really gelled together well and the drummer was awesome. I don't miss Eric Singer at all. They all played their hearts out and Alice was in top form. Simply, a great great show...=)

Thursday, July 08, 2004

Ozzfest 2004

Well, I went to Hartford, CT to see the first night of this year's Ozzfest because it was the first american date for the reunited Judas Priest. I also got to hang out with some very dear friends as well. The concert itself was a lot of fun and I had a blast! I went mainly to see Black Sabbath, Judas Priest, Slayer and Black Label Society. None of them disappointed. They all kicked major butt. It was great seeing Ozzy with Sabbath and Rob Halford rightfully fronting Judas Priest. I about lost it when Priest played "The Sentinel", "Beyond the Realms of Death", and "Victim Of Changes". Easily among my favorites by them. Anyway, tomorrow night is THE MASTER: ALICE COOPER and I can't wait!!!!
How Geeky Are You?

Go right now and take the Geek Test. I know you want to. I scored 26.23274% which means I merely a "Total Geek". Anyway, it was a lot of fun to take and made me laugh at a lot of the questions...=)
Blogs are Great!

Well, through my posting on my blog, I got on the Camp Smalltalk mailing list. I find it funny that email is becoming less and less a good medium to communicate in. Basically, I think my emails were being eaten by a spam filter and never receving its intended audience. Ouch...Thank you spammers for rendering email useless!

Secondly, I received an email today from a ex-co-worker from my first job out of school and they found me again through my blog. How cool is that?! WOW! I love blogging!

Wednesday, July 07, 2004

More Info On Kyma

Ralph Johnson has provided more info on Kyma here. I can't express how cool I think Kyma is and it's great to be part of the community that delivers such greatness. I hope to one deliver my own Smalltalk baby on to the world. Thanks to Ralph for the update! Now, if I could buy Kyma, life would be AWESOME!

Monday, July 05, 2004

Fourth Of July In Nebreska

OK, I've lived in a lot of places. I've seen firework displays in Kansas, Washington DC, Boston, Raleigh, Alabama, and a few other places I can't remember. Well, none of them matched the one outside of my house the last couple of nights. The land is very flat here, you can see for miles, and the night was clear. All you saw was hundreds of fireworks going off in my neighborhood and distant ones. It was a constant barrage of lights and noise. It was incredible. I have never seen anything like it in my life. They went off for 2+ hours each night. WOW! I love firework displays and all of these little ones were a great show. And I didn't have to pay for one firework, clean up afterwards, or go somewhere to see it. I just got to sit back and enjoy it on my balcony. I found another perk of living out in Nebreska. And most people think there are none...=) You just have to be patient...

Saturday, July 03, 2004

Kyma

Imagine my shock and surprise when I visited my local Barnes and Noble browsed through the recent Future Music magazine and found an article on Kyma. For those who don't know, Kyma is a very cool sound manipulation software package. It's very costly (around $3,000) I think, but if I had the money, I would buy it. Anyway, what's my point and why was I surprised? Well, Kyma is written in VisualWorks Smalltalk and the lengthy article was a review talking about how all of the major electronic and soundtrack composers and sound designers use it and swear by it. I would love to work on their product! I've read about everything I could about it and it's very cool. Combining music and Smalltalk is just too cool. Anyway, right on guys! It's great seeing a Smalltalk company kicking butt, getting respect, and having the coolest product on the block!

Wednesday, June 30, 2004

Great meeting

Man, are we good or what?! We had an excellent meeting last night at the Omaha Smalltalk User's group. Alan Wostenberg gave a passionate presentation on XP and showed off XP Swiki as well. We had a lot of discussions on how to get XP and Smalltalk more widely accepted. The time is now! We need to broadcast our successes! And yes, I'm on a super successful Smalltalk project!

Unfortuantely, there will be no meeting next month. But, we will start back up in August and ready to kick butt! GO SMALLTALK!
Dating Barbie

Check this out: Barbie and Blaine. Apparently, I've been dating Barbie. Man, how am I going to explain this one to my wife? Maybe she's dating Ken now...=) Anyway, I thought this was good for a laugh and funny that they chose my name...=)
Gapless MP3 Playback

Alright, my beloved PJB (Personal JukeBox) mp3 player is on the fritz and I am deeply saddened. It gave me 3 years of great service. So, you say why not just go get a new one? Well, I did! But, it shocked me to know that in 3 years that my old rugged mp3 player (which by the way was the first one with 20GB hard drive....3 YEARS AGO) is still more advanced that a lot of the newer players. One of the "advanced" features is one called "gapless" playback. What this means is that if I play two songs back to back, then I don't get silence between the songs. This is crucial for those beatles, slayer, and live albums that have no silence between tracks. It seems most mass storage mp3 players do not support this feature! Now, why is that? I hear a lot of people say, "Well, mp3 doesn't support it" Why does mp3 have to support it? I think it's a case of lazy designers who forget to put in double buffering (load one segment in a space that is not being played). It's how anti-skip works on your CD player. It amazes me that my old mp3 player does this and the newer ones don't. Is having a double buffer strategy more costly (I don't think so, you still have to load stuff from somewhere!)? I am just baffled. Double-buffering was one of the first things I learned to doing clean audio streaming (and clean graphic animations too). Oh well, I'll get off my soap box now...=)

Sunday, June 27, 2004

Java Complexity

Oh boy, David Buck has posted a comment on Java Complexity. He points to this post which probably has some of the funniest comments I've read in awhile.

It makes me think about my time wrestling with Swing. At the time, I wanted to write a book on bad design and use Swing as the example. Swing is riddled with poor usage of private and final keywords (in other words, the protect you from bits you need to get to if you write your own widgets). There's also poor use of inheritance (why are the Swing components subclassed from the AWT Components?!!!). And to make matters worse, Swing is very complex and daunting for the average programmer. Don't even get me started with J2EE which is supposed to be a distributed framework that was suppossed to make enterprise development easier by making the connection to relational databases easier (oh what a joke, it's the one that it's the poorest at and it wasn't like this problem hasn't been thought about before). My last project in Java, we used Toplink for our relational mapping and used very little of the J2EE API (only the parts we needed). Don't even get me started on Struts (just go look at Seaside and you'll see an excellent web framework).

So, what's it like being back in Smalltalk land? I can safely say I never want to go back to Java. Smalltalk developers get it right most of the time. They understand computer engineering and simplicity. We embrace simplicity and find warmth in it. So, what makes our culture different? I think we don't have to spell every thing out and we get used to getting little bits of our design done incrementally. Our tools support this and the language does as well. It allows us to try more things out and be more experimental. In Java, you just have to nail things down earlier because of lesser tool set and strong typing. It's not to say you can't have simplicity in Java (you most certainly can). You just have to work harder at it than most developers are willing to.

Monday, June 21, 2004

Omaha Smalltalk User's Group

Alright, I've got YET another exciting speaker lined up for the Smalltalk User's Group Meeting here in good ole Omaha! This time it is Alan Wostenberg and he will be talking about XP Swiki. Again, I hate to sound like a fanboy, but the XP Swiki aims to be a super cool new tool for XP teams! The meeting will be June 29, 7:00pm-8:00pm at the Abraham's Library Conference Room. I hope to see EVERY SMALLTALKER in OMAHA there! And hey, if you've been curious about what all the fuss is, come on down and we'll be glad to show you. Yes, that means if you don't know Smalltalk, you're invited too!

XPSwiki is an open source web tool for eXtreme Programming teams. It supports those XP practices related to requirements gathering and project management - user stories and the planning game.
XPSwiki is based on Swiki, the Squeak Wiki technology. It aims to be an agile and user friendly tool which adapts itself to your development process.

Click here for more info on XP Swiki

Monday, June 07, 2004

Maintenance Costs

One thing that I never see on projects is attributing maintenance cost with the success of the project. I always see managers get bonuses because they delivered the project "under budget" (if they do deliver). Typically, the project is maintanence nightmare, but for a lot of organizations, I've seen, they never attribute back the maintenance costs per year back to the project. Why is this? I think its cheating to say a project is done and will cost nothing more. That's simply ludicrous. I wonder how development would change if we depreciated software like we do goods. But, instead of the value going down, the maintenance costs were assessed. If a piece of software started to cost more, then it would be depreciated. Now, why is this important? Because I an easy to maintain piece of software costs less because it was designed well. XP manages this quite well since a project is constantly in maintenance mode and there's no separation between development and after. It's all the same. Systems are grown instead of built. I think if management of IT departments looked at the maintenance costs (at a project level instead of a large sink hole for everyone) that we would see a turn to XP and dynamic languages. But, that's just my theory...=)

Monday, May 31, 2004

Ayreon: The Human Equation

I'm glad people make great music still. This album is simply beyond words. I've been listening to it 2 days non-stop. Nothing else has entered my player. For those that don't know, Ayreon is the brain-child of Arjen Lucasson. He basically assembles a cast of stellar musicians and singers, writes all of the music, and records it. Every album is nothing short of amazing. In fact, everything that Arjen touches is simply incredible. But, his new album, "The Human Equation" is way better than anything I could have expected. It's nice to have a musician to have hopes for and they exceed them everytime. The story is amazing and the music is a tour de force of prog, folk, symphonic, electronic, and metal. And it all sounds coherent. I can't stop listening to it. Right now, I have 10 albums from Mr. Arjen Lucasson and they all KICK. If you enjoy music that challenges and delights you (ala Dream Theater, Yes, etc), then go out and buy this now. This is the album of the decade. YES, IT'S THAT DAMN GREAT! Also, there is a tribute of sort to Mr. Alice Cooper (it would have been nice to have the real thing, but the tribute was done well).

Sunday, May 30, 2004

Weight Watchers One Year Anniversary

This past week marked my one year anniversary of sticking with Weight Watchers. I still haven't reached goal, but I've lost over 65 pounds. I'm actually very close and hope to be at my goal weight by xmas. I feel better than I have in years. It's amazing what losing a little weight and quitting smoking will do for you! Here's to another year of great health!
Omaha Smalltalk User's Group

We had a great meeting this past Thursday! Gary gave a great presentation on ultra-structure and I think everyone walked away with visions of how they could apply it at work (I know I was). We went out later to discuss the Omaha Smalltalk User's Group project. A lot of ideas were batted around, but nothing in stone yet. We even discussed which Smalltalk to use. Whatever we choose to do, it will be fun! Anyway, I wanted to thank Gary for the excellent presentation and everyone that came out! GO SMALLTALK!

Wednesday, May 26, 2004

Camp Smalltalk Mailing List

What Smalltalk god do I need to worship to get on the Camp Smalltalk mailing list? I'm going and I want to join in on all of the pre-game fun. AARRGGHH! I just know that Camp Smalltalk is going to rock and I can't wait. I hope to learn a lot from the masters there! Now, I just need to get on the list! Can anyone help me? PLEASE?!

Tuesday, May 25, 2004

One Year Blogging Anniversary

Today is my one year blogging anniversary! YIPPEE! It doesn't feel like a year. But, it's felt good talking about Smalltalk and the virtues of it. In the past year, I went from being a Java developer (and unhappy) to coming back home to Smalltalk. It feels great to be doing 100% of my off time programming and on job stuff in the language I love most. I'm happy that I was given the opportunity. And yes, programming in Smalltalk everyday is worth living in Nebraska for. So, here's to another year of pro-Smalltalk and pro-dynamic languages blogging!
Tornadoes, Winters, and Allergies

Good grief! Allergies have struck me again. I'm medicated now and feeling better, but what a week here in Nebreska. First off, the midwest and my nose do not like one another. I didn't have any problems with my allergies until I moved out this way. It's already cost me a day of work and one evening. Darn allergy headaches! But, if that wasn't enough, we get all these violent thunderstorms with tons of tornadoes! I feel like I'm playing russian roulette with mother nature out here...=) And did I mention the winter? It's not winter, it's anartica! OK, OK, OK, I'll stop complaining now...

Sunday, May 23, 2004

Chaos, Fractals, Recursion, etc

Lately, I've been back in my mathematician mode and reading books of a mathematical nature. I've always been interested in making complex systems out of simple rules. So, the idea of making fractals by use of simple rules and recursion seems mystical to me. I've been thinking that it would be cool if we could do the same thing in computer science (particularily, multi-agent systems from what I've read). Well, I cam across this link with an interesting discussion on Emergnent Behavior that follows the same lines (simple rules, complex behavior). Check it out here. It's fun stuff to think about.
Modern Day Witchhunt?

I picked up this bit of news from Blabbermouth.
    Donald Bradley of The Kansas City Star is reporting that city of Blue Springs, Missouri has returned almost half of a $273,000 federal grant it received in 2002 to fight a perceived growing Goth culture. Some feared the black clothes, morbid music and obsession with the occult — and Ozzy Osbourne — could lure a wave of youngsters into a world of depression, drugs and suicide.

    Officials returned $132,000 of the money because the Goth situation was overstated in the beginning, Blue Springs Police Chief Wayne McCoy said Friday (May 21).

    Community forums on Goth culture were never held because of a lack of interest, and no youth received treatment for Goth behavior. Both were provisions of the grant.

    "My belief is that you guard public dollars very carefully," McCoy said. "The money wasn't being used so we gave it back."

    The issue arose when parents and other residents called police to inquire about Goth and its influence on teens. McCoy said the callers feared what they didn't understand.
This sounds so incredibly dumb to me. I can't believe our government would spend money to "fix" goth kids. I can think of worse things that a kid can do besides dress in black and listen to depressing music (like doing drugs). We have a problem in this country with drugs and obesity. Why not spend money to fix those problems? I'm glad I'm a not kid growing up now because this is the kind of stupid stuff I grew up with. I was a metal head kid and everyone wanted to "fix" me. Grrrr...People should worry about their own backyards...And one more thing, where did the other half of the money go?

Friday, May 21, 2004

Words Out Of Mouth

James Robertson posted a quote by Colin Putney that say what I was thinking about over vs under design in a much more direct way. It's exactly my thoughts. Go check it out here

Thursday, May 20, 2004

Re: Under-design vs. Over-design

Michael Arnoldus had some interesting comments:
    Very interesting subject. Allow me to suggest a few questions which will help me understand and maybe make it clearer what answer you are searching for. After reading David Schmaltz: "The Blind Men and The Elephant" i've found worthwile to investige in what 'action-context' an answer is to used. Do you need the under- vs. over-design answer to blame somebody or do you need it to evaluate how much design you need to do before beginning? Another question, does the design-question make sense at all until after the fact, when we know what we should have done? Isn't the under/over design answer just as much subject to change as XP claims (and I agree) the requirements are? I'd like to know what you think.

Well, the answer is certainly not to be used to blame anybody for anything (like "NO NO NO BAD PROGRAMMER!") of course. I think the evaluation of how much design do you need to do is getting closer. I think the real reason for the discussing "over" vs. "under" design is to understand how far do you need to go when thinking about a system. The thought and planning still needs to happen, but how much is good enough? Is it OK to err on the side of not enough thought or on too much? Like I said before, the extreme cases of either is clearly bad. But, what about the less than extreme cases. I think we can all point to examples of where under design killed a project or where over design burdened a project into extinction. I keep pondering on what side would I want to err on (of course, I want to err as little as possible, but I know that perfect designs are very hard to obtain if not impossible). The thing about XP is that it says that to err is human and to err on the side of under design because if it not enough then you can refactor in a better design as you outgrow the old one. It doesn't say not to do design, but just to not to go overboard with super generic solutions (basically, don't invent a new tool if a hammer will do for today). I also think its extremely important to always been evaluating a design and refactor it the minute it becomes painful to use. So, I do believe in post-mortem activities after iterations in XP. And to his last point, I would say I would expect the design to change as often as the requirements in the beginning and then slowly harden as the project continues. I would expect changing too much of the design constantly would be a bad thing. A good design changes slowly. I mean how many times was Smalltalk rewritten before we got the system we have today? Perfection is not obtained overnight. I look at a good design like a fine wine. It gets better with age.

Wednesday, May 19, 2004

Under-design vs. Over-design

I've been throwing a question in my head for a while and I thought I'd post about it. The question is simple: What's better under-design or over-design? Sure, the extreme cases of both are bad (awful would be a better word) and painful. But, what about the less extreme cases? I would imagine everyone would agree that good design is in the middle (not too much, not too little). Good design is easy to work with and easy to make changes to. But, a shift either way is under or over design. Now, I don't live in a perfect world and most designs I've seen tend to go to one side or another. I've been asking anyone within earshot what they think and the answers have been very enlightening. My first gut instinct would be to err on the side of over-design, but I think this from coming from the non-XP world. But, now, since I've been doing XP for a little while. I think I would rather land on the side of under design. Why you ask? A lot of people think XP is devoid of design (which is think is absolutely wrong). It's just in XP, we design what we need today and refactor unmercilessly as we go along. The "refactor unmercilessly" is the key phrase because without it you get a severe case of under design and your code becomes painful to maintain. Back in the old days (pre-XP), I was on teams that would design for months before we wrote any code. What we usually got was way over-designed code that had to be changed anyway because of forces of the real world (always making our elegant code messy! How dare it!). When I first started to play with XP, I knew it was a good way to go but was scared about "only design for today" adage. But, what I found is the systems are more adaptable to change. The only time we have problems is when we get into time crunches and forget to "refactor unmercilessly". I think I go back to my saying, "Design for today, but your keep your eye on the future". Lots of times you can add "hooks" to your code that allo extensibility for future enhancements without sacrificing succintness nor adding complexity or code. Think before you code! XP is not about blind coding without thought (which I have heard arguments as such). So, what's everyone else's opinion? I don't know if there is a right answer because each has it's plues and minuses. But, from my experience, a little bit of under design is better than over design. Your mileage might vary of course.
Congrats to Jeremy Turner

It seems Jeremy Turner has gotten the gig as the new Cannibal Corpse guitarist. Jeremy played in the local Kansas band, Origin. And they were an awesome band with a great attitude. They always put on an incredible show and all are great musicians. I met Jeremy a couple of times and he was cool. My old band opened up for them right before I joined (I was doing lights) and Origin spent some time with our guitarist teaching him licks. It's cool to see a local brother doing GREAT (even though I'm not in Kansas anymore...bite me)!!! Way to go man!

Tuesday, May 18, 2004

Cool Quotes

James Robertson has had a string of great quotes! Here's just a couple:

"In the church of complexity, more is always better..."
"The dead hand of rigid systems is holding the entire software development world back..."


Why can't I come up with cool quotes like that. James, I don't care what anyone else says, you are the man! Plus, I love how he has the knack to push up the blood pressure of developers from the world of statica. It's great! Keep up the good work!
Bad Blogger

I've been a bad blogger lately. I've been extremely busy (yeah, a poor excuse I admit). But, it hasn't been for a lack of thoughts! I've been researching fractals and chaos theory lately. Basically, I'm trying to get ready for the GRE to go back to school and it's reignited the mathematician in me a little bit. Of course, I have a list of Smalltalk projects that I'm itching to do as well (XML tools inspired by Seaside and my hate for the poor tools for XML, JXTA, Java integration, .NET VM, neural nets, rules and object integration, etc, etc). But, I want to get back to blogging regularly as well. What's a poor soul to do?

Is anyone else couting the days till Camp Smalltalk? I heard via Patrick Logan that there's a mailing list. I need to get on it!
Next Omaha Smalltalk User's Meeting

Alright, I've got another exciting speaker lined up for the Smalltalk User's Group Meeting here in good ole Omaha! This time is Gary Overgard and he will be talking about Ruleforms. I'm very excited to see this presentation since I have been very interested in rules and objects for a long time and I have never ran across any of this material. Looks AWESOME! The meeting will be May 27, 7:00pm-8:00pm at the Abraham's Library Conference Room. I hope to see EVERY SMALLTALKER in OMAHA there! And hey, if you've been curious about what all the fuss is, come on down and we'll be glad to show you. Yes, that means if you don't know Smalltalk, you're invited too!

The Ruleform Hypothesis: Complex system structures and behaviors are generated by not necessarily complex processes; these processes are generated by the animation of operating rules. Operating rules can be grouped into a small number of classes, whose form is prescribed by Ruleforms. - UltraStructure ACM 1/ 95, Jeffrey Long

More information:
http://c2.com/cgi/wiki?UltraStructure
http://smalltalk.cincom.com/community/digest/2001/May/index.ssp?content=ruleforms

Saturday, May 01, 2004

Omaha Smalltalk Mailing List

I've started a mailing list for the Omaha Smalltalk User's Group. If you would like to subscribe, please send an email to smalltalk_omaha-subscribe@blainebuxton.com with no subject or body. We're planning on starting a new project and I would like to start all the discussion on the list. Everyone is invited! See you there!
Published Presentation

OK, several people have asked me if I would bundle the presentation to make it easy for people to see it. I made a zip package that includes a squeak VM and image with the presentation, Seaside 2.5a, and Komanche preloaded. All you have to do is click here or on the left of the screen. Once you have downloaded it, unzip it, and simply double click on the Squeak.exe. When you see the image, point you web browser to http://localhost:9090/seaside/presentation. And that's it! I pre-started the web browser and I put notes in the image so you can configure Seaside and play around with it. Enjoy!

Friday, April 30, 2004

Omaha Smalltak User's Group Seaside Presentation

First off, I would love to thank everyone for coming out and seeing the presentation. I don't think there was one person to walk out of the room and think that they didn't want to use it. In fact, everyone was like "WOW! I wish we could use that in our work!" I must admit Seaside gives great demo especially with the new halo stuff. I'm going to make a Squeak image with the presentation (which is written entirely in Seaside) this weekend and post it. I'm also going to start an Omaha Smalltalk User's Group mailing list so we can discuss the upcoming project that we are going to do. Again, thanks everyone for coming out and the Seaside crew for making such a great product. See everyone next month!

Monday, April 26, 2004

Seaside Presentation

I wrote my Seaside presentation in Seaside 2.5a and it was a lot of fun. I thought it would be cool to let people download it and look at it. Simply, load this into your image via monticello and then, point your browser to http://localhost:9090/seaside/presentation (assuming you have Komanche on port 9090). Download it here. I have two examples included (one a lame number guessing game and the other a bank account application). Anyone have fun and if you have any suggestions let me know. Make sure to use Seaside 2.5a. The halo stuff is very cool and makes it very easy to give a demo of Seaside in Seaside. Did I mention it was a lot of fun to do this? I can't wait to give the talk on Thursday. COME ONE COME ALL!

Thursday, April 22, 2004

Slave To The Lambda

I find myself using more and more block closures in Smalltalk. I attribute it mainly to Lisp. But, I just can't seem to resist using them to make my code more concise. Last night, I was working on the Seaside Presentation and seaside uses blocks in the rendering of html. It makes the html code incredibly small and easy to read. Most of the code that I wind up writing for web applications generally tends to be get very ugly when it gets around the html generation. This was tue especially in the Java world. But, the code I write in Seaside is Smalltalk and the code is generally smaller than the html that I would have generated. Very nice. I attribute most of the elegance and size of the code to blocks. For example, I found myself writing the following code a lot in VisualAge:

| stream |
stream := CfsReadFileStream open: someFileName.
stream isCfsError ifTrue: [Error signal: 'BADNESS'].
["do some stuff on the stream"
] ensure: [stream close].

Well, I decided to move this code to CfsReadFileStream so that now all I have to write is:
CfsReadFileStream open: someFileName do: [:aStream | "do some stuff on the stream"].

and the method looks like this:
CfsReadFileStream>>open: aFileName do: aOneArgBlock
| stream |
stream := CfsReadFileStream open: someFileName.
stream isCfsError ifTrue: [Error signal: 'BADNESS'].
[aOneArgBlock value: stream] ensure: [stream close].

Blocks allow you to put the code that you repeat a lot (which generally just wrap around other code) to places where the responsibility belongs. Now, my code dealing with streams looks a lot cleaner. I noticed that Ruby handles its files in the exact same way and in fact, they take it one step further (the block you pass in gives you each line if you wish).

I will never give up my block closures ever again....=)
Omaha Smalltalk User's Group Meeting

We will be holding another Omaha Smalltalk User's Group on April 29, 7pm at Abrahams public library in the conference room (90th and Fort). This month's talk will be given by yours truly on the Seaside web framework. So, if you have been curious about Seaside, come on down. I plan on showing how cool and fast you can do web applications. Seaside is the future and could be the killer application for Smalltalk! See you all there! Java/C# guys are welcome to come as always!

Thursday, April 08, 2004

Welcome back

Well, I welcomed my brother-in-law back to the States this weekend! He had been in Iraq this past year and we are so glad to have him back. It was great seeing him again and he had us all in stitches with his amazing stories. I'm so proud of him and glad he's out of harm's way. My heart goes out to the remaining soldiers in Iraq and their families. WELCOME BACK TONY!

Wednesday, March 31, 2004

Omaha Smalltalk User's Group

We had our first meeting of the Omaha Smalltalk User's Group. it was very exciting (and I still need to update a bunch of places of our group, reminder to self). Steve Wessels gave a passionate demonstration of the Squeak environment complete with "Ooohs" and "Ahhhs" from the crowd. I learned a few things while watching the demo and I was amazed at the amount of cool stuff there is to play with in Squeak. Steve did an excellent job of showing all of the faces and a lot of the cool projects. We even got a history lesson that was enlightening. All in all it was a great first meeting and I would like to thank everyone for showing up! Maybe next time, we can raid a local coffee shop and plot Squeak's domination of the programming world....Hehehehe...

The next meeting will be April 29 (which will be a thursday). It will be at the Abrahams public library in the conference room again. Next month's presention will be your truly showing off Seaside and discussing (or shall I say preaching) the greatness of continuation-based web frameworks. Should be a lot of fun! Everyone is welcome (so, if you're curious, come on by, we don't bite!)!

Sunday, March 28, 2004

Omaha Has A Metalfest

I've been listening to a lot of metal lately (of the extreme kind which I haven't listened to since I left the extreme band I played in) and I did some searching on the net to see if Omaha had a metal community and it does! They even have a metal fest! WOW! This should give me something to look forward to! If you live in the area and like extreme metal, click here. There's even a Black Dahlia Murder show coming here in May. Fun stuff. I love the metal underground.

Wednesday, March 24, 2004

Robots Playing The Trumpet?

Check it out here. Am I the only one that thinks this is cool? It would be a lot of fun to work in that department of Toyota, don't you think?

Tuesday, March 23, 2004

The Exodus Attack!

The new Exodus album, "Tempo of The Damned" was released today after what seemed like an eternity wait. My god, it feels like they never left. This got to be the best thrash album I've heard in a long time. This is how it's done! Of all the old bands getting together to do reunions, so far, Exodus puts them all to shame. So, why do you keep buying Metallica, Megadeth, Slayer, or Anthrax albums? Go do yourself a huge favour and buy some thrash that still ROCKS! Now, I only hope the new Heathen and Death Angel can live up to this. BTW, one of my major weaknesses is thrash metal. I love it! It's great to hear some of my childhood heroes still kicking my booty...=) Thrash on!

Monday, March 22, 2004

Does anyone else do this?

I find that I still spend a lot of time reading code. In fact, I spend more time reading code than I do writing it in Smalltalk. There's such a plethora of code out there in Smalltalk land that is entertaining to see how "they did it". For instance, I was surprised to see how small the continuation class used in Seaside was. It's a really cool exercise to see how this code works. Very cool. I also had fun looking at how continuations were done in Dolphin as well. But, the fun doesn't stop there! On one of my many browsings of the image, I seem to always come across something that catches my eye and I'm off on a tangent. I'm always amazed at what my Smalltalk comrades come up with and what inventive lot they are...=)
Original Heavy Music

I'm always on the look out for original heavy music and I found two cool bands this weekend. The first is a band called "Vampire Moose", an unusual band that plays some just heavy and groovy stuff! The cover talked about Dillenger Escape Plan and Obituary. But, I don't think they sound much like either. Just imagine the heavier parts of Mr. Bungle and more straightforward. Good stuff. The next band is "Alchemist" and the best way I can describe them is super heavy space rock. The vocalist uses a ton of different voices to suite the mood of the music that goes from ambient to full balls out chug. It comes off very natural and not forced. It's nice to find a cool new band, it's super cool to find TWO!

Sunday, March 21, 2004

Say No To Censorship

Are you tired of people telling you what you can and can not see or listen? I am. I've been tired of this crap for a long time. Here's an online petition to say we're fed up: Stop FCC. It seems like the 80's all over again and the PMRC is in full swing again. The only thing that makes me worry is, what is the government trying to pull over our eyes? The PMRC was a cover-up to push in taxes on blank tapes without anyone noticing. I wonder what it is now? Why do I wish Frank Zappa was still alive? Anyway, I'm done ranting. Go vote now.

Saturday, March 20, 2004

Groovy

My good friend and mentor, Richard Manning, sent me this link to the programming language, Groovy. I just read over the quick start guide and it looks and feels like Smalltalk in Java (Groovy runs on the JVM). It's also a JSR which is very cool. I love the idea of scripting in Java VMs (it means I can do dynamic language things in it) because it makes Java more powerful...=) There is an eclipse plug-in for it. I can't wait to play with it (and tell the Java guys at work about it). Things like this might do a lot to get Java developers to start down the path of dynamic languages.
Cool New Blog

I just ran into Brian McAllister's blog and I've been enjoying it a lot. He has a great outlook and view on a lot of programming topics. I particularily loved this post entitled:
Perspectives. Basically, the post is about asking each one of us to step back and look at what the other developer was thining when they made decisions. It's a response to a Java developer going off on the decision to make Groovy (a cool little scripting language add-on for Java) a JSR. Brian is a very open minded person and his blog is a great read. I love finding a new blog to enjoy. Especially, I love his comments about becoming a "functional programming weenie" (his words not mine) because I feel the same way sometimes since I've learned Lisp and use some of the lessons learned in Smalltalk (ala I use a lot more blocks!).

Wednesday, March 17, 2004

Pair Programming

I was on a panel at a recent Omaha SPIN meeting and it was a lot of fun! I thought I did pretty good given my short exposure to doing pair programming 8 hours a day for such a short time. My fellow panel members were excellent and it was great to hear their viewpoints. It seems a lot of people are interested in XP and agile. Now, if I could get a lot of people interested in Smalltalk and dynamic languages, the world could truly be a better place....=)
Applied Pair Programming

I just finished this book in an effort to become a better pair at work. I learned a lot and it was a quick and easy read. Some of the interesting tidbits that I picked up were:
  1. Say aloud what you are doing to your pair
  2. Pairs should be very talkative (there should never be more than a minute of silence)
Lots of great advice on how to deal with a difficult pair and different personalities. I could add few myself: LISTEN, LISTEN, and LISTEN! And trust in your partner to do the right thing. Anyway, if you're doing pair programming, it's a must read!
Lynyrd Skynyrd

I saw the "new" Lynyrd Skynyrd the other night and they gave me a great nice of good ole southern rock. Michelle got teary eyed during "Red, white, and blue" and I must admit it was very emotional. But, then again, I got emotional over "Sweet Home Alabama". Oh well, the only disappointment with the evening was the opening band and the omission of "Simple Man". Everything else was perfect. They're playing again this summer and hopefully they will correct that situation.

Wednesday, March 10, 2004

Put that in your pipe and smoke it

Just go to this article on Smalltalk and Productivity. You just got to love James Robertson's commentary. Have I mentioned how much I love being back in Smalltalk lately? IT FEELS INCREDIBLE!
Personality Tests

OK, at my new workplace, everyone has taken personality tests and have their results posted so everyone can better understand one another. I thought it was a great idea. Here's some of my results and URLs to them so you can you do them as well.

Simple Test

    Introspective
    Sensitive
    Reflective

    You come to grips more frequently and thoroughly with yourself and your environment than do most people. You detest superficiality; you'd rather be alone than have to suffer through small talk. But your relationships with your friends are very strong, which gives you the inner tranquility and harmony that you require. You do not mind being alone for extended periods of time; you rarely become bored.

Colorgenics Tests

    You have a vivid imagination and this is good. Great inventors, explorers all had inventive, imaginative minds. Your friends and acquaintances may consider you over-imaginative and given to fantasy or day-dreaming. So what? This is a part of your character and charm.

    Enough is enough. Nothing seems to be working out as you would like it to and it has got to the stage where you feel as if you can't be bothered anymore. The way you feel is that it would be great if you could be cut off from everything and take it easy - be it only for a short time.

    It is amazing that you yourself believe that old 'adage' that you are a misunderstood person - and you feel that because of this you are being left out in the cold. It is because of this lack of believed understanding that you feel the need to conform to society in general - but this situation leaves you 'cold' knowing that you are not appreciated for your true self. Any relationship that you are developing at this time does not seem to involve any true emotional commitment, you seem to be just playing along.

    You are being unduly influenced by the situation that is all around you. You do not like the feeling of loneliness and whatever it is that seems to separate you from others. You know that life can be wonderful and you are anxious to experience life in all its aspects, to live it to the full. You therefore resent any restriction or limitations that are being imposed on you and you insist on going it alone.

    You are anxious about all the limitations to which you are subjected to at this time. You feel that you are not valued for what or who you are. You need OUT. So why procrastinate any longer - MOVE!

    archetype: The Catapult
    Handy in the real world manipulation of objects and events, this personality type is easily enthused by practical projects. Once gaining the interest of the Catapult, a project will be quickly and sometimes manically dealt with. That energy however will be invisible to those not witness to it. Abrupt is a watchword of this personality.

    Spontaneity is important to the Catapult because it never quite knows when inspiration will hit. Because of this, it often ignores or conveniently forgets rules and boundaries that limit its freedom. This need for freedom extends even to the personal sphere and though this personality is kind and gentle, it will often be hard to pin down to a monogamous lifestyle. When discussing their need for freedom, the Catapult will most often resort to non-verbal means to express itself.

Jung Typology Test

Funny, huh? My wife is exactly the same thing! Maybe that's why we get along so well! We understand one another! =) Anyway, I thought this was a fun little assignment.

Friday, March 05, 2004

Dust Off Those 3-D glasses

I'e always wanted to do my own 3-D images. I love 3-D stuff and have been in awe of it since I was a little kid. I can remember my father bringing home the blue/red glasses and watching movies like "King Kong" in 3-D. It was great! He also took me to several 3-D movies when I was little, so it's always had a special place in my heart. So, I found some resources on the net (look here) that tell you how to do it. I went out with my trusty disposal cameras and came up with two really cool images with little effort. The colors are not quite right on these and I'm still looking into that, but they look really sharp in my Squeak image. Yes, I did doctor the images in Squeak. The other pictures still need a lot of work and I hope to post some more. But, I was so excited that I just had to share these!

Crowley 3-DHouse 3-D

Thursday, March 04, 2004

Additional Info

Smalltalk User's Group is March 30.

Wednesday, March 03, 2004

Omaha Smalltalk User's Group

If you're in the Omaha, NE area, please feel free to stop by Abraham's public library (around 90th and Fort) at 7:00pm for the first Smalltalk user's group! We will have an exciting demo of Squeak by Mr. Steve Wessels. I would like to have lots of discussions and maybe we'll go for coffee later. I want the user's group to be a lot of fun and very interactive.

Saturday, February 28, 2004

Java Serialization Framework

I'm so excited right now. I started the Java Serialization idea 2 years ago! Now, it should not have taken this long to write it, but I've change jobs twice and lots of overtime at my real job doesn't help. Well, I finally got some free time and got it working. I'm still not 100% happy with it, but I plan on making that better over time. The next mission is to be able to run the Java byte codes in the class loader. Should be fun! But, I can at least say that I finished what I set out for part 1. Anyway, check it out here. I've already found it great to debug serialized java object streams (especially, if the classes had changed and someone forgot the serial version UID!). It now does read/write of serialized streams.

Wednesday, February 25, 2004

Camp Smalltalk, Here I Come!

I just sent in my deposit and I can't wait to make the journey to this year's Camp Smalltalk. It will be the first one I've ever attended. So, who's coming with me?

Monday, February 23, 2004

Why Smalltalk is so freaking great

Go directly to Alan Knight's post. AMEN BROTHER! AMEN! Can I add a few?
  • Metaclass The most fun one person can have. Their power is enormous. For example, by taking advtange of metaclasses, I can write compilers inside of Smalltalk! I can also browse the code and debug it with my Smalltalk tools! WOW! Smalltalk/X has several examples built in (Prolog, Java, etc), Squeak has several to download, and not to mention that any other Smalltalk allows it. I can do this on a per class basis. There's a lot of sick things that you can do like have compile each of your classes differently or even have them "behave" differently. Recently, I heard they were adding instance-based behavior (ala Self) to Squeak so you can add methods and variables to instances and not just classes. So, you could have instances with different behavior. How COOL is that!?

  • become Yeah, yeah, yeah, I know...Every book tells you not to use it, but when you're developing, it comes in very handy. And I still contend it's good for proxies. It's something to use sparingly and I will always look for other solutions. But, it's nice to have it when you need to get rid of instances in your image.

  • IDE is a running Smalltalk system Now, the Eclipse folks will say that this is true for it as well. But, can I change the way I look at classes and see my change immediately without restarting the environment? No is the answer in Eclipse and yes in Smalltalk. It's an amazing thing to taylor your IDE to you and do it while you're in it without shutting down.

Well, that's all I could add since Alan did such a great job. Go read his excellent post now!

Saturday, February 21, 2004

Excellent Article On Business and Lisp

There's simply nothing more that I can add, except go read this blog post from Bill Clementson. I think we should do the same for Smalltalk as well since I think it's equally suited for the same reasons Bill gives for Lisp.
Definition of Stupid

I've never seen this definition before, but I like it:
    A stupid person is a person who causes losses to another person or to a group of persons while himself deriving no gain and even possibly incurring losses.
I gleemed this from a post from James Robertson's blog.

Friday, February 20, 2004

I want to go!

Here's the details on Camp Smalltalk 2004!
    I'm pleased to announce that we will be holding a Camp Smalltalk from
    July 18-23 2004 in the vicinity of Portland, Oregon, USA.

    To finalize our space reservation, we need to place a deposit on a
    minimum of ten sleeping room reservations. We expect more than that to
    attend, but we need at least ten definite attendees to step forward
    and send in a deposit now. We must receive the minimum number of
    deposits BY MARCH 5. If you want to make a reservation, see below
    for details.

    The basics:

    What:
    Camp Smalltalk. Smalltalk enthusiasts spending several days in small
    groups collaborating on a number of open-source projects to benefit the
    Smalltalk community. All Smalltalk dialects welcome. For more details,
    see http://campsmalltalk.com.

    Who:
    Smalltalk enthusiasts. All experience levels are welcome, from "Using
    Smalltalk for more than 20 years" to "Fascinated by Smalltalk, but never
    really used it."

    When:
    Afternoon of Sunday, July 18, through midday Friday, July 23

    Where:
    McMenamins Edgefield
    Troutdale, OR, USA
    http://mcmenamins.com/Edge/index.html

    How Much:
    The main cost is the lodging and meals package at Edgefield. You're
    responsible for getting yourself there. All prices given include room,
    meals, gratuities, and tax for all five nights, and are in $US.

    Single-occupancy King or Queen or Double Queen room: $600
    Single-occupancy King or Queen or Double Queen Suite with bath: $952.50
    Double-occupancy King or Queen or Double Queen room: $530 per person
    Double-occupancy King or Queen or Double Queen Suite with bath: $787.50
    per person

    There are very few rooms with two beds -- if you want one of these
    rooms register soon.

    We're looking into high-speed internet access, which would have some
    additional cost. We will not commit to additional cost without the
    approval of those who have registered.

    ---------------------------------------------------------

    Facility Details:

    Location

    McMenamins Edgefield, Troutdale, OR, USA
    http://mcmenamins.com/Edge/map.html
    A 15 minute drive east of PDX, the Portland Airport
    It's right on the edge of the Portland Metro area, five minutes from the
    hiking and waterfalls of the Columbia River Gorge. It's easy to reach by
    public transit from either PDX or downtown.

    -------------------
    General Feel

    A private brewpub-based resort at a lovingly and quirkily restored
    historic campus of buildings -- lodgings, restaurants, brewpubs,
    winery, gardens, movie theatre, and more. Even a little golf
    course. Filled inside and out with interesting artwork
    (http://mcmenamins.com/Edge/art.html). Even a working hot glass studio
    on the grounds. Hillside location with views across the Columbia River.


    --------------------
    Work Room

    We'll be in the main ballroom, which is generously sized (36x68 feet,
    11x20m), on the second floor of the main lodge, with many windows on
    three sides and a huge mural on the walls.
    The view is away from the river.

    ----------------------
    Sleeping Rooms

    Mostly European-style rooms, with private baths down the hall. Some
    suites with bath are available at a higher rate (see above). Most
    rooms have one bed. A few two-bed rooms are available -- send in a
    deposit soon if you want one of these.

    -----------------------
    Meals

    Meals are included with room. If we eat in fairly small groups in their
    restaurants, they'll give us vouchers good for up to a specified amount
    for each meal. The Black Rabbit Restaurant
    (http://mcmenamins.com/Edge/brabbit.html) is very good, and the Power
    Station Pub (http://mcmenamins.com/Edge/pub.html) also has good stuff.
    Voucher amounts will be $10.50 for breakfast, $16.95 for
    lunch, $26.25 for supper.

    -----------------------
    Activities

    On-site: Golf, evening movies, wandering around looking at interesting
    stuff (brewery, winery, distillery, artwork).

    Fairly short drive: The Columbia River Gorge
    (http://www.fs.fed.us/r6/columbia/forest), with hikes and viewpoints
    for amazing waterfalls and volcanic cores, Bonneville Dam, mountain
    viewpoints and more hikes. About the same distance to downtown Portland.

    Longer drive: Mount St. Helens, Mount Hood, boardsailing or kitesailing
    on the Columbia, etc., etc.

    ==========================================
    Registration
    ==========================================

    To register, print out the registration form available at
    http://wiki.cs.uiuc.edu/CampSmalltalk/Camp+Smalltalk+Oregon+2004
    and send it with your deposit to:
    Martin McClure
    GemStone Systems
    1260 NW Waterhouse Ave, Suite 200
    Beaverton, OR 97006 USA

    To help us reach our minimum, and to guarantee you a room, we must
    RECEIVE your deposit by MARCH 5.

    For details, check the FAQ below, or the latest info at
    http://campsmalltalk.com

Wednesday, February 18, 2004

Reading List

OK, I just found this recommended reading list from the Squeakland website. It was compiled by none other than Alan Kay. What shocks the hell out of me is that I've never heard of any of these books. Crap, just as I'm getting a little bit of head way on my reading, this comes up. Looks like I'm going to have my nose in a few books soon...=) Should be a lot of fun!
Master of Fine Computing And Mentorship

Alright, I've been thinking of the idea of aprenticeship lately (shocker, right?). And it got me thinking about the mentors that I've had in the past. Several people have taken me under their wing and mentored me. I am thankful to every one of them. I learned different things from each of them. Everyone of them have made me not only a better developer, but a better person as well. Mentors can teach things that a book will never ever do. They teach experience via horror stories of their own past. The writing style of Andy Hunt and Dave Thomas reminds me of being around a great mentor without being physically there. I love their books, but back on topic... I am thankful that I've studied under the best. They made me understand objects, taught me all sorts of cool tricks, and discipline. But, I feel like I have so much more to learn. Which brings up to my next question. Who would you want to be a apprentice under? I've already be an apprentice under Steve Wessels, Richard Manning, John Sarkela, Paul McDonough, Leroy Mattingly, and many more than I can think of. So, here's a list of people I would love to be an apprentice to: Paul Graham, Andy Hunt, Dave Thomas, Rebecca Wirfs-Brock, Allen Wirfs-Brock, Dan Ingalls, Alan Kay, Jill Nicola, Mark Mayfield, Mike Abney, Robert Martin, Martin Fowler, Kent Beck, Ralph Johnson, Gerald Sussman, Harold Abelson, Joe Armstrong, and many more. I'm sure I'll think of more that I missed later. The list grows every year. But, it's fun to think of. There's just so many people that have helped me and will help me. I'm thankful to them all. So, who would you pick if you could pick anyone to be an apprentice for?
Harvesting Party For Squeak

Ken Causey just announced 100 hour parties for harvesting Squeak bug fixes. I think this is simply a brilliant idea and I hope to attend at least one of these:
    Also posted as a story at
    http://people.squeakfoundation.org/article/29.html

    No, I don't mean one party that is 100 hours long. I mean a recurring
    party every 100 hours.

    I'm sure everyone has noticed that the Harvesting process has
    bottlenecks. We are largely a community of Doers. It's difficult to
    find the time to settle in and take care of some of the mundane issues
    associated with harvesting. We also don't have enough eyeballs looking
    at code right now even at the best of times. So I would like to borrow
    a page from other open source communities and schedule our version of a
    bug squashing party. To steal from Kent I would like to 'turn the knob
    up to 10' on this concept. Let's have a regular event scheduled in such
    a way that everyone has an opportunity to attend at least once a month
    or so. 100 hours = 7 days * 24 hours - (3 days * 24 hours) + 6 hours.
    By scheduling a 4 hour party every 100 hours each party will occur on a
    different day of the week during a different period of the day. With an
    average of 7 parties each month taking place on different days and at
    different times everyone should be able to find a time to attend at
    least one each month.

    We can develop the details of what happens at a Harvesting Party over
    time but I envision that everyone that has some free time during the
    party come to the Squeak IRC channel (#squeak on irc.freenode.net) for
    companionship and virtual refreshments. You will start up a Squeak
    image with BFAV2 loaded and pick out a BUG or a FIX or an ENH that needs
    reviewing or approving or fixing (depending on your abilities and
    preferences). When you run into a snag or a question the others
    attending the party will be there to provide support and advice.

    I floated the idea first to Göran on #squeak and he mentioned that he
    had just sent an email to Marcus Denker suggesting a 24 hour harvesting
    party to try to move 3.7a along to beta status. So we threw the idea
    together and so here's the bang:

    The first Harvesting Party will take place from Noon GMT Friday February
    20th, 2004 to Noon GMT Saturday February 21st, 2004. A 24 hour party
    with a goal to replace that 'a' with a 'b'.

    The next Harvesting Party will take place at 16:00 (4 PM) GMT on
    Wednesday February 25th, 2004 (100 hours after the end of the big
    party).

    Each regular schedule Harvesting Party will last 4 hours.

    The schedule for the next 7 harvesting parties is (each 100 hours after
    the start of the previous party):

    20:00 (8 PM) GMT Sunday February 29th 2004

    24:00 (Midnight) GMT Friday March 5th 2004

    04:00 (4 AM) GMT Tuesday March 9th 2004

    08:00 (8 AM) GMT Saturday March 13th 2004

    12:00 (Noon) GMT Wednesday March 17th 2004

    16:00 (4 PM) GMT Sunday March 21st 2004

    20:00 (8 PM) GMT Thursday March 25th 2004

    I will handle announcing the parties regularly.

    So put on your party hat, limber up your fingers, prepare your mind, and
    show up!

    Ken Causey

Tuesday, February 17, 2004

Insanity

I've always been bothered with the notion that programmers are interchangeable parts. Technical managers that I have had seem to think we are all the same. Cut from the same tree if you will. Am I the only one that thinks this is hog wash? Like anything in life, there will be people that rise to the top of their field and be the best there is. But, it seems people think that programmers are all the same. I find this bothersome. I've known managers that thought they could pull anyone off the street and in 6 weeks have a good programmer. Would we expect to do the same with musicians? Just pick anyone off the street that knows nothing about music and expect them to play a mozart concerto flawlessly after the same period of time? I think the answer would be no! Would we expect to take even a first year english student and expect them to write poems the caliber of William Shakespeare? HELL NO WE WOULDN'T! So, why do we expect the same from programmers? I think like anything in life, those that have passion for programming will be better because they simply practice more (and read more too). We all know great programmers are hard to find (and I always pick their brains when I find one). Not every programmer is the same. We all have strengths and weaknesses. Why should we treat software engineers as interchangeable? It makes for nice marketing, but leads to mediocre software. I hear a lot of complaints about that. Well, I think one path away from mediocre software would be to stop treating us as interchangeable equal parts. Some people will be just better (either through talent, brain power, or sheer knowledge) at certain programming tasks. We should listen to them more when we are doing those tasks. The expert will not always be the same person. We should give them work that matches those talents. There is room for every skill level of developer on a project (and for each task), but we should make our better programmers be the mentors for their respective expert area. The best way to learn is by example and everyone can improve their code-fu. Thinking of programmers as being on the same footing leads to laziness and never offers a way for junior developers to learn from the more talented developers. Apprenticeships should be our path. Programming is not a simple task and has many facets. Why don't we just acknowledge it? I seemed to be all over the map on this one, but there's a lot to be said.

Sunday, February 15, 2004

Updgraded to Squeak 3.7a

WOW! It looks pretty! I love the new font and a lot of the graphics to make things look a little bit more mature. I like it! It took awhile to update my 3.6 and it looks like there has been a LOT of changes! Squeak changes a lot from release to release and it's simply amazing. I've also decided to work on my Java Serialization framework again and to finish it up!

Saturday, February 14, 2004

Silly

Do you love peanut butter and jelly? Well, it peanut butter and jelly time! Go here to prepare!

Thursday, February 12, 2004

Great article

I just finished Dave Thomas' and Andy Hunt's excellent article, The Trip-Packing Dilemma. I wish I had the knack for boiling concepts down like they do and making them easy to understand. I've been questioning the YAGNI (you ain't gonna need it) concept lately of XP and they have written an excellent critique of it. It's full of food for thought. Right now, they might be favorite programming authors (better watch out Mr. Fowler). They don't know how much I get from their wisdom. I am eternally grateful.

Wednesday, February 11, 2004

Smallblog

I just read via the comments on James Robertson's blog that Avi is working on a new version of SmallBlog! I've been looking at adding cookies for a little while (but I got too deep and screwed everything up). And well, I must admit I can not wait till Avi is finished so I can see how he did it! I haven't made any new updates to Smallblog because of this and I keep finding myself in trouble in the code. But, I've been learning a lot about Comanche and Seaside (always a good thing).

Monday, February 09, 2004

Great Joke

My grandmother-in-law sent me this great joke:
    Three Southerners and three Yankees are traveling by
    train to the Super Bowl. At the station, the three Northerners
    each buy a ticket and watch as the three Southerners buy just one ticket.

    "How are the three of you going to travel on only
    one ticket?" asks one of the Yankees.

    "Watch and learn," answers one of the men from the
    South

    They all board the train. The three Yankee men take
    their respective seats but all three Southerners cram into a toilet
    together and close the door. Shortly after the train has departed, the
    conductor comes around collecting tickets. He knocks on the toilet
    door and says,
    "Ticket, please."

    The door opens just a crack and a single arm emerges
    with a ticket in hand. The conductor takes it and moves on.

    The Yankees see this happen and agree it was quite a
    clever idea, so after the game they decide to do the same thing on
    the return trip
    and save some money. When they get to the station
    they buy a single ticket for the return trip, but see, to their
    astonishment, that the three Southerners don't buy any ticket at all.

    "How are you going to travel without a ticket?" says
    one perplexed Yankee.

    "Watch and learn," answers the men from the South.

    When they board the train the three Northerners cram
    themselves into a toilet and the three Southerners cram into another
    toilet just down the way. Shortly after the train is on its way, one
    of the Southerners leaves their toilet and walks over to the toilet in which
    the Yankees are hiding. The Southerner knocks on their door and
    says, "Ticket, please."
More Alto Dorado Music Posted

Well, it's old stuff that was mainly written on my qy-70 when I first learning midi sequencing. Fun stuff. I dragged it back out and had forgotten how much I enjoyed it. So, I decided to put it on the web. Hell, I figured somebody out there might like it. Go here to listen and scroll down to the bottom (it's the oldest stuff, thus it's on the bottom).
Nothing cleanses the soul

Like a day of listening to nothing but Zakk Wylde. I can not wait for his new acoustic album. If it's anything close to Book Of Shadows. The man is a rare breed: a great guitarist and songwriter. Something that you don't see too often. Plus, you gotta love that southern rock vibe coupled with heavier than hell guitars. It doesn't hurt that he puts down Limp Biskit every chance he gets too....Hehehehehe...=) Just preparing myself for some great southern metal tomorrow: DAMAGEPLAN! This is going to be the year that the southern boys teach everyone what an ass kicking truly is. I know, I know, Zakk is not southern, but damn, I make him an honorable member of the club of southern metal gentleman. Hint: Zakk's the real deal and not that wuss kid rock....=) Now, if Dimebag and Zakk would make one album together....Metal would be over as we know it.
New Agent Remote Control

I decided to spend a little bit of time and make some much needed updates to my agent remote control software. It's a fun little project that I do for just me. I've now added the capibility to load/store your own tapes for the agent to run. The next version will have the capability to edit the event list and the delays. I also fixed several bugs that had been nagging me and a basic clean up of the code. I'm still not happy enough with the code to release it yet. Anyway, have fun.

Sunday, February 08, 2004

Collections, messages, and blocks

I've been seeing a lot of code lately that uses select: and collect: messages to collections and you might be thinking, "yeah, Blaine what's the big deal, that's the way we do things!" Now, doing a collect:, select:, or anything else on small collections is fine, but what about when the collections get big? Things like a collect:, select:, or reject: become time consuming and huge memory suckers, since Smalltalk has to create a new collection for the new copy. Or does it? Since, we are just sending messages around and are encapsulated from the implementation of the collection that is returned by collect: or select:. Why not delay the calculation? Keep the block around and avoid calculating the new collection until absolutely necessary. I want to play around with this idea and see what happens. I'm thinking for small collections, it will cost more, but as the collection grows to be very large, the performance gain of not creating a new collection will be enormous. Or maybe not...Stay tuned...At the very least, having a language with lambdas (blocks) and dynamically typed gives one a lot of flexibility to think thoughts like this and try them out.

Wednesday, February 04, 2004

YAFSS

More snow coming (I'll let you figure out the acronym) and we're expecting 6-10 inches. There's already like a foot on the ground. This is the third major snow storm is less than 1 month. Oh joy, more shoveling...=)
New Damageplan kicks ASS!

Well, I just couldn't resist the temptation and listened to the entire new Damageplan tonight on vh1's site. The sound was crappy, but the songs came shining through. There's more diversity in the songs (I would have liked a little more) than in Pantera and I think I'm going to love it with each listen. It's cool to see southern brothers doing good and still making kick ass music. Alright, Crowbar you're next for kicking my southern ass...=)
Space Music Retreat

I WANT TO GO! Check it out:

SYNAPTIC CONFLUENCE
space music retreat
May 3-7 2004
Sky Lake Lodge, Rosendale NY

There will be a retreat for electronic musicians at a secluded lodge in
the Catskills of NY state.
Anyone who is interested in sharing 4 days of space, ambient, electronic
and experimental music is invited to participate. Musical activities
will include individual performances, group improvisations, and
collaborations. This is a great opportunity to develop creative ideas
and broaden your musical community, while relaxing in a peaceful,
natural setting.

Non-musicians are also welcome.
The registration fee of $320 will cover 4 nights lodging and 3 meals per
day.

Details are available here:
http://spacemusic.us

We are also planning a one day space music festival in Philadelphia, on
the Sunday after the retreat (May 9). Priority for performances at the
festival will be given to those traveling longer distances to the
retreat, and collaborations formed there.
Happy Birthday Alice

Well, it's the master's birthday! Let's hope he enjoys more! Which reminds me...when is that new tour coming around? I need my Alice fix!

Sunday, February 01, 2004

March 9 is going to kick all ass

The Judas Priest box set is coming out on that date and it has something that I have been waiting for a long time. The 1983 Memphis concert from the Screaming For Vengeance tour!!!!!!!!!!!!!!!!!!!!!!!!!!!!! OH MY GOODNESS! Now, all I have to wait for is the new Alice Cooper remastered discography! This is going to be the year of music!
More Snow

Another 6 inches is to fall upon us. Oh joy...