richard t. brant
rbrant@gmail.com | 215.645.2282
Updates
-
first real use of #rails 3 for a client. bundler, Arel, and the new routing are pretty great. nice overview of changes http://bit.ly/9TVNi1
-
Great article in Entrepreneur about the rules of business drinking, 'The Rules' http://bit.ly/bcis0U.
-
August 30th was my sister's birthday. She would have been 40. Katie, I miss you so much... #fb
-
Heh, I have good timing. Watched the upgrade to rails 3 peepcode screencast today. RT @dhh: Rails 3.0: It's ready http://bit.ly/bqyTHh...
-
@JeffreyGroks so true! What a huge opportunity missed, esp considering the novelty of nyt on iPad, when ppl are paying attention to ads.
-
so cool, got my google voice in gmail. was just about to renew my skype out, too.
-
#phillies fans out-tweet astros fans. pretty cool twitter visualization, 'mlb game pulse' - http://bit.ly/cKUvG5 (scroll down)
-
I'm at The Roxy (9009 W Sunset Blvd, Hammond, Los Angeles). http://4sq.com/2xsToI16 days ago from foursquare
-
very nice RT @justinvincent: Why aren't you using git-flow? http://bit.ly/cnO6cq
-
@temotorworks loved this, by the way
-
Client move to ec2 almost complete! So impressed with all the amazon web services products.
-
Moving another client to ec2.
-
My son can catch flies with his bare hands.
-
Looking forward to seeing 'happy' http://vimeo.com/11335940. More here: http://thehappymovie.com/
-
flavors.me is such a great idea, on my short "wish i'd created that" list. mine: http://rbrant.me
-
Mindset of the class of 2014 http://bit.ly/bMsJ9E. Yikes! Who feels old?
-
http://www.livescribe.com/ - a pen that remembers what you write. I can think of a lot of people who will love this. #fb
-
@carolinebrant will love this. she can finally make her own font http://2ttf.com/.
-
so awesome RT @jeresig: Announcing jQuery Mobile: http://j.mp/beQ9ot Screenshots, browser support, and more details:http://jquerymobile.com/
Summary
A great combination of binary and creative thinking; proven technical and creative abilities. Significant experience guiding vision for product development and managing its implementation as well as bridging the gap between business goals and technical feasibility
Excellent communication, analytical, and interpersonal skills; expert at managing multiple projects simultaneously; exceptional problem solving skills
Experience
-
1998 - Present
Owner / Brant Interactive
Custom software development. Current and past clients include:
Democracy Engine, Washington, DC
Kaplan Test Prep, New York, NY
Advanta, Springhouse, PA
OPAL Interactive, FL
Future Now, Inc, New York, NY
Gulfstream Aerospace Corporation, Savannah, GA
The Patent Box, Philadelphia, PA
The Paper Concierge, Philadelphia, PA -
May 2008 - Jan 2010
CTO / The Paper Concierge
The Paper Concierge is an online retailer of fine stationery, invitations & gifts, owned by parent company Leap Frog Paper (http://leapfrogpaper.com). The Paper Concierge has a network of sales representatives ('paper concierges') throughout the country. My role is handling the technology that supports this network of concierges and paperconcierge.com. The Paper Concierge was acquired by the Whitney English company in January 2010. -
Dec 2006 - May 2008
Senior Developer / Mediagistics
Lead the development of two products: a sales lead generation platform and a social group messaging application.
Education
-
1990 - 1994
Dickinson College
Additional information
Posts
-
July 16, 11:20 AM
ActsAsCachola – simple caching for AR models (everyone could use a little cachola)
And you thought all the clever caching names were taken.
What is it
ActsAsCachola is a plugin that lets you cache any class method by simply prepending ‘cachola_’ to the method name when calling it. Here’s how it works:
Given the following model:
class Internet < ActiveRecord::Base acts_as_cachola def self.get_a_million_numbers 1.upto(1_000_000).inject([]){ |numbers, x| numbers << x } end endNow you can call the method, ‘cachola_get_a_million_numbers,’ and the return value of ‘get_a_million_numbers’ will be cached automatically.
Note that if the method accepts arguments, each unique call will have its own key in the cache. For example:
class Internet < ActiveRecord::Base acts_as_cachola def self.get_numbers(to_number) 1.upto(to_number).inject([]){ |numbers, x| numbers << x } end endCalling Internet.cachola_get_numbers(100) and Internet.cachola_get_numbers(500) will result in two keys (with different values) stored in the cache.
The cached method is then expired automatically when the class in which the plugin has been included is saved or destroyed. It’s restored to the cache the next time it’s called.
Now, what if your Internet class method ‘get_a_million_numbers’ depends on other objects getting saved or destroyed? That’s the other thing I wanted to make easier. Rather than setting up observers or sweepers, you can add the following to the other model:
class WhereAmI < ActiveRecord::Base acts_as_cachola_notifier => [:internet] end
Now when your WhereAmI model is ether saved or destroyed, the cached methods in the Internet model will be deleted.
Installation
script/plugin install git://github.com/rbrant/acts_as_cachola.git
Where is this going from here?
Not sure. It does what I need it to do right now. It’s something I’ve found myself doing on two different projects that I thought would just make my life easier.
Project Info
ActsAsCachola is hosted on Github: http://github.com/rbrant/acts_as_cachola, where your contributions, forkings, comments and feedback are greatly appreciated. Please do add tests if you want me to pull in any changes.
-
March 12, 01:11 PM
I want to show you some SAX.
I had to process some pretty big xml docs recently from the USPTO. Each doc is about 60mb and (oddly enough) contains several thousand individual documents all concatenated. So the document isn’t valid xml..but that’s a different story.
The reason for writing this was to show a quick demo of how to use SAX to process a large XML file. You can read about SAX here, but basically, SAX (Simple API for XML) is an event-driven model that solves the problem of having to read an entire tree structure into memory which can be realllly sloooow, and instead reads the stream of data and raises events along the way.
The code below uses the Nokogiri library (which as a side note has this odd, albeit entertaining tagline: “XML is like violence – if it doesn’t solve your problems, you are not using enough of it.”). Most other XML parsing libraries also have SAX implementations.
What the code does below is looks for the root node of each doc and builds a string for each individual document. After the doc has been assembled, the doc can be processed via the more pleasant:
doc = Nokogiri::HTML(xml) serial = doc.css("application-reference document-id doc-number").inner_textSo this ends up being sort of a hybrid and much, much faster than loading the entire doc at once. It would be faster not parsing the doc again at all but the docs have too much nested complexity that requires the ability to use xpath to get at what I need.
- February 17, 04:36 PM
- December 15, 09:18 AM
-
December 06, 08:09 PM
Project review: ifwinsight.com
It’s easy to forget what you’ve learned and what tools you used from project to project. I thought it might be worthwhile to sort of sum up these things either on a weekly basis or project basis. I had a lot of fun on a recent project and thought it would be a good place to start. I recently built what is described as a ‘tool for intelligently searching US patent application Image File Wrappers (IFWs).’
Technically, the system allows users to upload PDF documents and have their content indexed and made searchable. The documents are reasonably sized, averaging 25 megs each with several hundred pages. So once uploaded to the server, they are handed to delayed job to be processed in the background. I’m using collective idea’s fork after watching Ryan Bates’ screencast on delayed job that points out this fork has a few generators and rake tasks not part of the original.
In order to index the document, the PDF needs to be examined by OCR (optical character recognition) software. But before the OCR software can do its OCR-ing, it needs to have an image to examine. So we need to convert the individual PDF pages into images. To accomplish that, I used ghostscript. It’s really easy to use and fast. You can hand ghostscript the document, and it will churn out a an image of each PDF page, in the resolution of your choice. I’m using 300×300, which seems to be a nice balance between processing time, space, and readability/ocr results.
Once the document has been converted into images the OCR software, tesseract-ocr, will iterate through each image and produce a text file with the contents of the page. Now, with a directory full of text files, it’s time to store the contents of each page in the database. That’s where sphinx and thinking sphinx come into play. Sphinx is the full text search engine and thinking sphinx is a ‘concise and easy-to-use Ruby library that connects ActiveRecord to the Sphinx search daemon, managing configuration and searching.’ I actually started the project with ferret/acts_as_ferret, but after reading so many good reviews of sphinx, and my own problems with ferret, I switched. The only downside is that setup is a little trickier and thinking sphinx doesn’t automatically update the index the way acts_as_ferret does, so there’s a cron job that handles that. The indexer is super fast though, so frequent indexing isn’t a problem.
The site also offers multiple file download, and I used the rubyzip library which makes it simple to zip up a bunch of docs into one.
As for design, we used a theme from themeforest.net. I was impressed by the quality of generic templates they have. They aren’t free, but are dirt cheap – $5 or $10 for most. I’ve used
It’s a Rails application, so as for gems/plugins, the usual suspects are there: acts_as_commentable, exception_notification, restful_authentication, role_requirement, mislav-will_paginate, attachment_fu, and a few others: slicehost, thinking-sphinx, delayed_job, and rubyzip.
The real jewel in the list is ‘slicehost‘ which gives you a bunch of rake tasks for setting up your slice at slicehost, which is my favorite hosting provider.
One other thing worth mentioning was an issue with the delayed_job process not stopping properly during deploys, so I kept getting multiple instances of delayed job running because the one running during the deploy never stopped. It was noted on github (with the solution below) in the issues section but I can’t find it now. Basically, the restart task looks like this:
desc "Restart the delayed_job process" task :restart, :roles => :app do stop wait_for_process_to_end('delayed_job') start end end def wait_for_process_to_end(process_name) run "COUNT=1; until [ $COUNT -eq 0 ]; do COUNT=`ps -ef | grep -v 'ps -ef' | grep -v 'grep' | grep -i '#{process_name}'|wc -l` ; echo 'waiting for #{process_name} to end' ; sleep 2 ; done" endAs a final note, all the software used in this project is open source. I’m constantly reminded of that and impressed by it. My thanks to all who have contributed to the software used in this project!
Bookmarks
-
AmpKit, a new way to shred with your iPhone
-
4 Tools for Teaching Kids to Code
-
Online Backup for Mac | Arq | Haystack Software
-
iFontMaker – The First & Fastest Font Editor for iPad
-
HTML5 Boilerplate - A rock-solid default for HTML5 awesome.
-
DataMapper - DataMapper
-
Software as a Service with Amazon FPS using Remit for Ruby « Edgy Developments
-
The Ruby Toolbox - Know your options!
-
Demo | jQuery.popeye 2.0 | an inline lightbox alternative
-
0to255
-
SimpleDeployr - One Click Amazon EC2 Deployment
-
Git Reference
-
defunkt's cijoe at master - GitHub
-
Cerberus: Home
-
Ruby Unroller
-
CodeRack
-
auser's poolparty at master - GitHub
-
kswedberg's jquery-tmbundle at master - GitHub
-
Pines notify
-
Ruby Procs And Lambdas (And The Difference Between Them)
-
AWS Documentation
-
Divvy · Window management at its finest.
-
Amazon Elastic Compute Cloud
-
Google Font Directory
-
EC2 and Ubuntu - Alestic.com
-
Learnivore: Ruby/Rails/iPhone screencasts
Tags: rails3, screencast -
radar's by_star at master - GitHub
-
markupslicer | Slice your HTML/CSS markup into Ruby on Rails templates
-
jQuery Sparklines
-
Create your first Ruby Gem and release it to Gemcutter » Jeweler, Rakefile, Github, Anyhub, This, Ruby » Sirupsen's Blog
Tags: gem -
maccman's nestful at master - GitHub
-
htmlBurger PSD to HTML » Home - Convert your Design into Standards compliant XHTML/CSS
-
Every Time Zone
Tags: timezone -
vinsol's fullcalendar_rails at master - GitHub
-
How To Send and Receive E-mail Through Google App Engine for FREE Using Remail | Absolute Ruby
-
Vagrant - Getting Started
-
www.neeraj.name - How cookie stores session data in Rails
-
Bean: An OS X Word Processor
-
The Perfect 2 Column Liquid Layout (right menu): No CSS hacks. SEO friendly. iPhone compatible.
-
mattetti's acts_as_taggable_on_steroids at master - GitHub
-
data visualization tools
Tags: json, visualization -
Creating a New Image for EC2 by Rebundling a Running Instance - Alestic.com
-
Ubuntu 9.10 (Karmic Koala)
-
XML Indent Online
-
pauldowman's ec2onrails at master - GitHub
-
rush, a Ruby replacement for bash+ssh
Posts
- July 23, 12:11 AM
- July 19, 05:19 PM
-
July 12, 08:01 PM
double rainbow man
There is some peyote near this guy's campsite:
- July 01, 07:53 PM
- June 18, 04:32 PM
- June 11, 04:50 PM
- May 24, 06:12 PM
- May 22, 02:45 PM
- May 05, 09:17 PM
-
April 28, 11:06 AM
The first image ever taken of Earth from the surface of a planet beyond the Moon
- April 19, 06:29 PM
- April 15, 09:41 AM
- April 11, 01:46 PM
- April 07, 10:12 AM
-
April 05, 08:23 PM
Proof that @zappos is awesome
Good news!
Although you originally ordered 3 Business Days shipping and handling,
we have given your order special priority processing in our warehouse
and are upgrading the shipping and delivery time frame for your
order.Your order will ship out today and be given a special priority
shipping status so that you can receive your order even faster than we
originally promised! Please note that this is being done at no additional cost to you. It
is simply our way of saying thank you for being our customer. We are constantly striving to improve our service. If there is
anything that we can do to help improve your experience, please don't
hesitate to let us know. We like to think of ourselves as a service
company that happens to sell shoes, clothing, and a whole bunch of
other stuff! If you've enjoyed your experience with us, please tell your friends
and family about Zappos.com! Thank you! --------------------------------
Zappos.com Customer Loyalty Team
cs@zappos.com -
March 31, 09:24 AM
"Hey, I'm playing the role of Tony Montana in Scarface in the school play!" says your first grader...
I have trouble making sense of this one. It's so entertaining, but so strange. -
March 15, 10:06 AM
Such an awesome talk: 'Clay Shirky on Cognitive Surplus'
Love this quote: "Someone working alone with really cheap tools has a reasonable hope of
carving out enough of the cognitive surplus, enough of the desire to
participate, enough of the collective goodwill of its citizens to
create a resource you couldn't have imagined existing 5 years ago." - March 09, 08:22 PM
- March 09, 04:04 PM
- March 05, 09:08 PM
Recent tracks
-
Hey, Hey by Dispatch3 weeks ago
-
Wading in the Velvet Sea by Phish3 weeks ago
-
Rain King by Counting Crows3 weeks ago
-
Stand by Blues Traveler3 weeks ago
-
Lifeline by Ben Harper & The Innocent Criminals3 weeks ago
-
Liquid by Umphrey's McGee3 weeks ago
-
Happy Hour Hero by moe.3 weeks ago
-
In Repair by John Mayer3 weeks ago
-
Used To Get High by The John Butler Trio3 weeks ago
-
Situations by Jack Johnson3 weeks ago
Top artists
Top tracks
-
5 plays
-
5 plays
-
5 plays
-
Wonderwall by Oasis4 plays
-
4 plays
-
4 plays
-
4 plays
-
4 plays
-
4 plays
-
4 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
War On War by Wilco3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
3 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
-
2 plays
Posts
-
August 12, 11:00 AM
i(Pad) of the Tiger
This is great! Photographer Jordan Hollender and musician Scott Harris put together this music video that covers Survivor's classic anthem and uses only iPad apps as instruments. The video itself was recorded with a couple of Canon HDSLR video cameras, but as you can see in the embedded version above, all of the music is created with iPad apps. Unfortunately, they don't identify the apps used, but that sounds like a great job for you TUAW commenters. I think I saw Pianolo HD being played on the floor there, and Pocket Drums is being used as percussion, but I couldn't find the guitar app or the DJ app that they are using.
Of course, what I really want to know is where he got that sweet lightning bolt iPad strap. The video's great, though. Apparently it was all lit in one day and shot in another. There's no word on how long it took to make the song, but with the iPad involved, it was probably both magical and revolutionary.
(Thanks, Rachel!)TUAWi(Pad) of the Tiger originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 12 Aug 2010 10:00:00 EST. Please see our terms for use of feeds.
Read | Permalink | Email this | Comments - July 25, 12:00 AM
-
July 20, 05:06 PM
Serenity Now: Seinfeld as an action thriller [video]
Posted by Annie Colbert
Classic sitcom “Seinfeld” gets sliced, diced, and set to eerie music for an action thriller movie trailer. Who ever doubted Newman harbored a psychotic streak?
Previously on TV-comedies-turned-action-flicks: Arrested Development.
Via TheHighDefinite.
Tune in to the top TV news.
-
June 28, 12:27 PM
Silly Putty ingredient found in McNuggets
A recent CNN investigation found that the same chemicals found in Silly Putty can be found in McNuggets:American McNuggets (190 calories, 12 grams of fat, 2 grams of saturated fat for 4 pieces) contain the chemical preservative tBHQ, tertiary butylhydroquinone, a petroleum-based product. They also contain dimethylpolysiloxane, "an anti-foaming agent" also used in Silly Putty.
Yummy.All McNuggets not created equal [CNN's The Chart]
-
July 09, 11:57 AM
Cavs Owner Brings Comic Sans Back
While LeBron James might have made sports history last night when he decided to leave the Cleveland Cavaliers and join forces with the Miami Heat — after a long, dramatic buildup that included King James joining Twitter — he may have made an even more important contribution to the cultural canon: The return of comic sans.A lot of people were naturally PO’d at James for turning coat and leaving his hometown team, but the most peeved was Cavaliers owner Dan Gilbert, who penned a long epistle on the team website tearing into James. The contents of the letter were certainly worthy of going viral — there were a lot of all-caps sentiments and more than a little ill will — but the font Gilbert chose was, for lack of a better word, awesome. Comic-freaking-sans. You know, that font we all thought was rad when we were, like, 12 years old.
The use of said font has sparked discussions across the web — it was a trending topic this morning on Twitter and The Washington Post even made mention of it — which leads us to wonder if it will make a true comeback sometime soon.
Since its inception in 1994 — it was created Vincent Connare — people have had mixed feelings about the child-like font. Apparently, there’s even been a “Ban Comic Sans” campaign going since 1999.
Still, we’ve seen the font coming back into the public eye rather whimsically of late — Timothy McSweeney’s Internet Tendency even recently featured a short, imagined monologue titled “I’m Comic Sans, A**hole.”
I’ll admit that I’m a bit biased here, as I have a strange predilection for the goofy typeface — call it “I love the ugly puppy” syndrome — but it’s interesting to see it thrust into the public eye hand-in-hand with a sports-related incident. What do you think? They may have lost the King, but can the Cavs save Sans?
[img credit: keith allison]
Reviews: TwitterMore About: font, humor, popular-culture, social media, sports
For more Entertainment coverage:
- Follow Mashable Entertainment on Twitter
- Become a Fan on Facebook
- Subscribe to the Entertainment channel
- Download our free apps for iPhone and iPad
-
June 01, 02:10 PM
#133 The World Cup
Every four years the planet comes together to celebrate the World Cup and since white people make up a portion the world, they are not immune to the excitement.
However, before you start planning out long watching sessions with white people you should be aware of exactly why white people get so excited about the World Cup. Though you may be waiting on bated breath for your favorite sport on a global scale, white people like the World Cup because it allows them to pretend they are European for a few weeks, and more importantly, it allows them to get drunk at odd hours.
Virtually every white person you speak to about the World Cup is incapable of remembering any actual event that took place during a game but can, with near total recall, remember how they got very drunk on Sangria during a Spain-Paraguay match at five in the morning.
From reading the above paragraph, the sharper ones among you have likely noticed that clever white people also adore the World Cup because it allows them to pair countries with their respective alcoholic drink.
“England is playing Argentina? Dude we gotta get some Newcastle then like, I don’t know, like some wine I guess?”
This plan will be consummated with a high five, a trip to Trader Joes, and the purchase of a soccer jersey that will be worn, on average, twice a decade.
It’s also worth noting the amazing interest shown by white women in the World Cup. While they generally find most professional sporting events to be boring, the atmosphere at a World Cup match is much more amenable. Mostly because they don’t have to drink light beer and there is a good chance that they might meet a European man, or, at least someone who might be planning a trip there. This is far superior to a hockey game where, at best, they might meet a Canadian. It goes without saying that for white women, the World Cup can’t come soon enough.
Of course, hosting a themed party around one of the games is a sure fire way to increase your popularity with white people, but at the end of the day it does not increase your bottom line. No, during the World Cup, the most profit to be made will come from betting on the games with white people. Not only will they have plenty of disposable income, they will follow the following betting patterns:
- England is good
- Brazil is good
- Italy is good
- Teams from Africa are cute underdogs and thus always worth a bet.
When it comes to talking about the event, it goes without saying that you should probably avoid trying to talk to white people about any of the actual players in the World Cup aside from the biggest stars. Most white people cobble their soccer knowledge together from UK celebrity gossip and a few games of FIFA on the Wii.
But if you do find yourself talking to a white person who actually knows a lot about soccer you are probably talking to a European, or worse, a white guy who tries too hard.
The latter is especially dangerous, as they have likely been waiting for years to meet someone to converse with about “football” and with soccer’s year round schedule, they will never leave you alone.
-
June 08, 05:18 AM
There Are No Famous Programmers
I frequently meet a friend for lunch and we talk. Usually I'll blab on and on about music, or some weirdo project I have going on. He'll tell me about jobs he's had or trips he might take now that he's sold a company and can chill out for a while. After one such meeting he said, "It's so refreshing to meet up with a geek who doesn't talk about VCs and term sheets the whole time."
VCs and term sheets? Really? Well shit, tomorrow I get a x0xb0x and tonight I was hacking on a cool new web server now that I'm done with MulletDB. And these guys just think about VCs and term sheets? That's kind of sad really.
Let me tell you about this cool new web server. I figured out how to merge the ZeroMQ event polling system with the libtask coroutine library so that you can use libtask to handle tons of TCP/UDP and ZeroMQ sockets in a single thread. I then took this very cool hack, and started building a web server using my Mongrel HTTP parser, but I modified the parser so that the same server on the same port can handle HTTP or Flash XMLSockets transparently. The next step is to get this server to route HTTP and XMLSocket JSON messages to arbitrary ZeroMQ backends. I was inspired by this so much that I registered utu.im and may try to bring it back. Not sure how or when though.
Sounds cool right? Totally doesn't matter one bit. I could hack on projects like this and nobody would care at all because I'm a famous programmer, and there is no such thing as famous programmers. I don't exist. I'm an enigma.
-
May 30, 08:27 AM
QUOTE: Many people with jobs have a fantasy about
Many people with jobs have a fantasy about all the amazing things they would do if they didn’t need to work. In reality, if they had the drive and commitment to do actually do those things, they wouldn’t let a job get in the way.
—Paul Buchheit of Gmail fame on What to do with your millions.
-
May 23, 03:58 AM
Ruby on Rails 2.3.6 Released
We’ve released Ruby on Rails 2.3.6: six months of bug fixes, a handful of new features, and a strong bridge to Rails 3.
We deprecated some obscure and ancient features in Rails 2.3.6 so we could cut them entirely from Rails 3. If your app runs on Rails 2.3.6 without deprecation warnings, you’re in good shape for a smooth sail onward.
This slow-cooked dish is brought to you some 87 committers from our all-volunteer kitchen.
Now, let’s open the goodie bag!
Action Pack
- Upgrade Rack from 1.0.1 to 1.1.0.
- XSS prevention: update to match Rails 3 and move to the official plugin at http://github.com/rails/rails_xss.
- Cookies: convenient cookie jar add-ons to set permanent or signed cookies, or both at once:
cookies.permanent.signed[:remember_me] = current_user.id. Read more. - Flash: promote
alertandnotice, the most common flash keys in many apps, toself.alert = '...'andself.notice = '...'. Addredirect_to url, :alert => '...'and:notice => '...'. Read more. - i18n: localize the
labelhelper.
Active Record
- Namespacing: support optional table name prefixes on modules by defining
self.table_name_prefix. Read more. - Destroy uses optimistic locking.
- Counter cache: use
Post.reset_counters(1234, :comments)to count the number of comments for post 1234 and reset its comments_count cache. - PostgreSQL: always use standard-conforming strings, if supported.
- MySQL: add index length support. Read more.
- MySQL:
add_andchange_columnsupport column positioning using:first => trueand:after => :other_column.
Active Support
- Upgrade i18n from 1.3.3 to 1.3.7.
- Upgrade TZInfo from 0.3.12 to 0.3.16.
- Multibyte: speed up string verification and cleaning.
- JSON: use YAJL for JSON decoding, if available.
gem install yajl-ruby - Testing: add
assert_blankandassert_present. Read more. - Core: backport
Object#singleton_classfrom Ruby 1.8.8, deprecating ourObject#metaclass. - Core: add
Object#presencethat returns the object if it’s#present?otherwise returnsnil. Example:region = params[:state].presence || params[:country].presence || 'US' - Core: add
Enumerable#exclude?to matchinclude?. - Core: rename
Array#randtoArray#random_elementto avoid collision withKernel#rand. - Core: rename
Date#andTime#last_(month|year)to#prev_(month|year)for Ruby 1.9 forward compatibility.
Active Resource
- JSON: set
ActiveResource::Base.include_root_in_json = trueto serialize as a hash of model name -> attributes instead of a bare attributes hash. Defaults to false.
Action Mailer
- Upgrade TMail from 1.2.3 to 1.2.7.
Railties
- Silence RubyGems 1.3.6 deprecation warnings.
Peruse the commit log for the full story.
-
May 11, 11:21 AM
Funny history of programming languages
James Iry's "A Brief, Incomplete, and Mostly Wrong History of Programming Languages" had me snorting liquid out of my nose with delight at the contrafactual, geeky, in-jokey whimsy. -
May 05, 07:07 PM
RDropbox: A Ruby Client Library for Dropbox
Dropbox is a popular file hosting service (4m+ users) that provides synced backup and file hosting to OS X, Windows, and Linux users. You get up to 2GB of space for free. RDropbox is a library by Tim Morgan (of Autumn fame) that takes advantage of the official Dropbox API from Ruby.
With RDropbox you can log into a Dropbox account using OAuth and then upload and download files. A requirement, however, is that you apply for Dropbox API access and are approved, as the API is not fully open to the public without going through the approval process (this appears to be in order to avoid overloading their service). The API was, notably, worked on by notable Ruby alumnus, Zed Shaw.
Once you've made it into the Dropbox API program, RDropbox gives you the benefit of writing code as simple as:
# STEP 1: Authorize the user session = Dropbox::Session.new('your_consumer_key', 'your_consumer_secret') puts "Visit #{session.authorize_url} to log in to Dropbox. Hit enter when you have done this." gets session.authorize session.sandbox = true # STEP 2: Play! session.upload('testfile.txt') uploaded_file = session.file('testfile.txt') puts uploaded_file.metadata.size uploaded_file.move 'new_name.txt' uploaded_file.deleteAn alternative, unofficial route: tvongaza's DropBox
If you want to be using Dropbox from Ruby right now, there's an alternative: tvongaza/DropBox. This alternative library predates the official Dropbox API and uses the same techniques as the official Dropbox clients instead. For this you'll need to use your Dropbox e-mail username and password to log in (this could be a problem if you want to use third party Dropbox accounts!) and you can then create, delete and rename folders and files, as well as check usage statistics.
-
May 09, 12:00 AM
Root Canal Politics
Baby boomers must accept deep cuts today so their kids can have jobs and not be saddled with debts tomorrow. -
April 28, 01:07 PM
Everything You Need to Know About the New ActiveRecord API
Carl Lerche hosts Week 4 at Rails Dispatch: blog post and screencast on ActiveRelation, the new ActiveRecord API. Check it out! Also, be sure to take a peek at the new Q&A feature. -
March 04, 12:00 AM
Obama’s Ball and Chain
I fear that President Obama’s first term could be eaten by Citigroup, A.I.G., Bank of America, Merrill Lynch, and the whole housing/subprime credit bubble. -
March 03, 11:04 AM
Daily Show Discovers Twitter
What do you do when you're late to a trend? Mock yourself! Watch Jon Stewart's Daily Show writers, one of whom only started using the banal messaging service on Oscars night, try to catch up.
The subtext of the opening clip, which sets up the media's relentless fascination with Twitter: Every other media outlet in the world picked up on Twitter before the Daily Show did. Welcome to Twitteronia, kids.
Here's the full segment:
-
February 22, 12:00 AM
Start Up the Risk-Takers
Precious public money should focus on investing in a new generation of innovative companies, not on bailing out the losers. -
February 01, 12:00 AM
Elvis Has Left the Mountain
There is no magic bullet for this economic crisis. We are going to have to learn to live with a lot more uncertainty for a lot longer than our generation has ever experienced.