My Stuff
Email
Twitter
Front Page
Presentations
Projects
Music
Favorite Quotes
Dynamic Language User's Group

Love
Michelle Buxton

Respect
Vincent Foley-Bourgon
Sam Griffith
LeRoy Mattingly
Colin Putney
Matt Secoske
Sam Tesla
Andres Valloud

Admiration
Leo Brodie
Avi Bryant
Alan Cooper
Steve Dekorte
Stephane Ducasse
Doug Engelbart
Eric Evans
Brian Foote
Martin Fowler
Paul Graham
Dan Ingalls
Alan Kay
John McCarthy
Steve McConnell
Peter Norvig
Niall Ross
Randall Smith
Gerald Jay Sussman
David Ungar
Rebecca Wirfs-Brock
...And So Many More...

My Amps
Squeak
JavaScript
Scheme
Java
Corman Lisp
Ruby
Dolphin Smalltalk
Cincom Smalltalk
Self

Archives
05/01/2003 - 06/01/2003
06/01/2003 - 07/01/2003
07/01/2003 - 08/01/2003
08/01/2003 - 09/01/2003
09/01/2003 - 10/01/2003
10/01/2003 - 11/01/2003
11/01/2003 - 12/01/2003
12/01/2003 - 01/01/2004
01/01/2004 - 02/01/2004
02/01/2004 - 03/01/2004
03/01/2004 - 04/01/2004
04/01/2004 - 05/01/2004
05/01/2004 - 06/01/2004
06/01/2004 - 07/01/2004
07/01/2004 - 08/01/2004
08/01/2004 - 09/01/2004
09/01/2004 - 10/01/2004
10/01/2004 - 11/01/2004
11/01/2004 - 12/01/2004
12/01/2004 - 01/01/2005
01/01/2005 - 02/01/2005
02/01/2005 - 03/01/2005
03/01/2005 - 04/01/2005
04/01/2005 - 05/01/2005
05/01/2005 - 06/01/2005
06/01/2005 - 07/01/2005
07/01/2005 - 08/01/2005
08/01/2005 - 09/01/2005
09/01/2005 - 10/01/2005
10/01/2005 - 11/01/2005
11/01/2005 - 12/01/2005
12/01/2005 - 01/01/2006
01/01/2006 - 02/01/2006
02/01/2006 - 03/01/2006
03/01/2006 - 04/01/2006
04/01/2006 - 05/01/2006
05/01/2006 - 06/01/2006
06/01/2006 - 07/01/2006
07/01/2006 - 08/01/2006
08/01/2006 - 09/01/2006
09/01/2006 - 10/01/2006
10/01/2006 - 11/01/2006
11/01/2006 - 12/01/2006
12/01/2006 - 01/01/2007
01/01/2007 - 02/01/2007
02/01/2007 - 03/01/2007
03/01/2007 - 04/01/2007
04/01/2007 - 05/01/2007
05/01/2007 - 06/01/2007
06/01/2007 - 07/01/2007
07/01/2007 - 08/01/2007
08/01/2007 - 09/01/2007
09/01/2007 - 10/01/2007
10/01/2007 - 11/01/2007
11/01/2007 - 12/01/2007
12/01/2007 - 01/01/2008
01/01/2008 - 02/01/2008
02/01/2008 - 03/01/2008
03/01/2008 - 04/01/2008
04/01/2008 - 05/01/2008
05/01/2008 - 06/01/2008
06/01/2008 - 07/01/2008

Feed

Add this feed to a running copy of BottomFeeder

Tuesday, September 30, 2003

 
FINALLY

OK, I got everything switched over and ok. As you can see, the template has been changed. Now, you might ask me, "Blaine, Why did you change the layout of your blog?" Well, I could say I was sick of the old one, but the truth is simple this: the old one got trashed for some odd reason. So, why not start new? I got almost everything back except for the comments. I plan on getting them assed back REAL SOON. So, don't fret, a minor bump in the road. Anyway, I hope everyone finds their way here!

Comments

 
The Eyes of Alice Cooper

Wow....Again, Alice surprises the hell out of me. The man simply always amazes and I never know what to expect from an Alice release except quality. This is no different! Some of the songs are just plain flat out rock, some punk, but all are loud. They have Alice's trademark snarls and lyrical play. I always thought "Last Temptation" was the closest that he had gotten to the 70's Alice sound, but this one takes the cake. The production sounds awesome! It's going to take several listens to catch everything since Alice always hides a few surprises underneath the covers so to speak. Anyway, a GREAT ALBUM from the MASTER! What are you doing still reading this? GO BUY THE DAMN THING!

Comments

 
Cult Of Dead

The Squeak Wiki is a wealth of information and I enjoy reading it. I regularly read the changes page to see what's new and changed. Well, I came across this excellent article by Jim Benson called:
Cult of Dead. It's a great read. It take a critical look at our community (Squeakers and even Smalltalkers) and pulls no punches. Great stuff!

Comments

 
You made it

Welcome to my new place on the web. If you're seeing this message, you made it...=) Now, I can get back to the business of blogging....=)

Comments

 
Alice Cooper Release Day

Yep, the new Alice Cooper is released today and I can't wait to head down to the local record store and pick it up. Every Alice is worthy of celebration. The master calls my name. I must go!

Comments

Monday, September 29, 2003

 
Moving Domains

Alright everyone. I'm switching domain servers, so the old links to my posts might stop working. I updated all of the links to use my "www.blainebuxton.com" domain name instead of "members.cox.net/blainebuxton". This will probably be the last post I make to the blog at this location. I'll be switching over to a new service tonight. In the iterim, everything is successfully going through my domain name. It's just when I switch servers there might be problems...=) So far, so good though...Sorry for the short notice, but this has to happen in part because of the move to Nebreska. But, I promise once it moves...It's staying for a LONG TIME. Again, I apologize....Please update your links and your RSS feeds!

http://members.cox.net/blainebuxton/weblog/blogger.html is now: http://www.blainebuxton.com/weblog/blogger.html

The RSS feed changes from: http://members.cox.net/blainebuxton/weblog/index.rdf to: http://www.blainebuxton.com/weblog/index.rdf

THANKS AND SORRY!

Comments

 
Ruby Interview With Matz

A friend sent me this link to an interview with Matz, the inventor of Ruby. I met Matz briefly at LL2 and loved his talk. He's one of my new heros. I love the way he thinks and Ruby is an absolute pleasure to work with. I always refer to Ruby as the new Smalltalk with funny syntax and without the environment (I would love to write an environment for it!). Anyway, go read the interview and have F-U-N! Matz Interview

Comments

 
Bloated IDEs

James Robertson made a great blog entry this morning about IDEs: IDE Fun.

The funny thing is that I can start and shutdown Dolphin Smalltalk 6 times while trying to startup Eclipse ONCE. Squeak is the same way (I think I might have gotten 7 out of Squeak though). Maybe everyone should try it as a fun experiment. I mean, I've never had Smalltalk image from any vendor that didn't come up in seconds on modern computers. At work, I have 768 megs of RAM and a Pentium 4, and Eclipse still goes off to lala land (hitting the disk drive for 5 minutes) several times in a day. I still think Eclipse is the best IDE for Java, but I wind up using Scite for all my non-Java needs (html, javascript, ruby, etc) simply because it comes up quickly and doesn't bog me down at all....=) It's a simple text editor that doesn't pretend to be anything more with highlighting and searching.

But, then again, if I had my choice....Oh, how I can't wait to be back in Smalltalk land....21 days till the love is back! But, for now, No sleep till Smalltalk...=)

Comments

 
Erlang
I got the following reply from Alan Kay on the Squeak Mailing List when I replied about Erlang to a fellow Squeaker. I thought it was cool that he too thought it was worthy of looking at.

Hi Folks --

Erlang is worth looking at.

At 11:53 AM +0000 9/29/03, Blaine Buxton wrote:
    Hey,
    I've been reading up on Erlang myself. They have an approach where everything is a process and you send messages to these processes.

This was the approach of the original Smalltalk. It is also used by David Reed in the object-process scheme in Croquet (back to the future!).

    Just imagine having a separate process for each Squeak object.

Andreas Raab has made process switching in Squeak extremely efficient ....

    They argue that processes should be as easy to create as objects. You would think this would kill performance, but actually, the systems they have written in it scale very well (the web server they wrote in Erlang can handle 10x the capacity of a Apache server, if I remember correctly). They also boast numbers of 99.99999% availablity for the Ericsson switch that was written in mostly Erlang. Now, those boasts are what got me interested. It is a functional language and they are big on no mutable state like most functional languages. They argue that Erlang makes multi-processing easy and in fact easier than single process systems. They seem very anti-OO on their list,

Then they don't understand OO or history ...

    but I have found that the whole process thing maps very well to objects.

It does.

    But, I haven't gotten that far. It just seems they have been scarred by the {} crowd and static typed OO systems.

These are OO systems?

    I haven't had a whole lot of time to really get much deeper than that. I bought the book and have been working through some of the examples. They do a lot with pattern matching

Again, like Smalltalk-72.

    and it's made me think about certain programming topics differently.

As I mentioned, this approach is well worth studying. It also harks back to the tail-recursive ideas of Actors (Carl Hewitt) which were derived from Smalltalk, but have many interesting contributions of their own.

Cheers,

Alan

    I know I wasn't the person you were asking for the answer, but I thought I'd chime in.
    ------------------------------------------------
    Blaine Buxton
    My Amps: Smalltalk, Lisp, and Ruby
    http://www.blainebuxton.com

      From: Daniel Vainsencher
      Hi Richard.

        "Richard A. O'Keefe" wrote:
        I like Smalltalk (and Erlang and Prolog) a lot

      [snip]

      Sorry about the off topic interjection, but can you write a paragraph or
      two about Erlang? I've tried to get the flavor of it from
      site/documentation, but haven't quite made it yet.

      Daniel


Comments

 
Could Javascript be more elegant than Java?

I'm starting to believe that I should really try to get Rhino plugged into our Java environment at work. I have wanted it before, but ran into problems that I shall not mention here. Anyway, I would have a dynamic, prototype-based, and functional language at my disposable that takes a lot less code to express the same idea than in Java. Excellent article...Read it now!
Event Handlers and Callback Functions - article - w3future.com

Comments

 
More Javascript Stuff To Read

Think Javascript is not advanced? Go read this blog entry and then read the links. Who would have a thought?! I'm becoming impressed. The prototypical guys might be winning....=) Good reading...
Curiosity is bliss: Advanced Javascript links

Comments

 
Important Words in Marriage

I picked this up from Joeri's Weblog. I must say it's a very good list and great advice.

  • The 6 most important words: 'I am sorry, I was wrong'

  • The 5 most important words: 'You have done it well'

  • The 4 most important words: 'What do you think?'

  • The 3 most important words: 'I love you

  • The 2 most important words: 'Thank you'

  • The most important word: 'WE!'

  • The least important word: 'I'


  • Comments

     
    Do Not Read While Drinking Coffee

    Thanks to Micheal Lucas-Smith for this funny link: RoShamBo Programming Contest

    Comments

    Sunday, September 28, 2003

     
    Funny FedEx Commercial

    I about rolled over the floor laughing when I saw this commercial: Funny FedEx Commercial.

    Comments

     
    Congratulations RAM

    Just wanted to congratulate my friend, Ram Nukala and his wife on the upcoming new Smalltalker set to appear in January! Ram told me last night that they were expecting a new child. WAY TO GO! Ram also showed me some new code he had been working on using JavaScript and CSS. Very cool stuff. I was extremely impressed. He had written a simple rules engine in JavaScript that could be run on both the client and the server. The code was very small and he did his best to convince me on the powers of a prototypical language. I'm thinking he might be succeeding...=) Anyway, I can't wait to see the pictures of their new baby when it is born! CONGRATS, my friend!

    Comments

     
    Call me a nut as well...

    James Robertson has been called a "nut" in one the java newsgroups. Too funny. Read about it here. It's nice to be in the company of fellow nuts...=) I think you know you are pushing people's buttons when they have to go to the level of calling you names. How "smart" of them...

    Comments

     
    More thoughts on VMs

    I read Richard Demer's comments on VMs and now, this whole idea of a universal VM has got me thinking. My thoughts are that I think current VMs are too static. Why couldn't we make features loadable via shared libraries? Want to have more byte codes? Plug in a new "feature" into the VM and your new byte codes work. Want to support type safety? Plug that in too. Now, I would recon that some features might actually clash with others, but then, we could partition our VM so that multiple languages could run in the same space. Binding features at runtime to VMs sounds like a cool idea for research...Maybe I should chalk this up to YAPTD (yet, another project to do)? Anyway, it would be fun to play with, I must admit....=) I wish I was going to Lightweight Languages this year and discuss this with the folks there. Some extremely bright folks out there!

    Comments

     
    Re: Nifty Trick

    Got the following reply via email about my Nifty Trick post. I've posted my reply along with the original email. Enjoy!


    Hey,
    First off, thanks for your comments! I thought about doing it the way you specified. But, I decided the proxy was too much. Here's why: There's only a handful of methods that need to be recorded in the public interface of the agent actually. And I thought the #triggerCommandEvent was easier to implement. Now, the agent simply "broadcasts" events and doesn't care if anyone is recording them or even listening to them. So, you could have mulitple recorders listening to the same agent. The tape registers itself as a listener on the agent object only when it is in "reocrd" mode. Otherwise, the tape is not registered and does not care what the agent is doing. Actually, the tape has several states it can be in and this is implemented via the State pattern. So, it's acutally, the "record" state that registers itself to the agent and unregisters when stop is pressed. I need to put up the source for the Agent program soon. But, I love these types of design discussions.

    I posted the nifty trick simply because "walking the stack" is a pretty cool feature of Smalltalk and most dynamic languages actually. I must admit that I try NOT to use it, because like you said, "it makes the code less portable", but I knew when I wrote the agent that it would just run in Dolphin. Also, I thought it was cool to generically "record" the method by walking the stack and then calling that method with its parameters on any object that implemented that protocol. Now, my code for the Java Serialization is a different matter. I want to make that portable as I can. But, I thought I would at first implement it in Squeak and then worry about portability issues.

    Thanks for reading my blog!
    ------------------------------------------------
    Blaine Buxton
    My Amps: Smalltalk, Lisp, and Ruby
    http://www.blainebuxton.com

    >From: Reinout Heeck
    >To: blainebuxton@hotmail.com
    >Subject: Re: Nifty Trick...
    >Date: Sun, 28 Sep 2003 14:23:16 +0200
    >
    >Your blog's reply box only allows 400 characters :-/
    >So I respond by email.
    >
    >
    >
    >----------
    >
    >
    >It seems to me that when you use your code to replay the 'tape' the
    >actions get added to the tape once more.
    >
    >Is this the intended behavior or do you switch to a different object
    >(no recording) when playing back?
    >
    >
    >
    >Allow me to suggest a variation:
    >
    >remove the calls to #triggerCommandEvent and instead wrap the Agent
    >with a generc proxy, implement #doesNotUnderstand: on the proxy to
    >both record the message and resend it to the Agent.
    >
    >Advantages:
    >
    >1) no more stackwalking so more portable code
    >2) possibility to wrap multiple recorders around one Agent
    >3) more generic: you can now record messages to any object type
    >4) decoupling: the Agent does not take on the responsibility of
    >recording. (The developer does not need to remember to insert 'self
    >triggerCommandEvent' in the right places)
    >5) clearer code:
    >
    >Agent>>withRecorderOnTape: aWriteStream
    >
    > ^Recorder on: self tape: aWriteStream
    >
    >
    >
    >Recorder>>doesNotUnderstand: aMessage
    >
    > tape nextPut: aMessage.
    > ^subject
    > perform: aMessage selector
    > withArguments: aMessage arguments
    >
    >
    >
    >Disadvantage:
    >this breaks encapsulation, the calling code needs to know which
    >message sends need recording and which don't and send them to the
    >correct object (agent vs wrapped agent), see 4) above.
    >
    >
    >
    >Cheers!
    >
    >Reinout
    >-------
    >

    Comments

    Saturday, September 27, 2003

     
    Nifty Trick...

    OK, in my MS Agent Remote Control program I needed to record the actions that one can do to the agent object. I have an agent object that wraps the COM object. Here's an example of a public method that does some action that I need to be able to "record" and playback:

      speak: aMessage
        self triggerCommandEvent.
        self control speak: aMessage

    Now, self control returns the COM object. The method: #triggerCommandEvent is where things get interesting, though. Every method that needs to be recorded and played back calls this method first thing. Now, here's the implementation of the #triggerCommandEvent:

      triggerCommandEvent
        | stackFrame |
        stackFrame := Processor activeProcess topFrame sender.
        self triggerCommand:
          (Message
            selector: stackFrame method selector
            arguments: stackFrame arguments)

    This method is very interesting in that I don't have to have a specific piece of code in every method that wraps their parameters and name. Now, I have one method that I simply call and it walks up the stack picks off the information for me and then, wraps it in a Message object that can be used to call this object again. Now, notice that I didn't specify "self" in the message. It's because the message might not be coming back to me. There's an object that records these "actions" and call it a tape. This tape can be "played" back on any object. So, when you're playing with the agent and press "play". It plays back the "tape" on the agent object. But, what happens when you want to output the script? Well, I created another object that has the same public protocol (interface if you will) as my agent object. Now, we simply play the tape back on this object and the "script" object writes out JavaScript code instead of triggering actions on the agent.

    The thing I like about this is that there are several ways to do this, but being able to walk the stack allows you to do some rather elegant things and some less typing...=) Now, the above code is different in every Smalltalk, but you can do it. You can even do this concept in most dynamic languages. I know this isn't the greatest show of Smalltalk's abilities, but it's one of those things that I thought was nifty.

    Comments

     
    More interesting stuff to check out

    Another language I need to check out. Lots of documentation on their site and I think there is a Squeak version. I'll have to see where they are as well...=) So much cool stuff, such little time! E Language

    Comments

     
    Lightweight Languages Conference

    It's that time of year again and it looks like I'm going to miss it because I'll be in Nebreska. The things one does to get back to Smalltalk...=) Last year was a blast! I'm sad that I'll miss it this year. Last year, Erlang opened my eyes. I haven't been able to really sit down with it yet. I've read a lot of the material and know it's something to play with. Also, Todd Probstring gave an excellent talk on usability and language design. I wonder what the eye openers will be for this year? Wish I could make it....=)
    Spotted in Squawks of the Parrot

    Comments

     
    Great Quote

    "I have always wished that my computer would be as easy to use as my
    telephone. My wish has come true. I no longer know how to use my
    telephone." - Bjarne Stroustrup

    Taken from Dan Sugalski's blog. Thanks!

    Comments

     
    IO Language

    Yet another language that I need to check out: IO. I would like to thank Jim Menard for pointing this one out to me! It looks very cool, like a mix of JavaScript and Smalltalk. Very intriguing. I will have to check this out ASAP! I can't wait to start on my prototypical language journey. I've already started really studying JavaScript. I've studied JavaScript before, but the prototype thing went over my head, but now, it seems to make a lot of sense and i need to spend sometime with it to get my head around it. It might be the next logical step....=) I guess we'll see. I'll keep everyone posted on my thoughts!

    Comments

     
    Pot Meets Kettle Or Thoughts on VMs

    Alright, noticed some discussion on James Reobertson's blog about monocultures and the JVM. Read all the gory details here: Pot Meets Kettle. Now, I know the JVM is very unfriendly to dynamic languages. But, the Microsoft's .NET VM might be in the same boat. Now, they have gone to lengths to make it better for dynamic languages, but I'm taken by to the Lightweight Languages Conference in which I had a chance to talk with Dan Sugalski for a little bit. Now, we talked about the Zork VM and a host of other things. But, the discussion on the .NET VM was very intriguing as was his thoughts on Parrot. Now, what we talked about could fill a lot of entries in my blog, but the thing that stuck out in my mind is that he said that a VM couldn't be everything to everyone. He said that the Parrot VM was an effort to have a common VM for Perl, Python, and Ruby, but there were several challenges that were not apparent at first. While all 3 are dynamic scripting languages, they have feature differences and these differences add up. The thing about a VM is that its tailored to run fast for its languages. So, naturally, Parrot is made to be fastest for Perl with Python and Ruby coming in second. Likewise, the .NET VM will probably be tailored to run C# and VB.NET faster than any other language. I think this is the guideline that Sun takes with Java. It's nearly impossible to satisfy everyone because certain features can degrade performance for other languages. It's a give and take. And it comes down to a language design issue. I think this is where the IBM Universal VM failed. It wasn't fast enough for the Java folks and not flexible enough for others. A universal VM can not be at two places at one time if you know what I mean. Plus, the response for the IBM universal VM was also lackluster. Everyone was too busy finding out that the "hottest new language" at the time was not ready for prime time (of course, I'm talking about Java). Now, Java has come a long way, but I think people are seeing it's shortcomings and it never delivered on its promises (remember the hype that is was EASY?). MS is making the same claims with .NET and they too have missed the boat.

    All this talk of a universal VM also makes me think, why do we have VMs to begin with? It's to abstract ourselves away from knowing about the computer architecture we are running on. And why do we need to do this? One it makes write once, run everywhere a reality. But, it also makes certain abstractions possible because they are directly available in the machine code instruction set. I think a universal VM complicates things and there's too many design decisions that impact other factors. It seems like an impossible problem to satisfy everyone. But, I do think we could have VMs that are tailored to certain feature sets. Why not let the {} crowd have their .NET and Java VMs?! Let us Smalltalkers and dynamic languages have ours and let the functional language dudes (and dudettes) have theirs! So, then we would only be dealing with a handful of VMs, but the features targeted to perform best for what features you want.

    I'm going to have to do more thinking on this, because something is starting to sound like me like why can't we have VMs where can request and plug-in the features we want at run-time? Hmmmm.....Maybe the thoughts on a static instruction set VMs is the wrong answer for a universal VM, but a more pluggable VM. So, if you want static typing and it's benefits, then you use that instruction set...I wonder if this is possible? I'm thinking it is, but we need to change our thinking on VMs....Just a thought!

    Comments

     
    SONAR 3

    New love is around the corner and I can't wait! It's being released this Monday and I pre-ordered my copy. I can't wait to get the Ultrafunk Sonitus:fx Suite because I've been using all of those effects in FruityLoops and love the hell out them! Now, I will finally have their kick ass phaser and compresser in SONAR!!! YIPPEE! Something else to play with on my vacation before the trek out to Nebreska. Check out the love here: Sonar 3 Details

    Comments

     
    Seaside's Can Of Whoop Ass Opened On Java Struts

    It looks like Java Struts is all wet with this side by side comparison: Seaside's Can of Whoop Ass

    And Java developers wonder why I say Smalltalk kicks so much booty. It's nice to have a little proof....=) I'm simply amazed by the numbers. I would also expect the Smalltalk version to have way less bugs as well. Thanks for Chris Double's blog for this info!

    Comments

     
    Talk Like A Pirate Day

    Did anyone else know that September 19 was talk like a pirate day? Me neither, MATEY! AARRGGHH, SHIVER ME TIMBERS! AY, YE YOUNG LITTLE LAD WE SHALL NOT FORGET THIS YEAR NEXT! AARRGGHH!!!

    Comments

     
    Frustrations with Java

    This article from David Buck explains exactly my frustration with Java and why I'm going back to Smalltalk. Read it: Smalltalk Debugging and Productivity.

    Java is just now getting tools like we are used to Smalltalk, but they still have a long way to go. We recently switched up to Java 1.4 at work and I was excited because I had been hearing about it being able to "HotSwap" code. Well, I tried it out and it worked! Finally! But, over the course of the day, I found it could not handle "complicated" cases or would fail without reason. I finally boiled it down that it could only handle simply method changes. If you added a temporary variable, it failed; added an instance variable, it failed; or added a new method, you guess it, failed! So, my take was that it was better than I had before, but it still is pale compared to what I am used to in Smalltalk.

    Another funny thing is that I am amazed that most Java developers don't even want these features or see the benefit! I've sat with countless develoepers that when I showed them that they could inspect code from Eclipse while the program was running, their jaws hit the floor. Now, they love the features now, but the thought never occured to them to try. But, in Smalltalk, it's a fact of life and you miss it and groan about it not being there in other languages.

    The environment is the most powerful feature of Smalltalk and it's what makes it so cool. Without the environment, I guess we would call it Ruby or something...=)

    I love David's blog because he's been showing the cool things you can do in Smalltalk and not in other languages...=) I got a few tricks up my sleeve that I plan to show as well. One such trick is one I did for the MS Agent Remote Control.

    Comments

    Friday, September 26, 2003

     
    October 21, 2003

    Will see the release of a bunch of Kingsley Moog CDs! I'm so excited! Four of my favorite synth albums of all time are the Perrey-Kingsley albums! And now, they are releasing the Kingsley solo albums! This is great news! I can't wait! But, I will have the new Alice Cooper to keep me company till then...=) Moogy madness coming soon...Why isn't electronic music like it was back in the 60's? Good electronic albums are too few and far between these recent years.

    Comments

     
    Shocked

    Here's a news article on local Kansas City metal band, Thrust. I have one of their records and was waiting for the next one before I left Kansas. I saw these guys a couple of times live and they slayed. One of the best bands in the KC area! Anyway, I was shocked to read the following news:
    THRUST Singer Seriously Injured In Motorcyle Crash. My deepest condolances go to his family and band mates. I hope he recovers and is back on the stage soon. Rock on, brother...

    Comments

     
    Grandmother Sued By RIAA

    It seems the RIAA and their lawsuits against fans of their musicians keeps getting better. Personnally, it makes me not to want to buy anything from a major label anymore. Support your independent artists and labels! But, if you want a good laugh, simply click away...=) You'd think they would have gotten their facts right, but it seems it's hard to pinpoint a person to an IP address...SHOCKER! Grandmother Sued By RIAA

    Comments

    Thursday, September 25, 2003

     
    History Repeats Itself

    So, I read the book "Peopleware" on the plane flight to my interview for my new job. It was a quick and easy read. I can not recommend it highly enough. Anyway, I'm amazed at how much knowledge and tidbits there are about how to make our life as programmers easier and more enjoyable. There's lots of talk about managing, environments, and motivation. It's assembled as a bunch of short essays. It's a short book, but man, did it's morsels ring true. So, what's my point now that I've gushed about this book? I'm simply amazed how much of it has been forgotten! I work in a cube less than 30 square feet right now as we speak and they talk about optimal environments where they recommend 100 square feet! Plus, there's a bunch more! I think it should be required reading for any computer programmer or manager. Now, I think if we were all aware of the information in this book and in others, maybe our industry wouldn't be in the mess that it's in now! I'm currently reading, "The Psychology of Computer Programming" and my jaw is always on the floor. Again, it has lots of great advice and knowledge that I think is lost or is being rediscovered. I was shocked to read about "Egoless Programming" which sounds a lot like agile/XP methodologies and this was written in 1971!!!!! WHOA! My point with this entry is simple: How do these books get forgotten? It amazes me. But, I for one, will not let them be and will use their knowledge in my current activities. I hope you do too. You can buy Peopleware here and Psychology of Programming here. Happy reading and let's make our industry stronger and not forget where we've been! If anyone knows of any other books like these from the past, let me know! So far, I would rank these as high as the mythical man month!

    Comments

     
    Love is in the air...

    WOW! This is too cool...Check it out! Smalltalk Reports from 1991-1996. Get those flashbacks ready! Smalltalk Report Back Issues

    Comments

    Wednesday, September 24, 2003

     
    Fun Music

    OK, Am I the only nut that *loves* the Spy Kids soundtracks? The mix of styles from rock to synth madness to lounge to to latin to surf to everything in between is a lot of fun. Reminds me of a less experimental Mr. Bungle. I can't stop listening to them. Even the little pop songs on the new 3-D soundtrack are good! And I generally don't like a lot of the new pop...=) Now, they were written by Robert Rodriegues who also directed and wrote them. WOW! He's also responsible for "Once Upon a Time" and "Desperado". I need to hunt down those soundtracks too...=) I think I got a new soundtrack composer that I like...=)

    Comments

    Tuesday, September 23, 2003

     
    Excellent Article On Software and The Construction Metaphor

    A friend of mine sent this link to me and it's a great read! It points out why using the construction metaphor to do fixed planning is just flat out wrong for software. And he explains its wrong because it fails in construction as well. He gives several examples from construction where they are taking a more agile approach and being successful. Maybe this agile thing goes beyond software and can be used for any project where interaction and cooperation is necessary. Go read it now!
    Construction

    Comments

     
    Smalltalk Catch Phrases

    Ok, I've been thinking how cool it would be to have t-shirts with catchy little slogans for Smalltalk. Here's a few I thought of:
    Point, Click, Been There, Done That. (this one makes me laugh, but I think it's too negative)
    Felt The Hate? Feel The Love Of Smalltalk (one of my faves!)
    self become: Brilliant (hehehehe)
    Tired Of Typing? Try Smalltalk! (This works on two levels: typing as in into the keyboard and typing system)

    That's it for now...=) ENJOY!

    Comments

     
    Jean Michel Jarre

    If you have never heard this great artist, then what's wrong with you? Hehehehe, just kidding. My wife turned me on to this guy when she rented one of his live DVDs....It was incredible. I've been in love with the music ever since. So, I've been trying to buy anything I can get my hands on. All of his early material simply flat out rules. No one touches him. His later stuff is a little hit and miss, but still much better than a lot that is out there. So, who is Jarre? He's a french musician that writes electronic music. Now, by electronic, I don't mean techno or some lame new age crap (even though that's where you find his material). He writes music from the heart with a lot of cool sounds. I can say enough good things about this man. So, go buy "Oxygene" or "Equinoxe" and feel the love!
    Jarre's Website

    Comments

     
    Seaside and Javascript

    Another future project thought, these guys are starting to pile up! But, I thought I'd write down what I'm thinking so if I EVER have a lack of projects, I can simply look through my blog history, right? Anyway, I'm currently working on a Java project and one of the biggest issues is validation. And I've been thinking, wouldn't it be cool to be your business rules in one location where both Java and Javascript could understand them? I'm thinking something like Jess, but have it also run in Javascript. Now, you might ask, "Why have it run in Javascript?" Well, you could send your validation rules for that page down and have your Javascript interpret them. This way you could do client side validation without duplicating code on the server because they would be looking at the same code base! I would love to try this out as an addition to Seaside. I'm thinking if I get my prolog implementation (or shall I say prolog-based) or even a CLIPS engine working in Squeak, then have Javascript generated for the web pages, I would be golden! Is this another BIG project? YOU BET! I've been accussed of thinking "TOO BIG" before, but man, I think this would be so cool....I'm thinking it might possibly be the "killer" developer app for SMALLTALK! We're the best...LET'S PROVE IT! (well, we've already done that, but we can always use more feathers in our caps...right?)

    Comments

    Friday, September 19, 2003

     
    More Prototypical Objects

    Sam Griffth sent me this kick ass explanation. ENJOY!

    First off, it is possible to use a class based OO system to implement a
    prototypical OO system and vice versa. One of the very first Smalltalk
    programs created at PARC was a prototypical OO system. ThingLab used
    prototypical objects in it's domain space to do it's work, but it itself was
    implemented with classes and prototypical objects at the same time. Part of
    the SELF research idea to use prototypical objects was derived from the SELF
    team having seen the ThingLab work. Link to ThingLab papers and version
    ported to Squeak, including the original PARC paper:

    http://www.2share.com/thinglab/ThingLab%20-%20index.html
    http://www.cosc.canterbury.ac.nz/~wolfgang/NewHome/cosc414/projects/thinglabFolder/html/thinglab.html
    http://minnow.cc.gatech.edu/squeak/607
    http://portal.acm.org/citation.cfm?id=357147&jmp=references&dl=GUIDE&dl=ACM&CFID=11111111&CFTOKEN=2222222

    As for what a prototypical OO language gives you that you don't get in a
    class based one is conceptual purity and all messaging is based on
    delegation. Classes are really about type definition and organization of
    the instances of that type. With prototypes, you don't have a class. You
    just create one instance that you clone over and over again. And all the
    instances made from it know it. Your parent is whomever you cloned from.
    Your parent has methods that you may not have, so instead of looking to a
    class as something different or special, you end up with just the object you
    cloned from. No differentiation is made.

    In a prototypical world, you start with one bootstrap object that knows how
    to add/remove/run methods on itself and how to delegate to it's parent if it
    has one. From that, you can clone it (call it c1), add new attributes to
    the new cloned object, add methods to that new cloned object, clone c1 to
    make c2, etc. Now when you do cloned to get c1, c1's parent was the
    bootstrapObject, when you cloned c2 it's parent was c1. So when you send a
    message to c2, if it doesn't have it, it delegates the lookup to c1 which
    then will delegate it to bootstrapObject if needed, etc.

    There is no need for classes in this model. It is much more like nature.
    All mammals share traits that they inherited by being fertilized from an egg
    and sperm, but there really is no 'class' of mammals. That is a man made
    idea for our organization to show that we saw that the DNA is common and
    they have common traits, etc. From the outside it looks like that you are
    inheriting from the class of mammal that you are (human lets say), but what
    really happens in the reproduction process is that the DNA from the mother
    and father are cloned by the RNA bands and combined together in a process.
    This makes a new specific kind of instance much like if I had a multiple
    parents clone, which is possible in a prototypical OO system as well.

    I hope all this makes sense.... Let me summarize....

    Prototypical OO systems are based on cloning and delegation. A much simpler
    model based all in instances.

    Comments

     
    Future Project

    OK, as soon as I finish my Java Serialization framework and JXTA port in Squeak. I think my next project will be to update the Prolog implementation in Squeak. The original version was written in Smalltalk/V and I remember trying to load it into a 3.4 Squeak image and getting all kinds of errors. It comes on the CD that comes with the Squeak Blue book by Mark Guzdial (the CD is worth the price of book alone, but the book is EXCELLENT). I like the idea of Prolog and it would be a fun port. I've been interested in learning prolog for a while and this would be a perfect excuse to learn the language along the way. I already have several Prolog books and I thought about starting to use the examples in those as the beginning tests. Now, if I can find the author and get their blessing....=)

    Comments

     
    Java Serialization 0.2 Released

    Alright, I broke down last night and moved all of my java serialization code to the DVS system in Squeak. I must admit that it was really easy and it took me every bit of 5 minutes to get everything saved correctly. Why did I make such a fuss over this? Anyway, the mind boggles...So, the new release can read in Java class files now. The writing out of Java objects is still uhm, broken and is still be written. The tests are also still not there. The first thing I'm going to do when I go on vacation is to write all of the tests in a portable fashion. RIght now, all of my tests are in workspace (I know, I know, BAD PROGRAMMER!). I also know SUnit is a butt simple framework and I have no excuse not be using it. I've been using it on my reversi program. So, expect 0.3 to be released sometime in November at the latest with simply the tests written. I'm doing nothing more until some basic tests are in place.

    As always, if anyone has any suggestions, let me know!

    Comments

     
    Four Covers!

    The new Alice Cooper will have 4 covers! Guess who's going to be buying all 4? Yep, you guessed it me! I'm a huge Alice Cooper (even met the man once!) and I can not wait for his new record to come out! The Coop is back. My only regret right now is that it looks like I'm going to miss him on this tour (which S-U-C-K-S). But, it's the difference between being happy in the long run or short run...=) I can miss Alice on one tour since I've seen him twice on every tour since "The Last Temptation". BTW, it's only 11 more days to wait!

    Comments

    Thursday, September 18, 2003

     
    Excellent Article on Why Ant Leaves A Lot To Be Desired

    Just read this excellent article about Ant: The Sum of Ant

    I've always felt Ant was wrong and that a scripting language would be better for what it does. It's nice to see people on the same wave length. Thanks to Sam Griffith for pointing this one out (we're thinking on the same wave length again!).

    Comments

     
    Amen, brother

    I could not have said this better myself. An explanation of what people are doing wrong with XML and why there is false hope in the promises:
    XML Abuse

    Comments

    Wednesday, September 17, 2003

     
    Yummy Musical Madness

    Can you hear the brewing of madness?
    Automatic Music Audio Analysis

    Comments

     
    Brain Teaser

    Aoccdrnig to a rscheearch at an Elingsh

    uinervtisy, it deosn't mttaer in

    waht oredr the ltteers in a wrod are, the olny

    iprmoetnt tihng is taht frist

    and lsat ltteer is at the rghit pclae. The rset

    can be a toatl mses and you

    can sitll raed it wouthit porbelm. Tihs is

    bcuseae we do not raed ervey

    lteter by it slef but the wrod as a wlohe.

    Comments

     
    Prototype-based Languages

    OK, There's been discussion on the Squeak list about this and I thought I'd start doing some research. I came across this page for the Self language. Now, does anyone know of any implementations of Self that run on Windows?

    Comments

     
    Excellent Article On Dysfunctional Companies

    Read it now! It's a good read. How does your organization compare? 3 signs of a dysfunctional company

    Comments

     
    Why HotMail Sucks #239

    I get the following error message in a simple html document: "This server is too busy. ". The URL is even funny: http://by8fd.bay8.hotmail.msn.com/toobusy.html. I would have figured they would have made it look nicer. Anyway, I thought MS had lots of money and thus, enough money for servers? I find it amazing that .NET is getting so much publicity and yet, their own stuff doesn't work. I get at least 3-5 error pages back from hotmail everyday. Usually, they are erronous (ie. there wasn't an error really, but it decided to send me one). Once I have some time, I'm setting up my web server to serve up my email...This is just absymal.

    Comments

     
    Java Serialization

    I finally registered Java Serialization on Squeak Map this morning! Check it out: Java Serialization. I looked at the dates for what I have right now and it says "May 2002". I have had a new version in the works for about 6 months that read Java class files and writes java object back out. I refactored a bunch of stuff as well. It's the first thing to get done during my vacation starting on Oct. 11! I might try to get a release out before that (but, it will probably be VERY BUGGY!).

    I would like to thank everyone for their encouragement on me getting up on Squeak Map! I'm offical now!

    Comments

     
    More Science

    Study: Sleeping position and Personality

    It says I'm in the minority in that I sleep in the "freefall" position. Only 6.5% sleep this way....It also says I'm brash and gregarious. I can see the gregarious, but I've never seen myself as brash...Fun read anyway. It's amazing the stuff that they can correlate to our personality....=)

    Comments

     
    Nuclear Reactor Out Of Spare Parts

    Check this out: Freshman Makes Nuclear Reactor Out Of Spare Parts! COOL!

    Comments

    Tuesday, September 16, 2003

     
    Mod Smalltalk

    Rejoice, ye fellow sinners! Now, we can run Squeak as a mod in Apache! Chalk this up as something else I need to look at when I get some time! Go to Mod.Smalltalk.org Main Page now!

    Comments

     
    Get Thrashed

    Apparently, they are making a documentary on the thrash scene in the 80's. I can't wait to see this since I was a part of it. Now, it was hard to be in the heart of it because I was in Alabama. But, I remember following all of the fanzines and buying records like a madman. Thrash still has a special place in my heart. I still think it's the best form of metal next to NOLA sludge. It's being done by an MTV producer so let's hope he doesn't mess it up by saying "Metallica were the first thrash metal band..." Grrrrr....It was EXODUS people...EXODUS....=) Man, I'm going to have to put on some of those albums from back when Exodus, Metallica, Megadeth, Slayer, Anthrax, Death Angel, heathen, etc R-U-L-E-D. Oh, and did I mention that I'm getting new albums from Death Angel, Heathen, and Exodus this year? Those guys were some of my faves (I even want to call a project of mine: Heathen in reference to that band, we'll see). THRASH!

    Comments

     
    BottomFeeder

    OK, every morning that I get into work, BottomFeeder is the first application I start up now. I'm totally into this blogging thing now. I love reading a lot of different people's blogs. Each have their different ways of expressing ideas. Some are formal, some are informal (like mine), but all are informative and fun to read. So, just wanted to write a note to say thanks to the BottomFeeder guys. Oh, do you not have Bottom Feeder? Go here now and get addicted!

    Comments

    Monday, September 15, 2003

     
    Synth madness

    I need to check out Audio Mulch when I get some time too. Looks very cool!

    Also, I found PortMusic which is a bunch of cross-platform music APIs for sound, midi, and files. VERY COOL! I might not have to learn DirectX after all...=)

    I need time...=) I want to hook these MIDI APIs up to my FS1R and let the madness begin!



    Comments

     
    Smalltalk to Java

    Someone else on the same wavelength except for where I'm trying to mimic Java without the VM. He puts Smalltalk on top of the VM. I'm thinking there might be sinergy here and I can't want to play with it! Anyway, it's written for Dolphin Smalltalk, check it out here. Add this to the list of things to play with on my "in-between jobs" vacation. I'm thinking we're going about the same problem in two different ways. I'm trying to fool a Java VM into thinking it's talking to another. But, his approach is to connect to Java like you would a COM model. I think they are complimentary methods! In fact, it might be nice to use this when I'm debugging the Java test harness code in my stuff. Man, I need time for Java Serialization so I can take the next logical step: FULL RMI SUPPORT!

    Also, I loved his comment "Continue to use your legacy Java code as you migrate to a more grown-up language… ". Preach on brother! Preach on!

    And yes, I'm still at W-O-R-K!

    Comments

     
    Weight Watchers Update

    OK, a while back I mentioned that I had joined Weight Watchers and that I had lost some weight. Well, I'm happy to report that I'm still going to Weight Watchers (I'm actually addicted to it, not a bad thing to be if you ask) and I've lost a whopping total of 45 pounds! YEAH! The only problem is that pants keep falling off and it's been pissing me off. So, it's off to the mall to buy a belt to support my new waist line...I'm only 8 pounds away from my first big goal: to be under 200 pounds! And then, the next stop is G-O-A-L (for you non-WW folks, that means I'll be at my goal weight).

    Comments

    Sunday, September 14, 2003

     
    Wish Item For Nebreska

    I was thinking it sure would be fun to be find someone who wouldn't mind a keyboardist in their thrash metal band. I love metal, but I must be the only keyboardist who doesn't worship at the altar of the Orbital. I mean, I think they are very cool, but what happened to the cool synth music from the early 60's (Perrey and Kingsley...the best), early 70's (Jarre, Synergy, and Wendy Carlos rule), and hell even some of the 80's were alright. But, what do we have today? I mean I can only think of a handleful of synth bands I like like Eat Static, Amon Tobin, Hallucingen, Celldweller, and Assemblege 23. I want to do thrash metal with dancy synth blurps all in it. I don't want it to be industrial. I'm thinking funky music with real musicians with heavy as hell guitars and spacey keyboards. Think Ozric Tentacles meets Bay Area Thrash (think old Metallica Cliff Burton era, Slayer (pre-Divine Intervention), Heathen, etc) mixed with a little good ole funk (think Parliament and Bernie Worrell)...

    I know it's a long shot...But, damn it sure would be fun to be in a band again....On second thought, maybe I'll create it myself....=)

    THRASH!

    Comments

     
    Getter/Setter Issue

    So, I've been following the discussion on the PragProg list and the discussions always make me think. It's one of the last forums left where everything doesn't turn into madness. But, I digress. So, recently this discussion has come up and over the years I've waffled from the use getters/setters when you need them to all of the time. I like using getters/setters all of the time now because it helps when you want to refactor code and you might want to throw away an instance variable. Now, usually, I simply use the getter/setter methods to do something else (forward calls) or at the very least be able to look for references to those methods. I think using getters/setters sets you up nicely for the future. On the other hand, how pragmatic are they? Are they the simplest thing to do? Well, I don't think they complicate matters too much and are not that much more code to write. I also believe you should only expose the getters/setters that need to be. I generally like to have my objects be behavior rich and try at all costs not to expose the getters/setters, but sometimes you just have to. But, now, I'm starting to think that if you have a simple enough object why bother with getters/setters. If you need the added flexibility in the future or if you change the instance variable, then you can simply just change it internally and no one else changes.

    I can see the pluses and minuses of each side, but I think I still fall on the use them all of the time side. Just because I like being consistent. And I think being consistent always makes code cleaner and more maintainable. People know when they look at my code that there will always be a getter/setter (and that the setter might do extra things like broadcast change events, check rules, etc) for each instance variable. This makes my code predictable from a maintainability point of view. I also think getters/setters make your code more readable no matter whether the language is Java, Smalltalk, Ruby, etc...

    Before I close this entry, I will mention Squeak has a really cool property that will automatically create getters/setters when they are called if they don't already exist. This means while you are writing code, you can define your instance variables and then assume that the first time they are accessed via a getter or setter that the method will be called. Now, if you're being a "good do bee" and writing your tests, then these methods will be automically generated for you the first time you run a test that exercises code that hits that getter or setter. Pretty cool huh? You don't have to explicitly write the code for it! Now, I think that's pragmatic....They even cooler thing is that it should be easy to write code that does this in any Smalltalk! You can attempt the same in Ruby (just insert a method at run-time) or any dynamic language for that matter...Very cool!

    Feel free to comment!

    Comments

     
    New PragProg Reply, but this is on getters/setters, etc...

    >From: "andrew cooke"
    >Aryeh M. Friedman said:
    >
    > >> Setters/getters are in my "evil stuff list", because they focus on the
    > >> data
    > >> part of objects, not on the behavior part.
    > >
    > > Exspecially when people go to an extreme like using getters/setters
    > > for all queries/assignments (even "private ones") for example I saw
    > > someone
    > > do a ctor that literally was this:
    > >
    > > Foo::Foo(int x, int y)
    > > {
    > > setX(x);
    > > setY(y);
    > > }
    >
    >this can be useful when you need to maintain some kind of additional
    >condition in the class - changing x also implies something else changes.
    >
    >of course, it's better to avoid this by making sure the fields are
    >orthogonal, but that's not always possible.

    I don't know if anyone else has read "Streamlined Object Modeling" book, but nonetheless, it's an excellent book on object modeling that I find myself accessing a lot. Anyway, they use accessors for each of their variables, but state whether the getter/setter is public outside of the class or not (in Java, this means defining as protected, package private, private, or public...In Smalltalk, it's a matter of putting a comment in that says that this method is private or public). I think making accessors all public to outside classes is a bad idea. I think you should only make public what you need to. Now, there are some cool things you can do wtih setters like run business rules to verify that the object can be set into myself. I also have special setters for collections like addToxxx and removeFromxxx so that 1) I can use reflection like on a JavaBean and 2) run business rules to make sure the object can be added. I mentioned "Streamlined Object Modeling" because they have a very nice write up about how to use getters/setters and collection setter methods and how to deal with business rules and verification in your objects.

    Comments

     
    Siren
    Oh my, this sounds like too much fun! I guess I'm going to have to finish my install of VW sooner than I thought! I've been wanted to play around with MIDI in Smalltalk for a long time, but have been stopped by the DirectX API. I haven't had a lot of time to look into it though. But, I go this route instead: Siren. Now, I've tried playing with MIDI in Squeak with some success and I was even looking in the route. But, I never got Siren to work in Squeak on Windows. Oh well, I can't wait till this comes out. It sounds exactly like what I've been looking for! A Smalltalk way to make MUSIC! It would be so cool to do a whole Alto Dorado song in Smalltalk since that's what the name is inspired from! Too much fun....Now, I have to wait to October until I have time! Of course, I still want to learn the DirectX APIs and really do MIDI in Squeak as well...=) But, sometimes, you just need instant gratification. I wonder how this is going to sound with the FS1R (greatest synth ever MADE PERIOD!) or Nova or Sid? Hmmm, the possibilities!!!!!!

    It seems the article lists some alternative implementations for Siren like Ruby and Erlang (which I find very interesting, since I find Erlang intriguing to say the least). I would be very interested in see what transpires. I've only skimmed the article, but I have read a lot about Siren in the past. I hope to see their comments on why they would move it away from Smalltalk. I can see audio