"COMPUTER POWER TO THE PEOPLE! DOWN WITH CYBERCRUD!" - Theodor Nelson
Saturday, July 30, 2005
Andy Bower had this to say on the comp.lang.smalltalk newgroup:
What are you waiting for? Go get your free Dolphin 5.1! Trust me, it's a lot of love!
Thursday, July 28, 2005
One of my new personal heros is Bruce Dickinson, lead singer for Iron Maiden. I've been a huge fan of Maiden since I was in high school. I've always admired Dickinson for his accomplishments outside of heavy metal. He's an airline pilot, fencer, book writer, and probably whole bunch of other things. He seems to be constantly doing something. He's a healthy guy with a great attitude toward life. He gave a rant at Ozzfest on dope (now, this is coming from what I remember, warning: quotation might be a little off):
I smell dope. <crowd cheers> I hate dope. This music is about energy, not about being laid back. Dope is for f**king hippies. If you want to be laid back, go to a Dave Matthews concert!
That took a lot of guts to say at a concert like Ozzfest. I feel exactly the same way. I have no time to be laid back. It endeared him to me. There's a not lot of musicians that will stand up and take a stance like that. But, if that wasn't enough, he says this in a recent interview:
"I hate Walmart, and I hate the corporatization of everything in America. I despise it. People need to have their minds made up for them, at this moment, and they need to liberate themselves from that. It drives me nuts…"
Bravo. You go, Mr. Dickinson. I hope to one day meet him and talk about his view on life and politics. He sounds like an interesting cat. Rock on!
It's time for the next meeting of the Omaha Ruby User's Group. The only planned topic is to be bring your favorite pieces of Ruby code or your curiousity. Hope to see a lot of people there! We've been having a small group and the intimate setting has worked well. Make sure you sign up on the mailing list. Here's the information of the when and where:
Wednesday, July 27, 2005
What The Dormouse Said
I just finished this great book by John Markoff. It has lots of great background information on the rise of the personal computer. But, what makes this book different is that he doesn't spend a lot of time on Steven Jobs or Bill Gates. Most of the book deals with the social structures and political climate around the early days of computing. It talks about how the early computing pioneers mixed with radicals bent on changing the world for the better. I was shocked to learn how many experimented with LSD and there's even an interesting quote from Dan Ingalls, who was known to experiment a bit, when asked about the ideas in Smalltalk: "Well, where do you think these ideas come from?!" It was just fascinating to see how politics, culture, and computing all mixed together. I also found it shocking to know that Doug Engelbart considered himself a failure. Truly sad. Anyway, it's a great read and I can't thank Eliot Miranda enough for turning me on to it. It's a great history lesson. I also got the following great quote by Theodor Nelson:
"COMPUTER POWER TO THE PEOPLE! DOWN WITH CYBERCRUD!"
Things That Make You Smart
I started reading "Things That Make You Smart" by Donald Norman and one paragraph struck a chord with me:
When technology is not designed from a human-centered point of view, it doesn't reduce the incidence of human error nor minimize the impact when errors do occur. Yes, people do indeed err. Therefore the technology should be designed to take this well-known fact into account. Instead, the tendency is to blame the person who errs, even though the fault might lie with the technology, even though to err is indeed very human.
Now, read this quote from James Gosling that I took from the introduction, by Richard Gabriel, to "Successful Lisp" by David Lamkins:
Very dynamic languages like Lisp, TCL, and Smalltalk are often used for prototyping. One of the reasons for their success at this is that they are very robust...Another reason...is that they don't require you to pin down decisions early on. Java has exactly the opposite property, it forces you to make choices explicitly
Contrast it with the following quote from Niall Ross during his keynote speech at Smalltalk Solutions:
... back to language comparison: static-typing is the ultimate up-front optimisation
We, Smalltalkers, Lispers, and dynamic language lovers everywhere, embrace the human in all of us and make the machine conform to us not the other way around. We understand that we err and we're not going to get it right upfront. But, Java and the static hounds think that we should blame the programmer for being human. Make the language easy for the computer and not the poor programmer. And right there, I think you have the split between the two camps. One is machine-centric (Java, C, C++, C#, etc) and the other is human-centric (Smalltalk, Lisp, Ruby, Self, Python, Io, Slate, etc). I know which one I pick. Sad thing is that we've had these human-centric languages since 1960 (or was it 1958?).
I can't wait to read the rest of the book!
It Can't Be Done
Lothar Scholz said the following when asked why he didn't write his IDE in all Ruby (from the Ruby mailing list):
A script language is just not powerfull enough for this task (speed,
Now, I like Ruby, but I sometimes wonder with statements like the one above if he has looked at Smalltalk. I know Ruby runs slower than Squeak. But is it really too slow to support an IDE? I don't think so. Smalltalk is a perfect example of writing an IDE entirely in itself and it's been that way for a long time. It was even written on hardware that is not nearly as powerful as we have now. I think the problem is not that it can't be done, but how can you make your abstractions and objects work harder and do less. So, I wonder what the FreeRIDE (which is an all Ruby IDE) folks have to say. FreeRIDE is still rough around the edges, but every release it looks better and better. I would like to mention that Lother's IDE is good as well. Ruby is so close to Smalltalk and I think they would certainly enjoy an IDE that they could change at run-time and enjoy the same freedom that Smalltalkers do. It would certainly make Ruby more fun to program in. And that's a good thing!
Monday, July 25, 2005
I ran across this post while going through links on planet.lisp. Is this some kind of joke? The reason I ask is the following:
A major goal of this language is to have an incredibly terse syntax. It should be well-nigh unreadable: that is the point. After all, the human brain can adapt to anything, and if it can adapt to this, then the human hands might get a rest from all that typing. ;-)
Ouch. I want to be succinct and expressive. If I can't understand what I wrote yesterday, what good is it? Saving typing should not be the goal. I find I read more than type. The point should always be readable above all else. The striking thing is that I find both the Smalltalk and Lisp communities embrace this idea and put in on an altar. Oh well, I wish the best to this new language. I hope I never have to read it.
Sunday, July 24, 2005
JBoss Developer's Notebook
While I'm on the subject of Sam Griffith, he was kind enough to email me recently to tell me about how he had fulfilled his life-long dream of being published. His book is entitled The JBoss Developer's Notebook. Here's hoping that he sales a million copies. So, if you work in JBoss, you need to run out and buy 10 copies. Sam's a great guy and I'm proud of him for making his dreams come true with his first book. Let's hope he writes a lot more!
My friend, Sam Griffith, sent me a great presention on "Making Money with Mac Software". It's a hoot to read and he hits the nail right on the head. It's big on putting down Windows and praising Mac, but at the core, there's a fair amount of great advice. I especially loved the slides on what to do if you wanted to work with him. Classic!
Thursday, July 21, 2005
Today was my thirty-fourth birthday. All in all, it was a great day. My wife, Michelle, went way out. She did the whole house in streamers and notes. It was awesome. She got me two Lisp books, "Successful Lisp" and "Practical Lisp", that I had been wanting for the longest time. And would you believe, she even got me an ice cream cake complete with candles with colored flames! Now, how cool is that? We went out later, had a grand ole time at Buster and Douglas, and ate some Thai food. A simple relaxing day is all I wanted and that's what I got. But, I stil think being thirty-four sucks. I am no longer young. Youth is behind and creaky bones are ahead. Joy.
I just fixed SmallHttpUnit for VW7.3. It's been broken for A LONG TIME. I apologize greatly for that. The source of the problem was the cookie handling. VW7.3 now has it built into the HttpClient framework. So, I just switched my code to the new framework instead of handling it myself. There's still some issues, like the cookies don't make it to the browser even though they are in the request. It's something that I'm going to look at later. It's available in the Cincom Public Repository. If anyone has any issues, please let me know. I promise I will fix them ASAP. For now, the fix will do until I finish Needle (a reworking of SmallHttpUnit). Now, it's on to finishing the initial port of Elephant to Squeak which is proving to be a challenge in itself. But, thankfully, Micheal is a patient person.
Wednesday, July 20, 2005
The picture is of Micheal Ammott (Carnage, Carcass, Arch Enemy, Spirtual Beggars), Gus G (Firewind, Dream Evil, Nightrage, etc), and yours truly. As you can tell, Ozzfest was a blast. I got to see a lot of bands that I enjoy and it was great day hanging with my bud, Rusty. He shows me an incredible time while I was in the blue state of Connecticut. We saw two blues concerts, a car show, and he even took me to my old stomping grounds. Fun was had by all. All the bands put on incredible shows (especially Iron Maiden, Arch Enemy, Mastodon, and Shadow's Fall). I love seeing Ozzfest on the opening nights (the previous two years it was the first night. This year Hartford was second). The bands are fresh and ready to explode. Now, it's time for me to get back to my port of Elephant to Squeak, my new project Needle, and fixing SmallHttpUnit for VW 7.3. So much to do, so little time. Thank you, Rusty as always. I love you man!
Thursday, July 14, 2005
I'm traveling this weekend to Hartford, CT to see Ozzfest. I can't wait. I'm going to be meeting up with dear friends. It should be a super fun weekend. My friend, Rusty, has my time all planned out. I'm ready to laugh till tears. I'm preparing to come back sore and worn out. When I get back, it'll be back to business. I've got a number of projects that I want to complete and I'll hit them hard once I get back. I've been working on some of them, but July has been hectic. But, this weekend is for ROCKING OUT! YEAH! I'm still in shock that I'm going to see the original Black Sabbath line-up for the third time. I thought I would never ever get to see them. Yes, dreams do come true.
Tuesday, July 12, 2005
Dolphin 6 Is Coming
From comp.lang.smalltalk.dolphin comes the news that Dolphin 6 is coming at the end of August. I am so excited! The screenshots and videos all look fantastic. I think Dolphin is a great Smalltalk environment. I would rank it as my favorite. The code is clean and is simply a joy to read. I can't wait to play with the new toys in 6. Happy Summer to me!
Monday, July 11, 2005
Omaha Smalltalk User's Group
Gary Overgard is planning on doing a report/code distribution on Small-Fit that he has been using at work. It provides a lite-weight alternative to the current approach for Fit & Fitnesse. Its advantage is that it is much easier to debug, but
still gives advantage of documentation.
As always bring your passion, code snippets, and books to discuss!
Here's all of the details:
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.
Sunday, July 10, 2005
Apparently, I am not the only person who is having problems with their HP products. I wonder if they'll ever figure out that once you make a customer angry, it takes a long time to get them back if ever. Hell, we might even blog about our experiences with crappy customer support. =)
Eclipse And Scheme
I just came across this project, Scheme Script. It basically is Scheme running on top of java. It's main strength is that it integrates well with the Eclipse environment. It allows you to inspect the running system and sits on top of the Eclipse frameworks. What a great idea. I think using something like Allen Davis'
Smalltalk In Java project would be an excellent way to do the same thing for Smalltalk. It would be fun to do. Plus, it would be great for adding tools and additions to Eclipse easily. My list of want-to-do projects just keeps growing and growing. Darn it! Too many cool things to do and not enough time!
I got my iShuffle, that I won at Smalltalk Solutions, up and running. I was annoyed when I installed the software for it. It installs iTunes and Quicktime (WHY?!). The iShuffle is nothing more than a memory stick, but requires iTunes to transfer music files. Now, my iRiver is setup the same way except I can use ANY software to transfer my music. iTunes was removing the iShuffle as a drive when it started (and it started everytime the iShuffle was plugged in). And why is QuickTime required to run iTunes?! The mind boggles. I played with iTunes for a little while and I just didn't like it. I'm very happy with Media Monkey and MP3 Gain for all of my ripping needs. I hated how iTunes rearranged my music files after I told it not to during setup. The view of songs as a list without hierarchy was also annoying. I have over 40 gigs of music files and to see it one list is like drinking water from a fire hose.
What's a programmer to do? Search the internet of course! A Google search shows that I am not alone. In fact, Martin Fiedler wrote a great tool in Python that allows you to write the necessary database files for the iShuffle to recognize any files you transfer to it. The code was so easy to understand that I rewrote it in Dolphin in an afternoon and added it to my mp3 management software. I was able to uninstall iTunes and QuickTime. I'm a happy boy and a proud owner of an iShuffle now.
The moral of the story is the internet is a powerful place. If you write proprietary messes, someone will figure how to get around it and publish it. iTunes on Windows would have been great if it had not tortured me so bad upon setup. I also hated all of the advertisements for iStore and other Apple products. RealAudio pulled the same stuff with their audio player years ago and I never have a desire to install that virus ever again. If Microsoft pulled the samething, you would have a million blogs on it and everyone up in arms. Why is Apple different? From my eyes, they are more proprietary than MS and they even have a strangle hold on their hardware as well. With that being said, I still want a Mac just to experience what everyone else raves about (Plying with Self wouldn't be all bad either). But, I'm not happy with Apple on my MS PC.
Saturday, July 09, 2005
Source code in files - how quaint
One aspect of Smalltalk that I love is the way source code is presented. I'm not shown a huge file, but a short concise method. It's source code in bite-size chunks. Contrast this with other environments and you have quite the opposite. Now, Eclipse does allow you to see source code at the method level, but it is not the normal mode of operation for java developers (in fact, most hate it or don't know you can do it).
It amazes me that so many developers still embrace editing huge text files. They find what they need with such generic, clunky tools as grep and vi. Smalltalk stores my code in objects, thus allowing me a richer set of search and edit capabilities. I have a meta-model that I can use to walk my code objects. It allows me a freedom of expression that files can not simply even compare. Files are a generic medium to which I can store anything, but do I want to directly manipulate my code with it? If you really think about it, Smalltalk's code objects are nothing more than a DSL for development. And while non-smalltalk developers are finally seeing the benefit of DSLs in business software, why not take their own medicine? Why wouldn't you want to deal with your source code on a higher level? Is it familiarity with their old ways and unwillinglyness to change?
With that being said, I love to research different languages and the thoughts that go into the design of them. It's rare (ok, almost NEVER) for a language to come with an interactive development environment that allows me to search and manipulate the source as objects. The scripting languages give me an interactive environment, but getting hold of the source of a running system is only available via files. YUCK. I learned this the hard way when trying to add unit test comments to Ruby. I thought all I had to do was to walk the classes of my objects and ask the methods for their source. Nope, I had to invoke a parser to get that information. Well, that's fine and dandy, but Ruby is dynamic and methods can change at run-time. The code in the file could be different than what is actually running. Contrast this to Smalltalk where I can even ask an arbitrary block what its source is! Of course, I hear the Lispers snickering in the back because their data is the source. But, emacs is still the status quo in lisp circles. Please.
Why all of this talk about source code in Smalltalk? Well, not having source in files, allows one to play around with how to display the source. If you have an object model around your code, you can choose alternatives of display. Squeak has a plethora of browsers (OmniBrowser, StarBrowser, and Whisker just to name a few) and VisualAge has the excellent TrailBlazer. Each one is different and shows the code in different ways, but none of them had to have a parser to do them because they are simply walking an object model! This makes common operations such as saving, refactoring, creation, and inspection to be handled uniformly. Now, you can do the same types of things from a file-based system, but it's much harder. All of the cutting-edge code browsers, that I have seen, have come from the Smalltalk community (I haven't played with Self yet). I think the reason is because of the ease of playing with a DSL for code than the generic low-level. It also allows us to write extensions more quickly if our tools do not support what we want. And the greatest benefit is to present the code in different ways. Powerful.
So, the next time you hear a Smalltalker fussing about source code in files, now you know why. By the way, the quote in the title above is from Kent Beck and is quite famous in Smalltalk circles. OK, I'll jump off my Smalltalk bandwagon today.
Friday, July 08, 2005
Domain Specific Languages Parade
DSLs are all the rage recently with Martin Fowler and a whole bunch of folks blogging about them. It seems the Lispers are a little annoyed about the noise and rightfully so. They have proclaimed the virtues of DSLs for many years. In fact, Paul Graham's essays are littered with references to how DSLs solved his business problems. Smalltalkers have also long talked about the virtue of DSLs. So, why all of the rage? I think a lot of dynamic language ideas are finally seeing the light of day via the scripting crowd.
It's a good thing since I believe DSLs are a by-product of good design. You have a DSL when you speak in the terms of the domain in your code. This might seem obvious, but I see procedural-like code that stays at the level of the general-purpose language too much. I know I have magic in my designs when a business user can read my code and understand it. It's the goal that Eric Evans talks about in his excellent, "Domain Driven Design" book. He speaks of a ubitiquous language that is shared by business and technical folks on the project.
The good thing about the current parade is the number of good ideas that adds to my arsenal to attack a problem. Rainer Joswig had an excellent blog entry discussing how Lispers go about doing a DSL for RFC specifications. Where I would break down the problem in objects and messages, the Lispers take a different strategy with macros to achieve the same result. I would love to work on a Lisp project just to get into their minds.
Everytime an old idea comes back, there are some new twists. I find the current reprise of metadata usage in DSLs interesting. Again, metadata is nothing new, but the approach seems to be new to developers in the static camp. The model driven approach takes this route as well. But, MDA seems too much like CASE tools part two. Martin Fowler's article does an excellent job of showing the pros and cons of the DSL approach and its different paths.
I've been thinking about language issues since I had my talk with Colin and Eric. Both of them, gave me a plethora of thoughts to chew on. Making DSLs easier for developers seemed to be the meat of the discussion. How do we make it better? Can we make general purpose languages that are more tuned to DSLs? Much like we make the separation between virtual machine and our code. The boundary is distinct. I think a mixture of metadata and DSL facilities built-in to a language would be a win. It would be nice to express the domain in terms of a DSL and then use metadata to wire persistence, GUIs, and rules. In other words, the low-level programmer details would be handled at a metadata level (think Glorp and rule engines), but the domain expressed in terms of the business and only the business. Any dynamic language can provide this functionality easily, but is there anything we can do to make it even more transparent? I want to play more with prototypes ala Self because I think there is a richness to explore. DSLs feel like they would be easier in Self especially with dynamic delegation and traits. I believe that we should treat languages like organisms. We are all comprised of cells which are comprised of other parts and so forth. I think programs can be built the same way. You have a simple core in which higher level blocks are comprised of and then, bigger blocks are built out of those. When you get to the top, you see a complete being. It's a recursive russian doll basically. Each level would be higher DSL. Thus, the top level would be the business domain language. Think of it in terms of the virtual machine code. Do you ever see it or care when you are at the top level? No. You build your system out of the language on top. Same concept, but we need to take it to higher levels. This is a huge subject. I plan on blogging more in the future about this subject. I want to take Smalltalk to the next level. I'm tired of solving the same problems.
Monday, July 04, 2005
With all of the commotion, I missed the Ruby User's Group meeting. Darn it! I'll be there next month and I can't wait to see everyone there! Again, sorry!
Back In Civilization
I got back from camping trip today and it was mad fun! It was a turn of events from totally geeking out one minute to being in the middle of nowhere. It was strong contrast, but a relaxing one. I enjoyed being outside and letting my mind wonder. I had a lot to chew on from all of the discussions that I had with everyone. Now, I can't wait to start putting those ideas to work. I have my rallying call and I'm ready to kick some programming booty! Smalltalk on!