Posted by Jeremy Voorhis
Wed, 04 Oct 2006 15:41:00 GMT
Portland, Oregon is fortunate to have a beautiful Ruby users group, and last night’s meeting confirmed that to me even more. For those of you who couldn’t be there, or would simply like to peek inside, here is a quick summary.
Mercurial
John Labowitz clued us in about Mercurial, a decentralized scm tool in the same class as Darcs and BZR. The tool is still rather young, but seems to be improving rapidly. After covering some of its features and their usage, John deployed a Rails app from a Mercurial repository with a relatively simple Capistrano recipe. After listening, here is my take on Mercurial:
- Decentralized – every working copy is a branch
- Patches may be cherrypicked a la Darcs
- Commands and output mirror Subversion when reasonable – svn users should be at home with the command line tool
- Changesets are given a local revision number, for those of us who still think in Subversion
I’ve not used decentralized scm for programming-in-the-large, but have been using Darcs for one-off personal projects. Next time, I’ll kick the tires on Mercurial myself.
OS X Sync Services
Ben Bleything gave a talk about implementing Ruby applications that use Apple’s Sync Services. (I am not an OS X hacker myself, and I was mostly satisfied when Ben said Sync Services is like the windows registry, but for data.)
A Sync Services application typically has its own data store, but subscribes to updates from Sync Services and occasionally publishes its own. The examples that Ben showed involved observing the changes pushed by Sync Services via Growl notifications, and manipulating OS X address book entries via Ruby.
The examples also gave us a taste of Ruby/Cocoa; if there is a wrapper for the library you need, things are good. If not, you need to fire up the Objective-C documentation and translate the interface to something the Ruby/Objective-C bridge can understand. (Ben, help me out if I’ve messed anything up :)
Craftsmanship
After the talks, the group faithfully migrates to the Lucky Lab brewpub. Informally, I got a chance to talk to some fellow group members about the Rails workshop I will be holding in November. The name I have chosen for the series is Craft, referencing the passionate developer’s sense of craftsmanship as well as his desire to create.
Eric Wilhelm, joint member of PDX.rb and the Portland Perl Mongers, brought it to my attention that the last PDX Perl Mongers meeting held a panel on craftsmanship. The panel included Bricolage developer and esteemed acquaintance David Wheeler, bicycle machinist Dan Falck, and science fiction author David D. Levine. The podcast is available via the meeting page.
Props for taking the interdisciplinary approach!
Posted in PDX.rb, Ruby | 6 comments
Posted by Jeremy Voorhis
Wed, 23 Aug 2006 17:55:00 GMT
Satish Talim, founder of Indian Ruby developers’ community Pune Ruby, has interviewed several Ruby developers via email and posted the responses to the group’s blog at http://www.puneruby.com/. Interviews that I found especially interesting featured Bruce Tate, Chang Sau Sheong, Phil Thompson and Topher Cyll. My interview was just posted today as well.
Two curious facts about the interview series:
- Only two of the nine interviewees was from a country other than the United States. One was from Singapore. None were from India; surely PuneRuby has a few Ruby rockstars of its own.
- Over half of the interviewees are from Portland, Oregon. The other four are friends and acquaintances of mine through our own Portland Ruby Brigade.
Posted in Ruby | 5 comments
Posted by Jeremy Voorhis
Thu, 10 Aug 2006 17:20:00 GMT
I have resigned from the position of Lead Architect at PLANET ARGON. While the experiences I have had there have been invaluable to me, it is time for me to explore a few specific areas of my career on my own. I am leaving behind a highly competent team and I look forward to seeing what they will accomplish as time unfolds.
In case you are wondering what’s next, I am dedicating greater portion of my time to my forthcoming book, Rails In a Nutshell, which will be published in 2007 by O’Reilly Media. I am also eager to spend even more time developing my Craft series of workshops, which begins on September 1-2. Finally, I will be available for contracting for Ruby development projects, acting as an developer, but also as a trainer and a mentor.
The common theme in all of these endeavors, giving direction to my future, is that I want to ultimately develop as a communicator; I want to connect with clients as well as fellow developers with the intent of improving our craft and sharing what we learn. Towards that end, I also intend to increase my community involvement, beginning at the Portland Ruby Brigade. See you there!
email address: jeremy at jvoorhis dot com
Posted in Rails, web development, Ruby, PLANET ARGON | 9 comments
Posted by Jeremy Voorhis
Wed, 02 Aug 2006 10:47:00 GMT
If you are excited about Ruby on Rails development and want to better understand the intersection of application design and web architecture, then I am pleased to announce that I will be hosting a workshop in September. Stay tuned for more details.
Posted in Rails, web development, Ruby | no comments
Posted by Jeremy Voorhis
Sun, 30 Jul 2006 22:22:00 GMT
This morning after refreshing my blogroll, I noticed that I had received a chain letter. Here is my response.
What was your technical background before you started learning Ruby/Rails?
My earliest flirtations with web development involved Perl and MySQL, and my first professional programming job involved PHP and Microsoft SQL Server. I later moved on to working with .NET on Windows. While Visual Studio was sometimes inescapable, I claimed the Mono platform and Emacs as my development environment whenever I could.
How long ago did you start?
I have programmed professionally since 2003. I have been a full-time professional Rails developer since March 2005.
What were the two most useful resources to you in the learning process (not counting The Agile Book or the Pickaxe Book, which we’ll assume everyone knows about)?
Regarding learning the Ruby langauge, the most helpful resources have been community-based. Ruby Quiz, the #ruby-lang channel on freenode.net, the Ruby Talk mailing list (although I mostly browse the archives), fellow bloggers, and the erratic Poingant Guide to Ruby.
Because the Ruby language has such varied influences, it also helps to understand them as well. Many folks who see Ruby for the first time comment that is looks “Perlish”. On the surface level it bears a resemblance, but my nominal experiences with languages like Scheme and Smalltalk have contributed more to my mental model of Ruby than Perl.
Tell us the story of how you came to learn Rails:
Prior to Rails, I had been experimenting with Nant, NUnit, NHibernate and different approaches to the model-view-controller architecture on .NET. Rails was a natural fit because it encompassed a familiar toolset, but in a smaller, more easily comprehended package.
Three Ruby bloggers to whom you’re passing the baton:
Posted in Rails, web development, Ruby, Languages | no comments
Posted by Jeremy Voorhis
Wed, 07 Jun 2006 22:48:00 GMT
As announced this morning, InfoQ has launched. InfoQ is the latest venture by Floyd Marinescu – creator of popular Java development site, theserverside.com – and is dedicated to delivering news and articles for the following communities:
Furthermore, the Ruby community editor is none other than Obie Fernandez, and he is dedicated to delivering the most interesting Ruby news, articles and case studies.
Currently, there are two articles in the Ruby community, Ruby and Rails: In your face… but out of your way by Dr. David Black, and Agile Asset Management with Ruby DSLs by yours truly. Go ahead, sign up, grab the Ruby RSS feed and tune in as InfoQ continues to deliver more great Ruby content.
Posted in Ruby | no comments
Posted by Jeremy Voorhis
Tue, 23 May 2006 22:45:00 GMT
On Monday, InfoQ published my, Agile Asset Management with Ruby DSLs. This article is about my experience using internal Ruby DSLs for digital asset management. An example of a site which the DSL supports can be found at http://media.nikefootball.com/. (You might also recognize this site from my Globalize slides.)
If you’d like to kick the tires on our asset complier, you can check out the project on the PLANET ARGON trac, or just install the gem like so:
sudo gem install asset_compiler
While I have been focusing on internal DSLs with Ruby, a friend of mine, Topher Cyll has been focusing on external DSLs using an s-expression parser he wrote. In his article, If It’s Not Nailed Down, Steal It, he walks us through pattern matching, destructuring, parsing s-expressions and finally creating a tiny LOGO-like language using an s-expression based external DSL that creates SVG graphics. The article is a worthy read, and it challenged my assumptions of what Ruby as a language is capable of.
Posted in Languages, DSLs, Ruby | no comments
Posted by Jeremy Voorhis
Tue, 02 May 2006 22:10:00 GMT
In his book, Aspects of the Theory of Syntax, Noam Chomsky insists that we make a distinction between language competence and performance. Competence refers to one’s knowledge of a language, while performance refers to one’s ability to practice that language. When discussing language performance, Chomsky introduces the term acceptability. In Chomsky’s words, utterances are acceptable when they are “perfectly natural and immediately comprehensible without paper-and-pencil analysis, and in no way bizarre or outlandish.” Chomsky goes on to describe some structural heuristics for acceptability of the written word. Some things that contribute to the decay of acceptability are repeated nesting of an element, self-embedding of an element and nesting of a long and complex element.
He goes on to suggest that these patterns limit acceptability because they work against the finiteness and decay of human memory. He may not have had programming languages in mind while he wrote this passage, but the same limitations when communicating in English stand when communicating in Ruby or some other programming language.
Simply put, if you are writing software for a human first and a computer second, keep your statements concise and refrain from gratuitous nesting and run-on statements when possible. The interpreter may find your code very acceptable, but you also have a human audience which includes yourself. Look back on some code you have written two weeks ago and ask yourself – is it acceptable?
Posted in Languages, Ruby | 3 comments