<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3033190926191096662</id><updated>2011-10-09T14:02:28.390-07:00</updated><category term='adpickles'/><title type='text'>The adPickles Manifesto</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Stewart</name><uri>http://www.blogger.com/profile/15129388076143262746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-1809213258815638582</id><published>2008-03-14T07:53:00.000-07:00</published><updated>2008-03-14T07:57:45.947-07:00</updated><title type='text'>Getting bit by MySQL Dates</title><content type='html'>Yesterday morning, Jack sent out a rather perplexing problem to Josh and myself.&lt;br /&gt;&lt;br /&gt;Basically, he reported, this query doesn't return any results, despite there being plenty of valid records:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select * from injections where DATE(created_at) = DATE('2008-03-11');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And this query returns the expected records:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select * from injections where DATE(created_at) = DATE('2008-02-18');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The only difference between the two queries is the date provided.  Crazy.&lt;br /&gt;&lt;br /&gt;But wait, it's gets worse!&lt;br /&gt;&lt;br /&gt;This query yields 293 rows (distinct days):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select distinct DATE(created_at) from injections;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;While this one only returns 277 rows (days):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select distinct DATE(created_at) from injections where DATE(created_at) = DATE(created_at);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Josh provided some interesting links to MySQL documentation with tidbits like:&lt;blockquote&gt;"MySQL automatically converts a date to a number if the date is used in a numeric context"&lt;/blockquote&gt;and&lt;blockquote&gt;"However, this conversion is subject to the following exceptions: ... For these exceptional cases, the comparison is done by converting the objects to strings and performing a string comparison."&lt;/blockquote&gt;and this one, which I suspect is the culprit:&lt;blockquote&gt;"A microseconds part is allowable in temporal values in &lt;em&gt;some&lt;/em&gt; contexts, such as in literal values, and in the arguments to or return values from &lt;em&gt;some&lt;/em&gt; temporal functions."&lt;/blockquote&gt;I emphasized the use of the word "some" in that quote.  When an API is &lt;em&gt;sometimes&lt;/em&gt; consistent - an oxymoron if I've ever heard one - it should set off the klaxons in your noggin.&lt;br /&gt;&lt;br /&gt;We didn't solve the puzzle, but Jack did find a clever resolution:&lt;blockquote&gt;&lt;br /&gt;...it turns out that "created_at LIKE '2008-03-11%'" is about 10% faster.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-1809213258815638582?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/1809213258815638582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=1809213258815638582' title='40 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/1809213258815638582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/1809213258815638582'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2008/03/getting-bit-by-mysql-dates.html' title='Getting bit by MySQL Dates'/><author><name>Teflon Ted</name><uri>http://www.blogger.com/profile/14076074529160569225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://p1.hotornot.com/pics/hl/he/gy/ks/smhmoqpdsnl.jpg'/></author><thr:total>40</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-4273852898666260215</id><published>2008-02-22T09:13:00.000-08:00</published><updated>2008-04-06T15:42:32.450-07:00</updated><title type='text'>Rails Scales</title><content type='html'>Last month, Stewart dropped me a little note...&lt;br /&gt;&lt;blockquote&gt;"I've heard a few people mention that they heard that Rails doesn't scale [...] any suggestions on how we might alleviate their doubt?"&lt;/blockquote&gt;So I rallied the troops (Jack and Josh) and we set out on a little informal fact-finding mission.  Here's what we've come up with thus far...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://shanti.railsblog.com/how-7-mongrels-handled-a-550k-pageview-digging"&gt;How 7 Mongrels Handled a 550k Pageview Digging&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Not a lot of in-depth analysis here, just an impressive scaling success story with a pretty bar chart of the traffic load and an itemization of the hardware and software involved along with costs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.loudthinking.com/arc/000479.html"&gt;It's boring to scale with Ruby on Rails&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Granted, this one is written by the man himself, Mister Rails, so you have to take it with a grain of salt, but he hits upon the common themes, which are caching, load balancing, and:&lt;br /&gt;&lt;blockquote&gt;"Scaling the database is the `hard part'"&lt;/blockquote&gt;Unfortunately he gets a little off track in the second half of the essay and goes into the cost analysis of productivity and happiness, which is where you'll lose the attention of most investors.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.highscalability.com/scaling-twitter-making-twitter-10000-percent-faster"&gt;Scaling Twitter: Making Twitter 10000 Percent Faster&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I love the High Scalability blog; it's the dessert of my weekly reading.  Granted Twitter still has its problems to this day, but you can't deny its monumental achievement in wide-spread adoption and ungodly levels of traffic.  In addition to the aforementioned staples of caching, load balancing, and database optimization, they add partitioning and queueing to the mix.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.infoq.com/news/2007/12/engine-yard-bets-big-rubinius"&gt;Engine Yard Bets Big on Rubinius&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What does this have to do with the scalability of Rails?  Well nothing explicit in the article, but it supports two important movements that will eventually lead to a greater good. &lt;br /&gt;&lt;br /&gt;First of all, Rubinius is one of three now mainstream Ruby implementations (the other two being Matz's original and Sun's JRuby).  Competition here is good.  This means better, faster, more stable Ruby environments, which will translate into a faster and more stable Rails.&lt;br /&gt;&lt;br /&gt;Secondly, Rubinius is eventually going to lead to mod_rubinius, which will lead to even more scalability of the Rails platform by allowing us to leave separate single-process servers (like Mongrel) on the wayside.&lt;br /&gt;&lt;br /&gt;Personally my money is on JRuby (and Glassfish) for the long haul; if you haven't checked out Glassfish yet, you're doing yourself a disservice!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thewhir.com/marketwatch/011108_Benchmark_Invests_in_RoR_Provider.cfm"&gt;Benchmark Invests in RoR Provider&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pretty much a no-brainer here.  Benchmark Capital invested $3.5 million into Engine Yard, whose main business is Rails hosting.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/websphere/techjournal/0801_shillington/0801_shillington.html"&gt;Riding the Rails with WebSphere&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If Glassfish is a little too cutting-edge for you, and you're all about being "enterprisey", then IBM's WebSphere is probably right up your alley. &lt;br /&gt;&lt;br /&gt;At this point, between IBM and Sun's support of Ruby and Rails, and the multi-million dollar investments other Rails-based ventures are receiving, I'm beginning to wonder how savvy are these potential investors Stewart is getting flak from.&lt;br /&gt;&lt;br /&gt;But we're not done yet...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.buildingwebapps.com/articles/13"&gt;Can Rails Scale? Absolutely!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This article is a pretty good round-up of the more recognizable names using Rails, such as Yellow Pages, Basecamp, and the infamous Twitter, as well as a rehashing of the same old story: caching, spreading the load, and tuning your database.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://highscalability.com/friends-sale-architecture-300-million-page-view-month-facebook-ror-app"&gt;Friends for Sale Architecture - A 300 Million Page View/Month Facebook RoR App Todd Hoff's picture&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here we are again at my favorite feed, High Scalability, with another Rails scalability success story.  This time it's a Facebook app, and a rather popular one at that.  I won't spoil the surprise for you, because their is no surprise -- it's the same old story: cache, distribute, and:&lt;br /&gt;&lt;blockquote&gt;"The most important thing we learned is that your scalability problems is pretty much always, always, always the database."&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So in summary, there's plenty of good ammunition out there against the naysayers, and soon there will be one more when AdPickles launches and sets a whole new bar by which Rails scalability will be measured.  No pressure Jack and Josh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-4273852898666260215?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/4273852898666260215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=4273852898666260215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/4273852898666260215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/4273852898666260215'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2008/02/rails-doesnt-scale.html' title='Rails Scales'/><author><name>Teflon Ted</name><uri>http://www.blogger.com/profile/14076074529160569225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://p1.hotornot.com/pics/hl/he/gy/ks/smhmoqpdsnl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-7932892629396048727</id><published>2008-01-16T08:36:00.000-08:00</published><updated>2008-01-17T11:20:48.360-08:00</updated><title type='text'>Hyphenated URLs in Rails</title><content type='html'>&lt;h2&gt;The Problem&lt;br /&gt;&lt;/h2&gt;Rails, by default, produces underscored URLs for multi-word methods and controllers.  For example, a controller by the name of ContactUs with the method about_advertising will respond, with the default routing, to the path &lt;span style="font-weight: bold;font-family:courier new;" &gt;/contact_us/about_advertising&lt;/span&gt;.  This is all well and good except when it comes to search engines.  Underscores are seen, at least by Google at the moment, as part of a word, whereas hyphens (dashes) are seen as word separators.  This means that our above path will hit for searches on "&lt;span style="font-weight: bold;font-family:courier new;" &gt;contact_us&lt;/span&gt;" and "&lt;span style="font-weight: bold;font-family:courier new;" &gt;about_advertising&lt;/span&gt;" but not for "&lt;span style="font-weight: bold;font-family:courier new;" &gt;contact&lt;/span&gt;" or "&lt;span style="font-weight: bold;font-family:courier new;" &gt;advertising&lt;/span&gt;".  That's no good!  How can we get Rails to use &lt;span style="font-weight: bold;font-family:courier new;" &gt;/contact-us/about-advertising&lt;/span&gt; so that our site might get indexed for the keyword "&lt;span style="font-weight: bold;font-family:courier new;" &gt;advertising&lt;/span&gt;"?&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Action Names&lt;br /&gt;&lt;/h2&gt;Fixing the action name is easy enough as hyphens are valid characters in method names.  Well, almost-- hyphens may be valid in method names, but they are not valid in symbols, which means that we can't use the standard "def" syntax to declare methods with hyphens in their names.  To get around that, we turn to &lt;span style="font-weight: bold;font-family:courier new;" &gt;define_method&lt;/span&gt;.  To change &lt;span style="font-weight: bold;font-family:courier new;" &gt;/contact_us/about_advertising&lt;/span&gt; to &lt;span style="font-weight: bold;font-family:courier new;" &gt;/contact_us/about-advertising&lt;/span&gt;, we can change the method declaration from:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 400px;"&gt;&lt;code&gt;def about_advertising&lt;br /&gt;...&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;to:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 400px;"&gt;&lt;code&gt;define_method('about-advertising') do&lt;br /&gt;...&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Controller Paths&lt;br /&gt;&lt;/h2&gt;It looks like we are halfway to where we want to go, but the controller part of the path turns out to be a more difficult part of the problem.  There is no way, at least that I know of, to use an underscore in a class name.  Therefore, we turn to Rails routing for some help.  The easiest solution is to create a special route for the ContactUs controller in &lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;config/routes.rb&lt;/span&gt;&lt;/span&gt; as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 400px;"&gt;&lt;code&gt;&lt;br /&gt;ActionController::Routing::Routes.draw do |map|&lt;br /&gt;map.connect '/contact-us/:action/:id', :controller =&gt; 'contact_us'&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;and we get &lt;span style="font-weight: bold;font-family:courier new;" &gt;/contact-us/about-advertising&lt;/span&gt;.  And we're done!  Well, not quite.  Having to add route entries for every multi-word controller is no fun, certainly not very DRY, and doesn't handle the RESTful map.resources.  Enter hyphenated_controller_routes, the plugin I wrote to address those problems, and the reason for this blog post.&lt;br /&gt;&lt;h2&gt;Hyphenated Controller Routes &lt;/h2&gt;The plugin, located at &lt;a href="http://svn.vickeryj.com/public/hyphenated_controller_routes/trunk"&gt;http://svn.vickeryj.com/public/hyphenated_controller_routes/trunk&lt;/a&gt; can automatically create hyphenated routes for all multi-word controllers, and can update &lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;map.resources&lt;/span&gt;&lt;/span&gt; to generate hyphenated URLs for multi-word resources.  After installing the plugin, update &lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;config/routes.rb&lt;/span&gt;&lt;/span&gt; to make use of &lt;span style="font-weight: bold;"&gt;&lt;span style="font-family:courier new;"&gt;map.add_hyphenated_routes()&lt;/span&gt; &lt;/span&gt;and&lt;span style="font-weight: bold;"&gt; map.use_hyphenated_resources()&lt;/span&gt; as desired.&lt;br /&gt;&lt;br /&gt;An example &lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;config/routes.rb:&lt;/span&gt;&lt;/span&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 400px;"&gt;&lt;code&gt;&lt;br /&gt;ActionController::Routing::Routes.draw do |map|&lt;br /&gt;&lt;br /&gt;#a resource that will be mapped with an underscore&lt;br /&gt;map.resources :non_hyphenated_resources&lt;br /&gt;&lt;br /&gt;#turn on hyphenated resources&lt;br /&gt;map.use_hyphenated_resources()&lt;br /&gt;&lt;br /&gt;#all following resources will use hyphens (contact-us)&lt;br /&gt;map.resource :contact_us&lt;br /&gt;&lt;br /&gt;# add hyphenated routes with higher priority than the default routes&lt;br /&gt;map.add_hyphenated_routes&lt;br /&gt;&lt;br /&gt;# Install the default routes&lt;br /&gt;map.connect ':controller/:action/:id.:format'&lt;br /&gt;map.connect ':controller/:action/:id'&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-7932892629396048727?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/7932892629396048727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=7932892629396048727' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/7932892629396048727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/7932892629396048727'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2008/01/hyphenated-urls-in-rails.html' title='Hyphenated URLs in Rails'/><author><name>Josh Vickery</name><uri>http://www.blogger.com/profile/16799683576369010970</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-545358654275776630</id><published>2007-11-10T10:20:00.000-08:00</published><updated>2007-11-10T10:24:08.579-08:00</updated><title type='text'>Nested ActiveRecord Relationships and Validation Conundrum</title><content type='html'>I ran into a bit of a pickle earlier this week with some models and their relationships.&lt;br /&gt;&lt;h3&gt;The Situation&lt;/h3&gt;* A partner has an account.&lt;br /&gt;&lt;br /&gt;* An account has an address.&lt;br /&gt;&lt;br /&gt;* Accounts do not require an address; it's optional.&lt;br /&gt;&lt;br /&gt;* Partners &lt;em&gt;do&lt;/em&gt; require an address.&lt;br /&gt;&lt;h3&gt;The Problem&lt;/h3&gt;So how do I enforce the presence of an address for the account assigned to the partner?&lt;br /&gt;&lt;h3&gt;My First Attempt&lt;/h3&gt;My first thought was to break the encapsulation and create a direct partner-to-address relationship.  Then I came up with the clever hack of keeping the partner-address in sync with the account-address during assignment, so when you set the address for the partner, it would automatically set the account to the same address.  But it just didn't sit right with me; it wasn't the typical Ruby on Rails elegance I had come to expect.  So I reached out to my partner in crime (&lt;a href="http://6brand.com/"&gt;Jack Danger&lt;/a&gt;) and asked for his opinion.&lt;br /&gt;&lt;h3&gt;A More Elegant Idea&lt;/h3&gt;Jack suggested a more elegant simplification of &lt;em&gt;just&lt;/em&gt; validating the presence of the address from the partner level like so:&lt;pre&gt;validates_presence_of :address&lt;br /&gt;&lt;br /&gt;def address&lt;br /&gt;  account &amp;&amp; account.address&lt;br /&gt;end&lt;/pre&gt;Now that's the simplicity and elegance I've come to expect from a Ruby on Rails application. &lt;br /&gt;&lt;h3&gt;A Possible Third&lt;/h3&gt;But Jack also took it a step further and suggested subclassing account and making address required, so we'd have two types of accounts, one with optional addresses and one with required addresses.  That might be even less code and &lt;em&gt;arguably&lt;/em&gt; more elegant, but my gut just tells me it's a little less of a hack than my original attempt and not quite as pure as his first suggestion.&lt;br /&gt;&lt;h3&gt;Wrapping Up&lt;/h3&gt;I went with Jack's first suggestion and I'm satisfied with the results, but I'm curious to hear if anybody else has tackled the same, or similar, problem, and how they solved it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-545358654275776630?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/545358654275776630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=545358654275776630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/545358654275776630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/545358654275776630'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2007/11/nested-activerecord-relationships-and.html' title='Nested ActiveRecord Relationships and Validation Conundrum'/><author><name>Teflon Ted</name><uri>http://www.blogger.com/profile/14076074529160569225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://p1.hotornot.com/pics/hl/he/gy/ks/smhmoqpdsnl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-8526753463527106626</id><published>2007-10-20T13:37:00.000-07:00</published><updated>2007-10-20T13:42:38.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adpickles'/><title type='text'>The future is green</title><content type='html'>No, I'm not talking about switching from my fossil fuel &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;burning&lt;/span&gt; automobile to a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;hydrogen&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;powered&lt;/span&gt; motorcycle.  At least not yet.  I am talking about pickles.  &lt;a href="http://www.adpickles.com"&gt;adPickles.&lt;/a&gt;   &lt;a href="http://www.adpickles.com"&gt;adPickles&lt;/a&gt; has started the design of its B2B platform.  Things are looking pretty interesting right now.   More &lt;a href="http://www.adpickles.com"&gt;adPickles&lt;/a&gt; info to come...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-8526753463527106626?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/8526753463527106626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=8526753463527106626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/8526753463527106626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/8526753463527106626'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2007/10/future-is-green.html' title='The future is green'/><author><name>Stewart</name><uri>http://www.blogger.com/profile/15129388076143262746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-6526378477339427098</id><published>2007-09-13T12:56:00.000-07:00</published><updated>2007-09-17T11:50:21.810-07:00</updated><title type='text'>adPickles and Rails - A beautiful marriage!</title><content type='html'>Using Rails to develop the &lt;a href="http://www.adpickles.com"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;adPickles&lt;/span&gt; web site&lt;/a&gt; was a smart choice. It seems that some of the brightest and best talent in the business has adopted Rails as a tool in their arsenal. And some of those brightest, I am proud to say, are the folks who are putting this project together.  Another smart technical choice... &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;png&lt;/span&gt; vs. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;jpg&lt;/span&gt; gave us freedom to expand our design horizons.  Rails and adPickles.  A great marriage indeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-6526378477339427098?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/6526378477339427098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=6526378477339427098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/6526378477339427098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/6526378477339427098'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2007/09/railing-forward.html' title='adPickles and Rails - A beautiful marriage!'/><author><name>Stewart</name><uri>http://www.blogger.com/profile/15129388076143262746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-6220971206768024609</id><published>2007-07-19T19:15:00.000-07:00</published><updated>2007-07-19T19:17:12.470-07:00</updated><title type='text'>The Midas Touch</title><content type='html'>Stewart Padveen has the Midas Touch when it comes to web companies.  I've spent the last twelve years of my career designing and deploying the technologies that drove two of his companies (HotOffice and Nutrio).  While I was busy doing that, he started two more successful ventures (MotionPoint and Firmagen).  He pitched his latest idea to me at the beginning of this year and it sounded like another winner; I knew I had to be involved.  &lt;br /&gt;&lt;br /&gt;Although I've cut my teeth on Java and "the enterprise", a couple years back I started dabbling in a little gem (if you'll excuse the pun) called Ruby; a spectacularly elegant programming language.  Then some crazy ambitious young Dane came along and built on top of it an even more wonderful web framework named Rails.  It was a match made in Heaven and I fell in love immediately.  &lt;br /&gt;&lt;br /&gt;And speaking of perfect matches, AdPickles and Ruby on Rails make a very cute couple.  The project has made tremendous progress thanks to this framework and the tight-knit community of brilliant supporters and contributors, and most of all Jack Danger Canty, their dedicated wizard.  Not since the Perl years of yore have I seen such blur of productivity.&lt;br /&gt;&lt;br /&gt;But the back-end isn't where all the magic happens.  There's a client piece to this puzzle as well.  I won't spill too many beans here, lest Stewart chastise me, but let me say that Windows is a cruel mistress, and the impressive skills of Aaron Cody have managed to tame that shrew.  &lt;br /&gt;&lt;br /&gt;Mark my words, and bookmark this feed, this is going to be another rocket ride to the stars.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-6220971206768024609?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/6220971206768024609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=6220971206768024609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/6220971206768024609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/6220971206768024609'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2007/07/midas-touch.html' title='The Midas Touch'/><author><name>Teflon Ted</name><uri>http://www.blogger.com/profile/14076074529160569225</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://p1.hotornot.com/pics/hl/he/gy/ks/smhmoqpdsnl.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-8963857450424489430</id><published>2007-07-10T13:55:00.001-07:00</published><updated>2007-07-10T14:08:35.439-07:00</updated><title type='text'>Our true colors</title><content type='html'>While the technical development of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;adPickles&lt;/span&gt; technology is an intense but highly enjoyable project, we have paralleled our efforts with another project that is far less technical but a lot more difficult than I had ever imagined; picking the adPickles web site colors and web page design and layout. Color and design preferences are purely subjective, therefore it is no surprise that 12 people have 12 different opinions. Trying to find that universal design and color scheme that touches a universal emotionality is the holy grail of design. Simplicity is key for sure, but so it functionality and about a thousand tiny nuances that can &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;inadvertently&lt;/span&gt; make or break the project. After countless hours or mock ups, designs and layouts by Sari, our resident "web-Rembrandt," we have settled on our colors and design. I am happy to report that the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;response&lt;/span&gt; has been unanimously positive from all who have seen it. I am sure we &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;will&lt;/span&gt; make changes to the adPickles web site as we forge ahead, but thanks for a wonderful effort by Sari (with a little help firm tech gurus Ted and Jack).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-8963857450424489430?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/8963857450424489430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=8963857450424489430' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/8963857450424489430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/8963857450424489430'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2007/07/our-true-colors.html' title='Our true colors'/><author><name>Stewart</name><uri>http://www.blogger.com/profile/15129388076143262746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3033190926191096662.post-682536469796941860</id><published>2007-06-30T12:27:00.000-07:00</published><updated>2007-06-30T12:36:16.755-07:00</updated><title type='text'>Welcome!</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Welcome to our blog!  As we gear up to launch the adPickles website, this blog will enable us to share our thoughts with you on why we started adPickles and what we're hoping to accomplish.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3033190926191096662-682536469796941860?l=adpickles.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adpickles.blogspot.com/feeds/682536469796941860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3033190926191096662&amp;postID=682536469796941860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/682536469796941860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3033190926191096662/posts/default/682536469796941860'/><link rel='alternate' type='text/html' href='http://adpickles.blogspot.com/2007/06/welcome.html' title='Welcome!'/><author><name>Stewart</name><uri>http://www.blogger.com/profile/15129388076143262746</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
