New Programming Language Group forming in Northern Virginia

I don’t know what it is about Northern Virginia and programming languages, but we just can’t seem to get enough of them! A new group “novalanguages” has just formed.

Here’s a brief description of the group:

Thoughts on the makeup of the group include obtaining (however you want) a book,
working through the book 1 chapter per week on one night of that week with a group of
like minded individuals. For the first one, my company Iterative Designs will sponsor it (not sure what that means just yet) and we can go from there.

It will mean meeting up and having a group to ask questions about the language we are learning and they aren’t going to give you the snub nose responses of “Don’t you know that — you n00b” that you might get in an IRC chat room.

I am thinking the first language should be something out there but semi-applicable (like an Erlang, Smalltalk, or even Lisp). Unless everyone in the group has a Mac (or can borrow one) and we can learn Cocoa/Obj-C — which would be fun given the iPhone SDK availability.

- Chris Williams

Personally, I’d be happy to learn Erlang. Chad’s been talking about it for awhile now and I got really excited about the potential of it while at MountainWest RubyConf where I saw some good presentations about it.

I’d also be interested in going through Cocoa/Objective-C. I already know it, but its always good to go back through the basics and practice, practice, practice. Plus, it’s also good to share your knowledge with others - teaching is sometimes the best way to deeply ingrain something into your brain. However, we’re already planning to go through the Cocoa Programming for Mac OS X, 3rd ed book in our NSCoder DC Night group.

Thanks to Chris Williams for setting this up!

June 4, 2008. Cocoa, Washington DC, Ruby, Northern Virginia, Erlang. No Comments.

Registration for RubyNation is now open

East Coast Rubyists - you can now register for the Washington DC area Ruby conference RubyNation. It costs $175 and seats are limited.

We also have a new speaker, Glenn Vanderburg. He’s the Chief Scientist at Relevance, who I’ve done some work for. He recently created the Frozen Gems Generator which is handy for freezing gems for a Rails app.

May 28, 2008. Washington DC, Ruby. No Comments.

RubyNation - a Ruby conference in the Washington, DC area

I’m proud to say that we are going to have our very own Ruby conference here in the Washington, DC area! It is called RubyNation and it will be happening on August 1 - 2, 2008 at the Center of Innovative Technology in Herndon, VA. That’s probably one of the strangest shaped buildings in our area that should be hard to miss - it sort of looks like a squarish ruby with its point up.

We’ve lined up Stu Halloway, Neal Ford, David Bock, and Giles Bowkett as keynote speakers and we’ll have lots of Ruby content. I think it will be single track which is my preferred format - fewer things to think about. Plus, if you’ve got something cool you’ve been working on, you can present them during the lightning talks!



I hope to see you there!

May 27, 2008. Washington DC, Ruby. No Comments.

The closing Jimnote at MountainWest RubyConf

Many of us call the opening keynote of WWDC by Steve Jobs the Stevenote. Well I’m dubbing the closing keynote of MountainWest RubyConf the Jimnote in honor of Jim Weirich. But… maybe I’m too late. It was sort of like watching a Mike Tyson fight (back when he was his prime and KOing people in 90 seconds.)

Jim gets up, tells us that this is the most important thing that programmers should know and brings up three slides:

K.I.S.S.

do it

end

and sits down.

OK - here he comes and more fired up than ever.

A brief tutorial on LISP.

syntax: s-expressions (s-exps), atoms, lists

nil is the same as empty list

functions: car == head, cdr == tail (trivia: car is address register, cdr is decrement register), cons, eq, atom

special forms: cond, lambda

LISP is turing complete with just this small set of rules.

Now we go into a discussion of how Jim solved the problem of showing the same graphics between an 8-bit memory-mapped 8080-based computer and a 16-bit vector-based PDP11. The answer: FORTH.

FORTH “words” (like Ruby methods) were very short and FORTH itself used reverse polish notation (RPN.) Jim learned about factoring properly this way. To port FORTH all Jim needed to do was write some primitive words (aka graphics drivers.) Note that Jim says that Nintendo console games were written in FORTH.

UDFs - now we’re looking at unducted fans engines which has spinning blades which would pull in air into the engine but did not succeed.

But… designing these engines was an interesting gig. It did involved multiple threads that access shared data. Which is a huge headache. Perhaps a way to help with this would be to avoid system locks but this worked out to one chance in a million of failure. Which seems like good chances, but it failed roughly once a day (since it executed roughly 1.5 million times a day). The point is that writing threaded applications is hard especially when accessing shared modifiable data.

Which brings us to Erlang…

There’s four types: Atoms, Variables, Tuples, and Lists. Hmm I think I see how this starts to form a Moebius strip.

You can’t change a variable once its assigned, which is actually pattern matching. I would call this immutable data. I use immutable data when passing objects between threads in my Cocoa apps.

Then we go into a client/server example in Erlang and it starts to remind me of Cocoa’s Distributed Objects.

In Ruby you send messages to objects and in Erlang you send messages to processes.

We’ve come up with really complicated systems. Jim shows a code example with 6 different languages/frameworks in one html snippet that shows HTML, CSS, Java, JSP, taglib, and JavaScript.

Erlang in comparison is simple, powerful and spawns processes quickly. Ockham might have approved.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” - Tony Hoare

We live in a (programming/business/consumer?) society that values complexity. In the Ruby world, we’ve come up with Camping, Merb, and Rubinius.

So in summary: Simplify.

  1. Small core.
  2. Simple rules.
  3. Powerful abstractions.

Follow-up question: Where do you draw the line between simplicity and metaprogramming? Answer: If it solves a problem you’re having, go ahead and metaprogram - as long as its a significant amount (more than one line or so.)

March 29, 2008. Ruby. No Comments.

MountainWest RubyConf Day 1

Well we’re 3/4ths of the way through MountainWest RubyConf. It has been a pretty interesting conference so far. Yesterday was jam-packed from 9AM-9PM (with breaks for lunch and dinner - we are human after all.) Today we are doing the same and the afternoon sessions are about to start. I was pretty lax about blogging about RubyConf which was a mistake:

I learn more when I write about what I’ve learned.

Its sort of the same process where you learn more when you teach something to someone else. Except you’re not teaching directly to someone and that someone may be your future self. It may be insane to talk to yourself but googling and then finding a past post that is relevant makes you glad you wrote that down.

Here’s what’s happened on Day 1 of MountainWest RubyConf:

Evan Phoenix gave a talk mostly on how to properly manage an open source project with Rubinius as the example. The key here is encouraging community involvement. Rubinius for the uninitiated is a Ruby VM in the style of the original Smalltalk VM that will prune to the absolute minimum the amount of code that is NOT Ruby. In comparison, MRI which is the default Ruby implementation has a lot of C in the “kernel” portion of the VM.

Watch the video of Evan’s talk.

Ezra gave a good talk about Merb. It seems to me that Merb is emerging as an important counterpart to Rails. In addition, there are other application servers that are also coming up to complement Mongrel, like Evented Mongrel and Tiny. The basic justification to use something like Evented Mongrel + Merb is when you have consistent, short-lived (1-2 seconds) requests like for a webservice. I think that Merb is also still popularly used to handle file uploads in Rails applications.

Two funny yet valid quotes from Ezra I think also illustrates the need for Merb (vs just building out everything in Rails): “Throwing more servers at the problem only goes so far…” and “Premature Optimization is the root of all hosting bills.”

Watch the video of Ezra’s talk.

One interesting note is that EngineYard who is a sponsor of MountainWest RubyConf employs both Evan and Ezra and helps to fund their projects.

Ok… afternoon talks starting - more later.

Update: I added links so you can watch both of these talks in streaming video courtesy of Confreaks.

March 29, 2008. Ruby. 1 Comment.

What to do before you do Ruby on Rails development on Mac OS X Leopard

Apple has a new series about Ruby on Rails development on Mac OS X Leopard. Its a nice article to help get you going. One thing I’d like to reiterate is that it is good to lock down your RubyGems paths. This way you will always that your RubyGems go in the right directories that Apple has set up.

So before you follow the steps in the initial Developing Rails Applications on Mac OS X Leopard article, you should take the following steps:

  1. Open up ~/.bash_profile in your favorite editor (create it if its not already there)
  2. Type in
    export GEM_HOME=/Library/Ruby/Gems/1.8
  3. Type in
    export GEM_PATH=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
  4. Save ~/.bash_profile
  5. Execute
    source ~/.bash_profile

This makes it so that no matter what version of rubygems you have, you have access to the Apple-provided gems in $GEM_PATH and you’re able to install/update new gems in $GEM_HOME.

March 1, 2008. Mac OS X, Rails, Ruby. No Comments.

Going to MountainWest RubyConf 2008

I just booked my flight, hotel and conference tickets to MountainWest RubyConf 2008. It should be pretty interesting - they’ve got a good lineup of speakers. I think its a single track and probably won’t be too crowded so should be a good chance to meet up with some fellow Rubyists. If you’re going, let me know.

February 21, 2008. Ruby. 1 Comment.

Regional Ruby Conferences in 2008

What’s interesting about the Ruby community is that there are a lot of regional Ruby conferences. I think this is at least partly due to Ruby Central’s Regional Conference Grant Program. Which is great because smaller conferences provide you more opportunities for connecting with fellow programmers. There’s so many though that I thought I’d run through them all here. Here’s all the ones I spotted for 2007 and hopefully they’ll all be back in 2008. I’ve put in the confirmed 2008 ones in bold.

acts_as_conference
February 8-9, 2008(Sadly already over.)
Orlando, FL

Philly Emerging Technologies for the Enterprise
March 26-27, 2008(The Ruby “track” is only March 26.)
Philadelphia, PA

MountainWest RubyConf
March 28-29, 2008
Salt Lake City, UT

Silicon Valley Ruby Conference
April 2008? (last year it was April 21-22, 2007)
San Jose, CA

GoRuCo (sold out)
April 26, 2008
New York City, NY

Ruby Hoedown
August 2008? (last year it was August 10-11, 2007)
Raleigh, NC

Lone Star Ruby Conference
September 4-6, 2008
Austin, TX

Ruby East
September 2008? (last year it was September 28, 2007)
Fort Washington, PA

Any out there that I missed?

Update: Added acts_as_conference and Emerging Technologies for the Enterprise, which is done by the same folks who brought you Ruby East.

February 18, 2008. Ruby. No Comments.

2007 Training in Review

Last year I took a lot of training. In the past, my employers would usually send me to one training event. Sometimes I would get to go to two if times were good. Other times, there was no training budget.

In 2007, I was self-employed as the sole member of Happy Apps LLC. So being in charge of the training budget (well actually the entire budget), I went to six training events:

  1. Rails Edge in Reston, VA
  2. Advanced Rails in Chicago, IL
  3. WWDC in San Francisco, CA
  4. RailsConf in Portland, OR
  5. Advanced Ruby in Reston, VA
  6. RubyConf in Charlotte, NC

So that’s 2 Ruby conferences, 3 Rails conferences, and one Cocoa conference. I actually was scheduled to go to another Cocoa conference, C4[1] over in Chicago, but had to cancel due to personal reasons.

So which ones were good and which ones were bad? I think they were all quite good. Obviously, if you want to make Mac applications like I do with WebnoteHappy, you’ll want to go WWDC.

In terms of being a good Ruby on Rails developer, I’d have to say that assuming that you already have a good background in object-oriented programming and web development, have worked through a beginning Rails book like Agile Web Development with Rails, then you really should take both the Advanced Ruby course by Pragmatic Studio, followed by the Advanced Rails course. Both taught me quite a lot of things that I hadn’t known before.

Once you’ve got that though, I think its important to keep up with the latest in techniques and also be involved in your programming community. I think The Rails Edge Conference is top notch in keeping up with what’s new in the Rails world. I hope that a date is announced soon though - I don’t see one for 2008 as of today.

RailsConf is also good for keeping up with Rails, but I think is maybe even better for just being involved in the Rails community. There were a lot of opportunities, scheduled and unscheduled, to get together with fellow RoR developers and you could sense that Rails is really changing the way that web development is being done.

RubyConf on the other hand reminded me that Ruby is not just about Rails. There’s certainly been a lot of growth of Ruby use because of Rails, but there is a deep and wide pool of talent that has fallen in love with Ruby. It was interesting to see all the different uses that people have made of Ruby. And it was definitely an honor and a pleasure to meet Matz in person. In the end, it does seem like most people who are doing Ruby full-time are making their money with Rails.

I’m trying to plan out my training in 2008 now. So I’m curious to hear what good conferences or classes other people went to in 2007. Also if there were any bad ones.

January 21, 2008. Programming, Cocoa, Rails, Ruby, RailsConf. 1 Comment.

What tools do you use for Ruby on Rails?

I’m curious to see what people are using for Ruby on Rails development. I know there are a lot of products coming out nowadays - 3rd Rail from Borland, IntelliJ IDEA (my preferred IDE before Eclipse when I used to Java/Swing) does Ruby now, NetBeans is positioning itself as a Ruby IDE, Aptana, Eclipse/RDT, etc. But I don’t have enough time to try them all out.

I personally use TextMate. It’s simple but powerful. I do a fair amount of work on the command line too, using rake tasks and then shortening up my most used rake tasks or ruby scripts with bash aliases.

Is there something out there I should try that would work better? I’d preferably like something still lightweight, makes it easy to run tests and navigate files, but supported code completion, refactoring, and some sort of double-clicking to find the declaration of a method.

So… what tools do you use for Ruby on Rails?

November 29, 2007. Rails, Ruby. 4 Comments.

Older Entries