Sunday, April 10, 2005

Meeting The Challenge

Dave Thomas made a challenge to have executable unit test comments in Ruby based on this Python project. I thought it was a neat idea. At the very least, I was inspired and thought it would be a fun weekend Ruby project. It was fun reading through the RDoc and RUnit code. I posted my code here for Executable Comment Unit Tests. It works with the Runit test framework and uses the parser from RDoc. It's only one file and not that big. It only took me one day to do the code and most of the time was spent reading code. Take it from it what you will. Now, on to my thesaurus project, my second weekend project.

Saturday, April 09, 2005

Excellent Article on Naming

Mike Clark has written an excellent article entitled: "Tame The Name". It relates to my thesaurus entry in that Mike emphasizes my point of naming things properly in code. It's a great short article and well worth a read. It will make your code-fu better, I promise.

Friday, April 08, 2005

Lazy Collections In Ruby

I ported my Squeak Lazy Collections project to Ruby tonight and called it Lazy Enumerable. It was amazingly a pretty much straight forward port. Basically, the point of the project is not to create a new collection every time you call select, collect, reject on a collection. It simply holds on to the block and the original collection. Now, the fun begins when you start nesting. For example:
    temp=some_collection.select do |each| 
    each.is_interesting
    end
    answer=temp collect {|each| each.to_something}
Basically, the lazy enumerable combines the blocks for the collect and select into one and will not calculate the merged collection until some method like each or size is called. So, how do you do that? Well, the code for calling each on the LazyEnumerable looks like this:
    def each(&proc)
    self.original.each do |each|
    if (self.monadic.nil?)
    answer=each
    else
    answer=self.monadic.call(each)
    end
    proc.call(answer) unless answer === IGNOREABLE_OBJECT
    end
    end
I simply call each on the original collection and then call the block defined in myself (which I call monadic) that simply transforms values when called. Now, I return a special value if it should be ignored. This will be covered when you add a select block. For now, let's look at the simple case of adding a block that collects:
    def add_collect(&proc)
    add_monadic_valuable(&proc)
    end
This passes straight through to this method:
    def add_monadic_valuable(&proc)
    current=self.monadic
    if (current.nil?)
    self.monadic=proc
    return self
    end
    self.monadic=lambda do |each|
    result=current.call(each)
    if (result === IGNOREABLE_OBJECT)
    result
    else
    proc.call(result)
    end
    end
    self
    end
The interesting part is when I set my instance variable, monadic. I'm basically combining the current monadic with the new one passed in. Pretty cool, huh? I think this is the kind of stuff that functional programmers love. I can see why. It feels right. Now, let's look at how to add a select block:
    def add_select(&proc)
    add_monadic_valuable do |each|
    if (proc.call(each))
    each
    else
    IGNOREABLE_OBJECT
    end
    end
    end

All I do is call the same add_monadic_valuable method, but with a twist. I create yet another block that calls the select block inside to see if the value is true or false. If false, we pass back that IGNOREABLE_OBJECT. In the Smalltalk version, I originally threw an exception but took it out when the performance suffered. So, in short, I simply turn my select into a special case of collect! Now, how do I support rejects? Do I copy the code for select and use unless? Nope, all I do is negate the reject block before I send it into the add_select method. How do you do that? Like this:
    class Proc
    def negate
    lambda {|each| !self.call(each)}
    end
    end
Yet another block trick that saves me duplicated code. And that's it! If you want to run and look at the code, feel free. Check it out here. You can also download the Squeak version via SqueakMap. This was just a little project to play around with y combinator logic. It was cool looking at the Ruby and Smalltalk versions.

Thursday, April 07, 2005

Use The Ummmmm Thesaurus, Luke

I was working on a little Ruby project tonight. Basically, it's a simple upcoming calendar for just me. Nothing special. So, I started with an Event object and it is responsible for representing a calendar entry. Now, it needed to know when it was to happen and some descriptions. So, I gave it 3 instance variables: when, title, and description. The next question was how was I going to represent when. I knew it needed to display itself and compare itself to other whens (for sorting). I initially thought of the name, DateRange, since it is responsible for holding a range of dates. But, I didn't like the name because I wanted to represent the concept of future dates and a single date. DateRange just didn't feel right because it seemed too specific. So, what do I do when I don't like a name for an object? I go to my trusty thesaurus for the answer! Within seconds, I had a page full of words and one jumped right at me: "MOMENT"! EUREKA! Moment was the perfect name for this new object. It conveys the meaning of its responsibilities exactly. This way I could have FutureMoments, DatedMoments, and even UndefinedMoments. I use a thesaurus a lot in my development lately and it's an idea that I got from "Thinking Forth". It's a simple and brilliant idea. It starts getting you to think about concise words to name the objects of your model more precisely. Anything that makes meaning clear and succinct is always good in my book!

Smalltalk For Java, C#, and C++ Developers

While reading he "Smalltalk vs. Squeak" thread on comp.lang.smalltalk, I came across this document that Fernando posted. It's written with C++ programmers in mind, but I think it's for anyone who thinks Smalltalk's syntax is weird. It starts talking about the parser and moves to why the syntax is the way it is. So, if you know of any java, C#, C++, or C developers that offer the same ole "but, it's syntax is weird" line. Point them to here. And let them feel the love too.

Monday, April 04, 2005

Omaha Smalltalk User's Group

If you could only have 1 mantra to use that had to direct all your future philosophies, what would it be? If you have ever read 'The Selfish Gene' you are familiar with the idea of memes. A meme is a contagious idea competing for a share of our mind in a kind of Darwinian selection. The meme/mantra that we will take a look at in a software context is a paper called 'Collect what works' (the mantra!) by Stan Silver. This should be a fun free for all where we will consider the idea of solution spaces, and one of my favorite quotes: 'to gain knowledge, add something everyday. To gain wisdom remove something everyday'.

This month, Gary Overgard came up with the suggestion. Go to http://www.blainebuxton.com/ostug/CollectWhatWorks.doc to read the Collect What Works paper. Also, we would like to discuss using Gary's rules engine with Seaside as a Smalltalk FIT replacement. And as always bring your favorite snippets of Smalltalk code!

We're also now on meetup.com. So, sign on up!

Here's all of the details:

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

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

Can Your Language Do This?

I've been an avid Squeaker for awhile. I use the Method Finder all of the time to find methods, but never used the advanced features despite Steve Wessels' rants about just how cool it really is. Well, I started to goofing with it tonight and nothing is going to be the same. OK, it's a simple method finder with a twist. I can type in partial names of selectors, but what if I don't know the selector. What if the only thing I know is the arguments and the answer? Well, it can find the answer! For example, say I want to find a degrees to radians conversion. So, I type the following: 180. 3.1415926.. Separate everything with periods and the last thing is the answer you desire. The method finder found the following method: Number>>degreesToRadians and Float>>degreesToRadians. WOW! How cool is that?! I spent half the night typing in arguments and the results to see what it would found. I was surprised! Squeak never ceases to amaze me. Click the Method Finder link to go to the Swiki page for more examples. SQUEAK ON!

Sunday, April 03, 2005

Late April Fool's Day Joke

Check out this April Fool's Day Joke. It describes a product called the "Commentator" and is pretty cute. I love the FUD factor control the best....=) I know it's a little late...But, it's still funny!

Saturday, April 02, 2005

Holy Numbers!

Ian Prince got a sneak peak at SmallWiki 2 and was very impressed. He added a link an introduction presentation by its author Lukas Renggli. Cruise to page 10 and you will see these numbers:

Wikipedia LOCSmallWiki LOC
Wiki-Parser117,616555
Query-Engine20,970195
I guess this proves not all dynamic languages are created equal. Wikipedia is written in PHP. These are amazing numbers! I know that Seaside makes me very productive and it's nice to have proof. But, gosh darn, if those numbers are not impressive! WOW! Avi and the rest of the seaside crew must be grinning ear to ear! The presentation goes on to talk about a meta framework called Magritte that sounds very cool. I'd imagine it also had something to do with the low numbers. I can't wait till the code is released!

Wednesday, March 30, 2005

Frak or F***

We started watching the new and improved Battlestar Galatica last night (via Tivo of course). First off, I like it a lot. Good story and a cool take on the old show.I however noticed the frequent use of the word, "frak" instead of another famous f word. What a clever way around the censors, I thought! The intention and meaning is the same as the often censored version. Yet, no one would bat an eye at work if I used, "frak". Seems silly to me to get upset over one word and not the other if the meaning and intent is the same, don't you think? I know, what a weird thing to pick up on, but is foul language really obscene? It's just a certain configuration of syllables. The meaning and intent should be more important and that is what should be offensive. We should ban talking mean and shouting, instead of picking on just certain words. So, FRAK OFF! (just kidding of course)

Words to live by

I've been on a funk kick as of late. It's amazing how just letting the "vibes flow through" can make you feel so much better. The messages are positive and fun. My favorite funk bands have to be PFunk (Parliament, Funkadelic, Bootsy, George Clinton, etc), Earth, Wind, & Fire, and Graham Central Station. All of them are spiritual without being preachy and 100% fun. The lyrics are filled with nuggets of wisdom like this one:
"You are as beautiful as your thoughts"-Earth,Wind,& Fire
Something I think we can forget from time to time. It's a great one to remember. So, the next time you want to be ugly and lose your temper, remember this quote. Let's make this world a funky place. Dig?

Remember: Entice not insult

I got following quote from comp.lang.ruby in the weekly updates, discussing the hype of Ruby On Rails:
CD Baby:
"The constant hype is what kept me AWAY from Rails for so long! I just couldn't stomach the constant self-congratulations to it all.
Now I can't stomach the constant other-technology-bashing. (Java, PHP, etc)
Nobody wants their current beliefs insulted."
Just a simple remainder to all of us evangelists. It's easy to slip into bashing mode, but sometimes it's better to be the soldiers making rock soup. We should be getting the villagers excited in our soup so that they join us and make the collaboration that much richer!

Saturday, March 26, 2005

Less Time

David Gorisek, author of the awesome STS system for Dolphin and OmniBase, answers why he uses Smalltalk in a comp.lang.smalltalk.dolphin:
    If there
    is something missing I can usually write it in Smalltalk in less time
    than it would take me just studying the documentation for some Java/EJB
    app server. Also, frameworks are a very little part of any big
    application and writing web frameworks isn't really a rocket science.
    The frameworks usually just grow along with the app in the direction you
    need them to grow.

Right on!

Rant

Eliot Miranda has a great rant on comp.lang.smalltalk.dolphin about the history of Smalltalk and how to capture the hearts of future developers:
    First VS was killed by ObjectShare, not by Cincom; Cincom has done their
    best to make VS available, including maintennance releases, e.g. for
    WinXP; i.e. the VW team puts effort into keeping VS alive, even if in a
    coma. Further, note that some of those behind the "killing" of VS at
    ObjectShare were senior figures at Digitalk. VisualWorks did not kill
    VS, people in control of PPD/ObjectShare who were interested in making
    money killed it, and they ended up loosing the company a lot of money,
    and a lot of engineering talent in the process.


    One major mistake ParcPlace and Digitalk management made was assuming
    they were each other's competition and hence a merger eliminated each
    other's major competitor. Java was just a few months away...


    Second, Dolphin is not VW's competition, it is our ally. .Net and Java
    are our competition (and to a lesser extent python, perl et al). It is
    to compete against MS, IBM, Sun et al that we've provided a lower
    entry-point for the single programmer, not to steal market share away
    from Dolphin.


    In fact the situation is quite the reverse. VW wants Dolphin to succeed
    and we're worried whenever any dialect seems to be suffering. If one
    looks at Smalltalk from an MIS perspective it can be perceived to be a
    tiny niche with very few stable players. Market analysts denigrate
    Smalltalk as a dead language that is going away and one that management
    should leave in favour of typically Java and .Net. [But these analysts
    are playing to the choir, not providing objective advice].


    The more healthy vendors and active open source dialects there are in
    the Smalltalk community the more the above misperception can be
    countered and the more confident MIS types can be in choosing Smalltalk.


    If one looks at market share as available dollars to be spent on
    development and deployment technology then the choice is obvious. One
    can wear blinkers and go after 100% of the few millions of dollars being
    spent on SMalltalk development projects, attempt to eliminate the very
    people that help bolster your own sales, and have a larger slice of a
    rapidly shrinking pie. Alternatively, one can look at the total market
    and attempt to gain a share of billions of dollars being spent on
    development and deployment technology across the industry, and gain a
    growing share of a growing pie. For the Smalltalk sector to to do the
    latter it helps if it attempts to be a community and recognizes its
    members can be of enormous help to each other. Being fearful of each
    other is not the answer.


    One important aspect of this is the evolution of Smalltalk. When
    Smalltalk was developed it was funded by the most rapidly growing
    technology company the world had seen and it was developed by a
    relatively small team. Certainly the number of people working on Java
    at IBM and Sun dwarf the amount of people working on hardware and
    software at PARC in the 70's. i.e. it was relatively cheap for Xerox to
    fund in the 70's, but funding a successor now would be much more costly
    if Java and .Net are at all representative (which they may not be).


    Now, if Smalltalk is to evolve, or a successor invented to obsolete it,
    I think it extremely unlikely that this will happen in the context of a
    corporate funder. i.e. I doubt that Alan Kay will be able to get HP to
    provide sufficient commitment to do this.


    Where else might it happen? The two obvious candidates are in
    universities and in the "open source community". But since it is
    universities that populate the open source community anyway we should
    concentrate on universities. That is a place where people get exposed
    to new ideas, fall in love with them, and often come up with good new
    ideas. Companies like MS recognize this, which is why they are
    targeting universities with technologies like Rotor (the open source
    .Net platform) and funding for research. They are fighting for hearts
    and minds.


    Over the past two decades the university sector has become more
    vocational in its teaching. Alan Kay lambastes no less than Stanford
    university in his Croquet presentation for using Java for teaching.
    When I was teaching in London University in the early 90's much debate
    was between those that wanted to teach concepts and those that wanted to
    "provide marketable skills". Government, with pressure from industry
    (almost always short-sighted), sided with the vocationalists and good
    computer science teaching suffered.


    So if universities are to be places where people get exposed to the good
    stuff like Smalltalk, Lisp and Prolog, one thing that will definitely
    help is if the commercial members of these communities can demonstrate
    that in fact their technology is not dead, is not esoteric, but in fact
    in widespread and extremely demanding use in industry. [side note:
    VisualWorks and VW/GemStone combinations are used in sectors such as cpu
    manufacture, container shipping and derivatives trading on a world scale
    (i.e. they handle a substantial fraction of the world's activities in
    these sectors). But for nearly two decades the corporations who have
    built these applications have viewed their use of Smalltalk as a
    strategic advantage, and hence prevented the vendors from using the
    applications in marketing material.]


    The more the Smalltalk community can demonstrate commercial viability
    and relevance the more widely it will be adopted by the universities
    and the more minds will follow the arc of falling in love with
    smalltalk, finding its limitations and dreaming of something better.

Amen!

Monday, March 14, 2005

Another Reason Squeak/Smalltalk Is Cool

I was reading the Squeak Swiki tonight and ran across this entry for running headless. Here is the interesting bit:
    Another option is:
    Smalltalk snapshot: true andQuit: true.
    "All your restore stuff goes here"
    PWS serveOnPort: 80 loggingTo: 'log.txt'

    Select all of this and DoIt. Your image will save-and-quit...IN THE
    MIDDLE OF THE DOIT. When this image starts up, it continues the
    DoIt, which is the restore and the PWS startup.

Now, read through it. Does anything catch you off guard? Well, I for one think it's very clever! It takes into account that Smalltalk is a live system. You can quit in the middle of executing code and have it resume it where you left off when you quit! WOW! Name one modern IDE that can do that! It caught me off guard for its simplicity and cleverness. It again shows the absolute power that Smalltalk has. You can execute the code to save and quit the environment (because it's written in Smalltalk) and have it resume where you left off in your code if it was running! I had never thought of doing this! It makes me slap myself! I've saved images with running threads before (and have them jump back to life when the image restarts, this is how my background changer for Squeak works), and I don't know why I didn't think of it before. It's simply "a DUH! moment" TM.Anyway, I wanted to blog this because I thought it was another testament to the simplicity and power of Smalltalk. By the way, I think you can do this in any Smalltalk and it will work (the messages will vary by vendor of course).

Sunday, March 13, 2005

Deep Philosophy

Vincent Foley has an excellent quote for quipping back to people who want to rain on your parade. I love it! Go read it here.
    “Billions of flies eat shit; doesn’t mean it’s good”
And yes, it's going on the quotes page! I'll have to remember it next time someone quips about my love for Smalltalk, Lisp, Ruby, Heavy Metal, or 60's Synth Music...=)

Fun Script Project

OK,
I decided to take a little break this weekend and do something that I've been wanting for a little while. What is it you might ask? Well, it seems rather dumb, but I like for my wallpaper to change. Now, when I was back in X Windows land, this was simple. Perl, crontab, and voila changing wallpapers. It seems to be more a challenge on windows. So, I dusted off google and found the solution. I implemented it in a quick and dirty little ruby script. All I did was put all of my images (already converted to bmp) into one directory and it cycles between them all. Nothing sexy really. I've just been curious on how to do this on windows. I have Squeak that changes my wallpaper of my current project. So, I wanted it all of the time. I'm a happy boy now. Here it is (like I said, it is ROUGH)
    require 'win32/registry'

    #show bmp in file_name stretched
    def show_wallpaper(file_name)
    Win32::Registry::HKEY_CURRENT_USER.open('Control Panel\Desktop', Win32::Registry::KEY_ALL_ACCESS) do |reg|
    reg['Wallpaper', Win32::Registry::REG_SZ] = file_name;
    reg['WallpaperStyle', Win32::Registry::REG_SZ] = 2;
    reg['TileWallpaper', Win32::Registry::REG_SZ] = 0;
    end
    `RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters`
    puts "Showing: #{file_name}"
    end

    #Obtain the next file to use as wallpaper. Basically, cycle through the directory

    def next_file_name(current_file_name)
    found = false
    first_file_name = nil
    Dir['C:/wallpaper/*.bmp'].each do | any |
    first_file_name = any unless first_file_name
    return any if found
    found = true if any == current_file_name
    end
    first_file_name
    end

    #Get the current wallpaper file
    current_file_name=nil
    Win32::Registry::HKEY_CURRENT_USER.open('Control Panel\Desktop') do |reg|
    current_file_name=reg['Wallpaper', Win32::Registry::REG_SZ]
    end

    #get the next and then show

    image_file_name = next_file_name(current_file_name.gsub(/[\\]/, '/'));
    show_wallpaper(image_file_name) if image_file_name

That's it! It's amazing how little information there is. I found changing the registry only by chance. And then, it will not update. Calling the rundll32 command by pure chance. It was a good learning experience and it makes me a little bit of a happier boy. One more note, I converted all of my jpg and gifs to bmp via Squeak. I couldn't find any conversion image stuff for Ruby. If anyone knows of any, let me know. Now, back to Fox/Ruby land for work on my Trail Blazer inspired tool...=)

Saturday, March 12, 2005

Amen brother

Sam Griffith wrote an article named Ruby tools vs. Java tools... that is simply on the money. Never discount a technology because all of the bell and whistle tools are not there yet. I've been keeping my eye on Ruby for years because it is a great language. Hell, I've been secretly writing a tool for it that I use all of the time in Smalltalk. Why you might ask? Because I would like to see great tools in Ruby. A great language needs great tools. It helps in the amplification.

SmallHttpUnitTest is broken in VW 7.3

Well, it's broken for a little while. I looked at the problem and it seems to be around the cookies. I'm still looking into it. I've been rather busy with work as of late and haven't been able to spend a lot of time looking into it. But, I hope to have a solution soon. If you're hard pressed, it works great still in 7.2.

Danny Joe Brown of Molly Hatchet dies

Anyone that knows me, knows I love southern rock just as much as I love my metal. The news of Danny Joe Brown saddened me. I love the first three Molly Hatchet records. Danny's singing on the first two is just plain soulful and great. Great musicians simply rocking out on bad ass tunes. I don't even mind the quip about Alabama. Another great has fallen. A sad day indeed...

Friday, March 11, 2005

Tipping My Toe In Ruby Again

I've been playing around with Ruby again. It's nice to get a different perspective on things and the Ruby community shares a lot in common with us Smalltalkers. But, they are also different. Sure, we all love dynamic languages and know we're more productive. But, is there anything to learn from them? You bet! For one, they have an infatuation with blocks that leads to some cool designs and succint solutions! They also have philosophy that is pragmatic and to keep things simple. There's a lot of youth and excitement there as well. I'm having fun just playing around. One of the things that caught me off guard is not to have config files consist of data, but make them living code as well. So instead of some boring XML (or YAML) file, why not just use Ruby? The distinction of runtime and compile time is not there, so why have a data file? Make it executable and alive! It's one of those, "Gosh, well, YEAH! Why not?!!" It made me think of all the places we use static information when we can have objects that are alive. Anyway, I'll report more as I continue playing. I've known Ruby for awhile, but haven't really played with it in awhile. I think a lot of Rubyists would love Smalltalk if they gave it a chance.

Sunday, March 06, 2005

Encapsulation, Performance, and "DUH!"

I've been teaching a fellow programmer of the ways of the square bracket knights (I am but a mere squire, I know, please bear with me!) and he showed me some code that looked like the following:
    | sorted |
    sorted := SortedCollection sortBlock: [:a :b | a greatAttribute <= b greatAttribute].
    someHugeFile linesDo: [:each | sorted add: (CoolObject from: line)].
    sorted inspect

Nothing wrong with that code, right? Well, my gut instinct was to rewrite the code thusly:
    | toBeSorted |
    toBeSorted := OrderedCollection new: someHugeCollection size.
    someHugeFile linesDo: [:each | toBeSorted add: (CoolObject from: line)].
    (toBeSorted asSortedCollection: [:a :b | a greatAttribute <= b greatAttribute]) inspect

The only real difference here is that I used an OrderedCollection and then sorted. As I started to mention this to my friend, I heard the quote, "Premature optimization is the root of all evil!" I stopped myself cold. I knew the only change I was going to make was because of performance reasons. The next thought I had was, "Why does SortedCollection keep itself sorted all of the time?" I mean it is an object. Why not only sort when it is needed (when you send do:, collect:, reject:, etc)? Then, I could use a SortedCollection without having to worry about performance of sorting a large collection piece meal. It turns out to be a trivial change (simply override do:, add a flag to mark when sorting is needed, and that's it!) We get the performance improvement and the code above stays like it was originally. The way it should be. The user of the object doesn't need to worry about performance, the object does that work for them.

Thursday, March 03, 2005

Omaha Smalltalk User's Group Meeting

It's getting near that time of the month again! So, instead of staying at home, why don't you come on down and see what all of the fuss is about? Come see the inspiration for countless languages, Smalltalk.

This month, Alan Wostenberg will be giving an updated and in-depth presentation on running FIT in VisualWorks. Hopefully this time the weather will behave. Here's all of the details:

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


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

Monday, February 28, 2005

Metal Gods Return

Tomorrow is the day for the new Judas Priest album, "Angel of Retribution". No matter how old I get. I still get excited over new releases from my favorite bands. Judas Priest has a special place in my heart because they are the ones that really got me into music. I can still remember running out and buying "Defenders of the Faith" with quarters! Anyway, Rob Halford is back in the band and this is their reunion disc. It's even going to come in a special package with DVD! TOO COOL! So, I'll be banging my head tomorrow. DEFEND THE METAL FAITH!

Sunday, February 27, 2005

Plain and pure simple programming fun

Ruby has a programming quiz page. How boring right? Well, you would be WRONG! This is a fun little site. Not many problems and I don't know if the mailing list is still active, but I thought I would check it out anyway. It sounds like too much fun to a get new puzzle every friday. Something to massage the brain over the weekend! They do have a number of puzzles (with solutions and some without) and I thought it would be fun to try to program some of them.

It seems the page is based on the Perl Quiz Of The Week. I don't know why they call it "quiz", it's just puzzles. I think a puzzle during a user's group meeting would be a great idea. Maybe invite developers from other languages and let them show off their elegant solutions in their languages. I think we could win a lot of folks over to the Smalltalk side that way!

Wednesday, February 23, 2005

Suits?

I was reading through various blogs that I haven't seen before and ran across this article. It talks about the Syndey Smalltalk and Ruby Users Groups getting together for a joint presentation and mutual love fest of dynamic languages. Sounds great to me. But, I found the differences between Smalltalkers and Rubyists to be hilarious. Here's the blurp:
    Other differences between the groups were notable: the Smalltalkers typically wore suits, and worked professionally in Smalltalk, typically for banks. The Rubyists looked like refugees in comparison, and I don’t believe any of us use Ruby professionally for more than skunkworks projects. The Smalltalkers left at a reasonably sensible hour, leaving the Rubyists huddling over their pints. Smalltalk has 30 or so years of history, but clearly no staying power. (Or it could be that they were just smarter than us, as it was past last drinks at the time…)

I never fashioned myself as a suit and tie type of guy. I don't work at a bank either. I've never heard Smalltalkers being suits. Interesting to say the least...=) I love both languages and communities. Both have different types of energies. Anyway, there's no point to the post except that I found being called "suits" to be amusing to say the least!

Tuesday, February 15, 2005

Great Quote And Other Thoughts

"To attain knowledge, add things everyday;
to obtain wisdom, remove things everyday."
--Lao Tzu

A great quote for life and software design. It says what I tried to yesterday much more elegantly. It's amazing how often the theme of removal to gain is brought up. Perhaps we should learn how to reduce systems as well as build them! It was refreshing reading in the "Thinking Forth" book on how to reduce programs. It was amazing that the advice transcended language for the most part (removing conditionals and special cases, etc). Every language should have a "thinking" book. Lisp has one in Paul Graham's Advanced Lisp. Is there any more I need? Kent Becks Smalltalk Best Practices and the Smalltalk Design Patterns book come close for Smalltalk. I wonder if there is one for Prolog. They are fun reading and I always walking away with a different perspective to programming.
Holy New Squeak Leadership, Batman!

    Göran Krampe announced this on the Squeak mailing list:
    The last six days there has been some off list activity in forming a new
    leadership for Squeak. Yes, you read it right - the Guides are now
    *officially retired*. From this point and forward there is a new
    *temporary* group consisting of five castawa... eh people, that now
    leads Squeak:

    - Göran Krampe
    - Doug Way
    - Cees de Groot
    - Marcus Denker
    - Michael Rueger

Wow! It seems they got the blessing from current guides and it seems to be a healthy growth for the community! I'm so excited. I love Squeak and I spend the majority of spare time programming with it. This is a shock and a great surprise. They also mentioned that the formation of the Squeak Foundation is continuing. But, I do like taking the bull by the horns so to speak!

SQUEAK ON BROTHERS OF SMALLTALK!

Monday, February 14, 2005

My New Mantra

"Code removed is code earned."

Removing code means you are simplifying the code and the result is a net gain. So, next time, you're refactoring and deleting code. Don't think of it as deleting, but as gaining code via simplicity.

AMEN!

Tuesday, February 08, 2005

Smalltalk User's Group Meeting 02/08/2005 Cancelled

Sorry to say, but the meeting has been cancelled due to weather! GRRRRRRR! We'll try again in March..

Sorry! Everyone stay SAFE and WARM!

Sunday, February 06, 2005

Infocom's Hitchhiker's Guide To The Galaxy

Does anyone remember this game from their childhood? Well, I do and I wasted a lot of time playing it and Zork. Infocom ruled. Well, guess what? You can play it again! Check it out here. Feel the love again. Remember the magic of getting eaten by the dog because you forgot to feed it peanut butter in the beginning? Cursed endlessly, but spewed much Coke on the monitor in laughter. Yes, it's all here and more. What are you waiting for? GO NOW!
New Smalltalk Blogger

It is my pleasure to welcome a new Smalltaker to the Blogosphere, Steve Wessels. I've known Steve for most of my professional career and he was one of the people that showed me the way when I was a mere Smalltalk pup. Steve is an avid Squeaker (like myself) and he has a lot of cool projects. Check it out! Here's the link: http://squeak.preeminent.org/blog/index.html.

Friday, February 04, 2005

Omaha Smalltalk User's Group Meeting

It's getting near that time of the month again! So, instead of staying at home, why don't you come on down and see what all of the fuss is about? Come see the inspiration for countless languages, Smalltalk. Alan Wostenberg will be giving an updated and in-depth presentation on running FIT in VisualWorks at 8pm. We will have an open forum from 7pm-8pm. Here's all of the details:
When: Feb 8, 2005, 7pm - 9pm
Where: Offices of Northern Natural Gas
1111 S 103rd Street
Omaha Nebraska 68154
Office is at 103rd & Pacific. Guests can park in the Northern visitors parking area back of building, or across the street at the mall. Enter in front door, we'll greet you at the door at 7:00pm. If you arrive a bit later, just tell the guard at the reception desk you're here for the Smalltalk user meeting in the 1st floor training room.
Java vs. C++

From Phil Whitney's Blog:
    Java is preferable to C++ in exactly the same way that driving a 1994 Chevy Impala is preferable to driving a 1978 Ford LTD.

OK, I think it was a little nice. But, why drive a poorly designed and engineered car when you can have something so much better? Wouldn't you like to have a smooth ride, repairs done while driving, can add new engine components without stopping, faster to the destination, and above a pleasure to sit in? I can't think of a good car analogy for Smalltalk or Lisp because I can't think of a car that would fit that bill...But, man, I would buy one in a minute!

Thursday, February 03, 2005

Too cute

Beware the Schememonster! It's out to get you...

For one, I love the whole concept of this website. It's cute, the projects are all great, and best of all it's fun. This is what an advocacy site should be. It's just plain fun. Hats off to the creators of this site. Maybe we need a Smalltalkster site? Of course, nothing but fun projects...=)

I thought the Smurf project was brilliant. Maybe we could do a balloon simulation that has to avoid the hordes of static followers on the ground. OK, it sounds lame and not as good as the Smurfs, but damn, I'll keep thinking about it!

Wednesday, January 26, 2005

Easier than C++

From lemonodor:
    Bruce Eckel, author of Thinking in Java and Thinking in C++, is working on a new edition of Thinking in Java:

    This language, which was once hailed (admittedly, by the PR flaks at Sun itself) as being "much easier than C++" really isn't anymore.

WOW! I would say that Java is still easier than C++, but not by much. But, with all of the new 1.5 features, I might have to concur that Java is not easier than C++ anymore. I keep seeing descension in the ranks of Java, I wonder what this means for the future? I think Java will continue to be a force in IT departments, but what will replace it? .Net? Something in my gut tells me something else is coming. Maybe something built on top of the JVM? Who knows...Things are starting to get interesting!

Monday, January 24, 2005

Fat Free Alternatives To XML

Apparently, there's a couple of standards trying to win over XML detractors. One is JSON and the other is YAML. Both are claiming they are simpler and easier to read than XML. I looked at both and I think YAML would be the one that I would pick. It is far easier to read. JOSN looked even less readable, but more compact than XML. You can see examples at both sites. Judge for yourself. It's interesting to see the current uprising to XML. I've never been a big fan, but realized having it was better than not having it. Watching the different standards fight to the top is going to be interesting. Are we going to have lots of different formats to deal with again? But, then again we should always be pushing the envelope, right?
Thinking Forth

Let's start off things with a quote:
    "The programmer using a batch-compiler language can seldom achieve the productive state of mind that artists achieve when the creative current is unhindered."

Do I have your interest? This is the best quote I've read to describe the productivity gain that we Smalltalkers, Lisps, Rubyers, Perlers, Pythoners, and Javascripters enjoy. I just love this quote! Anyway...

Why am I bringing this quote up? Well, I was sick all weekend and in times of conscienceness, I could only read my blog feeds. I came across one from Planet Lisp about Forth. I decided to download the book, "Thinking Forth" from here that they had linked to. The thing that got my interest was mention that this book had a lot of the principles of XP programming in it (it was written in 1984). Now, I feel a lot of the XP ideas also came from "The Pyschology of Computer Programming", so another book to fill in the gaps is a nice addition. So, between naps, I read the preface today and it seems Forth is another "everything" language. For example, "everything" in Smalltalk is an object. It seems every language that I like has a simple underlying set of rules and model to govern everything. Forth is no different. I was so impressed with the preface that I picked Forth to be my language of the year over Python. In Forth, "everything" is a word! WOW! That sounds nuts doesn't it?! Let me continue...

You label things in Forth with a word. When you invoke a "word", it doesn't care if that word stands for a constant, variable, or function. It doesn't care. Andres Valloud has recently been pounding home the idea of distinctions (ala "Laws Of Form"). But, I've been having a hard time wrapping my mind around it. It seemed too simple. Well, it snapped today after reading the preface to "Thinking Forth". If you think of "words" as "labeling distinctions" and when you invoke a "word", you are "crossing into a distinction". It goes further too. Forth uses a simple stack mechanism to pass variables around. This is the "signal" that Andres loves to tell me about as well. I was so excited that I finally got it! And I did it while on cold medicine! Yippee! So, Forth might be the language where I get to play with distinctions.

I'm excited! Hopefully, Forth will turn out to be a language that increases my knowledge of programming as much as Smalltalk and Lisp have. I'm off to sleep more...=) Being sick sucks!

Tuesday, January 18, 2005

The PRIEST is BACK!

OK, I just went here to here 30 second samples of each of the new songs off the new Priest album. I just couldn't wait. The first album I ever bought was "Defenders of the Faith", so Priest has always had a special place in my heart. Anyway, the samples were impressive and I think I'm in for a butt kicker of an album. The next to last song, "Eulogy" sounds like an epic. I think it's only the intro on the web site! From the lyrics, it sounds like it might be a sequel to "The Sentinel"! I can't wait till March 1! I tell you! Rob Halford is the voice of heavy metal.

Saturday, January 15, 2005

3 + 4

Well, I got 3 + 4 to run in my java bytecode interpreter written in Squeak. I know others have traveled where I am now, but it's been a fun journey. I can't wait till I can get it fully functional with real objects and all. It'll be fun to run a java program in Squeak with all of the power of a Smalltalk environment. I think it will be cool for writing languages on top of the JVM. Gee, I wonder which one I would like to run in the JVM? Anyway, not much point to this blog except that I reached a milestone. I'm hoping to have a new version of the java framework out soon. It will work in Squeak 3.8 and support running java byte codes, read/writing serialized objects (this time 100%), reading class files, and that's about it. The next thing after the byte code interpreter is the debugging protocol (i've already started). It's been enlightening peering under the hood of java. It makes me appreciate the simplicity and elegance of smalltalk anymore. But, that's for another discussion as well! Good night all!

Tuesday, January 11, 2005

Hate...

You know when you leave your mark on the world. How do you want to be remembered? Do you want to be remembered for being a good human being that everyone enjoyed being around or this:
    A newly launched web site, ********.com, has selected late DAMAGEPLAN/ex-PANTERA guitarist "Dimebag" Darrell Abbott as its January 2005 "Dead Guy of the Month." The site's home page features a photo of Dimebag complete with a superimposed "bullet hole" in his forehead along with the message, "He was in PANTERA. He was in DAMAGEPLAN. Now he's in 'THE GROUND'." A message posted in the "About Us" section of the web site reads as follows: "The second week of December 2004, 'Dimebag' Darrell Abbott formerly of the band PANTERA was shot and killed at a show in Columbus, OH. The story grabbed the mass media's attention and was played over and over again. The typical post-celebrity tragedy scenario played out over the next few weeks: Mega-memorials and tons and tons of people who appeared to be mourning a great PERSONAL loss. This puzzled us. 'What the fuck?'

What kind of sick person would do such a thing? I've left off the website because I don't want to give them anymore attention. I find this to be sick and just flat out uncalled for. Who ever is behind this site needs to be strapped to a post and horse whipped. This is the kind of stuff that makes me sick to be a part of this planet. Darrell would be remembered by millions for entertaining them and having a great time. How will this person be remembered? For being hateful and disrepectful? I can't believe would waste time their time with such drivel.

Anyway, if you want to read a good article, Read this. I totally agree with the sentiments of the writer. I just hate it when people use someone else's death to further their agenda. It make you wander who's really evil? Doesn't it?
Smalltalk Users Group Meeting Cancelled
The user group meeting is cancelled on account of icy weather. Everyone stay home and sleep where it's safe.

Monday, January 10, 2005

Feeling Behind

I'm always feeling behind in technology. I always I feel like I'm just right around the corner to some big breakthrough and if I read that next book, all knowledge will be mine. The universe and all its pearls will be mine. It's a never-ending quest. Does anyone else feel this? Knowledge is a never ending thirst and the more you quench it, the more you want to drink. The humbling fact is that no matter how much I learn, I will never know everything that I want to. I will always be on my search for more. So, why not just accept defeat and stop? Well, what fun would that be? It's the Samauri's creed to be the best that you can be (see you can learn things from Tom Cruise movies!). I will spend the rest of my life trying to be the best developer I can be. There's satisfaction is in knowing when I cross a barrier or master a piece of my craft that I thought was unattainable. The problem is with each step the bar becomes higher. Of course, this gives me the feeling that I'm always behind. And there's always someone out there who's kung-fu is better. I don't feel threatened when I find someone who is better than me, rather I take it as an oppoturnity to learn more. I might not always like the lesson, but the fight to resolve the conflict within is where I break across my barriers. A medicine much needed to help me reach higher heights. I guess I don't have a point to this post. I just wanted to express my feelings toward learning. My love to know more about what I do and to be the best I can be. But, I never feel like I am a master. I always feel behind and I'm alright with that. In fact, it gives me a certain inner peace. Striving is great and it's the journey that's important.

Sunday, January 09, 2005

So much for intelligent debate

Check out this blog entry. I'm sickened and appalled by it. I'm so sick of name calling in the name of good debate. I'm also sick of threatening to win an argument as well. I don't care what your politic leanings are, but we should all be able to discuss and debate without charged language, name calling, or threats. Both sides of the political spectrum are guilty and it's made sane and intelligent discussion impossible. When we have books titled, "How to talk to a liberal". It really shows what lack of respect we have for one another and it saddens me. You don't win people with your arguments by calling them idiots. I fear we have schism with each side with tunnel vision. No one can see the other sides point of view. What makes this country great is debate with sides arguing from different shades of gray. I think we are seeing the world in black and white too much. Where is the gray? Maybe we should stop digging in our heels in an argument and be open to new ideas. Just please stop with the charged language. PLEASE! I've gotten where I will not even listen to any argument with charged language. It really shows your lack of thought. OK, that's enough politics from me...

Saturday, January 08, 2005

Quotes Page

I finally updated my fave quotes page. Check it out here. I've been meaning to do it for awhile. Enjoy! Also, let me know if I wrongly attributes any quotes. Smalltalk on!

Thursday, January 06, 2005

More thoughts on debate on getters/setters

Carrying on the discussion from previous. Here's some more thoughts:
1. Property objects. (Each instance variable would be it's own object)
2. Naming accessors with _ so that they look unnatural (not a big fan of this, but I'm trying to get thoughts flowing)
3. Change the language in some way. I don't like the restricting paradigm of java, but how could we change smalltalk. Maybe something more self like where instance variable access and method calls look the same.
4. Development-time method wrappers. Put wrappers in to monitor calls to accessors and warn on non-local access if it has been marked "private". The method wrappers could then be removed at run-time. We have the most dynamic language of all! How can we make it do what we want?!

And that's all I can think of right now. If I think of more, I'll blog them! Wouldn't it be cool to come up with a solution to the getter/setter debate once and for all! =) Of course, it might be like the early vs. late bound language debate and thus, never be solved...But, I think this one can be solved.
The debate without end

It seems my discussion on "getters/setters" is having a lively discussion at James' and Andreas' blog. Both sides of the argument give great points. But, perhaps we are missing one another. Maybe we should ask ourselves. How could we compromise? I think we can all agree that encapsulation and consistency are things to keep in high regard. We shouldn't have to sacrifice one for the other. Is the obvious answer data objects? Objects with simple getters/setters methods, but encapsulated inside of a behavior object? I'm thinking out loud here. There's a lot of things that we could do with these data objects. They could notify of changes (good for persistence and gui models) without cluttering up the behavior objects and no one outside of the behvaior object should know about them. You could exchange data objects (since all access is via methods).Hmmm, I think I might need to do implement a model using this technique. I'm curious as to what other people might think would be a compromise to this or an alternative implementation. My point is that if we can't decide on which is better (and frankly, while I still side on the side of getters/setters. I still think both have their pluses and minuses), then maybe we should think of a better solution that has the bits that both sides like. Send me email. I'd be glad to discuss this!

Wednesday, January 05, 2005

Getters And Setters Redux

Is anything more hotly debated in OO development? Here's an article eloquantly arguing against them. Now, in the past, I have been strongly in the use getter/setters camp. Recently, I started to not use getters/setters to see if I got any new insights. At first, it felt weird and unnatural, but I soon got over that. I started to not use getters/setters for the exact reason listed in the article because I had seen too much code depend on the getters/setters and knowing too much about the internal representation of an object. Now, in java, you can restrict access to getters/setters through protected and private (which by the way, I think private is evil, but protected is broken as well...I think protected should only be used by the object and its inheritance heirarchy, but that's another discussion). I also wanted to not use getters/setters after watching the a Self video where they used methods and variables interchangebly. But, in most languages, there is a difference in calling a method and accessing a veriable. And that is the one thing I missed when I stopped using getters/setters, the consistency! In both java and Smalltalk, instance and local variable access looks identical and its easy to make a mistake (think a newbie or a really late night at work). So, am I saying that I think consistency is more important than encapsulation? NO! But, I do think they are equally important. You can achieve encapsulation with getters/setter by either restricting access (at the language level), placing them in a different spot in the source code (like at the bottom, make it hard to get to!), or through categories (I frequently put my getters/setters in an accessing/private category and never look at it unless I absolutely need it). You can even use method wrappers to make sure the sender is self and report otherwise. So, while I agree with the article, I still like to use getters/setters for the reason of consistency. I think it's up to a good programmer to keep encapsulation enforced. Oh, one more thing, one good reason for keeping your getters/setters is that if you ever need to do anything extra when an instance variable is set, you can do it through the setter and it's easy to add debug code in a getter (like a break point). I use my setters to ensure parent relationships are kept consistent (there's that word again!). Setters can also fire change events which are important for persistent frameworks and GUIs. One important thing that I am starting to realize with this debate is that it is a personal style issue of the programmer. Both sides have pluses and minuses and it's up to each shop/developer to make their choice. The worst is to mix both paradigms. Remember keep it consistent!

Tuesday, January 04, 2005

Cool Digital Art

Check out Joe Vinton's Digital Art right now. It's incredible stuff! His art is scenic futuristic landscapes. They are simply breath taking! But, what is that in the distance? It's a hot air ballon! What better way to fit the "Back To The Future" theme of Smalltalk than a futuristic landscape with balloons. Incredible stuff and it makes great backgrounds for Squeak if I do say so myself.
Top Twenty

Every year I like to do a top 20 of my favorite albums from the year. It's sometimes hard to pick just 20, so I pick a few honorable mentions. I listen to a lot of music and this year I spent a good amount of time catching on some stuff. I bought a lot of old Depeche Mode and went back to purchase a lot of the old Earache catalog. I even got into a new genre of electronic music called chip music. It's made completely on 4 or 8 bit computers (gameboy advance and old commodroe and atari computers). Fun stuff! I did manage to listen to a lot of new music and this year was EXCELLENT. So here's my list of faves:

  1. Ayreon-Human Equation

  2. My absolute favorite album this year. I can not praise it enough! A modern progressive masterpiece. Nuff said!
  3. Assemblage 23-Storm
    Wow! Assemblage 23 continues to impress with his brand of Depeche Mode inspired electronics. The lyrics and music are such a perfect fit. This is not happy music. Everything is damn near perfect. This is the way to do quality electronic music.

  4. Vader-The Beast
    GRRRRR! The album that got me back into extreme metal. This will rip you a new one and keep coming.

  5. Trevor Rabin-National Treasure
    Cheese and pomp. What more do you want in a movie soundtrack. I love this. It's overblown and ompous. Great arrangements and melodies with a hint of modern rock and electronics. Gorgeous to these ears!

  6. Black Label Society-Hangover Music Vol. 1
    Moody guitar driven southern rock. No one does it better than Zak.

  7. Ozric Tentacles-Spirals In Hyperspace
    Another album from the masters of space rock! Swirling arrangements of rock guitar and keyboards. The perfect mix.

  8. Dream Evil-The Book Of Heavy Metal
    Cheesy 80's metal with tongue in cheek lyrics. This album just makes me smile. I love it! Anyone who doesn't think these guys are having the time of their lives, needs to check themselves into the funny farm.

  9. Into Eternity-Dead Or Dreaming
    Prog metal, death metal, and a healthy dose of ass kicking thrash. I love it!

  10. Dillenger Escape Plan-Miss Machine
    Not what I expected. The music is still crazy, but in a different way. More like Mr. Bungle and I like the direction change. Lots of sick math rock still, and more unpredictable.

  11. Decapitated-The Negation
    Death metal that doesn't stop punishing. This is played with such vigor that you can't help but not bang your head.

  12. Megadeth-The System Has Failed<
    Megadeth comes back with an album that I never thought they would. This should have been the follow-up to Rust In Peace. It just flat out rocks. Dave remembers how to do metal right. Great to hear afterthe slew of bad albums (4 to be exact).

  13. Behemoth-Demigod
    Grandoise metal that still remains to be melodic and memorable while beating you into submission. This is not for one with heart problems.

  14. Cradle of Filth-Nyphetamine
    Cradle of Filth has to be the most consistent band ever. A new album and still not one disappointing moment. I love this band.

  15. Estradasphere-Quadropus
    The rightful heirs to the throne left by Mr. Bungle. In fact, i think these guys have surpassed them. Rock with everything thrown in. These guys know no boundaries. A rollercoaster ride that always surprises and never a dull moment.

  16. Mastodon-Leviathian
    ROCK! Extreme rock with lots of crazy drumming. This time its a little more subtle and it allows the songs to breathe more. Love it!

  17. Vehemence-Helping The World To See
    Melodic death metal that stays close to the brutal edge of things. Lots going on and lots of head banging.

  18. Damageplan-New Found Power
    Dimebag will be missed. His swansong was not his finest work, but not too many can come close to Pantera's great albums. A great album is what he left us that was varied and showed off his chops. The metal worlds has lost another great.

  19. Exodus-Tempo Of The Damned
    The exodus attack returns and shows us how thrash is made! WOW! These guys along with megadeth are the come backs of the year. Lots of reunited bands have done awful albums. But, this exceeded all expectations. It was great seeing them live too.

  20. Arsis-A Celebration Of Guilt
    Surprise of the year. Super melodic, but very fast and brutal. The new breed of death metal.

  21. Kataklysm-Serenity In Fire
    These guys vary up a lot on this release and this one sticks to you like peanut butter on the roof of your mouth. WOW!


Honorable Mentions:

  1. Cannibal Corpse-The Wretched Spawn
    A guilty pleasure. Brutal florida death metal. These guys keep getting better and more complex with each release. Forget the horror movie lyrics...Listen to those guitar lines! DAMN!

  2. Alabama Thunderpussy-Fulton Hill
    BIG RIFFS. Southern metal steamroller style. One of my fave bands of the genre. I love the new vocalist!

  3. Alarum-Eventuality
    For those of us who miss Atheist and Cynic, meet Alarum. Progressive death that will keep you on your toes. Good stuff!
  4. Shift-Nasum
    The finest grindcore.

  5. Saliva-Survival Of The Sickest
    This is 80's metal updated with a 90's sound. I loved this!

  6. Killswitch Engage-The End Of Heartache
    A repeat of their earlier albums, but these guys have the melodic hardcore style down.

Omaha Smalltalk User's Group Meeting

It's getting near that time of the month again! So, instead of staying at home with snow up to your eye balls. Why don't you come on down and see what all of the fuss is about? Come see the inspiration for countless languages, Smalltalk. Alan Wostenberg will be giving an updated presentation on running FIT in VisualWorks. Here's all of the details:
When: Jan 11, 2005, 7pm - 9pm
Where: Offices of Northern Natural Gas
1111 S 103rd Street
Omaha Nebraska 68154
Office is at 103rd & Pacific. Guests can park in the Northern visitors parking area back of building, or across the street at the mall. Enter in front door, we'll greet you at the door at 7:00pm. If you arrive a bit later, just tell the guard at the reception desk you're here for the Smalltalk user meeting in the 1st floor training room.

Monday, January 03, 2005

New Year...New Stuff To Learn

Well, I had time today to sleep and recover from nursing a sick system by spending time away from it. One thing that I like to do every year is set a few goals for myself. These always include learning a few new tricks. In the past, these have included learning Erlang, Lisp, Javascript, Prolog, Ruby, and etc. This year I plan on sinking my teeth into Python, CLIPS, and Scheme. Why so many languages? Well, I don't think Python and Scheme will be far different from things I already know. CLIPS is not too far of a stretch as well, but I really want to get into the way it does things. In the past, what I mainly pull from various languages is a different perspective. I look at programs a lot differently after really getting into Lisp and Erlang. In fact, learning Lisp is what really made me comeback to Smalltalk and realize just how painful and unhappy programming in java made me. I would still love to have a job doing lisp one day just to experience it on a full time basis. Now, yoy might wonder why I would pick Python. Well, I pick Python because a lot of interesting language research seems to be going on with it and I'm liking a lot of the frameworks I'm seeing coming out of the Python community. I picked Scheme because it's supposed to be a cleaner Lisp. It's going to be an exciting year and I hope to learn a whole lot more about craft. I also pray that there's a Camp Smalltalk this year too! If not, maybe I'll go to a Camp Python, Ruby, or Lisp. Now, that would be fun, wouldn't it?!
Evil is...

Hidden tracks on CDs. I hate them. I really do. One of the joys of having an mp3 player (I have the iRiver 40gb btw) is that I can edit out all of those pesky blank tracks and/or space. Still it takes time to edit the audio and it's just a pain in the rear-end! I have written several quick utilities to help in Javascript that organize and adjust volumes on my mp3s. Now, I just need a utility to remove the blank space and I would be in hog's heaven. I'm just glad for mp3 players because now I only have to edit it out once and I never have to deal with it. Depending on the day, I sometimes just delete the extra tracks because mostly the hidden tracks are just not worth the effort to edit the blank audio out. Word to bands, do not put hidden tracks on your CDs. You're just pissing off everyone and it's not cute anymore. OK, I think that's enough ranting for today.

Sunday, January 02, 2005

Back in Nebraska

Well, I was welcomed back in Nebraska with a pager for a sick system and I've been a very busy boy since I've been back. I must admit that it was great to be back in Alabama where people smile and actually talk to you. But, as with all things, it's great to be back in the arms of my loving wife and the comforts of my own house. I spent the new year so far nursing a sick system back to health and it's been no picnic. I have a lot planned for this coming year. I can't wait to see what happens this year. Smalltalk on!

Tuesday, December 21, 2004

Journeyman

I didn't even notice, but I've been certified a Journeyman by Ken Causey on Squeak People! WOW! Thanks, man! It made my day. What a nice xmas gift to receive! I'll cut this short because I've got some squeaking to do! Smalltalk on!
Off To See Kinfolk

I probably will not have internet access for a little while until I get back. I'm heading down to Alabama for the holidays to spend some time with family and friends. I hope everyone has a very happy xmas and gets everything they dreamed of. See ya in a week!

Saturday, December 18, 2004

I love testing

Well, I woke up bright and early this morning and decided to upgrade my Squeak image to the latest 3.8gamma. Well, I found that a lot of my projects do not work now. Crap. Well, I find out that one problem right away is mine and then within one hour I had my project migrated. I was shocked how fast I was able to find the problems and fix them. I didn't need a magic wand or anything, just all of the tests that I now write before I write code. A lot of the tests tested such small pieces that I was able to hone in on the problem quickly and fix it. No massive walk thoughs or cussing. It just re-iterated in my mind that the most important aspect of agile methodologies is test-first. Hell, it should be the most important aspect in any methodology! I was also thankful to keep my tests small. The only project that I have that has huge unit tests (more like acceptance tests) is my Java project and I plan to fix that shortly.

Friday, December 17, 2004

Smalltalk/X

OK, I've been playing around with Smalltalk/X lately and I'm quite impressed with how it has progressed in the past year. It's still a little rough around the edges (I got it to crash several times while trying to restart a method in the debugger) and a few things don't work like you think they might, but overall it's a good experience. I've been using the windows port and I get the feeling that the linux port probably kicks all booty. The code I've seen thus far has been very clean. I ported some of my xml code from Squeak to it and with a few minor tweaks, was up and running in no time! The really cool thing is that they have other languages as well. There's a java, prolog, and even a javascript interpreter. Very cool indeed. I'm still in the beginning stages so my VM crashs could well be a new beginnger clicking the wrong button. I'm excited. It should be a lot of fun exploring!

Wednesday, December 15, 2004

Great Quote

"Static Typing: Make it fast. Make it right. Make it run." - Niall Ross

Can I get an AMEN? Smalltalk on!

Monday, December 13, 2004

New Smalltalk Blogger

A great friend of mine just started his very own blog. Please welcome, Andres Valloud, to the world of Smalltalk bloggers. You can read his blog at: Ten is a good number. One of the things I love about Andres is that he speaks his mind and holds nothing back. If he doesn't like something, he says so. Enjoy!

Thursday, December 09, 2004

Omaha Smalltalk User's Group

Guess what time of the month it is? Yes, it's time for the monthly Omaha, NE Smalltalk User's Group meeting! The FIT framework will again be up for discussion and anything else everyone wants to talk about. Last month, we talked about "The Genius Within", Refactoring Browser tool, Squeak, and a whole bunch more that I can't think of. I'm sure it will be fun and educational whatever we decide to discuss. Here's the details:

Tuesday, December 14, 7-9pm
Panera @ Eagle Run Shopping Center
13410 West Maple Road
Omaha, NE 68164

We generally meet in the seating in front of the official meeting room. We're still a small group. Just look for a long haired fellow who has a laptop and talks about this super cool language called Smalltalk!

See you all there!
Crushed, Saddened, and In Denial

Anyone that knows me knows that I am huge fan of heavy metal music. They also know that I am a huge fan of Pantera and Damage Plan. Imagine my shock when I heard this morning when I found out that Dime had been shot to death! I thought it was some sort of sick and disgusting joke on the internet, but nope, it was true. His music meant a lot to me. From what I read, he was a caring and fun loving person. I just can't believe his been taken from us. A true metal warrior of the highest caliber and he's been ripped from us by a maniac. I also can't believe all of the injured and dead. I am just shocked. I wish I could pinch myself and this would all be a dream. My condolences go out to all of the families involved. I can't express my emotions and I was just a fan. Brothers in metal forever...


Saturday, December 04, 2004

This is what we've been talking about!

If you wonder why we Smalltakers, Lispers, Rubyers, Pythoners, Perlers, and other inhabitants of Dynamica are constantly raving about, then go watch this movie on Self. It brings home the point of what is possible in dynamic environments. The compile/run paradigm is just not needed and you can be so much more productive in lively environments. The movie does a great job of showcasing why simple is better and lively environments are the future. It was interesting to see the Morphic environment in use in Self. I know the version in Squeak was written by the same person, John Maloney. I also noticed a lot of the Etoys-type stuff in there as well. It's nice to see where inspirations are coming from. I would love to play with an instance-based Smalltalk system. How cool would that be? Anyway, the link has a bunch of movies that I hope to spend some time watching! OH BOY WHAT FUN! The movie reminds me that I need to go play with some Self. I download an x86 version a while back, but was to busy to play with it. Maybe now is the time to fire it up....=)

Sunday, November 28, 2004

Remember: Be Nice

Just a reminder that all of the people helping you this holiday season are working long hours and trying their best to please. I was helping my wife out this weekend at the mall (she owns a kiosk) and I think several people should have remembered the age old rule, "Treat people like you would like to be treated." I was shocked and disgusted how rude people can be sometimes. One man even made an obscene hand gesture after he had walked about and asked for help which I gave. He made the gesture in response to my sales pitch. I never think it's OK to be rude. But, I see it everyday in traffic, at work, at the mall, and just about any public place I go to. It saddenns me. There's never an excuse to be rude EVER. I don't care if you're having a bad day. Smile and treat everyone with respect. Anyway, my one wish is for everyone to be nice to one another. Have patience and remember everyone working behind those counters are people too. You are not better than them because you are the customer. They are not your slaves, they are your amplifiers to get your shopping done more quickly. So, if someone offers you a free chicken wing, politely refuse if you're not interested...don't yell...Don't make an obscene gesture, just BE NICE! Oh yeah, and be nice to your fellow shoppers and human beings as well. Peace, love, and happiness...It's not just for family time and xmas anymore. Do it all the time!

Saturday, November 20, 2004

Weak Typing and Bad Programmers

Alright, I went looking for Javascript info while I was writing my Life Simulation and I found two pages noteworthy: Javascript Rocks and it's nemesis, Javascript Sucks. Both pages have great points and things to ponder. There's a bit that I agree on both of them, but I'm firmly in the camp that thinks Javascript is a powerful lisp-like language encumbered with C syntax that's been messed up by the browser wars. But, enough of my incessant whining, one thing that caught my eye as an against of Javascript is that it is "weak typed". It's described in one the links outside of the Sucks page. It's also been talked about blogs, but I can't remember who's now. The example given is "3" + 1 returns "4". And this is bad. Well, if you think about how tolerant the browsers of HTML, why would javascript be any different? I'm not saying it's a good thing. In fact, I think it's a bad thing, but it's not something to blame the language for. It's the damn programmer who wrote that code in the first place that should be blamed! Javascript is typed (it knows to do the conversion and it will complain when I send it a message it doesn't understand. Basically, the auto-conversion is only on operators). I've never been bit by it because I make sure where I need numbers, I convert them to numbers! Same goes for strings. I don't mix the two and depend on automatic conversion (you should never rely on automatic conversion...SAY WHAT YOU MEAN AND SAY IT MEAN!) I think it's wrong to blame the language and it makes an easy scapegoat for bad programming. If you're surprised by something the language does or you don't like that it does it, then DON'T DO IT! In this case, make sure your objects are converted to the right types and be done with it. If you get surprises anywhere, it's because you didn't code it right. When I make a mistake, the last thing I do is blame the language or compiler. I blame myself. Take responsibility. Stop blaming the language. Languages are only amplifiers. Pick the one that amplifies your thoughts better and be done with it. OK, I'll get off my soapbox for now...=) Bottom line is that I don't want my language to control me...I want to take responsibility when I break my code. Remember, bad code is bad code not matter if the language is weakly, strongly, dynamically, and/or statically typed.

Sunday, November 14, 2004

Weekend Project: Conway's Game Of Life In Javascript

OK, I have always loved and found wonderment (is that a word?!) in Conway's Game Of Life. While talking to a friend of mine, the subject of the William Poundstone's "Recursive Universe" came up (I probably started it). Anyway, to cut a long story short, we hit the web and all I found were java versions on the web. I thought this to be very sad. Where are the javascript versions?! I thought it would be a cool weekend project and I thought it would be equally cool to allow you to edit the rules it uses. So, all you recursive emergent behavior freak lovers of the simple, go here right now and enjoy! It runs in IE, Firefox, Mozilla, and Opera. It works best in Mozilla and Firefox since their Javascript implementations are FAST! I had to take out some of my closures to make IE and Opera to work properly, but oh well...

I just love knowing that I now have an implementation of Conway's Life that I can play with anywhere and I can change the rules! How cool is that?!!!!!

Saturday, November 06, 2004

Scripting and Smalltalk

Lots of new dynamic languages have come along and tons of programmers are discovering the productivity gains of no compilation wait times and immediate feedback. But, the environments for these new languages are still based on files and dead systems. One advantage Smalltalk has is that the environment is alive (you can change the environment without shutting down, everything is well ALIVE!) and I think this makes a perfect playground for scripting as well as application development. While most folks use Smalltalk for ultra-complex business applications because they like spending time with their kids, but Smalltalk can also be used for scripting. You see you can get access to the compiler, compiled code, and even the runtime stack (you can even change it!)! Now, even most scripting languages don't give you that kind of power! The only other language I can think of that does is LISP. Anyway, back to the topic at hand. We all know that scripting is helpful for kicking off systems, moving files around, querying the state of a running application, and etc. This is available off the shelf for every Smalltalk dialect that I know of. The cool thing about scripting in Smalltalk is that since you have a powerful environment around you, you can write your script in a workspace. Now, if your script gets too big, you can start moving it to classes and refactoring. You can also move scripts to external files and load them in a runtime. Why do you configuration files when you can have runnable code that does it for you? Let the objects do the talking! Scripting is also great in running systems. If you run Smalltalk in headless mode, you can have scripts that query the state of the system while it's running! This can be very powerful and DANGEROUS! But, wait a minute, we have access to the compiled code and we can actually query the compiled code to make sure it doesn't do anything nasty. The bounds are limitless and once you start thingking about them, you wonder why am I writing unix bash scripts and then, you might be wondering, why not have the power of a compiled language, but the expressive power of an interpreted one? Smalltalk is all that and a whole lot more.
Scary Computer Errors

OK, Bill Bumgarner blogged on computer error in Ohio and I must admit it scares the living day lights out of me. I have no doubt that cheating in elections is nothing new. Both the democrats and republicans have been ingenius in their bending of the system. But, this takes it to a whole new ball game. Computers make it very easy to tip the scales. I think this article just rings clear that we election software MUST BE OPEN SOURCE and we must ensure that the software is not tampered in any way. Computers could be used to get rid of most cheating in elections, but they can also be used as very efficient cheaters as well. If we do nothing, we might as well resolve ourselves to a dictatorship.

Wednesday, November 03, 2004

Omaha Smalltalk User's Group

Guess what time of the month it is? Yes, it's time for the monthly Omaha, NE Smalltalk User's Group meeting! Again, it's going to be an open forum where anything is up for grabs. Last month, we talked about design, moose, nebraska (the distributed environment in Squeak), and croquet. I'm sure it will be fun and educational whatever we decide to discuss. Here's the details:

Tuesday, November 9, 7-9pm
Panera @ Eagle Run Shopping Center
13410 West Maple Road
Omaha, NE 68164

We generally meet in the seating in front of the official meeting room. We're still a small group. Just look for a long haired fellow who has a laptop and talks about this super cool language called Smalltalk!

See you all there!
Hatred and Disgust

Well, I am very depressed about today's election outcome. So, I'm listening to Sorrow's "Hatred and Disgust" album. It seemed to fit the mood perfectly. I guess I should look on the bright side: there's going to be a lot of great grindcore (really angry fast punk metal) coming out because of it...=) But, what I want to know is why is "liberal" considered a dirty word and conservative is not? This page will be black until I stop grieving...=)
Time For Change

Isn't it time to deal with complexity with a simple and powerful language? Read this article and realize Smalltalk could be used to fix the "complexity" problem by dealing with it instead of masking it with more complexity. IT systems are complex. You need a language that can deal with it: Smalltalk. If you want rising IT costs and complexity, do what everyone else is doing. Why not try something new, yet has had lots of time to mature.

Monday, November 01, 2004

John Peel

I just read that John Peel died of a heart attack. The news shocked me. Peel was an influential DJ and took a lot of chances. If it wasn't for him, a lot of the music that I enjoy might not have crossed the atlantic and into my ears. He was responsible for giving a lot of bands their chance when no one else would touch them. The whole genre of grindcore owes a lot to him and in fact, Earache Records has a tribute to him on their front page. I listened to a ton of records from that label when I was in college. RIP. A cultural icon for the underground is gone. He will be missed.

Saturday, October 30, 2004

Musicians And Programmers: Why Have One Genre or Technology?

I have been thinking about how close musicians and programmers truly are. I am more confident than ever that programming is functional art. By functional, I mean art that performs some function (aka architecture). The metaphor of a band or orchestra comes to mind immediately. Agile methodologies have brought back the notion of what we always knew to be true: small teams of dedicated programmers can accomplish great things. It seems the mainstream is just catching up even though there have been several books in the past that touched on this subject (Peopleware and Pyschology of Computer Programming just to name two). Much like small groups of musicians can perform great works of music (think chamber music, rock music, etc). Now, these musicians have to work tightly together to make sure that they don't make noise. The same is true for programmers, if we don't pair and communicate, we get noise as well (broken code). Neither is a pleasant experience for our customers (for musicians this is the listener of course). And while a big team can pull off a project, it's rare. It seems the parallel in music is huge orchestras and they are big undertaking (and rare as well). Musicians spend a lot of time studying music (if they are any good), just like we spend a lot of our time studying code (you do study code, right?). I could go on with how we are alike, but I think you get the point. Programming is art and programmers should interact like artists...

So, you're thinking, "Yep, Blaine you're right! I've read this a million times though...What's the point?" Well, I'm going to state my point right now and it's going to seem to be out in left field. My point is we shouldn't bicker about which language is better because it's a moot point. I know, I know, I've been spent a lot of time blogging on why I think certain languages and technologies are better and I will continue doing so. By now, you're probably rolling your eyes and thinking, "Crap, he says arguing about languages is dumb, yet he's still going to do it...What a dummy!" Well, I think computer languages and technologies are like genres of music. I love heavy metal, electronic music, lounge, and weird stuff. Does it mean my tastes are worse than someone who loves classical or jazz? Or even someone who just listens to punk? NO! It's different tastes. Now, ask a musician that question and you will get snickers. It's the same snicker you hear when someone says that language X is better than language Y depending on who you talk to. But, it's all a matter of taste. It's what you like...It's what makes YOU more productive. Smalltalk makes more productive than any other language I have ever used. But, another programmer might say the same about Lisp and another about Haskell. Hell, we can probably find programmers who will scream that java is the most productive for them.

Are they wrong or am I wrong? I don't think any of us are. But, I am frustrated that our industry thinks that there is one genre of music that all of us have to make. How many musicians would be frustrated if the only kind of music that could make was bubblegum pop or freeform jazz? There would be some happy musicians (because they would be making that music anyway) and a lot of frustrated others. I think programmers are in this boat right now. I have the luxury of currently working in the language that I love using, but I know a lot of us who don't. Why can't teams of programmers (much like bands of musicians) get together based on their love for a certain genre of technology? I think the teams would be more productive and the programmers much happier. Now, you might think this might lead to tunnel vision, but you know what? I don't think so. I would love to work with programmers in other languages much like musicians cross genres to get the creative juices flowing. It works the same for us. I might decide to go back to my main love, but I might have new ideas to apply. It would be much better than what we have now.

Anyway, what do I expect to come out of this? I guess I would like to see our industry diversify much like there are different genres of music. I hate one choice. It would be like being forced to listen to one type of music along with everyone else. How boring. Now, I will keep talking about my love of Smalltalk and why I think it makes more productive because I would like to convince programmers to try my genre of technology and fall in love too. It's like playing a song you like for a friend and trying to get them to like it as well. Is the song better than what everyone else likes though? Nope, it's different and fits my tastes perfectly. Hell, I wouldn't be a metal fan if somebody hadn't played me my first Judas Priest song and I wouldn't be programming in Smalltalk if someone hadn't gotten me to use it. So, expect for me to bash less and show off cool things.

Monday, October 25, 2004

OOPSLA 2004

Well, I must admit I wish I was in Vancouver right now. It would be cool to do some more great code at Camp Smalltalk. Oh well, maybe next year...=)

Saturday, October 23, 2004

PPUID and over charging

I'm MAD at EBAY! GRRRRRR! Alright, here's the deal, their web site design is awful. Everytime I use it, I have to sign in several times especially if I have to do anything with my accounts. I just made an one time payment for seller fees because they sent me a nasty gram stating that I hadn't paid. Well, the fact is that I tried to pay them via Paypal and the web page kept showing an error page. So, I can't pay, well, some mistakes on my side and them charging me more and sending nasty grams. I go to fix the situation (realizing not to use the paypal links) and what do I discover? I have to sign in several times just to get to the page to pay via my credit card (which none of the forms are prefilled like name, address, etc as well). And to top it all off, they ASK ME HOW MUCH MONEY DO THEY WANT?!!!! Hello, you could have prefilled this in for me! So, then I had to sign in two more times (no I'm not making this up) to get to a page to show me the amount again (this time I remember it). So, I try to go back to the credit card page. I have to sign in two more times just for them not to have anything filled out on the credit card page so I have to type everything in AGAIN! GRRRRR! I finally pay, but at this point, I have no faith in any of Ebay's systems. Un-user friendly and the excessive signing in is awful. Why don't they call up their brother at half.com since they own them now and ask them how to do a web UI that doesn't annoy.

Sorry for the rant, but I had to get this off my chest...I don't think I'll be selling much of anything on ebay any more since they love over charging for small mistakes and that damn atrocious UI! If I was Sun or IBM, I would tell them not to advertise that they use my products because they're using them poorly. Or better yet with that extra fee they charged me, they could pay for a good UI designer. Oh yeah, PPUID stands for Piss Poor User Interface Design.
Busy, Busy, Busy

I haven't been blogging much because I've been too busy. My stint on the java team at work is coming to a close. It's been a lot of fun and the team is truly awesome. But, I believe now more than ever that the language you program in affects the way you think. I've been spending all of my free time on Squeak projects. Here's some of the things I've been working on:
  • Lazy Collections - Just released. Sending select:, collect:, reject: to a collection doesn't automatically perform the operation, but keeps the block and original collection around. Great if your cascading these calls because it doesn't create a temporary collection for results. I've updated it and hope to put it up on SqueakMap.

  • AsyncObjectWrapper - Another small project. It wraps around any object and makes the public calls to the method run in its own process. It can run in async mode or sync mode (waits to return). I'm still playing around with this and it's just a bit of fun with Smalltalk, multiprocessing, and stacks.

  • Web Content Manager - I want to add content to my website more easily. Thus, this project is going to allow me to have a nice looking web site and make it easy to update.

  • Refactor DialectStream in Squeak. Ew. I wanted to change how the auto formatter in Squeak laid out my code and found a mess. This one is at the lowest priority. But, it would be fun to clean that stuff up. The code isn't that bad, it just needs a little cleaning up so that's easier for everyone to add their own auto-formatter to Squeak for their code.

  • JDWP support in the Java project. JDWP is the Java Debugger Protocol. I got a great start on it. I'm about 25% through it and it looks like the rest of the java stuff. It will just take some time. Should be fun to find out where reality diverges from the spec. I haven't found a java spec yet to be 100% right. But, to their credit, the gotchas have been miminal and easy to fix. After that, it's RMI support to the java package! It's getting huge! What started out as a simple way to debug serialization streams has turned into a project that can read in java class files and disassemble byte codes. Lots of more work to be done. The eventual goal is to run java in Squeak!

  • Super Secret Project. I can't talk about this one, but it's my top priority. It's going to rock!

  • And finally, setting up a linux box to play with.


I've been Squeaking a lot and having huge amounts of fun in my free time. I hope to release some of this stuff soon. Time permitting of course...=)

Saturday, October 16, 2004

No Bugs

Here's a great evidence about the argument that strong typing prevents bugs: No Bugs. While you're at it, visit the Alchemetrics site that it is on. It's a great piece of work proving the strengths of Smalltalk. It's automated stock trading software written in Dolphin. And if I might say so myself, Dolphin kicks butt. I can't wait for version 6! Anyway, Check it out!

Wednesday, October 13, 2004

Too Much Fun

Programmers should not be allowed to have so much fun. I love the new format of the Smalltalk User's Group! We had another great discussion last night (in fact, I don't think any of us wanted to leave). We stayed until Panera closed and they were kind of enough to let us stay a little late. Nebraska and Croquet were shown off and then, we had discussions on pair programming, good design, and a whole bunch more. We even had a new member show up! They were passing through the area and we enjoyed having them. We had a great crowd! WOW! Anyway, I hate to gush, but I love talking about my favorite language with other folks. I would like to thank everyone for coming out. Maybe next month, we can get Alan to show off more FIT (acceptance test framework) or maybe we'll discuss design again. I like keeping the discussion open and interactive. See everyone next month!

Monday, October 11, 2004

Lazy Collections

I released another SqueakMap package tonight called "Lazy Collections". Here's the excerpt:
    The idea for LazyCollection is very simple. It takes a functional
    approach to the common collection protocol of select:, collect:, and
    reject:. By functional, I mean the collection is not changed nor is a new
    one created. The blocks are kept around until they are absolutely
    needed. I have been wanting this functionality for some time because
    it's nice for large collections. If you have a collection in which you are
    calling a lot selects, rejects, or collects on, then this will not create
    the intermediate collections. It will wait until you ask something of the
    collection where it can not delay the answer. This should make these
    chained operations must faster on large collections.

    This was a lot of fun to program and it's not that big. Take whatever
    you want from it!

Basically, I implemented new selectors collect:, reject:, and select: called lazyCollect:, lazyReject:, and lazySelect: respectively. Now, these new implementations return a simple place holder object instead of calculating a new collection. It keeps the blocks around. This is useful when you're doing selects and collects in series. It simply combines the blocks. It was a lot of fun to write and it's something that I've blogged about before. It was a short little excursion. I will probably be adding more to it in the future, but I'm very happy with it right now. I hope you enjoy it!

Sunday, October 10, 2004

Well again

I'm well again! No more fever! Yeah! Now, it's time to kick some booty!
Next Omaha Smalltalk User's Group Meeting

It's that time of the month! I hope you're all excited as I am! Again, we're just going to get together and discuss thoughts. I would like to play around with nebraska (a distributed GUI framework for Squeak). It might be fun to play around in...=) I think it would be a lot of fun! As always, anyone curious to experience the love, pleae join us! Here's the details:
    October 12, 2004, 7pm-9pm
    Panera @ Eagle Run Shopping Center
    13410 West Maple Road
    Omaha, NE 68164

For more information, visit the Omaha Smalltalk User's Group Homepage.

Friday, October 08, 2004

Sleep and The Fever that will not die...

OK, so I thought I had it bad on monday...Well, this stuff has now lasted till friday! I've missed a whole week of work and I've been mainly sleeping and eating popsicles...I don't think I've sweated, had more weird dreams, and had so much just plain unpleasantness ever. Oh well, I'll stop complaining and here's to hoping that I get well before monday! I'm ready for this crap to be OVER! Oh yeah, I went to the doctor and everything checked out fine (go figure). Everyone stay well for me!

Monday, October 04, 2004

Fever...Stuck in bed...

Alright, I got some of the nastiness stuff you could ever imagine! It sucks! I've been carrying a fever 101-103 for the past two days and holed up in my bed. YUCK! I thought I would see how long I could last before I pass out again. have I ever mentioned that I love my laptop and wireless router? Yep, I'm writing this from my bed!

Sunday, September 26, 2004

Love Is...

here. I miss Infocom. Cool site that will bring back a lot of memories to a lot of old folks out there! Go now and remember the days when Apple ][s and Commodore 64s ruled the world!
Omaha Smalltalk User's Group

I just put up the Omaha Smalltalk User's Group page up finally. Check it out here. Phew! It's been a busy night! If anyone has any suggestions, let me know. I apologize to all of my brethern in the OSTUG. I've been promising the page for a long time. Rejoice, my brothers!
SmallHttpUnitTest

Alright, I launched my new projects page tonight! Click here to see it! YIPPEE...=) Anyway, I just released my newest project and the one I worked on with Roger Whitney at Camp Smalltalk. Roger had the great idea for an http unit test framework and I helped him make it a reality. It was an awesome experience and I hope to get to work with Roger again in the future. It's taken a while to get the first release out since Roger and myself have been very busy. It might be a long time before the next release since I am currently overwhelmed. Work is very busy and I got lot of stuff to do at home currently. Anyway, check out the project page here. I'm glad to be releasing it and showing off our new toy for people to enjoy! It's a bundle in the Cincom Public Repository. If you have any problems, let me know. This was my first foray into VisualWorks since I left Sprint. It's changed a lot! I hope to use it more in the future.
Great Answers From a Thoughtful Musician on MP3s

One of my favorite artists, Assemblage 23, is about to release his new album, "Storm", this Tuesday. I was reading his website and came across his thoughts on MP3s in his FAQ page which you can read here. An excellent read with well thought out answers. The last answer that he gives almost made me spew coffee on my monitor. This dude just flat out rocks. And yes, I have his new album on special order. I can't wait! It's going to rule! If you have never checked him out, do so now. It's emotional, intelligent electronic music.

Wednesday, September 22, 2004

Accelerating Change

Oh, this looks like a fun conference: Accelerating Change 2004! I will not be able to go this year, but I'm thinking it would be cool to attend this one next year.