Thursday, May 26, 2005

Morphic Thesaurus

I've been dabbling with morphic lately and this is the result. It was a fun learning experience. I love using a thesaurus as I've mentioned before here and I wrote a little utility to look up words in one. I can see myself writing a lot more utilties in morphic for myself. This wa only the first. So, if you have Squeak, it's on SqueakMap under the title, Thesaurus. Now, I have my beloved thesaurus built into my Squeak image. ROCK! Now, I need to implement it in Eclipse. But, I have a few other projects that need to be taken care of...=)

Tuesday, May 24, 2005

Shock And Awe Squeaking In Omaha

All I can say about Steve Wessels's demo on Squeak tonight is "Wow". A tour de force of what you can do in Squeak. I got to see a lot of it before he gave it and I helped a little bit (Steve did all of the work). I think we all decided that after 4 hours of intense Squeak presenting (remember this carried over from the last meeting) that we now need to give more in-depth presentations on various parts that Steve presented. So, it looks like we have a lot to discuss this summer! SQUEAK ON!

Thursday, May 19, 2005

Mad Fun

I'm glad I posted my submission to the coding contest. Micheal-Lucas Smith posted his as well and I had a lot of fun reading the code and looking at the web application. Man, I would hate to be a judge! He did such a fantastic job. I didn't think about using Prevayler, but I wish I had. It's simply awesome what he did! If anyone doubts what you accomplish with Smalltalk, look no further. It will be exciting to see what other people did as well.

Smalltalk Coding Contest Submission

I thought it would be nice to make my Smalltalk coding contest submission available. Just download the zip file and extract it. Simply run the Squeak image and follow the instructions in the workspaces. Now, the code is still rough (make that extremely rough). I'm a little embarassed by some parts of it. But, I am a perfectionist and a firm believer in elegant code. There's a lot of things in Seaside that I didn't use, but should have that would have made my life a lot easier and cleaned up a good bit of the code. The domain is rough as well. There's a great deal of work that I would love to do to it both design and code wise. I've had many thoughts on the subject since yesterday. But, it was 48 hours to complete and I'm happy that I exercised all of the domain with unit and acceptance tests. I also realized that I need to fix SmallHttpUnitTest for VW7.3 and port it over to Squeak as well. But, I digress, I thought making my submission available would be fun for people to see. I thought it would be great to write an article about it and using Seaside. Right now, the code is a barely acceptable form of using Seaside. But, it would be great to write an article on refactoring it to use all of the cool fixtures that are available. We'll see. Anyway, enjoy! If anyone has any thoughts, feel free to drop me a line! Oh and one more thing, I wrote the workspaces in the image at 6am on pure adrenaline alone! And it all needs to be heavily refactored. I was trying to see how much functionality I could provide in 48 hours and minimal sleep.

Wednesday, May 18, 2005

Smalltalk Contest

I participated in the Smalltalk Coding Contest. It was mad fun! I had a blast doing it. Huge thanks goes to Jason Jones and everyone involved in getting this off the ground! Hats off! I would like to thank all of the developers that I built my on top off. I truly stood on the shoulders of giants to get the task done. It was great coding in Squeak and seeing how much I could accomplish in a short period of time. I plan on doing a presentation on it. The task was to write a survey taking tool that allowed you to view the results. I'll probably post my code later. It's still a mess, but what do you expect in 48 hours? Oh, and have I mentioned how much I love Seaside lately? If not, I'm saying it now! Now, I'm keeping my fingers crossed. I hope I'm a finalist!

Resumable Exceptions

Time for another "this is why Smalltalk is cool" post, but this one also holds true for Ruby And Lisp as well. So, it's a "why Smalltalk, Ruby, and Lisp kicks mucho booty" so to speak. OK, enough of the back patting and let's get down to business. Today's topic is resumable exceptions. It has a nice geeky ring to it doesn't it? The first thing you might ask yourself is, "Why in the world would I want to resume an exception? It's an exception! Dead programs tell no tales!" True, true. Normally, you want an exception to send your program down in flames because you had a mechanical glitch that you didn't expect. Better stop everything before the propeller goes slashing through your data unkindly! But, what if we had exceptions that were good that could notify us of potential bad things or even enumerate potential bad things? Well, we do and we can! Smalltalk has a different take on exception handling. Much like a nuclear reaction in a controlled environment gives you energy, and mass destruction otherwise, Smalltalk allows us finer control over exceptions and what we can do with them like resuming. This is a powerful idea and it allows us to do unheard of feats in other languages especially when it comes to things like validation. For example, say we had the following code:
[self form validate]
on: ValidationException
do: [:exception | ^self informUser: 'Validation Failed: ', ex messageText].
self form save.

Pretty simple, right? Well, what if our form is very complicated and it's validation method looked like this:
validate
self name size > 25 ifTrue: [ValidationException signal: 'Name size > 25'].
(self email contains: $@) ifFalse: [ValidationException signal: 'Invalid Email'].

Pretty straight forward and under normal circumstances, our validation code will always signal on the first occurance it finds. Well, for the user it will get tiresome because it only points out each exception one at a time. The user will start to feel like Curly from The Three Stooges. And we don't want hairless users running around do we? Now, what if we could resume and just tabulate the validation exceptions and show them at once? No code changes in the form validation code, just in our handling of it. Well, we can do just that! Here's the new code:
[self form validate]
on: ValidationException
do:
[:exception |
validationMessages add: exception messageText.
exception resume].
validationMessages isEmpty ifFalse: [^self informUser: 'Validation Exceptions' messages: validationMessages].
self form save.

I left out some of the variable declarations to ease the readibility, but you get the gest of it. We now can resume on each occurance of the validation exception! Very cool! But, it doesn't stop there. We can return values from exception signals via resumes and this allows things like dynamic scope variables. Enjoy. Ruby's exceptions are resumable too. So, what are you waiting for? Go play!

Saturday, May 14, 2005

Jealous: Dolphin 6 Beta

Apparently, Dolhpin 6 Beta is out. I'm jealous that I wasn't picked to be one of the beta testers! DARN IT! I guess I have to wait with the rest of the good folk to wait to see what they have cooked up for us. It looks simply wonderful thus far. I have always maintained that Dolphin is the cleanest of all the Smalltalks. It's elegant and beautiful. A simple joy to program in. I simply wish that I would have been one of the choosen few. DARN IT! Oh well, I guess I can wait another few months for greatness...=) I can guarantee it will be worth the wait for all of us! Are there any beta testers that I can bribe for a peak? Kidding, of course...=)

Wednesday, May 11, 2005

Io

I finally got around to taking a serious look at Steve Dekorte's Io language. I subscribe to his blog and it's always a great read. I finally got around to looking at Io since my interest in prototype-based languages is peaking again. It's a wonderful language and from the 10,000 foot view has everything that will be fun to explore. It's inspired by Smalltalk (everything is an object, right on), but has a lot of cool Lispisms (Access to the parse tree...could it possibly do Lisp macros? Yummy! I've been thinking of using code generation and meta-programming together and this looks perfect!). Oh, and did I mention that it's also been inspired by a host of other cool languages like Self and NewtonScript? The syntax is nice and simple. It's been downloaded and I'm ready to learn my language of year! I want to fully explore the prototype-based OO paradigm because I find myself drawn to it because of it's simplicity and it just feels beautiful to me. I'll be blogging more of my thoughts soon...

Metal Church Memories

I listened to the first two Metal Church albums today and they brought back a lot of memories. Most of them are them are from good programming times and my parents freaking out over the lyrics. I remember one time was getting into programming and my father overheard me singing the lyrics to one of their songs. He started to worry when I sang "We kill tonight" from the computer room. I remember my mother sitting me down to tell me my father was worried about me. At least, they were understanding. Man, it's weird when your heroes start dying. I only knew David from his music, but heavy metal music was very important to me when I was growing up. It holds a special place in my heart along with the musicians that create it. They gave me hope and inspiration to keep fighting the good fight. I know it sounds corny and weird, but it's true. Thanks for all of the great memories dude, RIP.

Omaha Smalltalk User's Group Part 2

I am proud to announce an emergency second meeting this month for the OSTUG! Steve's presentation went over so well that we're creating a special meeting just to hold part 2! We didn't get to the Croquet demo because Steve had so much cool stuff to show (Don't worry we're going to get to it). Part 2 promises to be even more exciting. So, if you want to see the future of computing or just do something cool, come see what Squeak can do for you! Steve gives a great presentation that will have you pumped to write Squeak code. Here's the details:

Here's all of the details:

When: May 24, 2005, 7pm - 9pm
Where: Offices of Northern Natural Gas
1111 S 103rd Street
Omaha Nebraska 68154

Office is at 103rd & Pacific. Guests can park in the Northern visitors parking area back of building, or across the street at the mall. Enter in front door, we'll greet you at the door at 7:00pm. If you arrive a bit later, just tell the guard at the reception desk you're here for the Smalltalk user meeting in the 1st floor training room.

David Wayne Dead At 47

David Wayne, original singer for Metal Church, has died at 47 from complications from an automobile accident. Wow, I am in shock. Two of my favorite albums as a teenager were Metal Church's debut and "The Dark". David Wayne sang on both of those albums. I loved his voice. I'm telling you that on the other side there is one hell of a band playing. RIP, David and thanks for all of the wonderful music.

Monday, May 09, 2005

The Art Of Thinking

I just finished reading "The Art of Thinking" by Harrison and Bramson. It's a wonderful little book which despite it's title is more about understanding yours and everyone else's thinking styles. It's an easy and enjoyable read. There's a test in the back and here's how I scored:







Thinking StyleScoreMeaning
Synthesist47Moderate Disregard
Idealist53Moderate
Pragmatist50Moderate
Analyst61Moderate Preference
Realist59Moderate

Basically, I'm pretty even across the board with a slight preference for Analyst and Realist styles and I am weak in the Synthesist style. Now, this doesn't mean anything bad, it's just a getting to know yourself exercise. All of the thinking styles have strengths and liabilities. It has a lot of practical advice on how to figure out what thinking style someone is and how best to influence them to get your ideas heard. It was also helpful for me to know when I tune someone out to why. It gave me a lot of homework and things to try out. Nothing is better than self improvement. It should be mandatory reading for every shop that pair programs.

Omaha Smalltalk User's Group

This month, Steve Wessels and Blaine Buxton will be talking about Squeak and Croquet. Basically, if you've never done anything with Squeak, now is the time to learn. Steve has an unforgettable presentation on the abilities of Squeak. We will demonstrate Croquet and give a more detailed presentation on it next month. As always, bring snippits of cool code and we'll continute discussing Seaside, rules, and FIT project.

Here's all of the details:

When: May 10, 2005, 7pm - 9pm
Where: Offices of Northern Natural Gas
1111 S 103rd Street
Omaha Nebraska 68154

Office is at 103rd & Pacific. Guests can park in the Northern visitors parking area back of building, or across the street at the mall. Enter in front door, we'll greet you at the door at 7:00pm. If you arrive a bit later, just tell the guard at the reception desk you're here for the Smalltalk user meeting in the 1st floor training room.