<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><description>

</description><title>Lance Ennen: Rails, Ruby, BDD, and Javascript</title><generator>Tumblr (3.0; @lanceennen)</generator><link>http://blog.lanceennen.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/LanceEnnen" /><feedburner:info uri="lanceennen" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><item><title>Obtiva Geekfest - Programming for business users - By. Brain Marick</title><description>&lt;p&gt;Awesome interactive role-playing explanation of programming for business users by Brain Marick. See it yourself at the upcoming Agile2010 conf! I film this with my iPhone 4, and clipped it together using iMovie on my iPhone.&lt;/p&gt;
&lt;p&gt;
&lt;object width="400" height="300"&gt;
&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13506935&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=13506935&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://vimeo.com/13506935" target="_blank"&gt;Obtiva Geekfest - Programming for business users - By. Brain Marick&lt;/a&gt; from &lt;a href="http://vimeo.com/user689524" target="_blank"&gt;Lance Ennen&lt;/a&gt; on &lt;a href="http://vimeo.com" target="_blank"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/r-QdCRGszbM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/r-QdCRGszbM/845672627</link><guid isPermaLink="false">http://blog.lanceennen.com/post/845672627</guid><pubDate>Thu, 22 Jul 2010 12:37:55 -0400</pubDate><category>obtiva</category><category>geekfest</category><category>programming for business user</category><category>brain marick</category><feedburner:origLink>http://blog.lanceennen.com/post/845672627</feedburner:origLink></item><item><title>GrouponCon</title><description>&lt;p&gt;&lt;span&gt;&lt;strong&gt;&lt;span&gt;&lt;img src="http://media.tumblr.com/tumblr_l2y1n7DqGg1qz9zuh.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;This past weekend, I went to &lt;/span&gt;&lt;a target="_blank" href="http://twitter.com/#search?q=%23grouponcon"&gt;&lt;span&gt;grouponcon&lt;/span&gt;&lt;/a&gt;&lt;span&gt; which was an &lt;/span&gt;&lt;a target="_blank" href="http://www.mindviewinc.com/Conferences/OpenSpaces.html"&gt;&lt;span&gt;Open Space format conference&lt;/span&gt;&lt;/a&gt;&lt;span&gt; for &lt;/span&gt;&lt;a target="_blank" href="http://groupon.com"&gt;&lt;span&gt;groupon&lt;/span&gt;&lt;/a&gt;&lt;span&gt; and &lt;/span&gt;&lt;a target="_blank" href="http://obtiva.com"&gt;&lt;span&gt;obtiva&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. At 9:30am, we began our Open Space facilitation and determined the direction for the day. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;The first talk was a career retrospective of the man: &lt;/span&gt;&lt;a target="_blank" href="http://c2.com/~ward/"&gt;&lt;span&gt;Ward Cunningham&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. We discussed &lt;/span&gt;&lt;a target="_blank" href="http://c2.com/cgi/wiki?HyperCard"&gt;hypercard&lt;/a&gt;,&lt;span&gt; which was his inspiration for &lt;/span&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Ward_Cunningham"&gt;wiki&lt;/a&gt;. &lt;a target="_blank" href="http://c2.com/doc/SignatureSurvey/"&gt;&lt;span&gt;Signature survey&lt;/span&gt;&lt;/a&gt;&lt;span&gt; where &lt;/span&gt;&lt;a target="_blank" href="http://c2.com/~ward/"&gt;&lt;span&gt;Ward Cunningham&lt;/span&gt;&lt;/a&gt;&lt;span&gt; talks about writing throw away scripts, and learning by reading the signature of the script. &lt;/span&gt;&lt;a target="_blank" href="http://fit.c2.com/"&gt;&lt;span&gt;Fit&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, and finished with a quote by &lt;/span&gt;&lt;a target="_blank" href="http://c2.com/~ward/"&gt;&lt;span&gt;Ward Cunningham&lt;/span&gt;&lt;/a&gt;&lt;span&gt; ”work effectively on the right thing in a visible way”. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;Next we discussed &lt;/span&gt;&lt;a target="_blank" href="http://en.wikipedia.org/wiki/Scalability"&gt;&lt;span&gt;scaling&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;a target="_blank" href="http://groupon.com"&gt;&lt;span&gt;groupon&lt;/span&gt;&lt;/a&gt;&lt;span&gt; the issues discussed were traffic spikes, high volume requests, expenses requests on card authorization, and collections. We focused on card authorization issues, and came up with ideas to pre-authorize good standing customers, based on number of purchases on there credit card. Tools were discussed such as &lt;/span&gt;&lt;a target="_blank" href="http://memcached.org/"&gt;&lt;span&gt;Memcached&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, &lt;/span&gt;&lt;a target="_blank" href="http://api.rubyonrails.org/classes/ActionController/Caching/Fragments.html"&gt;&lt;span&gt;fragment caching&lt;/span&gt;&lt;/a&gt;&lt;span&gt;, &lt;a target="_blank" href="http://www.rubyenterpriseedition.com/"&gt;REE&lt;/a&gt;, &lt;a target="_blank" href="http://www.mysqlperformanceblog.com/2010/01/05/upgrading-mysql/"&gt;upgrading mysql&lt;/a&gt;, &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Cache_algorithms#Pseudo-LRU"&gt;LRU.Query cache&lt;/a&gt;, &lt;a target="_blank" href="http://en.wikipedia.org/wiki/Content_delivery_network"&gt;CDN&lt;/a&gt;, &lt;a target="_blank" href="http://github.com/blog/542-introducing-resque"&gt;resque&lt;/a&gt;, &lt;a target="_blank" href="http://www.engineyard.com/"&gt;upgrading hardware&lt;/a&gt;, &lt;a target="_blank" href="http://www.ibm.com/developerworks/web/library/wa-rails1/"&gt;cache render views&lt;/a&gt;, &lt;a target="_blank" href="http://www.sphinxsearch.com/"&gt;sphinx&lt;/a&gt;, &lt;a target="_blank" href="http://guides.rubyonrails.org/performance_testing.html"&gt;profiling benchmarking&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;After lunch I joined &lt;/span&gt;&lt;a target="_blank" href="http://matt.puchlerz.com/"&gt;&lt;span&gt;Matt Puchlerz&lt;/span&gt;&lt;/a&gt;&lt;span&gt; for an HTML5 discussion. Matt suggested, if you haven’t read &lt;/span&gt;&lt;a target="_blank" href="http://diveintohtml5.org/"&gt;&lt;span&gt;Dive into HTML5&lt;/span&gt;&lt;/a&gt;&lt;span&gt; that you start. He also pointed out &lt;/span&gt;&lt;a target="_blank" href="http://code.google.com/p/html5shiv/"&gt;&lt;span&gt;html5shiv&lt;/span&gt;&lt;/a&gt;&lt;span&gt; which makes IE recognize HTML5 elements. Matt, showed off &lt;/span&gt;&lt;a target="_blank" href="http://www.craftymind.com/2010/04/20/blowing-up-html5-video-and-mapping-it-into-3d-space/"&gt;&lt;span&gt;Blowing up HTML5 video and mapping it into 3D space&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. This really showed off the power of HTML5. We finished the discussion with &lt;/span&gt;&lt;a target="_blank" href="http://westciv.com/"&gt;&lt;span&gt;westciv&lt;/span&gt;&lt;/a&gt;&lt;span&gt; and discussing 3D transforming in webkit.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;I finished the day up with a discussion on how groupon used &lt;a target="_blank" href="http://mustache.github.com"&gt;Mustache&lt;/a&gt; to develop a new secret beta version of groupon that everyone will soon have. Very cool!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;Thanks to everyone at Groupon for having me!&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/1-mdzEHHvgY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/1-mdzEHHvgY/629185621</link><guid isPermaLink="false">http://blog.lanceennen.com/post/629185621</guid><pubDate>Mon, 24 May 2010 17:53:00 -0400</pubDate><category>groupon</category><category>grouponcon</category><category>obtiva</category><category>html5</category><category>Mustache</category><category>Ward Cunningham</category><category>scaling</category><category>submission</category><feedburner:origLink>http://blog.lanceennen.com/post/629185621</feedburner:origLink></item><item><title>I created a groupon chrome extension with Nate Jackson in less...</title><description>&lt;img src="http://30.media.tumblr.com/tumblr_l227b4JZmo1qz9fpqo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I created a groupon chrome extension with &lt;a href="http://twitter.com/njackson" target="_blank"&gt;Nate Jackson&lt;/a&gt; in less then 4 hours. &lt;a href="https://chrome.google.com/extensions/detail/keccmbhjbccmgoghcpafgmnljgkbiack?hl=en" target="_blank"&gt;Download V.01 of the Groupon Chrome Extension here&lt;/a&gt; or &lt;a href="http://github.com/byennen/Groupon-Chrome-Extension" target="_blank"&gt;check out the code on github&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/53bIP7co7vs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/53bIP7co7vs/579140723</link><guid isPermaLink="false">http://blog.lanceennen.com/post/579140723</guid><pubDate>Fri, 07 May 2010 13:01:52 -0400</pubDate><category>groupon</category><feedburner:origLink>http://blog.lanceennen.com/post/579140723</feedburner:origLink></item><item><title>My first time speaking. A little rough, but you got to start...</title><description>&lt;object type="application/x-shockwave-flash" width="400" height="300" data="http://vimeo.com/moogaloop.swf?clip_id=11149795&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF"&gt;&lt;param name="quality" value="best" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="scale" value="showAll" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=11149795&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF" /&gt;&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=11149795&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;My first time speaking. A little rough, but you got to start somewhere!  Thanks to &lt;a href="http://aberant.tumblr.com/" target="_blank"&gt;Colin Harris&lt;/a&gt; and &lt;a href="http://squaremasher.blogspot.com/" target="_blank"&gt;Tyler Jennings&lt;/a&gt; for making &lt;a href="http://github.com/aberant/css-spriter" target="_blank"&gt;CSS-SPRITER&lt;/a&gt; Also, thanks to &lt;a href="http://aberant.tumblr.com/" target="_blank"&gt;Colin Harris&lt;/a&gt; for images used in my slideshare.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/xLQIwfPL4NA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/xLQIwfPL4NA/543295302</link><guid isPermaLink="false">http://blog.lanceennen.com/post/543295302</guid><pubDate>Fri, 23 Apr 2010 11:23:00 -0400</pubDate><category>css</category><category>sprites</category><category>speaking</category><feedburner:origLink>http://blog.lanceennen.com/post/543295302</feedburner:origLink></item><item><title>Passenger, VMWare, and Windows for testing sites</title><description>&lt;p&gt;I’ve been using Passenger for my Rails projects for the past year. When it comes to testing my Rails apps for browser compatibility I like to use crossover for ie6 (on OSX), and Windows 7 for ie7 and ie8 using Internet Explorers Developer Tools. I run Windows 7 using VMWare. &lt;/p&gt;

&lt;p&gt;When I need to test an app that’s using Passenger in VMWare in the past I’ve updated my hosts file (/Windows/system32/drivers/etc/hosts) with my current IP address. This has become a pain, and time consuming. &lt;/p&gt;

&lt;p&gt;&lt;b&gt;The solution&lt;/b&gt; since we can not use 127.0.0.1 for a hostname. Run this command in your Terminal &lt;b&gt;“ifconfig vmnet8”&lt;/b&gt; and grab the ip address next to inet. Take this ip address and update your hosts file on your Windows VM. Don’t forget to copy your hosts file from your Mac to the Windows hosts file.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/SzaWiLVFN50" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/SzaWiLVFN50/344810142</link><guid isPermaLink="false">http://blog.lanceennen.com/post/344810142</guid><pubDate>Wed, 20 Jan 2010 16:37:00 -0500</pubDate><category>browser compatibility testing</category><category>passenger</category><category>vmware</category><feedburner:origLink>http://blog.lanceennen.com/post/344810142</feedburner:origLink></item><item><title>Fixing Select Drop down issues in IE using jQuery</title><description>&lt;p&gt;Firefox does auto width on data in select drop downs automatically, but IE doesn’t. This is a quick example of how you can use jQuery to fix this width issue, and allow your web visitors access to all the data in your drop downs the same in all browsers.&lt;/p&gt;

&lt;p&gt;You can either use the input name, ID, or class. In this example I’m assuming you have an input name on your select field.&lt;/p&gt;

&lt;p&gt;&lt;script src="http://pastie.org/752126.js"&gt;&lt;/script&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/B_N3Rr_lS4E" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/B_N3Rr_lS4E/293617906</link><guid isPermaLink="false">http://blog.lanceennen.com/post/293617906</guid><pubDate>Mon, 21 Dec 2009 13:01:00 -0500</pubDate><category>javascript</category><category>jquery</category><category>ie</category><feedburner:origLink>http://blog.lanceennen.com/post/293617906</feedburner:origLink></item><item><title>Resetting a cycle tag in Jinja</title><description>&lt;p&gt;At my current client I’m working on a platform that uses Django, and a templating system called Jinja.&lt;/p&gt;

&lt;p&gt;I had to use Jinja to change the CSS class to modify the background color for each dynamic data returned in each loop.&lt;/p&gt;

&lt;p&gt;This seems straight forward after looking at Jinja’s documentation using the cycle tag.&lt;/p&gt;

&lt;p&gt;So, the code looked like this:&lt;/p&gt;

&lt;p&gt;&lt;span class="code"&gt;&lt;script src="http://pastie.org/702747.js"&gt;&lt;/script&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;and then the class in each loop look like this:&lt;/p&gt;

&lt;p&gt;&lt;span class="code"&gt;&lt;script src="http://pastie.org/702750.js"&gt;&lt;/script&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Each loop… that’s when I ran into an issue. We had more than one loop on one page, but we needed to have the class change, and increment by 1.&lt;/p&gt;

&lt;p&gt;It was incrementing by 1, but not resetting after each loop. So, if 3 were in the first loop the next loop would start with 4, and not reset until after 5.&lt;/p&gt;

&lt;p&gt;So, here is an example of resetting a cycle tag in Jinja:&lt;/p&gt;

&lt;p&gt;&lt;span class="code"&gt;&lt;script src="http://pastie.org/702754.js"&gt;&lt;/script&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;By calling the cycle and using .reset() this returns none, and resets the cycle.&lt;/p&gt;

&lt;p&gt;You will noticed I have commented out {{ row_class.reset() }} without comment tags this will render “None”. So, the hack is to just comment this out.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/0bdei4qTZuY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/0bdei4qTZuY/247358645</link><guid isPermaLink="false">http://blog.lanceennen.com/post/247358645</guid><pubDate>Tue, 17 Nov 2009 11:36:00 -0500</pubDate><category>jinja</category><feedburner:origLink>http://blog.lanceennen.com/post/247358645</feedburner:origLink></item><item><title>Check this out! I get 2 seconds of TV fame!</title><description>&lt;embed src="http://cnettv.cnet.com/av/video/cbsnews/atlantis2/player-dest.swf" flashvars="linkUrl=http://www.cbsnews.com/video/watch/?id=5126492n&amp;tag=mg%3Beveningnews&amp;releaseURL=http://cnettv.cnet.com/av/video/cbsnews/atlantis2/player-dest.swf&amp;videoId=50073830,50073851,50073850,50073849,50073837,50073841,50073836&amp;partner=news&amp;vert=News&amp;autoPlayVid=false&amp;name=cbsPlayer&amp;allowScriptAccess=always&amp;wmode=transparent&amp;embedded=y&amp;scale=noscale&amp;rv=n&amp;salign=tl" allowfullscreen="true" width="425" height="324" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Check this out! I get 2 seconds of TV fame!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/B5ypC6DBMUw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/B5ypC6DBMUw/133669315</link><guid isPermaLink="false">http://blog.lanceennen.com/post/133669315</guid><pubDate>Wed, 01 Jul 2009 14:41:00 -0400</pubDate><category>media</category><feedburner:origLink>http://blog.lanceennen.com/post/133669315</feedburner:origLink></item><item><title>99 beers on the wall! FOR FUN!!!</title><description>&lt;p&gt;&lt;script src="http://pastie.org/405590.js"&gt;&lt;/script&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/NaGPl4KsKdI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/NaGPl4KsKdI/83044685</link><guid isPermaLink="false">http://blog.lanceennen.com/post/83044685</guid><pubDate>Tue, 03 Mar 2009 00:15:00 -0500</pubDate><category>ruby</category><feedburner:origLink>http://blog.lanceennen.com/post/83044685</feedburner:origLink></item><item><title>Custom form with Validations using Rspec and Story Runner</title><description>&lt;b&gt;To Install:&lt;/b&gt;
&lt;p&gt;This is a custom Contact form with Validations without ActiveRecord. This works nicely without the use of the database or ActiveRecord model. It’s quite easy with a gem called Validatable.&lt;/p&gt;
&lt;script src="http://pastie.org/393753.js"&gt;&lt;/script&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/RX9umT4VN-0" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/RX9umT4VN-0/79593736</link><guid isPermaLink="false">http://blog.lanceennen.com/post/79593736</guid><pubDate>Thu, 19 Feb 2009 01:31:00 -0500</pubDate><category>storyrunner</category><feedburner:origLink>http://blog.lanceennen.com/post/79593736</feedburner:origLink></item><item><title>"Life is one big road with lots of signs. So when you riding through the ruts, don’t complicate..."</title><description>“Life is one big road with lots of signs. So when you riding through the ruts, don’t complicate your mind. Flee from hate, mischief and jealousy. Don’t bury your thoughts, put your vision to reality . Wake Up and Live!?”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Bob Marley&lt;/em&gt;&lt;img src="http://feeds.feedburner.com/~r/LanceEnnen/~4/Wy2IfXRT06c" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/LanceEnnen/~3/Wy2IfXRT06c/31366622</link><guid isPermaLink="false">http://blog.lanceennen.com/post/31366622</guid><pubDate>Thu, 10 Apr 2008 12:03:03 -0400</pubDate><feedburner:origLink>http://blog.lanceennen.com/post/31366622</feedburner:origLink></item></channel></rss>
