November 2004


I just arrived home from a delayed and delayed and delayed flight. I was returning to Boston from Thanksgiving with my family in Cincinnati. Originally scheduled to leave at 6:55pm, my flight ended up leaving at around 9:55, putting us in Boston just before midnight.

But the delays weren't that bad. I sat at gate B34 in Cincinnati with Becky and Colleen, two other friendly young Bostonians. After the delay time was updated and we had two hours to kill, we started watching Monsters, Inc. on my laptop. We didn't finish the movie before boarding, but I caught the rest in the air. Good stuff.

Finally, after arriving in Boston to gargantuan lines for taxis, Becky's friends, who lived not far from me, offered me a ride home. For almost nothing, I got a ride home at a late hour with a fun, friendly atmosphere. So for all that, guys, thanks.

link

Hi Small Business Guru, and welcome to frassle! One thing I'm definitely thankful for is the core of active, appreciative users that help Josh and me to make frassle better all the time. Your patient and attentive feedback make frassle a better place.

link

This is what I did my undergraduate thesis (2003) on, and now it's showing up in trade publications. I don't think the author, Ramnivas Laddad, knew about my thesis, but perhaps he'd be interested in its large catalog of aspect-oriented refactorings.

Last night, I fixed a bug which was preventing new users from registering successfully with frassle. Since then, 5 new users! Thanks to all users, especially the ones who email me bug reports…

(And yes, I mean that.)

link

I've posted my undergraduate computer science thesis on the web, finally. It's on refactoring AspectJ programs. Here's the abstract:

This thesis extends the state of the art in refactoring to Aspect-Oriented Programming. Refactorings are specific code transformations that improve the design of existing code without changing its observable behavior. Aspect-Oriented Programming (AOP) offers a new approach to software design by encapsulating crosscutting concerns. The novel contributions of this thesis are a recasting of existing refactorings to preserve program behavior in aspect-oriented code, and several new refactorings that can improve the design of code by deploying AOP techniques. The refactorings are described in reference to AspectJ, an AOP extension of Java, and are amenable to partial or full automation.

It is necessary to reevaluate existing OO refactorings because the constructs of AOP programming languages significantly affect what changes can be meaning-preserving. To this end, new preconditions and steps are introduced to about 20 fundamental refactorings (from Opdyke, 1992) such as renaming a class and inlining a method. These extended refactorings can form the basis for an AOP-aware refactoring tool.

About thirty new AOP-specific refactorings are proposed. These refactorings include both fundamental refactorings and more complex refactorings built from these that address specific design problems. For example, a simple refactoring possible in AOP is to move the definition of a method from within a class to an aspect. A more complex refactoring that includes this is moving all code responsible for implementing a particular interface into an aspect. The focus is primarily on accomplishing the desired changes once the involved program parts are identified. These new refactorings can form the basis for a truly AOP-focused refactoring tool.


link

Feedster is giving away 12 iPod minis in a developer (and writer) contest. Here's an idea for a feedster-powered service that would be really cool, but I don't have the time to implement myself.

Find Related Blog Posts with Feedster Searches and Statistics
If your blog has statistics (all frassle users do now, thanks to Josh) you probably enjoy learning what search queries bring users to your site. You might even sometimes try looking at those search results yourself. Perhaps you find that people are coming up with some pretty interesting search queries, and those websites appearing next to yours in the results are worth reading.

There is no need for this to be a manual process.

  1. Your blog software records what search terms lead viewers to a given post. Perhaps for this post, a day's queries might be "free ipod mini" and "feedster contest".
  2. Every night, your blog goes to feedster and records the top 10 results for each of those search terms.
  3. If a given blog posts appears as a result for more than one of the search queries, it is ranked as especially relevant.
  4. Related posts on other blogs are automatically displayed with your post. Best of all, they're found based on what people have actually been looking for.

I think this would make an excellent plugin for a blog publishing system. I'm not certain it would actually produce useful information, but it's probably worth trying.

(Incidentally, I first thought of automating this while chatting on the phone with Bill Ives a few months ago. I'm not sure how we got onto the topic, but he told me how he sometimes finds useful material in this manner.)

link

If you actually want to learn Befunge (Wikipedia: "an attempt to devise a language as hard to compile as possible") and write a web application in it, go for it!

I've been itching for some time to learn Python and Ruby. I doubt they'll replace my unabated adoration for Perl, and I love learning new languages, but it's hard to divert myself from a day of productive Perl hacking to learn some new language. So I propose to make this a group event.

For one day, several hackers will get together with the sole goal of learning some new programming languages. We'll each purchase and bring a book, and spend the first half-day reading about a language we don't yet know. The second half will be spent attempting to implement a cool web application of some sort using that language. Ideally, the hackers' existing knowledge will overlap such that at least one person in the room will know each language being learned.

For example, suppose you had three hackers, A, B, and C. Here would be a pretty good mesh of knowledge and ambition:

Hacker Knows Wants to learn
A Perl, Java Python, Ruby
B Python, Perl Ruby, PHP
C Ruby, PHP Perl, Python

I think the collaborative atmosphere would keep us focused, as well as being tons of fun. Requisite infrastructure: a linux server, wifi, couches, and available pizza delivery.

If you'd be interested in doing something like this in the Boston area in the near future, leave a comment on this post.

Within an ongoing discussion about politics:

Person 1: "That's dangerous. I mean, you do that, and then you have blah, and then foo, and eventually bar.

Person 2: "I don't buy slippery slope arguments."

Person 3: "Good point. I mean, you buy one, and then another, and eventually you're just mindlessly accepting all slippery slope arguments."

Next Page »