Recently in Ruby Category

gem install punch for drop-dead easy time tracking

| | Comments (2)

While at cabooseconf last month, I found out about one of the coolest time tracking tools ever: punch. (Thanks to cardiod from OG)

According to its own description, it's a

k.i.s.s. tool for tracking the hours spent on various projects. it supports logging hours under a project name, adding notes about work done during that period, and several very simple reporting tools that operate over a window of time.

I find this to be a much easier method of tracking time than many alternatives, including the zillions of time tracking/billing web 2.0 sites. In fact, an hour or two of hacking could leave someone with a pretty decent time tracking AND invoicing tool.

And wouldn't ya know it, it's as simple as gem install punch.

OmniFocus Hack - the mobile list

| | Comments (0)

For those of you who use OmniFocus and won't be getting an iphone, this one could really come in handy. It's a ruby script that talks to OmniFocus via OSA, grabs all the items in a given context, then writes them as poorly-formed html over ssh to a predefined destination. Cheap and dirty, but it's the quickest way I've found to get stuff like this available anywhere, especially in a mobile phone browser.

#!/usr/bin/ruby

require 'rubygems'

require 'rbosa'

require 'net/ssh'

of = OSA.app 'OmniFocus'

shopping_list = of.default_document.contexts.collect { |x| x if x.name == 'Errands' }.compact.first.contexts.collect { |x| x if x.name == 'Shopping' }.compact.first

items = shopping_list.tasks.collect { |x| x.name unless x.completed? }.compact

def post_file( shell, file, datum )

shell.touch(file)

shell.send_command("echo \"#{datum}\" > #{file}")

end

def build_html(items)

"<ul>#{items.collect{|item| '<li>' + item + '</li>' }}</ul>"

end

Net::SSH.start( 'myserver.dreamhost.com' ) do |session|

shell = session.shell.sync

post_file shell, "~/shoppinglist.mydomain.com/index.html", build_html(items)

shell.exit

# session.loop

end


RailsConf and CabooseConf '08 Recap

| | Comments (0) | TrackBacks (0)
RailsConf 2008 is now over. It was a great conference, and here are a few of the highlights:

Avi Bryant demonstrated MagLev, a ruby vm written on top of the smalltalk gemstone architecture. Summary: Code and data in the global namespace of one ruby process is available in another ruby process. Oh, and if that's not enough, there's transactional memory too.

On the theme of distributed processing, there was a great demo of Skynet, a map/reduce style processing framework. The Rails plugin for skynet gives some great features with a slick API. For example, the 'distributed_find' for ActiveRecord models will let workers each handle a small slice of any given model.find and process the data accordingly.

David Chelimsky gave a great run through of what rSpec's story runner looks like, a tool which I'll be using as much as I can justify. Integration with webrat makes it even more useful, as now stories can be tested using the full rails stack.

The highlight of the weekend was hanging out with Phil and working on Bus Scheme. My first real pair-programming experience was hugely insightful, and now I've decided that it's essential that I find some time to work closely with some great programmers on a more regular basis. Aside from learning some excellent emacs tips (eshell, for instance), we got lots of TODOs knocked off and made some important structure changes in bus-scheme's AST.

Now I've just got to digest all the new code I've seen and the 20 new RSS feeds I now subscribe to.

About this Archive

This page is a archive of recent entries in the Ruby category.

Scheme is the next category.

Find recent content on the main index or look in the archives to find all content.