Making the ugly elegant one day at a time
|
My Stuff 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 ![]()
|
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!
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! CommentsMonday, 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:
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" 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. Comments
Do Not Read While Drinking Coffee
Thanks to Micheal Lucas-Smith for this funny link: RoShamBo Programming Contest CommentsSunday, 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 >------- > CommentsSaturday, 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:
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:
stackFrame := Processor activeProcess topFrame sender. self triggerCommand:
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. CommentsFriday, 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 CommentsThursday, 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 CommentsWednesday, 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...=) CommentsTuesday, 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?) CommentsFriday, 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! CommentsThursday, 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 CommentsWednesday, September 17, 2003Comments
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! CommentsTuesday, 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! CommentsMonday, 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). CommentsSunday, 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 |
Comments