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!
Sunday, November 30, 2003
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!
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.
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?
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?
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!
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!
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:
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!
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!
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.
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.
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:
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...=)
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.
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 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
> 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!
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!
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
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.
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.
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...=)
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!
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...=)
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!!!
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!
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"!
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.
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!
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...=)
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)!
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!
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:
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:
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:
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.
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);
- //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:
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.
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....=)
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!
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)!
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)!
Subscribe to:
Posts (Atom)