MacOSX

QuickSilver

February 16, 2005 16:04:28.737

I picked up a link to this thing off of Vasilli's Retire your Dock.

In the past, I've steered clear of these types of things. From a distance, their goal seemed to be somehow bolting something like the Microsoft Startup menu back into OSX. With the extra wide monitor, the dock on the side, and in particular corner activated eXpose', I didn't think I'd appreciate something like this. But I thought I'd take the plunge and try this QuickSilver launcher/finder/whatever.

First reactions are positive. I'm not sure I'm really leveraging all of what it can do yet. And it is a different path to getting at applications/data, so we'll see if I can retrain myself to use it and do so regularly. Thanks for the post, and even more so to "water" for the comment.

SUnitToo

Alt-T update

February 16, 2005 15:58:55.851

Extending your development environment is a process. First you have an idea. And then you implement it. And then either it sticks or it doesn't. Often tools that we thought would be handy aren't. And vice versa. Sometimes it takes time to get used to leveraging it.

The latter is the case with the alt-character shortcuts that ExtraRBForSUnitToo. I'm to the point now, where I really like the alt-r for running tests. Ctrl-o (format), ctrl-s (save/accept), alt-r (run tests) has gotten quite popular with me. And I'm finding the alt-t (toggle to/from test case) is growing on me. I'm so used to doing it the slow way, that I forget often, but when I get in the groove, this is just really handy. One thing I found though, was that I was leaving a trail of test case buffers four lanes wide behind me. I just published a "tweak" which attempts to solve that problem. When alt-t attempts to toggle to a test case, it will first search for and reuse buffers which are already test cases, but don't have an accompanying tested class buffer. It works pretty handy. Time will tell.

sTore

I'll take an "S" Vanna

February 16, 2005 15:49:21.303

As I was browsing a couple of packages a couple of days ago, I noticed something funny. Nearly all of the classes seemed to begin with the letter S. Me, a real fan of using namespaces to create little "microverses" where you're free to express class names without worrying about semantic clash, and nearly all of my classes start with the same letter. This of course, degenerates searching for a class in an "alphabetical" list to a linear method. So I wrote a little script.

This is blogged in the same vein as Vassili's Just Browsing entry: interesting ways to programatically access your program space.

I used a workspace and concocted the following block (why a block? see here. I've been accused of too freely extending base classes, but I draw the line at printMostPopularLetterWithPercentageToTheTranscript):

showMostPopular := 
		[:pkg | | classes grouped mostPopular | 
		classes := pkg definedClasses.
		grouped := classes groupedBy: [:eachClass | eachClass name first].
		mostPopular := (grouped associations 
					asSortedCollection: [:a :b | a value size < b value size]) last.
		Transcript
			show: ('<1p> <2p>% <3s>' 
						expandMacrosWith: pkg
						with: mostPopular value size / classes size * 100.0
						with: (String with: mostPopular key));
			cr].

Then you can use something like:

showMostPopular value: (Store.Registry packageNamed: 'YourPackageOfInterest'

Or

(Store.Registry allPackages asSortedCollection: [:a :b | a name < b name]) 
	do: [:eachPkg | eachPkg  definedClasses size > 10 ifTrue: [showMostPopular value: eachPkg]]

This second one is fun, because it shows the results for all comparable sized packages in the system. I was kind of amused. There's some obvious ones like WinLooks which of course is going to have 100% W.

VisualWorks

Approachable Store

February 16, 2005 2:19:21.416

OK, I whine alot. Or punditize. Or whatever you want to call it. Often about VisualWorks directions/shortcomings/frustrations. Too much likely. And then I read a post like this one by Vassili. And I think, all is well. Our ship's in good hands. Of particular comfort is his statement: "...it reminded me how less approachable this system has become. We will have to do address that in future..." He makes a good post with some introductory examples into use of the Store.Registry package APIs to do the kinds of things we used to do with the SystemOrganizer and Smalltalk.

As much as I have trash talked Store from time to time, this is one aspect that I actually like. Yes, the code scares me. It seems very brute force-ish and is a cornucopea of formatting styles. But I can actually figure out relatively quickly usually how to get the info I want out of it. I've been able to write a good deal of both public and in house "extensions" or "add ons" because I could figure out how to drive it pretty quickly. Interestingly, Envy which I consider a more elegantly implemented system, often seemed more difficult to do these kinds of things with.

Squeak

Standing in the Crossroads

February 16, 2005 1:52:34.555

A couple different blogs have commented on this post regarding some asserted Squeak leadership changes.

I actually first heard of this as I once again did my semi-daily delurk in the mailing list and skimmed the last couple days of email. Must have missed the first couple of posts, but picked up on some interesting replies to the original "manifesto" of sorts. I don't have much right to comment much on this. I haven't used Squeak in a while, the last time was to generate spiral and line and then embed the contents of a CD's readme file in the spiral so we could print it and "put the readme file on the CD". At one time, I was really excited about Squeak. I don't know why the fascination didn't hold. I still follow the list, but I don't hold it for it being the revolution that I hoped once upon a time (yes, I know, projects like Squeak need more people that actually contribute code, and less people like me that wish it solved all of their problems). I think the always almost-done-and-starting-over-again VM efforts wore me down.

I don't know what to make of Goran's "declaration." I guess Squeak wasn't going anywhere in a hurry lately, so it can't be worse. In general, I distrust group assertions like this. Having observed a number of open source projects for a number of years now, it seems that these sort of "public leadership gyrations" often don't bode well for project health. They often seem endemic of fascination more with "administrivia" than "producing code." But then there's the exceptions too. It'll be interesting to see how this unfolds. Hopefully for the better.

Smalltalk

Revenge of the Error

February 9, 2005 17:50:23.044

How do you leave yourself memorandums for the future in your code? Often I put something like 'Get rid of this' out (out is a helper method for Transcript nextPutAll: self; cr; endEntry). In a spot where it's OK for the code to continue its existance, as long as it constantly litters my transcript with a reminder that it is on deathrow, this is OK.

A moment ago, I had a chuckle. I have this back burner code I've been working on. I was getting ready to fire up an as of yet unexplored part of the code since a major overhaul. And up pops up this error dialog: 'This code is evil. Pure evil. Fix this code!' I had totally forgotten it.

I had written it before I had downloaded for permanent and periodic viewing the masterful parody Episode III: A Lost Hope. I guess from now on, I'll use something like

	self error: 'Yer code is just pure dagnasty evil!'