February 07, 2006

Carnegie Library RSS Feed Generator

Carnegie Library 's email notification system leaves much to be desired. It only notifies you after an item is overdue, giving you no chance to return the item on time. Also, when you request an item, you don't receive an email notification that the item is available until a few days after it is ready. However, your account information web page updates immediately after the item is ready.

To solve these problems, I've been working on a Carnegie Library RSS Feed Generator for the past few months. It works by screen-scraping your account information web page. By doing this, it can add entries to your feed a few days before a checked out item is due and immediately after a requested item is available.

This feed generator was mainly written for my personal use, but since some other people might also useful, I'm pleased to make it publicly available. If you decide to use it, please send me feedback and suggestions, so that I can improve it in the future.

(Sidenote: The feed generator was also an excuse to learn Ruby on Rails . Ruby and Rails are both fun to work with. As a desktop application developer, I used to loathe web apps due to the prevalence of spaghetti code. Rails makes it very easy to create a cleanly factored Model-View-Controller application, so I plan to use it for all of my future web development needs.)

Posted by Dirtae at 11:10 PM | Comments (1)

December 04, 2005

Aardvark'd Review

I got my copy of Aardvark'd: 12 Weeks with Geeks this week. This is the documentary that was filmed over the summer at Fog Creek Software , home of Joel Spolsky . Fog Creek hired a team of 4 interns to build Copilot (codenamed Project Aardvark ), a software package that allows for remote computer assistance.

I really liked Aardvark'd. It wasn't perfect, by any means, but the subject matter is esoteric enough that I can't complain too much. It did a good job of giving a flavor of daily life at Fog Creek. It also did a reasonable job of documenting the development process behind Copilot. It was interesting to see the negotiations behind the purchase of copilot.com, the user testing performed on Copilot, and the kinds of issues that the team encountered while demoing Copilot at a trade show. I also enjoyed the segments where the interns were interviewed about where software bugs come from, how programmers react to them, and how they eliminate them. Those scenes rang true to this professional developer, without being beyond the grasp of a layman. Finally, I liked seeing the excitement around the first sale of Copilot and the reactions of the interns as the left for the summer, knowing that their "baby" would continue to grow and develop without them.

In addition to covering Copilot, Aardvark'd also had some coverage of the Y Combinator Summer Founders Program in Boston. These segments were particularly excellent, especially the interviews with Paul Graham . In fact, I thought the segments were so good that Y Combinator should consider funding a documentary completely about the Summer Founders Program for 2006.

Aardvark'd did have some weak points. The main problem was the use of too much irrelevant filler material. The film was 80 minutes long, but I felt that there was only about 60 minutes of real content. Sure, it's nice to include a few clips not directly related to the subject matter, just to give the viewer a slice of life at Fog Creek. But Aardvark'd went overboard. It got tedious hearing about the cockroaches the interns found in the bathroom, the party that got shut down by the landlord, the debate over whether it was possible to jump out of the window to the next building, and (especially) the tomatoes growing on the balcony. One or two of these scenes might have been acceptable, but combined, it made it feel like the director was really stretching to reach the 80 minute mark.

Still, if you are the kind of person that would be interested in a documentary about 4 geeks building a commercial software product over one summer, then these weaknesses are easily overlooked, and I strongly recommend purchasing a copy of the DVD. Nice job Fog Creek and Boondoggle Films !

Posted by Dirtae at 01:03 PM | Comments (2)

November 05, 2004

Running a Mac Software Business

Niall Kennedy has posted an MP3 of the discussion from the "How to Run Your Own Software Business" panel at O'Reilly's Mac OS X Conference. Lots of interesting discussion about pricing, expenses, legal issues, payment systems, and more.

Posted by Dirtae at 04:31 PM | Comments (1)

September 10, 2004

Social Interfaces

Another excellent article has been posted on JoelOnSoftware on social interfaces:

You dial a number after which everything you say can be heard by the other person, and vice versa. It's that simple. But it's not as popular in some circles as this awkward system where you break your thumbs typing huge strings of numbers just to say "damn you're hot," because that string of numbers gets you a date, and you would never have the guts to say "damn you're hot" using your larynx.

Posted by Dirtae at 01:46 PM | Comments (0)

April 21, 2004

Embedding Frameworks

Jonathan "Wolf" Rentzsch has posted a video documenting the process of creating an embeddable Cocoa framework. I ran into this exact problem yesterday. As a bonus, it shows how to set up inter-project dependencies, which I didn't know were possible. I had been using a hackish workaround that involved putting multiple targets in the same project (when I really wanted them to be seperate projects). Thanks Wolf!

Posted by Dirtae at 12:31 AM | Comments (0)

March 17, 2004

SICP Lecture Videos

Structure and Interpretation of Computer Programs is one of the most influential CS texts ever. It is the introductory book used at MIT. Now a series of video lectures based on the book have been released. Twenty 500MB DivX files in all. Fortunately, MIT has a fat pipe.

Posted by Dirtae at 12:56 AM | Comments (0)

February 18, 2004

Why's (Poignant) Guide to Ruby

A new guide to learning Ruby is now available: Why's (Poignant) Guide to Ruby . It's very unconventional, with lots of stories and bizarre cartoons, but it looks like it might be a good way to learn Ruby. I really like Ruby: fully-OO (as in Smalltalk, not Java), lexical closures, and blocks.

Posted by Dirtae at 12:56 PM | Comments (0)

February 08, 2004

Eclipse Talk

I'll be giving a talk on Eclipse for the Case ACM chapter this Tuesday, February 10th, at 6pm in Clapp 108 . I'm going to attempt to make this talk worthwhile for developers of all levels of familiarity with Eclipse. If you're interested in Eclipse, please come, and bring a friend!

Posted by Dirtae at 10:25 PM | Comments (0)

January 10, 2004

Advanced Programming in the Mac OS X Environment

The title may be a a take on Richard Steven's well known work , but the content on Amit Singh's Advanced Programming in the Mac OS X Environment site is original and well done. Lots of interesting details here about the Mac's boot procedure, kernel, filesystems, and programming enviroments. Recommended for Mac geeks.

Posted by Dirtae at 01:09 AM | Comments (0)

December 22, 2003

Gamma and Beck Eclipse Book

I haven't been following the Eclipse community as closely as I did while on co-op, so the release of Gamma and Beck's book, Contributing to Eclipse: Principles, Patterns, and Plugins , slipped by me. I worked with some early drafts of this book, and even then it was excellent. Gamma and Beck have both already penned classics ( Design Patterns and Extreme Programming Explained ), and I expect this book to continue that legacy.

Posted by Dirtae at 05:46 PM | Comments (0)

November 16, 2003

Eclipse Rich Client Platform

Eclipse 3.0 M5 is scheduled for release next Friday. This milestone will include RCP - the Rich Client Platform . This is something that I (any many others) have been anticipating for quite a while. Essentially, RCP will move Eclipse from being a framework for building IDEs only, to a framework for general Java applications. Ed Burnette, who I heard speak at TriJUG while I was on co-op, has posted a draft of his RCP tutorial . The start of a web browser written using RCP has also been posted.

Posted by Dirtae at 01:25 AM | Comments (1)

November 09, 2003

History of Iterative Software Development

Martin Fowler links to an interesting article in IEEE Software on the history of iterative software development. It sounds like test driven development and XP-like practices have been around for much longer than most people believe. In particular, the article mentions their use during the Mercury space program!

Posted by Dirtae at 11:21 PM | Comments (0)

November 04, 2003

NSController Revisited

Aaron Hillegass has softened and revised his criticism of NSController, after spending a week at O'Reilly's Mac OS X Conference .

Posted by Dirtae at 10:53 PM | Comments (0)

November 03, 2003

That Switcher Thing

At WWDC, Apple solicited name suggestions for "that switcher thing", which is used for switching between icon, list, and column view in the Finder. It appears to have been named NSSegmentedControl . The name seems a little bit too generic to me.

Posted by Dirtae at 12:28 AM | Comments (0)

October 27, 2003

C# 2.0 Design Spec

Microsoft has posted the design specification for C# 2.0. I knew that generics support was being added, but I hadn't heard about anonymous methods, which are supposed to be like Lisp lambdas. C# anonymous methods allow you to create closures. Cool.

Posted by Dirtae at 08:51 PM | Comments (0)

NSController

Dissension in the ranks: Aaron Hillegass blasts NSController .

Posted by Dirtae at 11:04 AM | Comments (0)

October 13, 2003

Network Application Protocol

I'm taking a course on computer networks this semester. The term project for the course is to design and implement an application layer network protocol. A client-server architecture where one server can handle multiple clients (e.g. HTTP, SSH) is preferred. Anyone got ideas for the next great killer network app?

Posted by Dirtae at 05:18 PM | Comments (0)

September 29, 2003

Artima Interviews

Artima.com has posted an interview with Matz, creator of Ruby . I played with Ruby a bit this summer, and I liked it a lot. Now that I've done some Smalltalk programming for a course I'm taking, the parallels are obvious. Blocks rule.

Artima has ongoing interviews with James Gosling, Anders Hejlsberg, Bjarne Stroustrup, and Matz. If you're at all interested in programming languages, then I recommend adding their RSS feed to your aggregator.

Posted by Dirtae at 02:02 PM | Comments (0)

September 27, 2003

CocoaTech Frameworks

CocoaTech (creators of PathFinder) have released some big frameworks as open source. These are the same frameworks used to build PathFinder. One thing that sounds immediately useful is CocoaTechTerminal, which allows you to embed a terminal in your app. It's just an NSView.

Posted by Dirtae at 12:47 AM | Comments (0)

September 20, 2003

Data Alignment

Jonathan "Wolf" Rentzsch has written an excellent article on data alignment titled Straighten Up and Fly Right . I didn't know anything about data alignment before I read the article, except for occasionally seeing messages from compilers about structure alignment. Thanks for the article, Wolf!

Posted by Dirtae at 02:56 PM | Comments (1)

September 15, 2003

OmniNetworking

A few days ago, I posted about Cocoa socket programming libraries. After some trial and error, I've decided to go with OmniNetworking . It seems to be the most mature of the Cocoa socket libraries. It doesn't support asynchronous callbacks, but it's not too hard to just spawn a thread and do blocking I/O in that thread.

Also, since I'm going to be working on the first assignment for EECS 425 with my friend Jason , I decided to set up a CVS server on my Powerbook so we can easily collaborate. CVL made this fairly easy. Besides creating the CVS repository, all I had to do was create an account for Jason, enable SSH login, and make sure that the CVS repository was readable and writable by both of us. CVL as a CVS client is decent, but I've also heard that many people like to use Eclipse as a standalone CVS client, since its CVS support is so great.

Posted by Dirtae at 02:09 PM | Comments (0)

September 12, 2003

Programming Language Inventor or Serial Killer?

Take this Flash quiz to see if you can tell programming language inventors from serial killers. (Via Lambda )

Posted by Dirtae at 11:25 AM | Comments (0)

MVC Song

I can't believe I didn't post this earlier, but if you haven't already heard the Model View Controller song from WWDC 2003, then you should listen to it. My favorite line: "Mad props to the Smalltalk crew!"

Posted by Dirtae at 11:19 AM | Comments (0)

September 08, 2003

LISP Listing

I'm learning Scheme for my programming languages class, so I found this post over on kung-foo.tv particularly amusing.

Posted by Dirtae at 01:03 PM | Comments (0)

Cocoa Sockets

For one of the classes I'm taking right now (Computer Networks), I'm going to need to do some sockets programming. We are allowed to use pretty much any programming language and framework that we want, so of course I'm going to use Cocoa. What are the best libraries for socket programming in Cocoa? So far I've turned up SmallSockets , NetSocket , and AsyncSocket . So far I've played with SmallSockets a bit, but haven't had time to try out NetSocket and AsyncSocket. Has anyone these or other socket libraries for Cocoa? If so, any suggestions?

Posted by Dirtae at 12:58 PM | Comments (0)

July 19, 2003

Eclipse 3.0 M2

The second milestone on the road toward Eclipse 3.0 has been released . Here's the list of new and noteworthy features . Release early, release often.

Posted by Dirtae at 11:37 PM | Comments (0)

June 30, 2003

Jakarta Commons

ONJava.com has an interesting article about Jakarta Commons . Lots of stuff which extends and complements the Java standard libraries. Net looks cool, and I may have an immeadiate use for CLI.

Looking at the description for Lang reminds me of an Objective-C feature that I really miss in Java: categories. A category allows you to add methods to any class, even if you don't have the source code for the class. The lack of this feature in Java means you have to use utility classes with static methods to provide additional operations for classes like java.lang.String, which is much less elegant than simply adding methods to java.lang.String.

(Although, even if Java had categories, it still might not be possible to add methods to java.lang.String since it is declared final. String is supposedly final for "security reasons", but I'm not sure if I buy that.)

Posted by Dirtae at 06:21 PM | Comments (1)

June 27, 2003

J2SE 1.4.2

I'm in San Francisco this week at WWDC , and last week I had a shitload of stuff to get done at work in preperation for being gone this week, so sorry for the dearth of posts.

Anyway, it looks like J2SE 1.4.2 final is out. Go download it. (But don't download the NetBeans bundle, get Eclipse instead.)

Posted by Dirtae at 04:07 PM | Comments (0)

June 06, 2003

Distributed Build

A distributed build system for gcc that integrates with Project Builder and uses Rendezvous . Interesting idea, but I can't imagine that there are many people who would be willing to pay $1350 for this product. I also have to wonder how much speed up you'd really get from this system.

Posted by Dirtae at 05:11 AM | Comments (1)

May 26, 2003

CWRU Blogs

I'm thinking about creating a site like javablogs.com , but for people affiliated with CWRU . I've been meaning to learn Python , and this seems like a good project for it. I don't think the basic functionality of the site should be too difficult to code. It would be cool to have something ready for the upcoming school year.

Anyone know of a good webapp framework for Python?

Posted by Dirtae at 02:08 AM | Comments (0)

May 13, 2003

JDK 1.5 ("Tiger") Features

Sagat
java.sun.com has a Q&A with Joshua Bloch regarding the new features in JDK 1.5 ("Tiger"). For some reason, whenever I heard the codename "Tiger", I think of Sagat in Street Fighter II. Tiger! Tiger Uppercut! Tiger!

Posted by Dirtae at 02:36 PM | Comments (0)

May 04, 2003

Mac OS X Development Tools and Eclipse

Michael Tsai and Buzz Andersen are talking about Eclipse and Project Builder . Ever since I started using Eclipse and developing an Eclipse-based product full-time, I've been meaning to say something about Eclipse and Apple's developer tools.

Eclipse JDT (Java Development Tooling) is an IDE par excellence. After primarily using Project Builder, the move to Eclipse was quite a shock. Eclipse was so powerful that I was stunned as I found feature after feature that made me say "wow". Even now, after using Eclipse full-time for four months, I am still finding features that amaze me. I haven't used Project Builder in a while, and now I'm worried that I will face withdrawal when I try to go back to Project Builder to do some Cocoa development. What am I addicted to? Automatic compilation constantly happening in the background, with errors displayed in your code in real time. Content assist that shows available types, methods, and variables, with associated documentation. Effortless refactoring support. Wicked CVS integration.

Project Builder and (especially) Interface Builder are fine tools, with lots of Apple and NeXT style. However, Apple does not have the resources of Microsoft or IBM. Apple will never be able to deliver a world class IDE (e.g. Visual Studio .NET and Eclipse) as long as they continue trying to write the whole thing themselves. That leaves Apple with a couple of options. One is to continue down the path they are on, turning out charming and sometimes innovative development tools that lack the feature set of major IDEs. Those who "get it" (see the beauty of Cocoa and Objective-C) will like, or at least put up with, these development tools. However, professional developers who may have heard the buzz about Mac OS X will investigate the platform, take a look at Apple's development tools, and recoil in horror at the feature set of Project Builder. They will leave the platform, having never had a chance to see the beauty of Cocoa. The second option for Apple is to find a way to build a world class IDE on par with Eclipse JDT, even with their limited resources. How can this be done? Well, as Steve Jobs has pointed out, "good artists copy, great artists steal." Apple could use (steal) code written by others for the foundations of an IDE, leaving them free to concentrate on creating features that developers crave. Eclipse is a tool platform - Eclipse JDT is just an example of an application for the Eclipse platform. What if Apple created a new Project Builder based on Eclipse?

Although this sounds promising, there are major issues with such a proposal. First of all, an Eclipse-based Project Builder would not feel Mac-like. Perhaps if Apple jumped in and did a really amazing port of SWT it would feel more Mac-like, but there would still be look and feel issues. Another problem is that Apple might be viewed as not eating their own dog food. Eclipse is written in Java and the Mac port of SWT would probably use Carbon. Pundits might say, "Look, if Cocoa is so great then why isn't Apple using it to build their development environment?" So, although the idea of Eclipse MDT (Mac Development Tooling) sounds tantalizing to those of us who have drunk the Eclipse Kool Aid, it doesn't seem to be in the cards.

The crux of the problem here is that Apple doesn't have the resources to implement the plethora of features available in IDEs like Eclipse. They need help. But maybe my pipedream of Eclipse MDT was the wrong way around. Perhaps, instead of Apple piggybacking off of Eclipse, Apple should rely on people piggybacking off of them. Instead of scrambling to catch up with the features of more advanced IDEs, perhaps Apple needs to rearchitect the very core of Project Builder with an amazing plugin scheme (quite possible given the elegant dynamism of Objective-C). Then Apple can sit back and watch as their fanatical developers, those who understand the beauty of Cocoa, pump out plugin after plugin providing whizbang features like code completion and refactoring. Given the creativity of Mac developers, we could see the next great IDE feature developed for Project Builder, and then watch as Microsoft scrambles to introduce it in Visual Studio .NET.

Although I hate to see duplication of effort, it seems that we need something similar to the Eclipse platform's scheme of massive plugability, but implemented in Cocoa. People have clamored for Project Builder plugins for some time, but I believe Apple needs to go beyond a simple plugin scheme, and create a Project Builder extensible to its very core. Apple - if you build it, they will come, and they will create a world class IDE for you.

What does the future hold for Apple's developer tools? Could WWDC 2003 bring big changes? I don't know. I want to believe.

Posted by Dirtae at 09:15 PM | Comments (3)

April 28, 2003

Java Gotchas

Java Gotchas are quirks in the language or standard libraries. Some might call them bugs, some features, some nasty surprises. Here is a chart of some dangerous waters.

That site also contains the sometimes horrifying, sometimes amusing guide How to Write Unmaintainable Code .

Posted by Dirtae at 06:56 PM | Comments (0)

April 20, 2003

TriJUG

There's a TriJUG meeting tomorrow night that, work permitting, I'll attend. The topic is the Collections API and the underlying performance characteristics of the various collections. It should be a good refresher on complexity of basic data structures and algorithms.

I've been reading Hacking Log 3.0: America's Blog , the weblog of TriJUG's president, after finding it through JavaBlogs . He just got a 17 inch PowerBook, so hopefully he'll bring it to the TriJUG meeting and everyone can drool over it.

Posted by Dirtae at 10:30 PM | Comments (0)

April 15, 2003

The Post OOP (POOP) Paradigm

Great Slashdot comment .

Posted by Dirtae at 09:35 PM | Comments (0)

March 17, 2003

TriJUG Meeting Tonight

There's a Triangle Java User's Group meeting tonight. Stuart Halloway will be talking about Java class loaders. This will be the first meeting I've attended (the February meeting was canceled due to poor weather). Be there or be square!

Posted by Dirtae at 09:50 AM | Comments (0)

March 01, 2003

Java Blogs

Javablogs.com is a nice site that, strangely enough, indexes Java community blogs.

BTW, JDK 1.4.1_02 is now available .

Posted by Dirtae at 04:58 PM | Comments (0)

February 27, 2003

The Long Strange Trip to Java

A interesting personal account of the birth of Java by Patrick Naughton.

Posted by Dirtae at 10:24 PM | Comments (0)

February 12, 2003

esr

esr1d.png

Eric Raymond gave a talk at work yesterday. He was an excellent speaker - informative, entertaining, and unassuming.

One of his points was that the factory model of software is a delusion (sorry, Metrowerks). Eric's argument drew on the concepts of use value and sale value. The use value of software is its value as a tool which allows you to accomplish some task. The sale value is the value of software as something which can be sold to others (e.g. at a retail store). Most people assume that sale value is proportional to use value. According to Eric, this is not true.

Consider the following: RandomProduct sells at CompUSA for $200 on Tuesday. On Wednesday, the producer of RandomProduct discontinues the product. On Thursday, RandomProduct is in the discount bin at CompUSA for $10, even though the product still has the same usefulness as it did two days ago. Eric claimed that this is because the price a consumer is willing to pay for software is determined by the "expected future value of vendor service". Thus, the software industry is a service industry. Eric went on to explain how software publishers screw consumers when they operate under the false presumption that they are in a manufacturing industry. For example, you want to have your best people doing the things that make you money. In a manufacturing model, this means having your best people pump out code like there's no tomorrow, while those who can't cut it get sent of to man the support desk. Hence, the crappy support prevalent in the software industry.

Although I'm inclined to agree with Eric's argument, I still have some doubts. It seems as if the same argument could be applied to just about any product, thereby making every industry a service industry. Still, he only had an hour or so to speak, and this was just one of many topics covered, so I'll give him a chance. I just ordered a printed copy of The Cathedral and the Bazaar from buy.com (yes, it's all available on his website, but I hate reading from a monitor).

Posted by Dirtae at 10:49 PM | Comments (0)