Archive | Ruby

Notes from MonadLUG: David Berube, Ruby on Rails

Eleven members attended the August 14th meeting of the MonadLUG, Monadnock Linux User Group, held as usual on the second Thursday of the month at the SAU1 offices in Peterborough. David Berube was the main presenter.

We had the usual announcements (check upcoming events at http://www.gnhlug.org) and also some time for Q&A while waiting for the main speaker and had the ceremonial struggling with the laptop and the projector. One fellow was looking for help understanding how to install drivers for a scanner not supported by SANE, another had questions on what the keyring was and how he could get it to stop demanding a password from him.

David’s been a fixture in the groups for some years. He served as Fearless Leader of GNHLUG for several years, and took a stint as coordinator of the CentraLUG group. He has written a number of magazine articles and authored or co-authored several books, the most recent, Practical Ruby Plugins, due out later this month.

David gave us a brief history of web development, focusing on the incremental improvements made from scripts to cgi-bin to modules to long-running processes in terms of responsiveness, latency and the ability to scale to larger and quicker demands. He briefly compared Ruby with Perl, Python and Lisp, and then dove into the demo.

David had an Ubuntu laptop that he hadn’t previously done Ruby on Rails development on before, so he showed us the basics of installing Ruby, using Ubuntu’s package manager, and cautioned us against using the OS package manager to install gems: The gem system is a package manager in its own right, and it does things in a somewhat different way than most of the OS package manager tools. Instead, he recommended using ruby to install gems. As is often the case, there were some glitches, so we had a small distraction while we worked through creating the /usr/bin links for rake and rails that somehow hadn’t been created automatically.

David then created a new project, and walked us through the directory structure and the significance of files in each folder. He created a model that defined the wiki example we were creating, a controller to answer requests from the web server, and a view that would render the response from our application. He used the built-in rails and rake scripts to create the example database (SQLite3 is built in and used by default if nothing is specified, new in RoR 2.1), showed how the rails console could be used interactively to create model objects (implicitly saving them to disk) and that the console could be used to add, edit, query and delete objects. He then ran the application, after explaining the logic of URLs constructed in a “RESTful” fashion as http://yourwebserver/controller/action/parameter addresses. David started the built-in Webrick webserver and navigated his browser to http://localhost:3000/page/show/bob to show us Bob’s wiki page entry. Whew!

There was some good Q&A during and following the presentation.

I asked some questions on how a team of developers could insure that they were maintaining the same versions of gems when developing, as the gems are usually installed globally and are not in the main application source code tree. David suggested either creating a local team gem repository, or hardcoding the exact versions you want to freeze the target application at, directly within the code.

Charlie had some questions on how to keep up. While he’d read through the “PickAx” book and the “Skateboard” book, those are already a version out of date. David booted up Pidgin and we chatted with a couple of his fellow authors on what they recommended. Here’s a few links I noted from the meeting:

David also mentioned he was running Gnome-Do, a QuickSilver-clone that lets you launch applications or perform functions with a keyboard shortcut and your keywords. And David also showed off the Vimperator, a Vim-like interface for the FireFox browser. David noted you might find some troubles with Javascript-intensive pages:

Thanks to Charlie Farinella for organizing and running the meeting, to Ken and the SAU for providing the fine facilities, to David for an informative presentation and to all for attending and participating!

Notes from NH Ruby/Rails, 15-July-2008: Jeremy Durham and merb

Ten people attended the July meeting of the New Hampshire Ruby / Rails group, an affiliate of the Greater New Hampshire Linux User Group (but it’s okay if you don’t run Linux – there were lots of MacBooks at the meeting last night!). Thanks to Scott Garman and Nick Plante for organizing the meeting and to Tim Golden and RMC Research for providing the excellent facilities.

We started with a good round of introductions where everyone got to state who they were, what they were doing and their level of expertise.

Jeremy Durham was our guest speaker and the topic was merb. Jeremy explained that the 20-second answer for what’s merb is that Merb = Mongrel + erb. Merb is a very small and simple web framework that is ideal for quick small projects that demand few resources, while still providing a thread-safe environment in which to run Ruby. While not intended purely as a Rails replacement/competitor, much of what’s run in Rails can be moved to merb and vice versa with minimal effort. Jeremy offered that he often did a coding session in merb for the speed of the development cycle, and could then share the models he’d created with his team running Rails with minimum changes. Jeremy did a compare/contrast with Rails v. merb where merb is ahead in small memory models and threading, while Rails has the larger community and richer documentation. Jeremy mentioned a new community site: merbunity.

Along with the main topic, there were lots of tangential conversations on the joys of TextMate, vi vs. emacs, Apple shell defaults, JavaScript libraries (did you know there is an entire JavaScript MVC framework in SproutCore? That paperclip [DEPRECATED] is a cool replacement for attachment_fu for uploading files?) which always enrich the presentation.

After the great presentation, there was sufficient time for networking and socializing, where folks got to follow up on interesting developments. Thanks to Jeremy for the presentation, and to Scott and Nick and Tim for organizing the event and to all for attending and participating! Topic for the August meeting hasn’t been nailed down yet. Stay tuned to the announcement mailing list whose links you can find at nhruby.org

Notes from NH Ruby/Rails Group, 20-May-2008

Five members attended the May meeting of the New Hampshire Ruby / Rails group, held as usual at the offices of RMC Research in Portsmouth.

Nick Plante entertained and educated the group on Rack, a foundation layer that interfaces between the web application handler (like Mongrel or FastCGI) and the actual web application framework adaptor (like Merb or Camping or Halcyon or Sinatra) in a manner similar to the Python WSGI layer. It allows for the creation of custom web frameworks while removing a lot of the grunt work. Nick had a sample application whipped up where a few lines of code could define the routing of various requests and cleverly answered “Hello, World” to the correct RESTful query.

For those for whom Rails isn’t the complete answer or those who want to build their own web functions with components other than those used by the Rails framework, Rack is a foundation on which you should be plugging together your building blocks.

Brian Turnbull volunteered to fill in for Scott Garman, who had to cancel at the last minute. Brian had been using NetBeans only a brief while, but had a great story to tell on using the built-in debugger to trace out a problem with Rails-generated CSS meta tags always getting a cache-breaking URL. While a feature in development, when the CSS was being served from a caching store like Amazon’s S3, the ever-changing URL defeated the point of caching. Brian showed how breakpoints could be applied to the code and step-by-step tracing (why is it that all debuggers have Step-In, Step-Once, Step-Over, Step-Out icons that all look the same and can’t be told apart?) and walked from his code into the Rails framework down to the mis-behaving component.

Having identified the problem, our discussion took a tangent into a discussion about monkey-patching, and how this ‘feature’ was a bug deserving of an optional switch to disable, and ought to be submitted upstream to the Rails maintainers. To confirm, we went through the steps to grab the latest version of rails as a plug-in (gem? I’m not sure.) so that we were working with the latest ‘edge’ code to confirm the problem hadn’t already been fixed. By installing this way, we were overriding the Rails framework only for this application, and could easily revert to the stable version, without disturbing the main shared code on the machine. We talked about how this was a Best Practice when bringing an app under development up to production, so it was isolated from changes outside of the app’s control.

Plenty of time was available for discussion, and we talked with Tim a bit about configuring a new machine with all the tools he’d need to develop a Rails app with NetBeans: Ruby, Rails, a couple good gems, the Java runtime. Nick and Brian noted that the default Rails environment within NetBeans is JRuby not MRI (Matz’ Ruby Interpreter) and how you might want to reconfigure NetBeans to use MRI instead if you weren’t planning on deploying to a JRuby environment.

Thanks to Nick and Brian for their presentations, to Scott for arranging the meeting, to Tim and RMC for providing the great facilities and to all for attending the meetings! Discussion is ongoing now on the topics for the June meeting; join the mailing lists at http://mail.nhruby.org/mailman/listinfo/ and keep an eye on the new meeting plans at http://wiki.nhruby.org/index.php/Upcoming_meetings.

Developers, developers, developers song gets covered again

We all know the answer is “Developers, developers, developers, developers,” but who’s asking the question these days? It seems like Sun has taken up the song, according to Timothy M. O’Brien’s posting over at O’Reilly, “Surprising Contender: NetBeans as a Ruby+MySQL IDE.” Great news for all of us looking for new tools; NetBeans is shaping up to be a pretty sharp IDE.

I saw a blog post recently and neglected to bookmark it that posited the thesis that rich IDEs were bad when learning a language. A simple text editor and console can be all the interface you might need when when starting off and as your skills increased, the need for code completion, cross-referencing, inline debugging, source code control, refactoring and macros all became more valuable. Witness the training videos on http://www.rubyonrails.org where developers use a browser, a console window and the Textmate editor to build sample applications. The simplicity is appealing.

Continuous Learning Curve: Javascript

I’ve avoided spending too much time delving into Javascript. My four-year switch from Windows-uber-alles (including VFP, VSS, SQL Server, Ingres, Oracle, HTML, OLE, ODBC, SCC, COM, XML, MCSE, MCSD, XSLT, DCOM, RSS, MS Office, Exchange, MAPI Bad, SMTP Good, MVP and more acronyms!) to Linux-Apache-MySQL-Postgres-PHP-Python-Ruby, not to mention XHTML, CSS, bash, Smarty, Django, TWiki, dojo, et al had kept me busy enough. But a new client assignment needs a highly-interactive web site and dropping in great big globs of someone else’s Javascript is not going to solve all the problems; at a minimum, I’ve got to be able to read it, debug it and tune it for the client’s particular needs.

Did you know that a limited version of Safari, the O’Reilly online library, is included with a membership to the Association of Computing Machinery? I’ve been an ACM member for years and been meaning to get around to trying this out. My Javascript studies seemed the perfect occasion. I’m reading Shelley Power’s Learning Javascript online and getting quite a bit out of it. I love when you settle down with a book and start going “Oh, is that what that meant?” or “Now I get it!”

Notes from NH Ruby group, 15-April-2008

Eight people attended the April meeting of the Ruby Special Interest Group, http://www.nhruby.org, held as usual on the second Tuesday of the month in the meeting room at RMC Research.

We lead the night off with a brief video on Passenger from Phusion.nl, a new Apache module that host rails, like a mod_rails (not _ruby) module. Nick reported he’s been running it on one of his sites for a while and is pleased with the performance and the marked decrease in load. Having a mod_rails option available is likely to get hosting companies offering fractional horsepower shared virtual machines to be able to host Rails apps, bringing Rails onto the $7-a-month commodity hosting sites. Cool!

I asked for recommendations on the right way of parsing incoming XML and SOAP packets and was referred to Hpricot and soap4r. Another attendee asked for recommendations on Content Management Systems. Nick mentioned Radiant (which we got to see later in the presentation). comatose and railfrog. We got into a couple discussions during the evening on the stability and applicability of Ruby and Rails for many situations, citing high traffic web sites and the several runtime engines/VMs like JRuby in which Ruby code can run.

Finally, we arrived a the Live Hacking session where we got to watch Scott and then Nick show how to add new functionality to an existing app. Actually getting to see another craftsman at work brings out all sorts of good questions. Scott added chronic to his To-Do application. Chronic is a “natural language datetime parser,” according to the web site, and Scott showed how it could easily be integrated into an existing app, and accept values like “Next Tuesday” or “Thursday last week” and return sane datetime values. We also looked at what would be involved and set up a unit test to check our changes.

Nick showed us a little more of the Radiant application, and his work on making the Radiant CMS support multiple sites. The source he’s working on is stored at github.com, and the networking graph is a thing to behold. Nick spent a little time getting us familiar with the different philosophy of git (branching is inexpensive, merging is very smart, branches can interact in many ways including pushing to and pulling from each other) and then grabbed the most recent code and hopped right into to refactor a code snippet that was an inelegant hack using a deprecated technique into one that was more proper, running our unit tests before and after to confirm the refactoring didn’t break anything.

An excellent evening as usual! Thanks to all for their attendance and participation, to Scott and Nick for organizing, announcing and presenting, and to RMC Research for providing the nice facilities.

What I’ve listened to this week, 29-Mar-2008

PUI (Podcasting Under the Influence), Peter Nikolaidis is “drunk with the power” of swapping roles with his co-host Harlem for this week’s podcast of “Fresh Ubuntu,” titled “Peter’s Big Break.” These two guys put on a very good show each week, with high-quality audio, the week’s Linux/Ubuntu news, a “man page minute,” software reviews and more. Worth a listen. (Yes, they read a letter from me in this episode. At least I didn’t write too gushy a fan letter. How embarrassing.)

Over at The Conversations Network, Executive Director, Doug Kaye has a brief posting and audiocast on the new features of The Conversations Network. They are a 501(c)(3) non-profit organization that provides tremendously useful audiocasts for any computer professional. I’m a donor (the fact that I’m a “major” donor is an indication of how underfunded they are!) and encourage you to take a listen and contribute if you find it as valuable as I do.

Jon Udell has a regular “Interviews with Innovators” show on IT Conversations. This week, he talks with Ward Cunningham, famed creator (and co-author of the book of the same name) of “The Wiki Way,” about his latest venture and some of things he’s learned along the way.

Cyndi Mitchell had a sponsored keynote at RailsConf 2007 promoting the RubyWorks stack for the enterprise.

The Essentials of Stackless Python” from PyCon 2007, NOT from the Conversations Network, but direction from python.org

Tim Bray’s keynote at O’Reilly RailsConf, via IT Conversations

What I’m listening to this week: IT Conversations | O’Reilly RailsConf | Tim Bray. From the It Conversations website:

In this keynote presentation, Tim Bray, the Director of Web Technologies at Sun Microsystems, covers a broad range of topics such as Sun’s interest in promoting Ruby, the case for JRuby in the enterprise, the areas Ruby needs to improve on, features that may be good extensions to the Rails framework, REST, HTTP Etags, caching in Rails, the Atom publishing feed, Microsoft’s WCF and Sun’s business model of making all its products open source.

Tim’s a great speaker, and has a lot of interesting insight into Ruby and Java and Sun. He makes no bones about the fact that he’s a paid-for speaker, since Sun was a sponsor of RailsConf, gets in his obligatory plug for Sun, but also talks insightfully about the ways that Ruby can scale better on top of Java, and that Sun’s looking forward to selling lots of boxes when it does.

State of the Computer Book Market, Part 4 – The Languages – OReilly Radar

Over at O’Reilly, Mike Hendrickson posts State of the Computer Book Market, Part 4 – The Languages – OReilly Radar. Bear in mind in the world of lies, damned lies and statistics, these are statistics. Like measurements of job posting vs. languages, or web pages vs. languages, these aren’t an indication of what languages are in use out there, or what languages are suitable for use. This is just a measurement of what book titles sold the most, grouped roughly by language. If the best book on your favorite language is years old, it’s probably shown as small here. If a bunch of crappy books got published on the language-of-the-week, and the authors and publishers did a good job of getting a buzz going, it’s probably scoring high. Don’t use this to decide whether to use vi or emacs, tabs or spaces.

But it’s interesting data.

Powered by WordPress. Designed by Woo Themes

This work by Ted Roche is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 United States.