Alieniloquent


First Post

September 15th, 2005

Today has been a very long day. To sum it all up, I’ll simply tell you what I’m doing now: blogging from my front porch. That’s right, my front porch. I love wifi. We closed on our house today. We’ve got internet hooked up. Our bed is moved. Our cats are moved. All of our dirty laundry is moved, and being cleaned by means of our new (to us) washer and dryer.

Closing went very smoothly. It went much more smoothly than everybody had led me to expect. I think it’s a big conspiracy amongst homeowners to make new home-buyers feel like they’re going through some big ordeal. Trust me, I know just how big a deal this should be. 3715 pages to sign and 3024 pages to initial and 1207 pages to sign confirming that I initialed the 3024 pages and 237 pages to initial confirming I signed the 3715 pages, that’s hardly any paperwork at all. It went by in less than 45 minutes.

It’s getting late, so, in short: first post from our new house!

Rails Talk

September 13th, 2005

I gave a talk about Ruby on Rails at the Omaha Smalltalk User Group tonight. It went rather well. I’ve posted my slides for anybody that would like them.

The talk was mostly focused on the Ruby for Smalltalkers portion, but that was largely because Rails made my demo go so fast that I had to find something to fill the time with. It was kind of fun, actually, showing everybody around the Todo project I had made. I haven’t really done any serious railing since version 0.10, and a lot has changed since then. So it was just as exciting for me to open up some of the files and see how they did things as it was for the rest of the group.

I’ve been so busy lately taking classes and buying a house, so I wasn’t as prepared as I would have liked to be. But, everybody seemed to enjoy the talk and take away something valuable from it, so I’m happy with the talk. I really enjoyed it, and I think I’m going to try and do more things like this.

OCFit on Tigris

September 12th, 2005

An astute reader may notice the new category and link in my sidebar. OCFit is a project I’ve been working on for a few weeks (well, really just a couple of weekends over the last few weeks). It is intended to be a replacement for Fit for Cocoa developers. I started it because I could not find the Objective C implementation of Fit, and when I did, I just could not bring myself to use it. I’ve set out to write a program that follows the spirit of Fit, but is idiomatic to Objective C.

Right now the framework only provides PrimitiveFixture and ColumnFixture. I will be implementing ActionFixture soon.

Mage: the Awakening

September 1st, 2005

I’ve waited and waited and waited. Now the waiting is finally over. I have in my possession a copy of Mage: the Awakening, and I’m stoked. I would have said something yesterday, when I actually bought it, but I was too busy reading.

About Subversion

August 31st, 2005

Around my office, I’m generally the guy who knows the most about the non-windows and open source worlds. That’s where I come from, and that’s what I stay the most current with. So, when we started looking for a version control system to replace Visual Source Safe, I immediately started selling Subversion. I succeeded.

Today I gave a lunch-time presentation about Subversion to the whole team. It was just a short talk with a brief history and a high-level overview of the features. If you’re interested, you can download the slides.

The Programmer’s Litany

August 23rd, 2005

Over the past two years I’ve hopped around from blogging tool to blogging tool, and many of my blog posts have fallen to the wayside. Pleasantly to my surprise, somebody was backing them up for me. Yay for the Internet Wayback Machine. So, Sherman, it’s time we take a trip back to…May 4, 2004 on this very blog…

With apologies to Frank Herbert:

I must not prematurely optimize. Premature optimization is the mind-killer. Premature optimization is the little-death that brings total obliteration. I will face my desire to prematurely optimize. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the desire has gone there will be nothing. Only I will remain.

Cocoa + Rails = Cool!

August 16th, 2005

Apparently, the folks at VitalSource have used Rails in a client application.

Now that I think of it, with WebKit, it was only a matter of time until this happened.

Generics shmemerics

August 9th, 2005

It’s no secret that the next version of Java will have generics, as will the next version of C#. This is nothing incredibly new. C++ has had templates since the dawn of time and they’ve always made code unreadable and needlessly complex (okay, so I’m a dynamic language nut). It basically amounts to wanting all the neat tricks that dynamic typing gives without any of the programmer niceties (like trusting that the programmer knows what she’s doing).

Over on Blaine Buxton’s blog he posted about Java generics and the recommended naming for the generic types:

A note on naming conventions. We recommend that you use pithy (single character if possible) yet evocative names for formal type parameters. It’s best to avoid lower 3 case characters in those names, making it easy to distinguish formal type parameters from ordinary classes and interfaces. Many container types use E, for element, as in the examples above.

public interface List<E>
{
  void add(E x);
  Iterator<E> iterator();
}

public interface Iterator<E>
{
  E next();
  boolean hasNext();
}

In the comments over on Blaine’s blog, this guy named Issac (who’s mission it appears to be to disagree with everything Blaine says) said:

Everyone knows better than to use single letter names for classes and interfaces - so when we see a single letter name, we can be confident the parameter is not a class or an interface but is a formal type parameter.

Isaac clearly have a very narrow definition of “everyone” or a very narrow sample of code to draw from. I see terrible naming in every language and it makes code harder to read every time. I see the single letter and have to spend the split second saying to myself “E, what a terrible class name, nobody in their right mind would name a class that. Oh, right, that’s the name of the generic class.”

The cognitive dissonance only becomes worse when you want to make a class generic on more than one axis. When you have something like:

public interface Matrix<E, F>
{
  add(E x, F y);
  //… more methods in E and F …
}

When does it stop? How are we supposed to make “evocative” names when we only have one letter to choose from? Sure, we can take the class name we would’ve used and use the first letter, but then we are limited to only 26 names. It might very well get confusing when we use E to mean Element in one place but use it to mean Enumerator in another.

Now, if I actually give the thing a name, like ElementClass, I can say “Oh, right, that’s the class of whatever element is in here.” Heck, I don’t even need to think that hard, it just reads that way. It may seem like a small win, but it’s a huge win to somebody coming into the code from outside.

Core Data

August 6th, 2005

A week ago I read this presentation by Wil Shipley (of Omni and Delicious Library fame). It has inspired me. I’m going to write a Cocoa program that does something useful and then sell it.

Cocoa is fantastic. It makes things so easy. The best part is, Apple is always making things easier for developers. One of their latest technologies, Core Data, makes things orders of magnitude easier for developers. I just put together a prototype in under two hours (most of which was poking around documentation since I’m new to using Core Data). I had to write maybe ten lines of code, and that’s because I was doing something a little out of the CD paradigm. That code will probably go away soon.

My application already knows how to serialize its data, with zero lines of code from me telling it how. It knows how to add and remove records from a collection and refresh the UI for it, with zero lines of code. Core Data and Cocoa Bindings are just awesome.

House Pictures

August 5th, 2005

Erica has blogged some pictures of the house we’re buying. Note the porch funiture that we got into the contract!

For those of you who know Omaha, the house is here right outside of downtown Benson.

Layout, design, graphics, photography and text all © 2005-2007 Samuel Tesla unless otherwise noted.

Portions of the site layout use Yahoo! YUI Reset, Fonts & Grids.