Thursday, June 30, 2005

No More Caffeine For Me

I went on a search today after Eliot Miranda told a hilarious story about the goverment giving various drugs to spiders and observing the results. I found several pictures of the webs and it was shocked. The LSD web is the most articulate while the caffeine web is a mess. The study sounded funny, but I must admit that the results are revealing. I know I don't want to ingest anymore caffeine now. And it gives me excuse for the coding competition: I was drinking too much coffee. Yeah, yeah, yeah, that's the ticket.

Back Home

I made it back home today all in one piece of mind from Smalltalk Solutions. This was the first one that I have attended and it will not be my last. It was great meeting all of the people that I admire. It was sad to come back home because I will miss the late night conversations and the dreams of future that could be. I'm more invigorated to get my act together. I want to present something cool next year no matter what. I'm thinking HttpUnit, with some of the extensions that I discussed with Colin Putney and David Schaefer, might be it. But, I have other ideas that I've had and one is from my ill-fated uce case management tool. All I can say is Niall Ross' speech was a call to arms for me. I've even batted around the idea of doing a practical Smalltalk book much like Peter Siebel's Lisp one. I don't know yet, we'll see how everything works out. But, we need to get the word out. I'll also be colloborating with a few new people and that should be exciting. Being at STS also made me want to participate in the community more so that I could get more accomplished at my time there. So, everyone in the IRC, #smalltalk channel watch out! This was just my introduction. I'm ready to blow the roof off the mother! Again, I had a blast with everyone I talked to and I truly appreciate the time that you gave me. I know I took in a sizeable amount of information to parse. You all rock and I love the Smalltalk community. YAKS UNITE!

Wednesday, June 29, 2005

3rd Best

I got 3rd place in the coding competition and it was an embarassing 3rd place. The reason for my embarassment was because my program never ran. It was steeping in bugs! The problem with just 4 hours is that I didn't have enough time to debug everything. Oh well, I just wish the program would have ran and lost fair and square. I figured my algorithm would have lost anyway after watching Kevin's and Micheal's excellent programs run. It was an honor to compete with such great programmers. And being in the top 3 isn't a bad place to be. I entered to get to Smalltalk Solutions and well, it's been everything that I imagined. I've made a ton of new friends and I have a plethora of new ideas running around in my head. Expect a lot of blogs entries once I complete the thoughts. I'm running on spare batteries right now and I can't wait to get home. Yet, a piece of me doesn't want to leave.

Young Ass Kicking Smalltalkers

It's 2am and it fits my attitude. We are the future knights! Who's with me? Let's take it to the next level! ROCK! Seriously, I had a great day at Smalltalk Solutions. Not one bad conversation and I think I wore everyone out talking technical stuff. My mind seriously hurts. Lots of food for thought and mad fun! I would like to thank everyone for putting up with me. I can't express how much joy the talks, discussions, and debates have meant. It's been unbelievable for me to meet so many that I respect and admire. I've made a lot of friendships while here and I'm going to be sad when it ends tomorrow. Well, maybe not if I win the coding contest...But, Micheal might have something to say about that...=)

Monday, June 27, 2005

Compiling Away Does Not Understand

I was talking to Micheal Lucas-Smith, while we were at the Magic Kingdom, and I were talking about our designs in the contest. I mentioned that my study of prototypical languages had warped my design. He asked how that was and I told him that my survey response objects forwarded their calls to their corresponding questions if they didn't understand them. For example, a message send of #name to the response would forward the call to its question object. These messages have the form:
    name
    ^self question name

Now, I'm a lazy developer. I didn't want to write these messages everytime I add some new messages to question that I want my response to asnwer. So, what do I do? I could implement #doesNotUnderstand so that it forwards the message, but I didn't want to do that because:
  1. It's hard to debug

  2. It's S-S-L-L-O-O-W-W

  3. Confusing

So, what do you do? Well, in Smalltalk, I can have the #doesNotUnderstand: message basically compile a new method for me because it's always of the form listed above. This gives me the performance and it's easy to debug. If you put these special methods in their own category then you can easily track them. Tracking them is good to catch subtle forwarding bugs. Here's what the #doesNotUnderstand: message looks like:
    doesNotUnderstand: aMessage
    (self definition respondsTo: aMessage selector)
    ifTrue:
    [self compile: aMessage selector forwarder: #definition.
    ^aMessage sendTo: self].
    ^super doesNotUnderstand: aMessage

And here's what the compile code looks like:
    compile: selector forwarder: forwarderSelector
    | messageStream header |
    messageStream := String new writeStream.
    header := (self perform: forwarderSelector) class methodHeaderFor: selector.
    messageStream
    nextPutAll: header;
    cr; tab;
    nextPutAll: '^self ';
    nextPutAll: forwarderSelector;
    nextPut: Character space;
    nextPutAll: header.
    self class compile: messageStream contents classified: self class autoGeneratedCategory

And that's it! This allows me to have a form of delegation by forwarding messages to certain objects. Other objects now do not have to grab an object just to perform actions on it. This makes your objects more shy which is a good thing. Micheal liked the idea and asked me why I had not blogged about it. I told him I didn't think much about it. It's just so simple. He told me that I should blog about it. Well, here it is...=)

Coding Competition

The finals for the Smalltalk coding competition were held yesterday. First off, it was mad fun. Alan Knight came up with a really hard problem that seemed simple. It was a bar game involving change (pennies, nickles, etc). What we had to do was write code to connect to a game server playing this game and interact with it. You can guess that the next objective was to create a computer player. No problem right? Nope, I ran out of time! I'm not even sure my player is going to work! If it does, he will be an utter and complete idiot. Four hours is not a lot of time and I wasted a good bit of time on the server code. The reason for that is because the inner coder in me likes writing understandable code and four hours is not enough for understandable code. The time constraints force you to know your tool and not to teeter on any one solution. Just pick one and GO! I simply lost track of time which is a major no-no in coding competitions. But, I'm not disappointed in my dismal performance. I got a chance to chat with Micheal Lucas-Smith yesterday at Disney World and it was great meeting Kevin Badinger at the competition. Great Smalltalkers period. If I have to lose, I know it will be because my opponents' code fu was stronger. We will be placing the players in competition with one another on Wednesday to determine the winner. I don't have high hopes. I'll be over joyed if mine works! Finally, I would like to thank everyone involved in the competition. I had a lot of fun. I can not express that enough. I'm so thankful for the opportunity.

Sunday, June 26, 2005

Embarassed

I haven't looked at my contest submission until today. I was playing with the application and ran into an error! I couldn't believe my eyes! I thought I had tested it thoroughly! But, nope, there was the BlockContext>>doesNotUnderstand: #asMIMEDocument staring at me. How could I be so dumb? Well, the fix was trivial. I had my presentation loaded up when I coded the contest and I had this little ditty:
BlockContext>>asMIMEDocument
    ^self value asMIMEDocument

It allows me to use a block as a MIMEDocument so if my document renders itself immediately, I can delay it. I mistakeningly thought it was part of Seaside and not my own code! DOH! Anyway, the fix was easy. The documents are use for it render themselves on the fly and don't need to be wrapped in a block.

But, still this is an important lesson. AUTOMATE YOUR GUI TESTS! So, I'm going to do the two-pronged approach. Port the HttpUnitTest framework to Squeak and use it! Also, I need to download David Schaefer's excellent Seaside testing framework. Both would be a nice one-two punch. Well, I'm off to breakfast and a day of thrill rides.

Saturday, June 25, 2005

Made It

I'm here at Smalltalk Solutions. Tomorrow we're going off to the theme parks. It'll be great to chat with everyone. Travel was alright. The only problems were getting to the hotel and a slight mechanical problem with the plane. So, nothing to sweat over. Laptop is doing great and let's hope it survives through tomorrow night's competition!

Sunday, June 19, 2005

Laptop Woos

The saga continues...It seems HP DID NOT FIX MY DEFECTIVE HARD DRIVE. Sorry, for yelling, but I've been through hell with their tech support. So, what am I to do? I went down to Best Buy tonight and they will install a new hard drive in the same day. I'm not going back to HP tech support ever again. In fact, I'm so mad at that company right now that it will take a few years to get my business back if ever. In all honesty, there is not much that they can do to get this customer back. I'm never buying the stupid tax called extended warranty ever again as well. I'll just leave some money in the bank for that purpose. Hopefully, the saga will be over by tomorrow night since Best Buy said that they could have it done in one day. Let's see if they can actually hold up to their promises. And all of this before Smalltalk Solutions! I should thank my lucky stars that it failed again today while Squeaking and not Orlando.

Excited about Smalltalk Solutions

I haven't been blogging much lately. Lots of stuff has been going on, but I thought I'd mention how excited I am about going to Smalltalk Solutions this year. I can't wait to meet my peers in the competition. I'm hoping to make some new friends! And we all can do with more of those right? I'm also excited at the list of presenters. It would be cool to spend an evening picking the brains of some of these guys. I just finished Eric Evans' book, "Domain-Driven Design" and it was a great read. And of course, Niall Ross will be cool to increase my meta-fu! And the list goes on and on! It will be nice to meet up with old friends and find new ones. Also, I hope there's a lot of action at Camp Smalltalk! So, everyone look out! I'm bringing the energy...=) Email me if you want to get together! SMALLTALK ON!

Tuesday, June 14, 2005

Omaha Smalltalk User's Group

OK, this month's meeting is real special. We're teaming up with the SPIN group to present a really cool presentation! Here's the details:

This month we have a real treat. Mike Cohn, a Denver Scrum expert,

will introduce us to Agile Estimating and Planning.



We'll look at why traditional planning fails,

how to overcome those problems  with a story-driven process,

how to estimate and plan with stories,  

and why agile planning works.



We'll round out the evening with an interactive estimating


exercise over pizza that will give you

specific techniques to apply in your own work.



About Mike Cohn. Mike founded Mountain Goat Software{1} in 1993 to

help organizations apply agile development methods to difficult

software problems.

Mike is certified in Scrum{2} and author of User Stories Applied

and the forthcoming Agile Estimating and Planning (Fall, 2005)



Venue:


7pm next Tuesday June 21 2005,

Northern Natural

Gas, 1111 S 103rd Street, Omaha,

Room 149



Join us! If you plan to attend, visit www.omahaspin.org and register.



{1} www.mountaingoatsoftware.com


{2} www.controlchaos.com

A special thanks to Alan Wostenberg for setting this up!

Saturday, June 11, 2005

Laptop's Back

I got my laptop back yesterday and it's almost back to operational status. I'm glad it's back fixed. But, I must admit the whole experience with HP support has left me cold. They almost refused to service my laptop because of a scratch on the outer shell and the hard drive had gone bad which was the real problem. I spent extra money on their three year three day fast fix warranty and they had the laptop for over two weeks. It took several phone calls before they agreed that they were being silly and they just needed to replace the bad hard drive. Grrrrr...So, the laptop comes back and they note they haven't fixed anything, BUT THEY HAD. It's enough to make you go to the funny farm. I can't believe how poorly I was treated. I'm a pretty tolerant person. And, to me an extended warranty is insurance for anything going wrong through normal wear and tear. I baby my laptop and was shocked how quickly they wanted to snake out of their obligations. I'm simply glad I got my laptop back in one piece and fixed. I spent nearly 8 hours on the phone over the course of the ordeal. So, what did I learn? Think twice before I buy anything from HP again and never buy another extended warranty. Trust me you are throwing your money away. What's the point of insurance if the company doesn't honor their end of the agreement? It just means you're giving them more money and getting nothing in return. Alright, time to SMALLTALK and create some love in this world!

Monday, June 06, 2005

Missing my Laptop

I've been without my laptop for the best part of a week now and I'm starting to miss it. I've set up linux on one of my old machines in the meantime. So, it's not all bad and I've been catching up on a lot of reading in the meantime. I plan on blogging on my ordeal with HP once everything is done. Somne of it was really silly. But, it's getting fixed now (the hard drive went out) and I should have it before the weekend. This is after several phone calls and almost in tears. Besides, I'm anxious to start playing around with prototype languages since I think I now understand it more now than I did before. I thought I might implement one in LISP just for fun. Who knows? Let's hope my laptop comes soon!

Sunday, June 05, 2005

Prototype Eureka

I've been reading a ton of articles on prototype-based programming. I even bought Prototype-Based Programming: Concepts, Languages and Applications which is an excellent introduction to the subject. So, I was thinking prototypes are a great idea, but I had some reservations since I have been so long in the class-based camp and prototypes are radical. I had basic questions of like how do I organize my programs now? Well, I found "Organizing Programs Without Classes". What an amazing read. It answered all of my questions and gave me my first "Eureka!" moment in prototype-based programming. It all feels so liberating! I can't wait to get my laptop back and continuing my studies of Self and Io!

Omaha Ruby User's Group

It's time to hold the second meeting of the Omaha Ruby User's Group. This meeting is just a simple get together like the last one. The only planned topic is to be bring your favorite pieces of Ruby code or your curiousity. Hope to see a lot of people there! Make sure you sign up on the mailing list. Here's the information of the when and where:

    When:June 6, 2005
    Where:Panera @ Eagle Run Shopping Center
    13410 West Maple Road
    Omaha, NE 68164

Thursday, June 02, 2005

Ain't I Cool?

I'm sorry but I need to toot my own horn. Look at this:

The Smalltalk Industry Council is happy to announce the winner of the first portion of the 2005 Smalltalk Solutions Coding Contest. Congratulations on a fantastic job. The winners in no particular order are:

  1. Blaine Buxton

  2. Michael Lucas-Smith Sorry for the misspelling before!

  3. Andrei N.Sobchuck


How COOL is that?! I can't believe that I'm in the top 3! I am so excited! I can't wait to meet the fellows in the top 3 with me. It'll be great to sit and chat with them! This is great news since my laptop has been sick this week and that's why it's been slow on the blogging part. I can't wait to get out there and mingle with my Smalltalk brothers and sisters! This is going to be so much FUN! I can't wait to compete! See everyone June 26! SMALLTALK ON! Oh, I almost forgot I would like to thank everyone for putting on this contest! It was MAD FUN!