Sunday, May 25, 2003

I finally found a use for our Gameboys! Michelle bought us a couple of Gameboys several years ago to have fun while we were traveling. We used them a couple of times, but they have been collecting dust ever since....until now....I ordered a copy of Nanoloop and I can't wait to get it! I love little gadgets that make noise! This one has a lot of promise and should be comparable to the SidStation for 8 bit madness!
Musician's Friend is selling Red Sound's Darkstar 2 for $139.99!!!! I can not believe it! I own the original Darkstar and I love it. Sure, it doesn't like a novation or is as flexible, but for $139.99, you can't beat it!!!! Besides, you can always use another synth right? Future electronic artist rejoice!
Road Trip
Took a road trip yesterday to Bargain Books and I picked up a lot of good and CHEAP computer books. They have a 60% off list price or just $10 (which ever is cheaper)! So, I got loaded up on Linux, AI, Lisp, XML, and other interesting titles...=) Well worh the trip if you ask me!
Weight Watchers
I joined Weight Watchers yesterday again. I had been a member before and I lost a lot of weight, but various stresses in life caused me to stop. Well, I forgot what they told me before and I gained all of my original weight back. Thus, I'm going back and this time will be it! I quit smoking and I can do this! I also thought it would be cool to do a Pocket PC program that keeps track of my points. I found the formula for points calculation too. The web is a cool place!

Friday, May 23, 2003

Fallen Hours
A good friend of mine, Denis Picou, was recently interviewed in the local St. Joesph, MO paper (which is where he lives). You can read the article here. He's being working really hard on his music and I'm glad he's finally getting some recognition. I've helped him out here and there, but nothing that big (little drums here, little keyboards there). GO DENIS!

Tuesday, May 20, 2003

Clerical Programmers vs. Artist Programmers
This article was inspired by discussions on the lightweight languages list and an article called "Hackers: sketchers, drafters". The discussions started off with an article that blasted XP as lacking in real software engineering practices. You can find that article here. Now, I do think XP can be taken to the extreme in this article, but in reality, what happens is that "you do simplest possible thing now with an eye to the future". This means you still plan and scope, it's just that your deliverables are smaller and you spend less time working out ALL of the details which is where a lot of people get lost in more rigorous software engineering practices. You just need to plan to be "good enough" which is fine for most business software. But, I digress because this article is not about defending agile processes. No, I was shocked into writing this article because of the "Hackers" article. Now, you might ask me why did this article shock me? I liked the article a lot and thought it was a nice contrast between two different types of programmers. It described both very well, but it was the following statements:

"Clerical programmers are often much less apt at solving tricky problems, and will not know what to do with the freedom given by things such as dynamic typing. If given too much freedom they will likely end up using it inappropriately and be found having created a mess and coded a project into a corner. On the other hand, they can take a tedious but well structured task and happily plug away at it. They often have no need to have their code admired, in fact they may prefer it remain unseen.

Clerical programmers should work closely with other clerical programmers. In fact, they will often enjoy the company and dynamics of team programming.

In short clerical programmers are great for large tedious and exacting projects, projects that are not inventing new types of wheels. They are well suited for the database logic somewhere deep within the back recesses of a company, or creating an endless number of simple and routine web systems--taking large but programmatically simple requirements and working tirelessly at implementing them. "

These statements assume two dangerous things: Clerical programmers are not bright and business programs are easy. Neither could be farther from the truth. Sure, business applications are not inventing any new wheels, but the thing that makes business applications hard and difficult is that they are trying to capture years of convulted logic and processes. Years of contracts, legalities, compliance, new products, etc make the business landscape very rocky and difficult to traverse. Typically, the hard part of business applications is simply capturing this logic. This simply can not be done totally up front and designed to the nth degree. This is where XP comes in because you design for what you know now, but try to plan for what might come up. Now, in any business application, no one can predict what pandora's box might be opened during coding. Thus, the need for short deliverables and constant refactoring as you find out what you knew yesterday is wrong. If you try to this planning up front, a lot of these boxes remain unopened because writing code that works forces them open. The point I want to make is that writing business software is difficult because there are no rules. Game developers have physics to rely on and drafters have geometry. Clerical developers do not have the same luxury. Artistic programmers usually program in a bubble that is in their own world much like real artists. But, the artistic programmers are usually more willing to try new things to do in business applications to solve problems and are thus, an asset to the business application team as well.

I also took offense to saying that clerical programmers could not handle a "dynamic typed" language. Well, I worked in large companies with dynamic typed languages like Smalltalk with clerical programmers. These programmers usually "got it" and were way more productive than programmers using "static typed" languages like Java. I generally like to think that one should never be scared to give features to programmers because "it might too advanced for them". I have found give them the advanced features and sure, some folks will not use them, but a few will. And those few are your most productive programmers. If you take away features that make them productive, then everyone suffers. The projects that have been on that have used Java are way less complicated than any of the projects that I worked on in Smalltalk. Most of the Smalltalk applications had domains of 1000s of objects where in Java, the most complicated domain that I have worked on is in the 100s and they have generally taken longer to develop. Now, I do not want this to be "static" vs. "dynamic" typed language argument, I think the Smalltalk environment is what makes it the winner here and not that it is "dynamic". I simply wanted to make the point that if you give developers the right tools and not worry whether it's too much for them to understand, then they will be more productive and make less mistakes. So, sure most of the places I worked in Smalltalk, the programmers didn't worry about the meta-object protocol and they didn't have to. But, the most advanced programmers did dabble in it and sometimes worked productivity gains for everyone by playing with it. I think this is a win and why would you not want this?

My main point is that don't assume business applications are simple just because they are simply moving data. There's a lot of convulted logic that knows no rules to get in the way. And also don't assume that clerical programmers can't handle the features that you would reserve for artistic programmers. Both can enjoy and get productivity gains from those features. Never assume that your users are too stupid to understand a feature. Well, that's all I have to say about that...=)
Just think if the Matrix had been written in Smalltalk, they wouldn't have had to rewrite it six times! It was probably written in Java...=)

Monday, May 19, 2003

Linux/Unix Revisited
I've decided to take the big plunge and REALLY LEARN unix/linux! I used unix throughout college before I even knew how to use the windows operating system. Well, over the years, I worked with windows almost exclusively (minus imonics where I had both an OS/2 and UNIX desktop!) So, needless to say I'm a little rusty in my unix. I've been using Cygwin off and on for a while now to use some of the commands that I was used to in the unix world. But, nothing really serious. Anyway, I've decided to get back into it and cygwin is proving to be a lot of fun! I downloaded KDE tonight for the cygwin environment and it looks just like the linux version! WOW! I'm having fun setting up my cygwin environment and some of my unix is coming back (just needs a little bit of massaging by use of books). I learned today that cygwin has a fully functional xserver (which means now I can login into the unix boxes at work and set the display to my box without the use of EXCEED!). So, I'm very happy about that. It also means I can install Linux on another box and I can play with linux from the comfort of my windows box! Thus, allowing me to slowly get reacquinted with Linux/Unix. So far, the experience has been great. KDE looks awesome! I'm also dusting off my C as well. I wanted to start writing some plug-ins for Squeak and I can't wait to get started!
Stingray and Thunderbirds
Just wanted to write a quick to say that I think Stingray and Thunderbirds are kick butt shows! I love Gerry Anderson! If you're wondering, it's the TV shows from the 60's made from puppets. The really cool thing though is the MUSIC. Barry Gray is a genius....Anyway, I've been watching the "Stingray" episodes lately and they are a lot of fun! Ahhh, memories of childhood and cheesy goodness...=)
Bad UI Design: "What does EWK mean?"
I went to the movies this weekend and decided to use the automated machines instead of standing in line. Normally, we go to the theater when it is not crowded, so it's easier just to walk up to the counter. So, it's been a long time since we've used the automated machines. Well, the first thing I notice is the user interface has changed! Wow, it looked really nice and seemed pretty intuitive. Now, there were some minor annoyances (buttons laid out not where you expect them, etc), but then I got to the buy tickets screen. I had two options buy a "EWK" ticket or "SDKD" (or something like that) ticket. WHAT THE HELL DOES THAT MEAN? So, I look at the tickets prices and it became clear which one to pick because one was half of the other. But, still I was bothered with the encrypted ticket types that were obviously movie theather speak. How was I suppossed to know what it meant? I consider this a horrible GUI design and all of the asthetics in the world did not help it. It made my experience less than desirable. Now, I'm a computer person, how do people who aren't feel? And we as an industry wonder why people hate computers or view them as a necessary evil! Maybe if we spent more time on making a good user experience and less on flash, we lose the stigma of computers being unusable. Oh well, one can dream....=)

Thursday, May 15, 2003

"Lively" vs. "Dead" Environments
This is a topic that a lot of people that know me have heard me speak about. I generally say that Smalltalk's environment is "lively", while other language's environments are "dead". I generally got a lot of strange looks for this and rightfully so. What on earth do I mean? I love to brag about Smalltalk's productivity gains over Java, but why is it so productive? I used to think it was because Smalltalk was a dynamic language and late bound. While this does cause productivity to be better, I don't think it's an order of magnitude increase in development time (maintenance is another issue, I think dynamic languages fair better in maintenance and refactoring, but that's another article!) So, what really make Smalltalk SO MUCH MORE PRODUCTIVE?! It's the environment. In Smalltalk, if I don't like something in the environment (or IDE if you like), I can change it! But, you might say, "But, Blaine, I can do that with ANY open source IDE or ANY LANGUAGE!". True, but can you make the change and have the IDE reflect that change right then and there with no compilation or restarting of the IDE? If we're talking Java, I haven't seen an IDE yet that could do this! So, you might now say to me, "But, Blaine, I don't want to muck around IDE code! Are you crazy?!" True, true, true....But, wouldn't it be nice to change the code in your application while you're running it? No more shutting down the server, fixing the code, recompiling, and getting back to where you were in the code just to find out....there was something you missed!!! AARRGH! Smalltalk allows you do this and admittingly, Java does now in 1.4. But, I have yet to see a lively environment for Java! Eclipse comes close, but is no where what we Smalltalkers are used to. I can write code in an inspector and run it anywhere in Smalltalk and I'm concerned less with the language and environment, but the problem at hand. So, a "lively" environment to me is one that can be changed dynamically with no recompilation and a "dead" environment is one which that is not dynamic. Smalltalk is a living system and I think that is it's power and will always be its power. But, there's no reason other languages can do the same thing. Any dynamic language can have a "lively" environment. In fact, I'm surprised languages like Python and Ruby do not have "lively" environments! Anyway, I hope I gave you another reason to feel the love of Smalltalk and dynamic languages!

Wednesday, May 14, 2003

I picked the following quote off the New York Smalltalk users group concerning a talk by Dr. Stroustrup about some exciting new way of programming:
"Note that Dr. STROUSTRUP will be speaking about a new way of programming - Smalltalk programming :}.
Thought this maybe of interest to some of you at the very least there are many whys to ask."
Could Mr. Gosling be next? We can only dream!!!!
Very sad day....Three of my favorite bands are no more: Mr. Bungle, Pantera, and Down. I heard on the Blabbermouth board. Oh well, at least I have a lot of music to still enjoy! But, why do the good ones leave so early?!

Tuesday, May 13, 2003

Just found out the info for the 2003 Ruby Conference: Austin, Texas, USA, from November 14 to November 16.
I'm thinking about going to this because I think it would be a lot of fun. Ruby is a very fun programming language and it would be cool to hang out with some fellow Ruby enthusiasts and maybe even code a little (maybe even on the FreeRIDE to get the debugger working!). I've been using Ruby quite a bit to automate Windows XP and it's working quite nicely! It's much nicer than JavaScript or VBScript.
I won a CONTEST! Isn't that exciting? I entered a contest for the band, Strapping Young Lad and I won it! I think it's only some stickers and a press kit, but hey, it's something! SYL main man, Devin Townsend has been one of my favorite musicians for years now. EXCITING! Now, if I could only win the musician's friend contest when they put one of the those lovely Alesis Andromeda's up....=) A boy can dream can't he?

Monday, May 12, 2003

Last night, I finally finished my Java Class Loader that I'm writing in Squeak. So far, I can read in Java Serialized Files (no write yet, still more refactoring to do) and now, I can read in classes! Pretty exciting. The next step is to get Java code running in Squeak. I think I'm going to try to write Java bytecode to Squeak translator. I'm hoping it will give me a lot of insights into both VMs. At the very least, it will make my kung fu better in both languages.

I did a lot of refactoring while writing this code, so I need to make sure the serialization part still works. I recently used the old code posted on my web site to read in a java serialization stream that Java couldn't handle because of a version mismatch somewhere (shocker). Squeak had no problem and hell, we even used it on the other serialization streams so we could see what was going on in our Java code. Yep folks, we used Squeak to debug our Java programs...

AND I started a new song tonight. I'm starting it off with a really fast funky guitar line complete with wah-wah and then putting in a full-on metal sample in the back. So far, it's pretty groovin'...Just need to add the drums and all the other stuff now! I'm hoping to play with some poly rhythmic stuff on this one and get into a lot of synth textures....I'm sure the audity is up to the task...=)

I'm currently reading "Structure and Interpretation of Computer Programs" FINALLY! I'm hoping this will give me even more insights into the Scheme side of the LISP house. I got into LISP earlier this year and LISP is a lot of love...

I'm listening to a lot of southern rock. Lynyrd Skynyrd, Blackfoot, and Molly Hatchet all kick a lot of booty! I think the southern man that I've been trying to repress all of my life is finally coming out! It's cool as long as I don't start listening to country.
This is my first message to my new BLOG! WOW! Extremely easy!