Sunday, November 30, 2003

lowtech music for hightech people

Check out Micro Music. I've always loved the music in the old Atari, Commodore, Apple, Ninetendo, Intellivision, etc games. I bought a SidStation and love it for that reason alone. Well, if you remember I also bought the nanoloop cartridge for the gameboy. I've just recently started playing with it and I love to hear what people do with these devices. Well, I stumbled across the micro music website via MSNBC (it came up in a google search for "gameboy music"). I've been downloading music like crazy! WOW! I feel so inspired. And all of this time, I thought I was alone in my love of 8 bit crunchy madness. The ultimate in electronic music goodness! I'm going to be a very busy boy! Check it out....I've yet to hear a bad composition! A cool on-line community that I can't wait to be a part of!
Seems I'm Not Alone

James Robertson had this to say about Bob Martin's post about debugging. I admit that I totally agree! And no, James, you are not alone!
Am I a Bad Programmer?

I reckon I must be. Bob Martin wrote that Debuggers are a wasteful timesink. I have been doing TDD now for about a month, so I'm no expert nor do I claim to be. I've been trying to do TDD in the programming that I do in my spare time, and I still need and want a good debugger. I use a debugger a lot as an exploratory tool. And while looking at a test sure does help (I would rather have a test than not), I still walk through the code with my debugger when I'm in code that I'm new to. I can't tell you how many programming mishaps I have found this way. Sure, the tests ran, but I found things that weren't quite right. To me, a debugger allows you to see the program as it is alive. Simply looking at code is like looking at something dead and reason how it is when it was alive. I'm not an archealogist, so why guess when I can run the program?

I'm not trying to downplay TDD, but I am amazed that anyone would say that debuggers are bad. I see no problem with being too dependent on them at all. I have found that I am generally using my debugger in new code and when my tests fail. I like TDD because I have a short piece of code that I can execute without running all of the program to find a problem. Thus, it makes debugging a lot shorter and easier. I think the two go hand in hand.

Friday, November 28, 2003

Extreme Computing Festival of Inappropriate Technology

Oh, this sounds like fun! Check it out here. I want to go just for the name of the conference alone. Am I the only one that likes the name?
The Dreams And Schemes Studio Is Operational!

Yeah! I finally got all of my stuff connected up in our new house! I played down there for a long time and I think I'm going to love the new setup!!!!! So, the next plan is to learn the FS1R and start creating music AGAIN!
Great FS1R Resource

I found this and thought it was really cool. I was trying to look for a FS1R editor and came across this page. Lots of information and stuff to download. Looks like I'm going to be a busy boy! I've been waiting to get fully moved in to learn this great synth. Should be a lot of fun....=) Anyway, if you have an FS1R, check out the page!

Thursday, November 27, 2003

I want one

Seems Bob Moog is celebrating 50 years of electronic music excellence. Check it out here. It has got to be the sexiest calendar I've seen in a long time. Maybe one of these days, I will actually own a moog...=) The voyager is one awesome looking and sounding synth! Thank you Bob Moog for giving the world so many wonderful toys of joyful noise!
Funny Post

I got this from the Perpetual Motion Board:
    At New York's Kennedy airport today, an individual later
    discovered to be a public school teacher was arrested
    trying to board a flight while in possession of a ruler, a
    protractor, a setsquare, a slide rule, and a calculator.

    At a morning press conference, Attorney general John
    Ashcroft said he believes the man is a member of the
    notorious al-gebra movement. He is being charged by
    the FBI with carrying weapons of math instruction.

    "Al-gebra is a fearsome cult," Ashcroft said. "They desire
    average solutions by means and extremes, and
    sometimes go off on tangents in a search of absolute
    value. They use secret code names like "x" and "y" and
    refer to themselves as "unknowns", but we have
    determined they belong to a
    common denominator of the axis of medieval with
    coordinates in every country.

    "As the Greek philanderer Isosceles used to say, there
    are 3 sides to every triangle," Ashcroft declared.

    When asked to comment on the arrest, President Bush
    said, "If God had wanted us to have better weapons of
    math instruction, He would have given us more fingers
    and toes. I am gratified that our government has given
    us a sine that it is
    intent on protracting us from these math-dogs who are
    willing to disintegrate us with calculus disregard. Murky
    statisticians love to inflict plane on every sphere of
    influence," the President said, adding: "Under the
    circumferences, we must differentiate their root, make
    our point, and draw the line."

    President Bush warned, "These weapons of math
    instruction have the potential to decimal everything in
    their math on a scalene never before seen unless we
    become exponents of a Higher Power and begin to
    factor-in random facts of vertex."

    Attorney General Ashcroft said, "As our Great Leader
    would say, read my ellipse. Here is one principle he is
    uncertainty of: though they continue to multiply, their
    days are numbered as the hypotenuse tightens around
    their necks."

Tuesday, November 25, 2003

Fun With Javascript

OK, I've decided to make my quote page a little adventurous. Check it out here. The page is completely generated by Javascript and if you are running IE (yeah, I know, bitch, bitch, bitch), you will get an extra special suprise. I have no excuse to this except that I was playing around and got a little carried away. Feel free to look at the source or what have you! My Javascript-fu is becoming strong!
He's BACK!

Finally, got my cable modem talking to my wireless in my new house! I can now proudly walk anywhere in my house and blog! How exciting is that?! Life is getting back to normal. Expect more posts now!

Monday, November 24, 2003

Funny, but true

Great article on security can be found here. Thanks to Sam Griffith for sending it to me. Kind of reminds me that we should always have the user's best interests in mind. And if it conflicts with our personal convictions of what is right, then we still need to choose the user's interests. Great article on usability as well.
MOVED!

We are in our new house and I am one happy boy. I apologize for the lack of posts, but it's been hectic around these parts. I will be blogging more after today because high speed internet comes my way! YIPPEE! I know my wife is happy now too. She did most of the work of getting everything in line.

Tuesday, November 18, 2003

Interesting Article

I just read the following article: 640KB ought to be enough for anyone. The author mainly states the obvious and it's nice to know that MS are trying to make their OS richer, but I was shocked and appalled at the following statement:
    Outside of the PC mainstream, we've seen many sophisticated demonstrations of the power of network effects fundamentally based on client-side object models and dynamic binding of independently-created components. From the power of piped unix commands, to the elegant and incredible sophistication of language-derived Lisp, Smalltalk, and Squeak environments, we know that the power is there to be had. But again, none of these environments has become mainstream - each perhaps having remained niche by drowning in its own idealism.
My first reaction to this is WHAT THE #$%^&?! The only reason Smalltalk and Lisp have not garnered enough support is because of marketing plain and simple. It's easier to move to a C-based syntax language which is what most developers are raised on. Thus, they are most comfortable. People like using things they are used to. Programmers are humans too. Why do we always ignore that? I hate the common assumption that Lisp and Smalltalk failed because of the smug users of both languages. I think it's a cheap cop out. Lisp and Smalltalk are strange beasts. I didn't like Lisp at first because it was different, but I persisted and it has rewarded me over and over. In fact, I program very different today because of my encounters with both languages. I hope this doesn't sound smug or like bad apples. I don't mean it to. I'm proud that there are languages like Lisp and Smalltalk out there. And guess what? There's more of them! I'm glad language designers are out there that want to push the envelope.

Now with that being said, I still think Lisp and Smalltalk may have a long way to go. In fact, they will probably never gain mainstream acceptance. I think the ideas of both will live on and continue to influence future programming languages. I'm fine with that and accept it. if I had a million dollars, I would glady put it behind Smalltalk...=)

Monday, November 17, 2003

Gleamed From The Squeak List

Alan Kay made the following post on the Squeak List and it points to a lot of stuff that I need to look at. The amount of history in this man's head is amazing. Anyway, I thought I'd share:
    --- Alan Kay wrote:
    > Hint: as I mentioned previously, you don't need a
    > method dictionary,
    > classes, inheritance, etc. You don't even need
    > "state" in the way it
    > is usually thought of. The essence is that of
    > communicating computers
    > as looked at from the outside. If you can make the
    > insides look like
    > the outsides "all the way down" then you have
    > something very
    > interesting and powerful.
    >
    > And yes, the original theory of Smalltalk was just
    > this (since even
    > the syntaxes used are definable by interior actions
    > of how the
    > "computers" recognize and receive messages). The
    > interesting and
    > difficult parts here are design decisions about
    > architectural
    > conventions that allow the universal mechanisms to
    > be used with
    > minimal pain and maximum expression and scalability
    > by humans.
    >
    > Each of the 4 Smalltalks in the 70s made different
    > choices (plus the
    > PIE system of Goldstein & Bobrow), and it's a pity
    > that there have
    > been so few experiments since Smalltalk-80 came out
    > of PARC.
    >
    > But check out some of Mark Lentzner's stuff:
    > Codeworks, Wheat, etc.
    > Look at Joe Goguen's ideas about closer analogies to
    > algebras as the
    > interface, etc. Ken Kahn's various designs over the
    > years are
    > extremely interesting. Several of the designs I did
    > after leaving
    > PARC -- Rainbow, and the original Playground (quite
    > different from
    > each other and I'm not sure where either set of
    > papers is anymore) --
    > still seem to be interesting to me. David Reed's
    > NAMOS is the basis
    > of Croquet. And, of course, Andreas Raab's not too
    > far away Tweak
    > design is a *really interesting* set of ideas....
    >
    > However, there have been many interesting ideas over
    > the years that
    > have had little effect because they lacked enough
    > pragmatic reality
    > via great implementations (and certainly vice versa:
    > an incredible
    > number of systems used today have weak ideas but
    > were implemented
    > well enough to spread).
    >
    > Cheers,
    >
    > Alan
    >

Sunday, November 16, 2003

Omaha Is Looking Better and Better

Yesterday, we decided to head out to a local shop called Sonic Highway. The reason for the visit was that the store was listed as an electronic music equipment dealer. So, I had to check it out! The store owner was incredibly nice and showed me all of his toys! He had a super nice studio in the back of the store that had a HUGE DOEPLER modular synth! It was beautiful! He also tempted me with the Jomox Sunsyn (this thing sounds absolutely incredible). I wish I could have stayed longer, but I plan on making many more visits and save my money for a modular. His store even has a nice online presence at Sonic Highway. It's nice to finally have a local electronic music store that I can go and talk shop to. Maybe I'll even meet a few electronic music heads! Omaha is going to be cool place!

Friday, November 14, 2003

FreeRide Is Alive

The much anticipated (at least for me) Ruby IDE is still alive. For some odd reason, I used to have an old URL that didn't work anymore and thought the project was dead. Well, it's not and downloaded the latest from this site. It seems the debugger is now hooked up for windows (I didn't verify that, but the button is there!) And while you are downloading, poke around the entire Ruby Forge site. It's very cool. I think all of the Smalltalk's need something like this. Squeak has SqueakMap and VW has one. But, it would be nice to have one for VA and Dolphin. If there is one, let me know!

Wednesday, November 12, 2003

Meetup

Nice idea. Sign up now...I want to meet more Smalltalkers!
Squeak People

It seems some folks have started a Squeak advocacy site for the people involved with it. It seems a lot of the heavy hitters are there and I was just browsing around tonight. I don't have the muster to join it yet. I just don't feel like I'm a part of the community yet. I know I've done the Java Serialization and worked with the SBlog challenge...But, I'm not finished with the Java Serialization framework yet and well, I wasn't able to help finish with the SBlog stuff. I just see myself as a Squeak newbie and not worthy of being listed with the awesome fire power already up there. I'm just a mere mortal.
I Hate Keanu Reeves

Ok, not only does he get to star in one of the coolest movies all time (River's Edge) along side Dennis Hopper, but my wife tells me that Alice Cooper used to be his baby sitter! Can you believe that?! Some people have all of the luck...
Cool SmallBlog User

Check it out here. It seems somebody is using the SBlog code! We've recently renamed the SBlog project from SBlogLite to just SmallBlog. I spent sometime with the code this weekend and look forward to adding to the code base. Go check out this blog, it's all Squeak and Seaside. Very cool. It's also cool because it looks so stylish...=)
New Dream Theater

I got the new Dream Theater yesterday and always they have given me another excellent album. I've only been a fan since "Scenes From A Memory", but the albums keep getting better. I wasn't ready for the amount of agression on this one, but I like it. You can never accuse Dream Theater of repeating themselves and this album keeps up with that tradition. Lot os thrash and full on metal is what this album is about. It sounds like they wanted to prove that they could really rock out and show their metal roots. I guess they didn't kindly to the comments of their previous album being too soft (which I heard, but didn't agree with). I would have liked some more softer parts, but I still hve a lot of listening to it with it. But, so far, so kick ass!
Panera Bread Is My Poo List

Now, you might ask why. Good question! They recently took away my favorite bagel: the peanut butter banana crunch. It was one of my reward foods. Bastards! Oh well, at least I still have the apple bagel. But, the peanut butter bagel was the bomb! Oh well, I thought about protesting and then, realized there's better things to protest...=)

Monday, November 10, 2003

Pictures Of Our New House

Check them out here and select the photos menu and then, select new house. Only 2 more weeks before closing! YIPPEE!!!
Happy Happy Weekend

I had a really good weekend! It's been a long time since I just lost myself in having fun. It felt great. I got to do a little bit of everything: spent a lot of time with my lovely wife, read, wrote some code, and played with and learned my XL-7. I feel refreshed and ready to kick some booty this morning!

Saturday, November 08, 2003

Object Prevalence

I found this page. I got to it by reading Bill Clementson's excellent blog. The idea sounds crazy, but it seems Klaus Wuestefeld has thrown out our ideas of databases out the window and started over. His idea is simply: Why mess with RDMSs at all? They are complicated and too big of a tool for most systems. His solution is to keep objects in memory taking snapshots and keeping a log of changes to the objects. Now, what does that sound like? It sounds just like a Smalltalk/Lisp image to me! It seems he's an ex-Smalltalker that took the idea of images to the Java masses. The idea seems crazy to the Java developers and I must admit that I never thought of taking images to a much higher level! Now, what would be really cool would be to extend this idea and allow code changes in your logs. This takes out a lot of the pain out of conversions and putting in new code.

So, this idea gives us faster systems, more realibity (less code to mess up in persistence layers), and most importantly: SIMPLICITY. This is the best example I've seen of doing "the simplest possible thing"!

Friday, November 07, 2003

Elf

Just got back from watching "Elf" and it was a hilarious show! The best funk movie I've seen in ages. I wish I could be more like Buddy The Elf in my life. All he wanted was to bring joy to everyone. Great message and a great movie without being too cutsie or anything....So, my goal is to spread cheer no matter if people look at you funny while you're doing it. If we could just be like Buddy, the world would be so much better.

Thursday, November 06, 2003

Worth another read

I read this a long time ago, but a co-worker printed it out and I was reading it again. I think it's a great article written by Martin Fowler. Check it out: Is Design Dead? This article does a great job of explaining how XP and design should go hand in hand. One does not sacrifice the other. Someday I hope I can explain things as clearly as Mr. Fowler!
Is Java Dead?

James Robertson links to an article that asks the question: Is Java Dead? Pretty interesting article...=)
Matrix: Revolutions

I saw the new Matrix last night and visually, it was a breath-taking experience. I always thought all of the Matrixes were high on action and visuals and short on everything else. I enjoyed it, but I thought the story could have been a lot better. In fact, I think they should have quit after the first one. The story was kind of cool and the visuals were state of the art and innovative. Oh well...=) At least, I got the new Lord of The Rings to look forward to (which I didn't get excited about until after the second one)!
15 Days Till Closing

Alright, it's 15 days until I close on my new house. I'm so excited! If you'd like to see some pictures, my wife has some at her blog. My dog will finally have a backyard and I will have a basement for musical and programming madness. I got to think of a cool name, maybe "Kickapoo Joy Labs"? It has a nice ring to it don't you thinks? MOHAHAHAHA!

Wednesday, November 05, 2003

Acyclic Visitor

OK, I was reading "Agile Software Development" again and I came across this pattern. I had never heard of it before so it peaked my interest. I have a love/hate relationship with the GoF Visitor pattern. I love it because it helps separate out responsibilities (an object doesn't need to know how to display itself on 4 different displays, it just needs to accept a visitor). But, I hate it since it's so brittle to object structure changes. Well, the acyclic visitor pattern removes my hate! But, the solution in the book is U-G-L-Y. Here's the Java code:
    public void accept(SomeVisitor aVisitor) {
      SpecificVisitor v=(SpecificVisitor)aVisitor;
      try {
        v.visitSpecificObject(this);
      } catch (ClassCastException ex) {
        //no nothing eat the exception
      }
    }

I don't know about you, but to put this code in every object that needs the visitor is yucky. Not only that, but the code requires you to have a different interface for each object and that's even more yucky! It means I will have a lot of interfaces with one method just to get around the static typing system! GROSS! But, all is not lost. If Java implemented a Does Not Understand method, then the solution would become elegant again! Smalltalk has exactly this and it's something I wish Java would have (the proxy objects are getting close). Here's the Smalltalk code:
    SpecificObject>>accept: aVisitor
      aVisitor visitSpecificObject: self

Now, you might ask where is the code if the message is not understood?! You have implemented the plain ole vanilla visitor pattern and the hate is back! Hold on, along with all of the other visit methods, here's one method that I add in to the visitor:
    Visitor>>doesNotUnderstand: aMessage
      ^(aMessage selector beginsWith: 'visit')
        ifTrue: [self "do nothing"]
        ifFalse: [super doesNotUnderstand: aMessage]

We have moved the responsibility of checking if we understand the message from each object that accepts visitors to the actual visitor! We only need to implement the checking in one place. This makes acyclic visitor much more attractive! Now, I do not support unchecked use of doesNotUnderstand:, but when you need it, YOU NEED IT! I thought this was a powerful and simple demonstration of the doesNotUnderstand: message. And I now have a new trick in my bag.

Monday, November 03, 2003

Fool Me Once...

Here's an excerpt from Robert Martin's "Agile Software Development" that resonated with me:
    There is an old saying: "Fool me once, shame on you. Fool me twice, shame on me." This is a powerful attitude in software design. To keep from loading our software with Needless Complexity, we may permit ourselves to be fooled once. This means we initially write our code expecting it not to change. When a change occurs, we implement the abstractions that protect us from future changes of that kind. In short, we take the first bullet, and then we make sure we are protected from any more bullets coming from that gun.
Basically, this goes to the "Do The Simplest Thing Possible" principle of XP. I've heard and read this mantra several times. Now, I like the sentiment, but it's hard to turn off that voice in your head that's going: "Put that hook in because you might need to do X, Y, or Z." It's very tempting to put the hooks in because it's been drilled in your head. So, I have been trying my damnest to do "the simplest possible thing". This has even meant that I have tried programming without accessors for all of my instance variables. But, I was wondering what happens when something does change. After reading the above passage, I got it. Don't design for that hook until you NEED IT. In other words, don't code for change until it happens!
Free Time Adjustment

This might seem strange, but I'm having a very hard time adjusting to free time. You see, I had no free time in my previous job and I was working all of the time. Now, that might seem like I'm being over dramatic, but I'm not. It just seems weird to be adjusting. I love my free time, but I can't get into a groove with it yet. I feel guilty for not working. I feel like a junkie recovering from a drug overdose or something. Just thought I share. I'm hoping its just being between places and all that. It's going to suck to still be like this when I move into my new place....=)

Sunday, November 02, 2003

John McIntosh's OOPSLA 2003 Trip Report

Check out John McIntosh's OOPSLA Trip Report. Sounds like it was a lot of fun. Stephen Wessels was telling me various stories about the proceedings. My favorite is David Ungar's comment when asked, "Why is Java and C++ so popular?" from an audience member after he had given a talk about Self...He simply replied, "Why do so many people smoke tobacco? Marketing!" Don't quote me on that or Steve. But, I think that is the jest of it. Excellent....=) Anyway, I'll post more links as I find them...=) I hope to go to a Camp Smalltalk next year!
Traits and Multiple Inheritance

Multiple inheritance...A topic that makes my skin literally crawl! So, when I had two friends of mine tell me that traits smelled like multiple inheritance, I wondered why I didn't consider it to be. I think the reason is that traits are like Java interface classes, but with the ability to add behavior that is shared. Traits require the class using it to implement a certain number of methods that the trait needs. Traits provide a contract that the user of such must adhere to in order to get the behavior of the trait. In multiple inheritance, you're also getting state of the other class and it just feels more heavy weight. I imagine traits as lightweight objects that can be attached to your heavyweight class. The only problem I see is method clashes, but you could require the class using the trait to resolve that. I'm still looking into the issue myself (Hell, I've even been playing around with not using getters/setters all of the time) to see if they make sense. So far, I still like them (and I still like getters/setters for all instance variables--just mark them all private or protected in Java)!
Dial-Up Stinks

Dial-up connections are killing my want of browsing the internet lately. I can't wait to get to our new house for high speed internet again! Oh well, enough of my fussing...=)