A review of ruby s3 librarys

gem install s3sync

Has the right idea about how to store files, but the lib it uses does not abstract things enough. Does not use http keep alive to avoid the slow startup of tcp. Does not have an easy way to iterate over all keys in a bucket, but this helps to do this:


  def each_object(bucket_name)
    next_marker = nil
    while true do
      response = CONN.list_bucket(bucket_name, {'marker' => next_marker, 'max-keys' => 10})
      response.entries.each do |s3obj|  
        yield s3obj
      end
      break unless response.properties.is_truncated
      next_marker = response.entries.last.key
    end
  end  

gem install aws-s3

Again no built in way to iterate over all keys. Has problems with ’/’ at the start of filenames.

gem install right_aws

Uses the same http connection, can itererate over all keys with a single method (though, it makes a full array of all the keys rather than allowing you to supply a block).

Here’s my thumbnailer:


  require 'rubygems'
  require 'right_aws'    
  require 'RMagick'
  require 'pp'
  
  s3 = RightAws::S3.new(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
  
  picture_bucket = s3.bucket('OurPictures')
  thumbnail_bucket = s3.bucket('OurPicturesThumbnails')
  
  picture_bucket.keys.each do |key|
    thumbnail_key = RightAws::S3::Key.create(thumbnail_bucket, key.name)
    next if key.name !~ /.jpg$/i
    next if thumbnail_key.exists?
    image = Magick::Image.from_blob(key.data).first
    image.change_geometry!('256x256>') do |cols, rows, img|
      img.thumbnail!(cols, rows)
    end
    thumbnail_key.put(image.to_blob, 'private')
    p thumbnail_key.full_name
    image = nil
    GC.start
  end

May 31, 2008 (2 months, 1 week ago) | Tags: ruby

RailsConf 2008: Saturday Eaily Morning

(mostly randy here again. I was putting up my first ec2 instance. :)

Saturday Keynotes

  • funny video from the RailsEnvy guys about testing
DHH introducing Jeremy Kemper
  • Jeremy has done a buttload of work lately in the Rails core
  • dhh on a coding vacation?
  • some people think about one part of rails Jeremy thinks about the whole thing
Jeremy’s talk about Rails 2… where it’s going, etc
  • “it’s all about resources”
  • “we shed a lot of fat” – split things off into plugins
  • “we gained speed” – “i’m not concerned about rails being super super quick”—huh???
  • 1600 patches… it’s hard to read all that code! so we embraced git and lighthouse instead of svn and trac
  • Rails 2.1
    • refactoring
    • documentation
    • thinner + faster
    • (he looks exhausted… too much free five runs beer and cheese pies)
    • he wants rails to look pretty.
    • use rubyprof
    • merging migrations
    • making timezones fitter, happier, more productive
    • migrations now have change_table block for modifying tables (just like create_table)
    • gem dependencies
    • improved memcache… making it a first-class citizen in rails. memcache-client now bundled with rails
    • much of what he’s covering Myers read in this tutorial on rails 2.1
    • dirty – AR now knows when an attribute has changed
      • message.body_changed?
      • message.body_was
      • message.changed?
      • enables partial updates
    • smarter :include—it’s not as eager to join on the first query. this seems like it will be slower, but benchmarking supposedly proves that querying the join table on an as-needed basis is faster
    • named_scope
      • so you can say user.messages.recent instead of user.recent_messages by saying named_scope :recent, :order -> ‘created_at desc’ in the Message model
    • Message.scoped(:limit => 10)
    • jruby -S jetty_rails (run rails on jruby)
    • rbx script/server (run rails on rubinius)
    • rails now runs on ruby 1.9
  • rails 2.1 out today (a gem update at 10:14am didn’t do anything tho… it will be later… so not a Steve Jobs “and you can buy it right now”)

May 31, 2008 (2 months, 1 week ago) | Tags: railsconf2008

RailsConf 2008: Friday Night Keynote

DHH keynote

  • surplus of productivity
  • company’s needs that special in the problems we encounter
  • We ceded flexibility
  • “people like choices a lot more than they like to choose” – dhh, just now
  • why is this not in the framework, someone make this choice for me
  • we decided tech matters
  • “great people rarely fail because of poor technology” – but come on, do you want to just “not fail”?
  • we cared about us
  • “ruby is designed to make programmers happy” – matz
  • the surplus will not last forever
    • why? the mainstream will copy rails (dhh doesn’t think so)
    • dramatic alternative arrives (dhh doesn’t think so)
    • rails becomes the mainstream
  • business as usual – which is blowing your surplus, running at 110% all the time
  • another day, another fire
  • Lost in the mechanics – when running at 110% means you can’t see anything else
  • fatigued, disinterested, passionless
  • it’s just a job – most depressing statement
  • one place to invest that will pay back: you
  • 1:10 programmer productivity
  • no one is born a rock star programmer, you become it
  • recharge tangentially – or some other word, do something else besides sit in front of a computer all day: making spoons, play the banjo, fly a plane
  • can’t just focus on one muscle
  • speaking about taking people to the next level: sleep more (applause)
  • stop to read paper
  • suggested reading
    • my job went to india (and all i got was this lousy book)
    • implementation patterns
    • innovator’s dilemma
    • tufte’s envisioning information
  • all this helps you judge what is valuable or not
  • is this lack of a seam on the iphone what matters.
  • program less
  • when you have only 10 hours to program a week, you know what matters
  • sometimes good to start a project from scratch
  • share: you benefit from the sharing
  • “the purpose of playing this game well is to be able to get the best position of the next game” – alistair cockburn, 1999
  • 4 day work week means more focus
  • summary: this surplus is not going to last forever don’t blow it all on hookers and fur coats

May 31, 2008 (2 months, 1 week ago) | Tags: railsconf2008

RailsConf 2008: Friday Early Afternoon

Dialogue Concerning the Two Chief Modeling Systems

  • it’s a Play

(again you should read the slides)

  • choosing the right name will make the dev think about this model and give it the right property
  • Jim keeps saying we’re skipping layers
  • using story cards
  • jammed up over reoccurring events
  • objects = data + behavior, so you can’t just talk about the data (rows/tables), you must look at behavior
  • pull out the Class, Responsibilities, and Collaborator cards
  • card only useful for organizing your thoughts not need to fill them all out
  • “temporal expressions”
  • CJ Date: apparently wrote a lot about data modeling
  • Code Smell in Refactoring by Chad Fowler

Flexible Scaling: How to Handle 1 Billion Pageviews – TJ

  • WoW: you see all kinds of human behaviors: Mafia, Philantropis
  • Building games on Facebook
  • He’s the author of Warbook: Rise of the Infernals
  • w/i a week he had to fix stuff
  • w/i 3 weeks had to rewrite
  • started with firebug’s net tab
  • look at your logs: pl_analyze
  • iostat
  • you need tools, but you also need strategies
  • don’t need it? ditch it.
  • slowing it down? simplify it.
  • logging it? stop
  • selecting it? cache it.
  • memcache
  • put sessions in cache
  • no-select design
    • use memcache
    • cache_fu already does this
  • using ec2
  • 1 db box
  • 1 memcache box
  • 1 static file
  • X mongrel boxes
  • The Hard Part
    • Scale Everything Else
    • Scale your deploymnet
      • use capistrano
    • Scaling your support
    • community management
      • give them updates every day
  • server cost $2000 a month
  • you need money
  • warbook makes $100,000/month
  • 1.5 million users
  • 16 million page views
Q&A
  • remove transactional saves
  • save per fields
  • how to solve the persistence problem on ec2? db not on amazon
  • which facebook lib? started with rfacebook, facebooker, bebo

Slides

May 30, 2008 (2 months, 1 week ago) | Tags: railsconf2008

RailsConf 2008: Friday Late Morning

Entrepreneurs On Rails – Dan Benjamin

  • Successful biz fills a need
  • What do you need
    • paper work important, expressing the idea idea is better, being flexable on that idea
    • energy
  • so much you have to do before hand, why are you doing this?
  • set goals – we need to do x by y, if we don’t get there we’ll change things
  • have a path to cash
  • have an exit strategy
  • why create a company
    • Liability – legal protection from your bugs :)
    • Taxes – more buying power, talk to an accountant
    • working with other companies
    • easy of working with other companies
    • Ownership – knowing who gets what
    • perception of credibility – but don’t try to be what you are not (cd of office noises for phone calls)
  • types of business
  • Fictitious Name
  • LLC is a good idea
  • You don’t have to do this in Delaware
  • hire lawyer/accountant
  • your website should be very clear about what you wanted
  • we build things we need, but if you look at say moms with kids at home you have a much bigger audience
  • marketing. peepcode logo (myers: I’ve always thought it looked like a lingerie ad)
    • you will spend 40% or more of you time marketing
  • making it work is the hard part not the (unknown) paper work
  • hard part: adjusting the the lack of stability
  • common to be in a feast or famine situation
  • co-working is a way to get an office with others
  • creativity zone
  • biz deals goes like this
    • NDA – worth it for a 10k deal to have your lawyer look at it
    • proposal – 40 pages shortest he ever did
    • contract – you should write the contract, here’s what I’ll do, he’s what I’m liabile and not liabile for
    • Functionality Outline – evolution of a statement of work
    • getting the money – net 30, net 60, net 15, net 0 – put it in your contract, also “there is a 2% fee for late payments”
  • products: it’s about liability
  • TOS/privacy policy – be clear, be up front
  • ways to get money (see slides)
  • on hivelogic he’ll post a sample SOW

Surviving the Big Rewrite: Moving YELLOWPAGES.COM to Rails

  • biggest website at&t runs
  • all rails
  • 1 year ago 1/2 as big
  • (long slides)
  • why a big rewrite? – it’s a great bundler
  • no automated tests, new features really hard
  • lots of code being replace with site redesign
  • hard to leverage
  • java: get around this web thing with design patterns so you get to the real business of talking to middleware
  • devs except that not everything they want will get done
  • core team never more that 4 – trying to keep it small
  • they looked at django and ejb3/jboss
  • no to django
    • better automated testing integration (hear hear)
    • more platform maturity
    • clearer path to C if necessary for performance (I don’t agree with that. Python + C is easy, plus you have psyco and ctype that let you get C performance or use c libs with pure python)
    • developer comfort and experience
  • not convinced anyone needs MOM
  • only one developer that knew rails at the start
  • project got stuck
  • project lead appointed to make decision-making and communication with executive team, or at least the appearance
    • sometimes she decided in private with her bosses
  • freeze current site
  • if it’s not simple to decide how to change a current site behavior, don’t change it. save it for a later phase.

(it’s worth it to read the slides, even for a non rewrite project. The slides are probably have too much on them, but that’s good for you)

  • they spent an amazing amount of time communicating what was changing.
  • F5 Load Balancers
  • switched to erubis in web tier

May 30, 2008 (2 months, 1 week ago) | Tags: railsconf2008

RailsConf 2008: Friday Early Morning

(notes from mostly Randy and a little from me)

Chad Fowler

  • Reflecting on the history of Ruby/Rails conferences of old
  • Lost Last Ep. apparently glitched last night, thus everyone downloading Lost

DHH

  • actually saying something nice about Joel
  • used to take Joel’s columns to meetings to say “this is what we should be doing”

Joel Spolsky

  • slide of Angelina Jolie… the only slide… trying to get a higher evaluation score
  • now showing a Brad Pitt picture… so he’s not a male chauvinist pig
  • slide of ian somerhalder… another good looking guy, but brad beats him in a google fight
  • he lies about the number slides
  • brad is ipod, ian is a zune
  • blue chip vs off brand
  • blue chip chair is herman miller… lots of knockoffs… like the ones we have at work…
  • Angelina is blue chip… Uma Thurman is off brand
  • Brad is blue chip… Iam is off brand
  • Great software
    • makes people happy
    • obsesses over aesthetics
    • observes the culture code
  • Joel does lolcats
  • goes through a scenario about how it sucks to install updates on windows…
  • the ui sucks
  • the progress bars are misleading
  • the system now doesn’t recognize one of your devices.
    • You can’t unplug the device. Tell us First. Fuckhead.
    • this experience sucks… makes people unhappy
    • Learned helplessness is a book about how lack-of-control makes people unhappy
  • just do something that makes you feel in control
    • Abercrombie & Fitch checkout example
  • doesn’t give you a choice over how you checkout… it is a 4 stage process, and you have to do it in their order
    • Amazon example
  • you can change your information, you can do whatever you want in any order… you are in control
    • Tips for making people happy
  • Put the user in control
  • Positive feedback
    • Tips for obsessing over aesthetics
  • iphone is way more popular than samsung blackjack
    • but iphone is slower, has a smudge screen rather than a keyboard, doesn’t have exchange compatibility,
    • but the iphone is beautiful… “if you accidentally swallowed it, it would go right down”
  • in paris, they don’t have fire escapes, because they are ugly… it’s more important to look good than to survive a fire
  • it works… people prefer something that looks good over something that is better
    • Tips for observing the culture code
  • the ford explorer has 88 deaths per year
  • the toyota camry has 41 deaths per year… it’s not safer to be in an SUV, actually… even though people THINK they feel safer
  • SUVs have soft corners, airbags everywhere, cupholders, and are up high. they trick us into feeling better and safer.
    • web 2.0 don’t have visions, they go to parties
    • Misattribution: when you have coffee, you enjoy the movie more… it’s not the movie, it’s the coffee!
    • ends the talk playing “Sweet Home Alabama”... that was a good talk!

(it was interesting, because he didn’t have a final point. At the end he compared some blog posts that DHH and _why wrote about ruby and it had all these good words (passion, love, ...). He swapped them to their antonym and labeled it Java. I expected him to follow with telling us that there was a common misattribution with rails and these feelings and that we could find the same else where)

May 30, 2008 (2 months, 1 week ago) | Tags: railsconf2008

The Webmasters Daemons

I had this crazy idea back at the beginning of 2001. I wrote it down in a text file one morning and forgot most of it.

Musical Theme:

The music from “the Magician’s Appretiace” from Fantasia

Characters:

  • apache – hard working httpd daemon, works at a Penguin booth (on linux). Maybe an indian with an apache feather in his hat?
  • mysql – apache’s coworker, hands him the information that he hands to the user. Hands him a bucket of info, apache then gives it to the user.
  • slashdot.org – you remember when the brooms became a thousand fold in “the Magician’s Appretiace”? * user (or rather the users packets) – come to apache to get info. (stick figures with buckets?)

Events:

We show the webmaster working at his computer (rl). click on his computer his packets are then shown handing info (buckets) to apache, who passes it on to mysql, who pours in to the feeding pool that then starts to drip down to the bucket pool. Then the webmaster at his computer nods off and goes to sleep….

you see a rack behind them… the lights that we can see on the rack go along with the tempo… back to virtual world… a users packets come buy every so often (with music and gets data), apache and mysql work on it and do it with great flourish. They start to get board waiting for users to come…. so the write something down and put it in a bucket and it turns to another color water. both the daemons pore the bucket into their feeding pool and the water turns that color.

the first user who comes along looks at the water when he gets it and drinks…. and is shocked, he starts carrying it to another booth (website) and the daemon there takes the bucket and emptys it into another pool…. (rw: you see rusty or someone look at the their screen and their jaw drops open). The other apache server gets an order and pours the water into their feeding pool… all of sudden all the users coming by start walking to our booth.

the daemons see the users coming and congratulate each other…. the happly fill the users buckets. and see more coming.

one of the users packets go to /. where the fill buckets at ten and a time with jetsprays, and soon as they have the info all the users start coming towards our two daemons.

eventually the webmaster is awoken by the rack lights which are going crazy… sees his bandwidth going thru the roof…. he makes the users stop some how.

Nov. 30, 2007 (8 months, 1 week ago) | Tags: ideas

Why is so hard to find our neighbours?

In Space Radio: More Static, Less Talk we learn how hard it would be to detect alien signals. Also about an formula to figure out how many intelligent lifeforms their might be in our galaxy.

Nov. 30, 2007 (8 months, 1 week ago)

League of Extraordinary Gentlemen: Black Dossier

I’m about 1/4 of the way into League of Extraordinary Gentlemen: Black Dossier somewhere in the supposed play by Shakespeare revealing the first 007, oh what a trip. Strongly recommended.

Nov. 27, 2007 (8 months, 2 weeks ago)

Well, at least it's a good list of the other reasons I like him

from reddit Ron Paul is Seriously Flawed as a Candidate; We’re Just So in Love With Him That We’re Not Paying Attention…. Except everything they list as reasons he’s flawed I agree with. It’s just more reasons to love the guy.

Sept. 12, 2007 (11 months ago) | Tags: politics

Breaking the silence

So… there’s over a year gap between this post and the last. At some point my email to blog script broke and I was just too damn busy to fix it. The week the server I was running the blog broke and I had to move the services on it. While in NY last year I wrote a blog using Django, and while installing the new server I installed that and polished it up a bit. Goodbye pybloxom, I never did submit all the patches I wrote for you.

I need to clean up a bit of spam on this site. Seems like some spammers found my trac sites for some of the projects I had listed here and had a little fun. I have two trac.db files that are 300mb full of spam.

Shouts out to Steven N. and Zooko.

Aug. 17, 2007 (11 months, 3 weeks ago)

LISA: How to get Management Buy-in for Strong Localization Support

Heike Caldwell, Localization Manager, Rockwell Automation. How to get Management Buy-in for Strong Localization Support.

  • apply Lean Enterprise principles (is this like Lean Manufacturing)
  • (she’s reading right off the slides).
  • Use simple language, expect a lot of questions.
  • Why not only use English, because your competitors are doing it.
  • Rockwell only has a site in English. Globalization in progress.
  • Holistic approach. Taking into account business, region, subjects (not labeled on the slide) in a single process.
  • (I’m thinking of starting a fire to warm myself. I guess they are scared people are going to fall asleep.)
  • LEAN Enterprise, one step below 6 Sigma (look this up).
  • (It’s a challenge to figure out how to scale down some of their solutions for RS).
  • % of overall sales vs. cost of localization: less than 1%.

(so far the focus seems to be on technical products manuals, technical product marketing. I’m very unsure these approaches apply to an educational product like RS.)

  • “we give these vendors so much business that the pricing went down”

(One guys asking a question was from the World Bank, another from the European Commission)

(Who is our localization Czar?)

  • The presenter is the only one doing localization full time at Rockwell.

(oh look, some guy in jeans. at this point I’d rather have a parka).

June 27, 2006 (2 years, 1 month ago) | Tags: lisa2006nyc

LISA: Building a Business with a Long-term View of the Globalization Services Industry

April Singer, 20-year localization veteran from IBM. How to convince your org. to globalize.

  • Nokia CTO – world will be defined not by geography but by the ‘Net. * Non-G8 (had some other term I didn’t catch) countries will double the % of their GDP and become competitors and consumers by (some date).
  • McKinsey Quarterly (look this up) 8 out of 10 top trends revolved around globalization.
  • IBM CEO to London Fin Times: not a US company doing biz in China, but a borderless company who looks to locals as a local company.
  • (I’m wishing I packed a sweater about now)
  • How are we going to pretend to be a global company if the first thing we do is screw up our website?
  • Google, Yahoo, eBay say their are having problems with globalization.
  • (I think RS needs a “customer advocate” for each language we launch into)
  • (I wish I could pull the slides I have into this post. )
  • Rob Glaser, CEO, Real Networks – Customer good will is key to what makes customers gravitate towards one product or another. (this is hystraical coming from the company who I will never install software for. Maybe they are waking up to the fact they have cased off their customers with bad will).
  • (take a look at IBM.com and it’s locale segmentation scheme)
  • IBM thinks they can help us all. “If you are growing too fast” (they could help soak up that excess cash? ;)
  • IBM said their will be one e-experience, one host, (see slide “Mission of IBM.com”)
  • “We can’t possibly meet this demand [for globalization services]”. (If that is the case why are their only 70 people in this room? I don’t doubt this is important, but perhaps this conf. didn’t fit in the schedules of the masses working on this at breakneck speed. I know I felt that I should be back in H’burg working on our .de site).
  • (ended with a 15 min QA)
  • (It’s so cold in this room that my breath is fogging up my glasses)
  • One Q: if you were in the $500M space, what would you do: * What do you do best? pick your niche, be the best in your space * Work with local, knowledgeable resources.
  • (how was our call center contract in EMEA picked?)
  • Q: One of your goals was a rapidly deployable site, what time frame are we talking about. A: 2 weeks for a site like one we already have.

June 27, 2006 (2 years, 1 month ago) | Tags: lisa2006nyc

LISA Global Summit in NYC: Intro session

Good lord. What have they gotten me in to.

I’m sitting in the Grand Ballroom at the Roosevelt Hotel in NYC, maybe a 1/2 block from Grand Central. As near as I can tell the only “practicing” geek in the room. I say practicing because after hobnobbing with people last night I was able to see that underneath their suits there are a few former developers around here.

The most disheartening thing is there is NO WIFI. About to break out the smoke signals to communicate back to the big world outside. Needless to say there is no unofficial conf. wiki or IRC channel.

In khakis and a polo shirt I’m the least dressed up person at this gig.

A few points from the 5 minute intro.
* UNESCO linking Cultural diversity to our survival much like Bio-diversity.
* Only 17 countries here (there’s what? 27 countries represented at Harrisonburg Public schools?).
* 1 billion on the Internet. (North America 22%, Asia 35%, Europe 29%)

June 27, 2006 (2 years, 1 month ago)

Canada on Rails: MPOG on rails

Michael Buffington on Using Ruby on Rails to Make a Massive Multiplayer Game

Look for slides on the wiki

April 14, 2006 (2 years, 3 months ago) | Tags: canada-on-rails