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:
A really useful link. For Ruby programmers only.
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.
I first came across Sandy Metz in this video:
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?
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
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.
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.
- 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:
- https://github.com/sconover/wrong – 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.
- http://www.kanbanpad.com/ – 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.
- http://dl.dropbox.com/u/163257/macruby_2010.pdf – 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 Swivel.com.
- rabbit | RubyGems.org | your community gem host – Another presentation tool, analogous to showoff.
- Stop procrastination: Introducing the noprocrast gem – rfw.posterous.com – 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.
- http://blog.danieljackoway.com/rubyconf-2010.html – 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)
- http://tmm1.net/debugging-ruby-systems.pdf – 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.org – 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.