Entries Tagged 'design' ↓

Upcoming Events for Dave Troy…

Well folks, it’s shaping up to be a busy few weeks!

This week, my projects Twittervision and Flickrvision will be opening at the Museum of Modern Art in New York, in an exhibit called Design and the Elastic Mind. A press preview will be held on Tuesday morning at 10AM, and opening night will be at 6:30 or something that day. It’s pretty exciting; I never suspected my locking myself in a room and coding would lead to this sort of thing! The exhibit is open to the general public Feb 24-May 12, 2008.

UPDATE:
Opening Night Photo Report!

Beyond that, here’s what else is going on:

Jeff Pulver’s Social Media Breakfast in New York – Feb 26 8AM
Jeff’s been sponsoring these events in cities across the country (and around the world) the last few months, and I made it to the most recent one in Washington DC on February 7th. It was a blast; a chance to catch up with some old friends and make many new ones. If you are interested in social media, I suggest you seek out one of these breakfasts near you. Seek out the details for this event on Facebook and RSVP. They fill up fast.

If all goes well, I will also be appearing on Jeff’s show PulverTV as part of my visit to New York that day. Please stay tuned for the details on that.

eComm 2008 – Sunnyvale, CA – March 12-14
I’ll be speaking at eComm 2008 about open source telephony, social media and making wild and crazy things. eComm is the next version of what was O’Reilly Media’s eTel show. While no longer affiliated with O’Reilly, it should be the premier venue for telecommunications innovators and will feature a good representation from the handset, carrier, and open-source worlds. Of all the shows I attended last year, eTel was one of the most valuable, and eComm is carrying the torch forward.

There’s still time to get in on eComm. Please visit the eComm website for more information and to register.

VON.x 2008 Spring – San Jose, CA – March 17-20
This is Jeff Pulver’s big semi-annual US tradeshow about IP Communications. While originally focused on VoIP, it has expanded to cover video and social media. I’ve been attending nearly every VON show since 2003 or so and have found the sense of community and camaraderie to be very valuable. Don’t miss the party. Jeff manages to get some great bands and everybody always has a great time.

This year VON.x will be co-located with Digium Asterisk World, a joint-venture between Pulver Media and Digium. I’ll be speaking at Digium Asterisk World on March 18th. Please visit the VON website for more information and to attend.

Other Jeff Pulver Social Media Breakfasts
I’ll also be attending these other Jeff Pulver social media breakfasts:

  • San Jose, March 17 (as part of VON)
  • Baltimore, March 25 (it’s in my hometown!)
  • Washington, DC, May 1

I’m looking forward to meeting folks at all of these events and hope to have a lot to talk about in the next few weeks. Meantime, please do stop by the MoMA in New York and check out Design and the Elastic Mind.

See you on the road!

ActsAsRenderer Brings Output to Models

Judging by the fact that there are several posts about this topic out in the wild, and that I have come across a need for it more than once, I thought it would be helpful to wrap up this functionality into a plugin and put it out into the world. Give a warm welcome to ActsAsRenderer!

Before you go off on a tirade about the evils of violating MVC, let me first say I know the arguments and I agree with you. However, in a world of complex systems where not everything is done via full-stack HTTP, there are legitimate reasons to output data directly from models, and ActsAsRenderer helps you do it.

With ActsAsRenderer, you get four cool new functions.

For your model class, you get render_file and render_string. For your instances, you get render_to_file and render_to_string.

Probably the most common (and legitimate) use of this kind of functionality is for rendering data out of a Rails script (say with script/runner). Since that environment is not a full-stack HTTP view of the world, it’s a real pain to render any kind of structured output. Not anymore! With acts_as_renderer in your model, you can render your views and give your model the voice it’s been lacking!

I’ve had this need come up several times. Most recently, I built a server configuration management system using Rails. While it is nice to preview the rendered configuration files using Rails-over-HTTP, it is also essential to be able to write those same configuration files out to the filesystem. In another case, I had a background DRb process that needed to be able to render templated output to the filesystem. I had to go build a mock-controller and do some pretty unsavory things; all of that would have been obviated with acts_as_renderer.

Now, I can simply say:

class Server < ActiveRecord::Base  acts_as_renderer

  def build_configuration    CLIENT_CONFIG_FILES.each do |f|      render_to_file("configs/#{f}", "#{config_dir}/#{f}.conf")    end  endend

The render_to_file function renders the templates located in configs (under app/views by default) and writes them to the files specified in the config_dir; it’s also smart enough to know that render_to_file is being called from a ‘server’ instance and sets @server accordingly. So my templates in configs are simply:

; Configuration Snippet for Server <%=@server.description%>

<%= render :partial => 'configs/queue', :collection => @server.queues %>

Please do think before using this plugin. It can be used for some seriously evil violations of good MVC design practice, and you are responsible for your own actions. However, this can also be used to make your existing designs *much* more robust and elegant, and I encourage you to use it where that is true.

It’s ready to drop in. Everything is there, including tests. Enjoy!

NOTE: Version 1.0 only supported Rails 2.0; I just added version 1.01 which will work with either Rails 1.2.x or 2.0.x. Please feel free to ping me with any questions.

acts_as_renderer at RubyForge

Hacking Freerice.com: A Program to Feed the World

While I was working on some changes to Twittervision yesterday, I saw someone mention freerice.com, a site where you can go quiz yourself on vocabulary words and help feed the world. How? Each word you get right gives 10 grains of rice to, one hopes, someone who needs it.

The idea is that you will sit there for hours and look at the advertising from the do-gooder multinationals who sponsor it. Which I did for a while. I got up to level 44 or so and got to feeling pretty good about Toshiba and Macy’s.

It occurred to me though that my computer could also play this game, and has a much better memory for words than I do. In fact, once it learns something, it always chooses the right answer.

So I wrote a program to play the freerice.com vocabulary game. In parallel. 50 browsers at a time. Sharing what they learn with each other. Cumulatively.

It’s a multithreaded Ruby program using WWW::Mechanize and Hpricot. Nothing terribly fancy, but it does learn from each right and wrong answer, and after just a few minutes seems to hit a stride of about 75-80% accuracy. And a rate of about 200,000 grains of rice per hour (depending on the speed of your connection).

UPDATE: With some tuning, the script is now able to push out about 600,000 grains of rice per hour, which according to the statistic of 20,000 grains per person per day, is enough to feed over 720 people per day! If one thousand people run this script, it will (allegedly) generate enough to feed 720,000 people per day.

Before you go off on me, disclaimer: Yes, I realize this program subverts the intent of the freerice.com site. I’ve released this not to “game” freerice.com but simply to show a flaw in their design and have a little fun at the same time. If what they are after is human interaction, this design doesn’t mandate it. That’s all I’m saying.

Run it for a while and see how many people you can feed!

Prerequisites:

  • Ruby (Linux, OS X, Other)
  • Rubygems
  • gem install mechanize –include-dependencies

Download the code

MoMA NY Selects Twittervision & Flickrvision

Yesterday, I received final confirmation that the Museum of Modern Art in New York has selected my mash-ups twittervision.com and flickrvision.com for its 2008 exhibition Design and the Elastic Mind.

I’m certainly very flattered to be included and have never considered myself to be an artist. I didn’t seek out MoMA on this. I am just very, very happy to have an opportunity to participate in a small way in the ongoing dialog about what technology means for humanity. Crap. Now I sound like an artist.

Incidentally, this means that twittervision.com and flickrvision.com are the first ever Ruby On Rails apps to be included in a major art exhibition. I already told DHH.

Anyway, at RailsConf Europe a few weeks ago, Dave Thomas’ keynote speech emphasized the role of software designers as artists. He said, “treat your projects as though they are artworks, and sign your name to them.” Or pretty close to it. I think this is incredibly valuable advice for software designers today.

We’re past the days of using machines as amplifiers of our physical efforts. It’s not enough to jam more features into code just so we can eliminate one more position on the assembly line. We’re at a point where the machines can help amplify our imaginations.

Today, creativity and imagination (what some folks are calling the right brain) are becoming the key drivers of software and design. With imagination, we can see around the corners of today’s most pressing challenges. While technical skill is certainly valuable, if it’s applied to the wrong problems, it’s wasted effort.

Creativity, imagination, and artistry help us identify the areas where we should put our efforts. They help us see things in new ways.

Everywhere I turn (perhaps partly because I am a Rubyist), I hear discussions of Domain Specific Languages, and of framing our problems in the right grammars.

This is hugely valuable because the creative part of our brain thinks in terms of semantics, grammars, and symbols. If we can’t get the words right, our imaginations can’t engage.

Everything stays stuck in the left side of our brains when we have to jump through hoops to please some particular language or development environment.

I hope you all will come out to see Design and the Elastic Mind when it opens at NYC MoMA, Feb 24 – May 12 2008. I’m not sure how we’re going to present the sites but we’re going to see if we can get some partners and sponsors involved to do something really beautiful.

And again, thanks to MoMA for the selection. And here’s to creativity, imagination, and artistry as the next big thing in software design!