Ruby Internals

Here’s an interesting article about how Ruby (the programming language not the gem) is interpretted or compiled. (It’s funny to contemplate what that question might mean to someone who thinks we are talking about a gem and not a programming language. ‘Is Ruby Interpretted or Compiled’ ? Say what??)

Anyway, to whoever is left reading this, I thought this article was quite interesting: Is Ruby interpreted or compiled? – Pat Shaughnessy. Here’s a quote to give you a taste:

“Ever since I started to work with Ruby in 2008, I?ve always assumed that it was an interpreted language like PHP or Javascript ? in other words, that Ruby read in, parsed and executed my code all at runtime, at the moment my program was run. This seemed especially obvious since the default and most popular implementation of Ruby is called ?MRI,? short for ?Matz?s Ruby Interpreter.? I always thought it was necessary to use an interpreter to make all of the dynamic features of the language possible.” (from Is Ruby interpreted or compiled? – Pat Shaughnessy)

[GEEKY] Using bundler to create and publish a gem

A really useful link. For Ruby programmers only. 

Jorge Coca | [HOW-TO] Build a Rails gem with Bundler – Gumby Framework:

Since I’m building a new Rails website, and I wanted to use Gumby as a part of my Gemfile, and I couldn’t find a gem with the newest version of the framework, I decided to write my first Rails gem and publish it to the community.


Great new book on Object Oriented design (in Ruby)

I first came across Sandy Metz in this video:

2009 – Sandi Metz – SOLID Object-Oriented Design from Gotham Ruby Conference on Vimeo.

If you are interested in Object Oriented design you will enjoy this. She is a wonderful speaker, and fun to listen to. Even if you don’t agree with (or understand) some of the concepts, I promise that you will enjoy listening to it. Since then Sandy has come out with a wonderful new book which I highly recommend:  Practical Object-Oriented Design in Ruby: An Agile Primer (Addison-Wesley Professional Ruby Series). You should definitely take a look at it. I won’t even attempt to summarize it but I really love her writing and how she expresses herself. The writing here is a cut above all the other techie books I’ve read recently. I’d go as far as saying that it’s “literate” … whatever that means, exactly!

The book starts with a wonderful expression of “purpose” as an engineer thinks of it:

“We want to do our best work, and we want the work we do to have meaning. And all else being equal, we prefer to enjoy ourselves along the way.”

is that not just perfect?

[GEEKY] Interesting collection of algorithms and great Ruby tutorial

Over the last several months I’ve been following a series of blog postings by Jamis Buck on the esoteric and quirky topic of writing programs to design mazes.

For reasons that are not clear, Jamis developed an obsession with mazes and has collected a series of articles detailing many different algorithms, their tradeoffs and concepts and writing them up beautifully.

Today in his final installment he summarized the project:

Over the last six weeks I documented eleven different maze generation algorithms. It’s been a blast. I’ve had so much fun researching and implementing these! It’s been great to see some of you taking my advice and applying these to learning a new programming language, as well; I really believe there is a lot of value to be had, there. (from Maze Generation: Algorithm Recap)

If you like programming, or like algorithms, or want to improve your Ruby skills, I strongly recommend this series: Maze Generation: Algorithm Recap

[GEEKY] Nicer way to run Ruby tests

Just came across this handy-dandy tool to run tests for Ruby and Rails, and produce much nicer and readable traces so you have a prayer to sort out what is going on when stuff fails.

Test::Unit Reporter — A new look and feel for Test::Unit output

TURN is a new way to view Test::Unit results. With longer running tests, it can be very frustrating to see a failure (….F…) and then have to wait till all the tests finish before you can see what the exact failure was. TURN displays each test on a separate line with failures being displayed immediately instead of at the end of the tests.


[Geeky] RubyConf Summary (updated 2)

RubyConf 2010 was excellent. It was my first and probably not my last. Some general thoughts and then a master list of links (the real meat.)

  • Unlike most all ‘business’ type conferences and talks I have gone to, the RubyConf style of presentation (and perhaps the Rails or Ruby community — I don’t know where it stops) is beautifully minimalist. Very few words on slides, large and impactful photographs. Is it because no one uses PowerPoint and few even use Keynote? I don’t know. But there were no text heavy, bullet heavy word slides. And also, lots and lots of code (that part is definitely a geek thing.)

Here is a loosely organized set of links to the things that hit me most at RubyConf this year. It’s random and idiosyncratic (same thing?) but it reflects my real-time notes and feelings. These were all new to me but they might be old news to you, of course.

These are my top links:

  • nicksieger’s warbler at master – GitHub – This was one of my top 5 talks. Warbler is a tool to package a Ruby and/or Rails application into a single .jar or .war file to be run on any other computer that has a Java VM installed. If this works as advertised it is a very important bit of technology. I am going to try it out
  • MacRuby: The Definitive Guide – Another one of my favorite talks, about MacRuby, a Mac OS X implementation of Ruby. From what I saw it looks very real, with good integration with all the Mac OS X libraries, and running on top of the Objective C runtime. It wasn’t totally clear what Apple’s posture is relative to MacRuby, but I hope it is positive.
  • mattmatt’s showoff at master – GitHub – Showoff is a very neat presentation tool. It’s not an app like Keynote its actually a gem which processes a minimalist markup and serves it up in a local Sinatra server. Also easily lets you deploy your presentation to Heroku. Hmm. Is it mattmatt’s or schacon’s showoff at master – GitHub???
  • Git Wrangling – This was an intense and complex talk about Git. There is as we know, so much more in Git than most people use, and this talk touched into it. Also, Scott Chacon had a funny (but I think he was serious about it) interlude about how to be a gentleman. It includes the recommendation that a gentleman will always rise when a lady enters the room. Also check out these links with further details about the slides (really, they are good!).
  • Ruby Mendicant University – A really inspiring talk by Greg Brown about his vision and mission to teach people about Ruby and programming. But this is not a fly by night little course, Greg has a big vision and is pursuing this in a comprehensive and highly innovative manner. I was very impressed and will follow and support Greg’s work. A great guy!

And here are many more really good ones:

  • – And this is the lightening talk that never happened but I saw mentioned in an email. Apparently there was not sufficient time allowed, and some great talks never happened. This one is about a gem called wrong that defines (can you believe it?) yet another way to express expectations (like assert_ and expect_ and etc etc.) But it’s really nice and minimalist. I think it’s a good addition to the canon!
  • DNS Simple – This looks important to me, and I think I could really use it. Except… I wish I understood better where DNS Simple fits in my scheme of things. Does it mean that I could ditch GoDaddy as the keeper of my own set of domain names? Would it cost less? Would I be able to cloak my personal name and address like I do with GoDaddy? What are the plusses and minusses? (N.B. See the detailed responses to all these points in the comments)
  • The GO language – I hadn’t heard of this language, although it’s pretty (really) old after all it’s only about 1 year old. Worth looking at for its support of co-routines.
  • – A nicely executed very lightweight project planning ‘virtual whiteboard’, for the new/old Kanban methodology.
  • Ticketmaster – A tool or platform to connect project/ticket tracking systems together. I post to my ticket tracker, and TicketMaster forwards the new ticket to one or more other ticket trackers (e.g. those my client uses.) This is a tricky problem – how do you handle deletes, and do changes to tickets flow both ways? I didn’t look how well TicketMaster tries to solve those problems.
  • Hipster – A bit of 2010 Culture that I hadn’t seen before. Ok. Culture is stretching it.
  • – PDF of the Mac Ruby Presentation
  • Apigee | Free and Enterprise API Management Products and Infrastructure – This is a super cool tool to test and experiment with web apis. Interestingly this comes from the guy who build
  • rabbit | | your community gem host – Another presentation tool, analogous to showoff.
  • Stop procrastination: Introducing the noprocrast gem – – Proof that I am not the only one that gets distracted while working. Here a fellow designed a little utility to cut him off from the net while he is trying to focus. This is called self-binding. Check out this other article which I have pointed to before about the concept of self-binding (it’s not as kinky as it sounds.)
  • RubyConf 2010 | SpeakerRate – We are a community who loves building tools. Here’s a tool that lets listeners at any conference rate speakers. Very cool building block.
  • – Daniel presented about Ruboto, a tool allowing us to write Android applications in Ruby. One nice thing that Jack covers, and I saw this in many of the presentation, is a forthright summary of other tools and solutions that one might consider in addition to Ruboto.
  • Redcar – An all-ruby programmers editor — TextMate written in Ruby. This was a very popular talk and it generated a lot of conversation. It is a work in progress but is very promising. The demonstrations of writing custom commands in Ruby on the fly were impressive. For me personally, I still prefer a full IDE especially one with a visual debugger. I am actually surprised that Rubyists as far as I can tell don’t use an interactive debugger (see this survey)
  • – A really good presentation. This pdf (after a bunch of photos at the beginning) is chock full of specific utilities and techniques for advanced profiling and analysis of your ruby and Rails code.
  • ZOMG WHY IS THIS CODE SO SLOW – A presentation that unfortunately I missed, but so good that the slides stand on their own. Lots of specific tips around Rails and Ruby Performance
  • bfts’s minitest-2.0.0 Documentation – A small replacement for Test::Unit. I thought I heard that it was part of Ruby 1.9, but I might have misunderstood.
  • tmm1’s perftools.rb at master – GitHub – An interesting package of performance tools on Git
  • MIRAH – An interesting little language, it looks like Ruby (but it’s NOT Ruby). It is statically typed and compiles directly into efficient JVM byte code.
  • schacon’s grit at master – GitHub – One of several gems to access Git and Github functionality from Ruby
  • libgit2’s ribbit at master – GitHub Another one of several gems to access Git and Github functionality from Ruby
  • BusyConf – Making Great Conferences Even Better – A promising service for conferences. From what you can see so far, there will be a nice and detailed conference schedule. But I can imagine many additional bits of functionality.
  • Rc2010 refinements – A presentation by Shugo Maeda, close confidant of Matz and a Ruby Committer. The presentation contemplates some rather exotic additions to the Ruby language to overcome some problems that are encountered by large systems built in Ruby. Coyly described as features that might be in Ruby 2.0, which is on an unknown schedule.
  • RabbitMQ – Messaging that just works – A highly touted message queueing platform, usable with Ruby and Rails and other systems.
  • collectiveidea’s delayed_job at master – GitHub – Delayed job is a popular Ruby based background job product.
  • markbates’s dj_remixes at master – GitHub – Mark Bates adds some great additional functionality to Delayed Job
  • slagyr’s solari at master – GitHub – A very cute Raffling applications used when you have to raffle something to a big crowd. Very cute, looks great, sound effects and so on.
  • robey’s kestrel at master – GitHub – Kestrel is the follow on to Starling, which is a message queueing platform, originally from Twitter.
  • Home — – JRuby is JRuby. I haven’t tried it yet. But my sense is that it’s definitely worth using in many situations. You can access the huge collection of Java libraries, and, because of the highly optimized JVM, you often will have better performance than MRI (the original and still default Ruby VM)
  • Rails Talk Ruby CSS Parser – I was thinking back to some of my own projects, and one is to create a CSS simplifier/optimizer. Here’s a Ruby based CSS parser.

The Boston node of OSDV

I’ve been working quite a bit on the Open Source Digital Voting foundation project over the last 9 months or so. It’s really weird but I’ve turned myself into a mini-expert on how elections are organized and run here in the USA. It’s fascinating and way complicated.

OSDV is a non-profit organization dedicated to developing a suite of election (as in Democracy) hardware and software.

The umbrella name for that project is TrustTheVote: an open source project, which will work closely with election officials around the country to learn requirements and then develop software which in turn will be offered free of charge to those who want to deploy it. So we won’t be selling the technology, but we will be evangelizing it like crazy. Think Apache or Drupal.

Here are some links to satisfy your curiosity:

We are getting closer and closer to being properly funded with some major contributions so it is time for me to start finding people who might want to join the team. This being an open source project, the idea is of course that any interested person can look and work on the code.

But we also plan to hire 3 developers in the Boston area. Right now it looks like a good part of our code will be Ruby and Ruby on Rails. But that may change; it certainly will be broadened. Really more than anything I would ask if you consider yourself a really good software developer, who loves to design, write, debug and deploy code. And then secondly I would ask if working on a project that is mega ambitious and/but that has a chance to really have an impact on our society – whether that excites you.

Please contact me directly if you want to learn more or throw your virtual hat into the virtual ring.

[GEEKY] Built my first gem (Ruby Gem that is)

I’ve gotten interested in what is going on in the public sector, in particular in the world of non profits. I’ve learned a lot, met many people and been trying to define a project that would at the same time do something to better the world as be an interesting and fulfilling product challenge (notice, missing from that list is “make a lot of money”)

I want to start posting some of the cool things I am figuring out but so far I haven’t because I can’t really figure out how to organize it.

One area that I have immersed myself into is the many diverse groups who are doing work promoting government openness and transparency by, among many other things, creating the technical bridges to allow information that is already being collected to be more easily accessible. There are many of them, and one of them is the Sunlight Foundation. They are doing some really cool work, both themselves, and sponsoring and granting others who share their goals.

Wow what a long wind-up.

Anyway, in digging deeply into their APIs and datasets I decided to learn by doing and created a Ruby Gem called govsdk with the following goals:

  • A simple and consistent sdk to all the various government (federal, state and local) APIs available.
  • Totally hide from the user of the SDK what those APIs are, what the networking and REST pieces are. Instead provide classes which represent the natural domain objects and behind the scenes accesses appropriate datasets and APIs.
  • Identify the ‘current’ best APIs for the various facts and figures so that the user need not do the work to learn each of the organizations and data models. When new ones come online or change, hide that as well.
  • Provide all this in an open source library, for free, with example code, documentation and test suites.

Version 0.0.1 of the GovSdk GEM (0.0.1 — get the idea?) is implemented and available at GovSdk. Check it out, but expect it to change because this is still quite embryonic.

[GEEKY] Where are the east coast Rails / Ruby conferences?

“So yet another way you can help Ruby and Rails Activism is by attending
(supporting) a conference. Below you’ll find conferences coming up in
the next 6 months. If you think I’ve missed one, or if the information
is incorrect, please post a comment.” (from Riding Rails)

If you look at the list of conferences and meetings, all looking interesting, there’s nothing anywhere near Boston. Hey, whatup?