@rmanalan

Going rogue inside a big company

Going rogue inside a big company (a la Best Buy) - (37signals)
How can you apply Getting Real-ish ideas inside a big company? Here’s an idea: Go rogue. Pick something and do it under the radar. Create something in a few weeks that normally takes a few months. Do something in a way that works better than the status quo (or shows the promise of working better), Then you won’t need to convince anyone with words — the results will speak for themselves.
This is exactly how we accomplished building Mix and Connect at Oracle.  Think of how much can be improved if those with a passion to change something actually did it.
Posted

1,474-Megapixel Photo of President Obama’s Inaugural Address

How I Made a 1,474-Megapixel Photo During President Obama’s Inaugural Address | David Bergman -- ALL ACCESS -- sports, concert, and music photographer
I made a panoramic image showing the nearly two million people who watched President Obama’s inaugural address. To do so, I clamped a Gigapan Imager to the railing on the north media platform about six feet from my photo position. The Gigapan is a robotic camera mount that allows me to take multiple images and stitch them together, creating a massive image file.

My final photo is made up of 220 Canon G10 images and the file is 59,783 X 24,658 pixels or 1,474 megapixels. It took more than six and a half hours for the Gigapan software to put together all of the images on my Macbook Pro and the completed TIF file is almost 2 gigabytes.

The end result... amazing!

Posted

Monkeygrease Update

For those of you who know about Monkeygrease and use it, you might have noticed that http://monkeygrease.org is no longer accessible.  I let the domain expire last month.  I decided to retire the project since it's not really relevant to my work any more.  If someone else is interested in picking it up, post a comment.  Otherwise, I've moved the content to http://manalang.com/monkeygrease and the code is now hosted on GitHub.  So, if you're interested in forking it, go for it.
Posted

"Looks Good, Works Well"

[cross posted from http://theappslab.com/2008/11/19/looks-good-works-well/] Last night, I was lucky enough to see Bill Scott (of Yahoo Design Pattern Library, YUI, OpenRico, Netflix fame) present at my local Ruby user group. He shared his thoughts about the successful design patterns that have defined today's web. As someone who enjoys brilliantly designed "things" including web apps and sites, I found his talk very interesting.
Posted

Multi-Model Solr Search in Rails

A few of the JRuby on Rails apps I run use acts_as_solr.  Turns out that the prefered search solutions in Rails today are Thinking Sphinx and Xapian, neither of which I've ever tried before... maybe on my next project.  Anyway, acts_as_solr is pretty useable, however, I've always been stumped with how to perform queries across ActiveRecord models.  Turns out that acts_as_solr has a method called "multi_solr_search" which performs queries across models.  However, it's not very well documented and there's not a whole lot of information in the intertubes.  So, here's how I got my unified site search to work: [code lang="ruby"] # search_controller.rb: default execution searches multiple models. If a scope param is provided # it will search only that model. multi_solr_search can return two two different formats, the object # name and id, or the actual object. If you're query returns a lot of results, you don't want to load # up every single object. The code below loads the object name and id then just loads the object # for the current paginated group. This is using will_paginate. def all if params[:scope] and ["UserProfile", "Idea", "Question", "Group"].include?(params[:scope].classify) scope = params[:scope].classify models = [scope] else scope = "UserProfile" models = [Idea, Question, Group] end # execute solr multi model search based on the scope selected above solr_results = scope.constantize.multi_solr_search(params[:q], :models => models, :results_format => :ids, :limit => 1000).docs.compact @total = solr_results.size solr_results = solr_results.map {|m| r = m.fetch("id").split(":")} per_page = 10 page = params[:page] || 1 # determine array indices that are to be included in the current paginated group first_idx = (page.to_i > 1) ? ((page.to_i - 1) * per_page) : 0 last_idx = (first_idx + per_page.to_i - 1) last_idx = last_idx page, :per_page => per_page) end [/code] I'd love to see if someone could clean this up more. Any takers?
Posted

Rails: Excluding plugins from loading

I'm doing some refactoring of one of our Rails apps and saw something like this: [code lang="ruby"] if RAILS_ENV == 'test' config.load_paths two different solutions, but neither of them worked on Rails 2.1.x. So, here's what I came up with: [code lang="ruby"] # Load all plugins with init.rb... :all does the same thing, but doesn't allow # us to exclude plugins from different environments. config.plugins = Dir[ "#{RAILS_ROOT}/vendor/plugins/*" ].map { |p| File.basename(p) if File.exist?(File.join(p,"init.rb"))}.compact if RAILS_ENV == "test" config.load_paths += Dir[ "#{RAILS_ROOT}/vendor/testing_gems/**"].map do |dir| File.directory?( lib = "#{dir}/lib" ) ? lib : dir end config.plugins -= [ :acts_as_solr, :"rails-footnotes" ] end [/code] Notice how I also separate out the gems we use for testing -- no need to load those in other environments.
Posted

Job scheduling with JRuby and Rails

Job scheduling with JRuby and Rails. For the past year, I've looked at several background schedulers for JRuby on Rails apps (Bj, BackgroundRB, Rufus Scheduler, etc.) and have come up with solutions that have been sub-optimal.  Looks like I missed this post from Jens Krämer running down some other options including using the popular Quartz scheduler in Java.  I also didn't know that Goldspike had it's own built in servlet for handling simple background tasks.
Posted

Twine: “We Organize That Shit.”

Twine: “We Organize That Shit.” "You use Twine to collect, find some shit, and share that shit with people you know. Twine ties it all together by topic, so you can have that shit in one place and it is easy for you to find it. You know what I’m sayin’?"
Posted

Jason Fried's talk at the Business of Software conference (September 2008) - (37signals)

Jason Fried's talk at the Business of Software conference (September 2008) - (37signals). Excellent talk about how to build apps, a strong brand, and a good company from Jason Fried at 37Signals.
Posted

Washington Wire - WSJ.com : Joe the Plumber’s 15 Minutes of Fame

Washington Wire - WSJ.com : Joe the Plumber’s 15 Minutes of Fame.
But things weren’t all sunny for Joe as the national press began digging into the details of his life. It turns out he owes taxes to the state of Ohio amounting to $1,182.98. He’s not licensed as a plumber and has been working without one. Not to mention, his name’s not even Joe! (Full name: Samuel Joseph Wurzelbacher.) His name is apparently misspelled on the Lucas County Board of Elections database, which raised questions over whether he may be disqualified to vote in November anyway. Further, even if he buys the plumbing company as he wants to do, he still wouldn’t earn anywhere near enough money to face a tax hike under the Obama plan. In fact, he’d qualify for a variety of tax cuts.
Hilarious... so much for McCain "going to work for Joe" campaign.
Posted