29 May 2007

Jamis and Marcel at MountainWest RubyConf 2007

Posted by Jamis on Tuesday, May 29

Marcel Molina, Jr. and I were able to attend the MountainWest Ruby Conference back in March. At the last minute, one of the speakers was unable to attend, so Pat Eyler asked Marcel and me if we wouldn’t mind doing a live code review. One of the sponsors of the conference, COSL, graciously (and courageously!) provided a Rails project that we could pick apart.

The 45-minute presentation is now available on the Confreaks website. The TextMate window is a bit hard to read, but if you squint just right you can make it all out. :) Considering that Marcel and I only had an hour to prepare, I think it turned out pretty well!

Posted in Odds & Ends | 15 comments

04 Mar 2006

"Kestrel" is taken...and how!

Posted by Jamis on Saturday, March 4

So, the search for a name continues. Thanks, everyone, for your suggestions! The Rails core team has been a huge help, too, especially Mike Clark, who has been tirelessly brainstorming with me for the last 2 days.

It is definitely not fun, searching through the list of registered trademarks and googling for names to see if they are taken. However, every once in a while you stumble across a gem that at least makes you smile in spite of it all.

Consider “kestrel”. It was one of the names I’ve been considering for the “software formerly known as SwitchTower”.

So I went to the USPTO site and began searching, only to stumble across this gem, describing the trademark for the term “kestrel” as applied for by “KESTREL TECHNOLOGIES, INC.”...

COMPUTER HARDWARE AND COMPUTER SOFTWARE FOR USE IN AGGREGATING, COLLECTING, CATEGORIZING, CALCULATING, CONVERTING, STORING, MAINTAINING, TRACKING, MONITORING, ANALYZING, PROCESSING, FORECASTING, REPORTING, SUMMARIZING, DISPLAYING, DISSEMINATING, AND MANAGING DATA AND INFORMATION FOR USE BY OTHERS IN THE FIELDS OF COMPUTERS, COMPUTER SOFTWARE, COMPUTER PROGRAMMING, COMPUTER DATABASE MANAGEMENT, GLOBAL COMPUTER INFORMATION NETWORKS, FINANCE, INVESTMENT, BANKING, ACCOUNTING, SECURITIES, INSURANCE, E-COMMERCE TRANSACTIONS, E-BUSINESS TRANSACTIONS, ELECTRONIC COMMERCIAL TRANSACTIONS AND ELECTRONIC FINANCIAL TRANSACTIONS; COMPUTER SOFTWARE AND COMPUTER PROGRAMS FOR USE IN CAPITAL MANAGEMENT, FINANCIAL ANALYSIS, FINANCIAL CONSULTING, FINANCIAL MANAGEMENT, SECURITIES TRADING, INVESTMENT, BROKERAGE, ASSET MANAGEMENT AND RISK MANAGEMENT AND RELATED INSTRUCTION MANUALS AND USER GUIDES SOLD AS A UNIT THEREWITH

Did they leave any stone unturned? Any loopholes they might have overlooked?

Take a pill, people, seriously…

Posted in Odds & Ends | 5 comments

23 Dec 2005

Christmas wish

Posted by Jamis on Friday, December 23

Would some kind soul please please please document mkmf.rb? I hate that library because it is so impossible to figure out how to use it.

Thanks.

Posted in Odds & Ends | 2 comments

10 Dec 2005

The best things happen while you're coding....

Posted by Jamis on Saturday, December 10

So, it being the Christmas season and all, I popped in White Christmas and watched through one of my favorite song-and-dance numbers in all of cinema (“The best things happen while you’re dancing”, with Danny Kaye and Vera-Ellen). And at the risk of sounding incredibly geeky and sentimental, I have to say that the enjoyment I get watching that number reflects some of the joy I feel when I’m pounding out some really beautiful code. Software design is a kind of choreography, with its implementation being (potentially) as aesthetically pleasing as any dance number.

Admittedly, it’s probably easier for most people to appreciate a dance number than a page or two of code. Beauty, as they say, is in the eye of the beholder…

Posted in Odds & Ends | 4 comments

03 Nov 2005

aMAZE yourself with Haskell

Posted by Jamis on Thursday, November 3

So, as you’ve probably figured out by now, I’ve been learning Haskell. My first actual program now behind me, I thought I’d step up and talk a bit about my thoughts on Haskell so far.

  • Monads still really boggle me. They are my biggest stumbling block so far, and as far as I’m concerned, they are the biggest wart on the face of Haskell. Yah, sure, I understand the idea—you can use Monads to represent a sequence of actions without violating “functional programming”, but it still feels very, very awkward. I definitely have more reading (and practice) to do on this topic.
  • I love how you can define multiple versions of a function and use pattern matching so that the runtime system will choose the correct version based on the value of the parameters. Really slick.
  • I’m still trying to get a practical feel for when to use let and when to use where.
  • Using a strongly typed language feels kind of awkward after so long with Ruby, but that’s not a reflection on Haskell. I must admit that Haskell’s type system is pretty neat.
  • The whole thing with classes and instances is pretty slick, too, though I’m still trying to wrap my brain around it.
  • It feels like you have to pay much closer attention to what you are doing, to avoid cluttering your namespace. Modules help, but once you import them, you’re still stuck with everything in the same namespace. I’ve got to be missing something.
  • I really miss objects! Trying to program something that uses random number generation is a real pain in Haskell, because you have to pass the generator around from function to function. Give me stateful objects anyday, over a purely functional language…but I’m sure that’s mostly my inexperience talking.

Anyway, I’m still working my way through it. It is definitely unlike almost any language I’ve ever learned, although I definitely prefer it over Scheme. I still doubt I’ll convert from Ruby to Haskell, but it’s a new way of thinking about problems, and that is always valuable.

For the curious, here is my first Haskell program. it is a naive random maze generator, which is something I can code in my sleep in a procedural language, but which really stretched me when trying to implement it in Haskell. You Haskell experts out there, please feel free to give me advice on how to make this little program better! (But be gentle…)

Posted in Odds & Ends | 15 comments

31 Oct 2005

Haskell bundle for TextMate

Posted by Jamis on Monday, October 31

So, I’m almost completely converted to TextMate. However, I discovered that it had no syntax highlighting support for Haskell, and googling for one didn’t turn up anything. So I did what any self-respecting programmer would do—I put one together, myself.

It is currently pretty minimal (it doesn’t support any folding yet, and it only really supports as much of the syntax as I currently understand), but it’s a start. It also supports lhs files by combining the Haskell syntax with the LaTeX bundle that comes with TextMate.

Hopefully these will be useful to someone. If you add anything to them, please send the addition back to me so I can add it to my copy.

Haskell.bundle (.tar.gz file, 1k)

Update: I’ve been given commit access to the TextMate bundles repository, and have added Haskell there.

Posted in Odds & Ends | 7 comments

30 Oct 2005

Learning Haskell

Posted by Jamis on Sunday, October 30

So, I finally had a little time this weekend to try and get back into a habit I had unfortunately fallen out of—learning at least one new programming language each year.

Haskell is one language I’ve been meaning to investigate. I’ve actually tried to pick it up a few times, but it has some pretty high barriers to entry:

  • There are several implementations available, without any good recommendations of which one to use. (I finally went and grabbed GHC, because darcs requires it and I wanted to give darcs a try.)
  • GHC takes forever to install from source. Many, many hours. If there is a precompiled binary for your platform, I’d highly recommend grabbing it.
  • Until quite recently, there have been no good online tutorials for learning Haskell. Even A Gentle Introduction to Haskell is anything but. (Brian Mitchell once explained to me that it is gentle compared to the highly academic Haskell Report, which it supplements.)
  • As a functional language, it is significantly different from most other languages I’ve ever used. Thus, without a good tutorial it was hard for me to wrap my brain around it.

Fortunately, I stumbled upon A Haskell Tutorial for C Programmers, which was finally what I needed to break into Haskell programming. It covers all the major bases, and gives you just enough background to go in and start reading the other tutorials.

Anyway, I’m excited to start learning Haskell. I certainly doubt it’ll replace Ruby as my language of preference, but it’s always good to step back and get a new perspective on the art and science of computer programming.

Posted in Odds & Ends | 3 comments

18 Aug 2005

SwitchTower Haiku

Posted by Jamis on Thursday, August 18

Scott Barron has really had his soul stirred by SwitchTower, apparently.

SwitchTower haiku, anyone?

Posted in Odds & Ends | 0 comments

26 May 2005

Backpack in WSJ

Posted by Jamis on Thursday, May 26

Backpack is featured in an article in today’s Wall Street Journal! How’s that for publicity. :)

Go pick up a copy. In the left-sidebar, on the front page of the Marketplace section, you’ll see an article titled “Net-Based To-Do Lists Permit Collaboration By Family, Colleagues”. That’s us!

It has really been amazing to watch how Backpack has caught on. We put a lot of effort and love into it, and it is quite gratifying to see people using it for so many different things.

Posted in Odds & Ends | 0 comments

URUG Meeting

Posted by Jamis on Thursday, May 26

The Utah Ruby Users Group held its inaugural meeting last night in Draper, Utah. We had ten people attend, most from the Provo side, but a few from SLC, too.

We had some great discussion, including a remarkably civil comparison between Python and Ruby (one of the attendees was a self-confessed Pythonista, but we let him come anyway.)

The next meeting is on June 22 (4th Wednesday of every month), so if you happen to be in the area we’d love to have you drop by!

Posted in Odds & Ends | 0 comments

25 May 2005

SQL query dependencies in Rails apps

Posted by Jamis on Wednesday, May 25

Eric Hodel and Ryan Davis have done some cool stuff before, but now they’re just plain showing off.

All I can say is, I want it. Very, very cool, guys.

Posted in Odds & Ends | 0 comments

18 Feb 2005

Rails Presentation

Posted by Jamis on Friday, February 18

So, I gave my Ruby on Rails presentation to the Utah Java Users Group last night, and it went very well. I also was able to meet Howard Lewis Ship in person, finally, which was a treat.

My presentation was sandwiched between a JDO presentation, and Howard’s presentation on Tapestry. It was neat to see Rails compared side-by-side with Tapestry, which is one of the premier web-frameworks for Java. I think there is plenty that can be learned on both sides. It would be interesting to see Rails with an object-component model like Tapestry has (but I say that quietly, because I’m not necessarily up to volunteering to write it!).

If you’re interested, you can view my presentation online (in an incredibly ugly format, but I blame OOo for that) right here. Alternative, you can download the whole thing (warning: 14 meg download) here.

Posted in Odds & Ends | 0 comments

21 Jan 2005

Introducing Rails to Java Users

Posted by Jamis on Friday, January 21

About a month ago, I gave a presentation of the Ruby on Rails web framework to our local RUG. Ben Galbraith, the president of the Utah Java User Group, was also in attendence, having been persuaded by the recommendations of Dave Thomas to take a look at Ruby.

And now, Ben has asked me to present Rails to the UJUG, in February.

There will be 60-100 people there, so it should be a good opportunity to show people what Rails is capable of. Howard Lewis Ship will be presenting after me, making me feel something like the unknown local band opening for the nationally famous one. :) I’m really looking forward to it.

So, now I just need to polish off my Rails presentation and practice it until I can do it blindfolded. This is really a golden opportunity to show how easy Rails is to use, as well as to point out how successful it has been commercially (Basecamp, 43 Things, and Tada Lists, to name a few).

The challenge will be fitting everything I’d like to say into an hour presentation, especially since the audience will have little (if any) prior Ruby experience.

Should be great fun!

Posted in Odds & Ends | 0 comments

12 Nov 2004

Recent Writings

Posted by Jamis on Friday, November 12

For a software engineer, I’ve been putting virtual pen to virtual paper much more often recently than I am used to.

David Heinemeier Hansson (of Ruby on Rails fame) has been chatting with me about the possible uses of dependency injection in Rails. At his request, I wrote a proposal (Rails, Injected) that describes a proof-of-concept implementation of Rails environments using Needle, as well as the benefits that Rails can derive from using dependency injection. David (and others) have made several helpful suggestions for making it even better, and the proposal has been updated each time to reflect their thinking. Dave Thomas also mentioned this proposal in a recent article.

Then, Chad Fowler approached me, soliciting an article for RubyGarden. He was curious if I would write about my Copland and Needle IOC frameworks, especially focusing on why I would find it necessary to write two very different libraries with the same goals. That article, To the Point, is now available on RubyGarden. Many thanks to Chad Fowler and David Black, who read it over several times and tendered feedback. It is a much better article now than the draft I originally submitted to Chad.

Now, back to work on Net::SSH...

Posted in Odds & Ends | 0 comments

06 Oct 2004

Rubyish Dependency Injection

Posted by Jamis on Wednesday, October 6

Today, I witnessed something beautiful.

Jim Weirich let me preview an article he wrote (and which he will shortly post on his own blog) about dependency injection in Ruby. He gives a sample implementation, which I found particularly elegant, and very “rubyish”.

Jim has consented to let me use his design as the basis for the “next generation” of Copland. I’m thinking I may want to just create a whole new project, since Copland’s approach to DI is significantly different than Jim’s, and the two are not exactly compatible.

Although…it should be possible to implement Copland on top of Jim’s design… something to think about, anyway.

Posted in Odds & Ends | 0 comments