<?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><title>Ed Menendez' Blog</title><link>http://menendez.com/feeds/latest/</link><description>Ed's latest musings regarding just about any topic.</description><language>en-us</language><lastBuildDate>Thu, 23 May 2013 02:44:21 -0000</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/edmenendez" /><feedburner:info uri="edmenendez" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Query a Random Row With Django</title><link>http://feedproxy.google.com/~r/edmenendez/~3/Ke7op-SCf2U/</link><description>&lt;p&gt;Here's a &lt;a href="https://gist.github.com/edmenendez/5580829"&gt;gist&lt;/a&gt; for a drop-in Django manager class that allows you to return a random row.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;br/&gt;

&lt;p&gt;It can be used in your models.py like this:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;QuoteManager&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RandomManager&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;random_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;is_active&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Quote&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;quote&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TextField&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;by&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CharField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;75&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;is_active&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BooleanField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;objects&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;QuoteManager&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__unicode__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;by&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;br/&gt;

&lt;p&gt;Advantages over using the &lt;a href="http://django.readthedocs.org/en/latest/ref/models/querysets.html#django.db.models.query.QuerySet.order_by"&gt;order_by('?')&lt;/a&gt; is performance. Random sort at the database seems to be extremely slow on most databases even if the table only has a few thousand rows. Note that the count of records is cached for 5 minutes, so if the table changes often you may want to change that. A limitation is that it only returns one row.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/Ke7op-SCf2U" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/query-random-row-django/</guid><feedburner:origLink>http://menendez.com/blog/query-random-row-django/</feedburner:origLink></item><item><title>Box Office Champs Launches</title><link>http://feedproxy.google.com/~r/edmenendez/~3/2wTuujuIAvM/</link><description>&lt;a href="http://boxofficechamps.com/" target="boc"&gt;&lt;img src="http://www.menendez.com/site_media/images/blog/box-office-champs.jpg" width="550" height="444" border="0" vspace="5"&gt;&lt;/a&gt;&lt;p&gt;A fantasy movie game built using Django. This is a very easy game where you pick the 15 movies you think will be the highest grossing movies of the season. You can create a group and compete with your friends.&lt;/p&gt;

&lt;p&gt;You should give the site a try today. Iron Man 3 opens tomorrow and you definitely want to have that movie on your roster. Unlike fantasy sports, you can play this game 4 times a year. The summer season starts tomorrow.&lt;/p&gt;

&lt;p&gt;Kudos to &lt;a href="http://twitter.com/x42"&gt;Rudy Menendez&lt;/a&gt; who did principal development and game design and Noah Wenz for design and HTML. The site was with spare time over the last few months. Put together, development time was about 2-3 weeks.&lt;/p&gt;

&lt;p&gt;If you need a fantasy site done, contact &lt;a href="mailto:ed@menendez.com"&gt;Ed&lt;/a&gt; or &lt;A href="mailto:rudymenendez@gmail.com"&gt;Rudy Menendez&lt;/a&gt; and we can help you out.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/2wTuujuIAvM" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/box-office-champs-launches/</guid><feedburner:origLink>http://menendez.com/blog/box-office-champs-launches/</feedburner:origLink></item><item><title>Getting AngularJS Authentication Working with Django</title><link>http://feedproxy.google.com/~r/edmenendez/~3/4_ugVVIDAUY/</link><description>&lt;p&gt;&lt;a href="https://github.com/edmenendez/django-angular-auth"&gt;django-angular-auth&lt;/a&gt; is a very simple example app or seed to get &lt;a href="http://angularjs.org/"&gt;AngularJS&lt;/a&gt; authenticating using Django and &lt;a href="http://tastypieapi.org/"&gt;Tastypie&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Although AngularJS' documentation has gotten much better, it still took me quite a while to figure out what exactly was the best path to take. Also, there are a few gotchas with allowed headers and cross-site security which are already solved in the example. Take a look and let me know what you think.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/4_ugVVIDAUY" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/getting-angularjs-authentication-django/</guid><feedburner:origLink>http://menendez.com/blog/getting-angularjs-authentication-django/</feedburner:origLink></item><item><title>LittleBrownieBakers.com Launches</title><link>http://feedproxy.google.com/~r/edmenendez/~3/NK_t4qcXH0Q/</link><description>&lt;a href="http://littlebrowniebakers.com/" target="avt"&gt;&lt;img src="http://www.menendez.com/site_media/images/blog/little-brownie-bakers-2011.jpg" width="550" height="351" border="0" vspace="5"&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://littlebrowniebakers.com/"&gt;Little Brownie Bakers&lt;/a&gt; are the bakers that make Girl Scout Cookies. They required a custom CMS where they could enter info about cookies, post selling tips for parents, kids and volunteers; and generally update the world on the latest cookie news. And now they have it...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/NK_t4qcXH0Q" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/little-brownie-bakers-launches/</guid><feedburner:origLink>http://menendez.com/blog/little-brownie-bakers-launches/</feedburner:origLink></item><item><title>BestBuy Fantasy Footaball Launches</title><link>http://feedproxy.google.com/~r/edmenendez/~3/f2aEBYj7hJ8/</link><description>&lt;a href="http://www.bestbuyfantasy.com/employee/" target="avt"&gt;&lt;img src="http://www.menendez.com/site_media/images/blog/bestbuy-fantasy-football-2011.jpg" width="550" height="351" border="0" vspace="5"&gt;&lt;/a&gt;&lt;p&gt;Launched back before NFL week 1. But, that was &lt;a href="http://djangocon.us/"&gt;DjangoCon 2011&lt;/a&gt;, so the post happens today.&lt;/p&gt;

&lt;p&gt;Best Buy's &lt;a href="http://www.bestbuyfantasy.com/employee/"&gt;site&lt;/a&gt; is operating for the third year in a row. Originally it was open to the public, but now it is employee only. You play by selecting a line-up every week and play against your co-workers and against the CEO. Makes for really fun team building.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/f2aEBYj7hJ8" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/bestbuy-fantasy-footaball-launches/</guid><feedburner:origLink>http://menendez.com/blog/bestbuy-fantasy-footaball-launches/</feedburner:origLink></item><item><title>US Open CourtConnect Launch!</title><link>http://feedproxy.google.com/~r/edmenendez/~3/vyAwzyk7tHw/</link><description>&lt;a href="http://www.menendez.com/site_media/images/blog/us-open-court-connect.jpg" target="avt"&gt;&lt;img src="http://www.menendez.com/site_media/images/blog/us-open-court-connect.jpg" width="550" height="351" border="0" vspace="5"&gt;&lt;/a&gt;&lt;p&gt;The &lt;a href="http://www.usopen.org/en_US/courtconnect/pdata/fe/" target="usopen"&gt;US Open CourtConnect site&lt;/a&gt; allows you to watch in real-time what people are talking about on Twitter and Facebook regarding the US Open. You can see personal photos taken right at the event by the general public, as well as those tweeted by players, experts and celebrities. CourtConnect takes the tweets and status updates and automatically color commentates by attaching facts relevant to the keywords in the message. It also highlights experts, players and celebrity tweets so you know who is who.&lt;/p&gt;

&lt;p&gt;CourtConnect was built in &lt;a href="http://python.org"&gt;Python&lt;/a&gt; using &lt;a href="http://www.djangoproject.com/"&gt;Django 1.3&lt;/a&gt; and &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; using &lt;a href="http://masonry.desandro.com/"&gt;Masonry&lt;/a&gt; in a very compressed timeline by &lt;a href="http://www.linkedin.com/in/rudymenendez"&gt;Rudy Menendez&lt;/a&gt;, the team at &lt;a href="http://blenderbox.com"&gt;Blenderbox&lt;/a&gt; and myself. We were able to use APIs from &lt;a href="http://www.massrelevance.com/"&gt;Mass Relevence&lt;/a&gt; and &lt;a href="http://pusher.com/"&gt;Pusher&lt;/a&gt; to push this site through that timeline. Other cloud services used are &lt;a href="http://embed.ly/"&gt;Embedly&lt;/a&gt; and &lt;a href="http://aws.amazon.com/ec2/"&gt;EC2&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/vyAwzyk7tHw" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/us-open-courtconnect-launch/</guid><feedburner:origLink>http://menendez.com/blog/us-open-courtconnect-launch/</feedburner:origLink></item><item><title>Voxy.com Launch!</title><link>http://feedproxy.google.com/~r/edmenendez/~3/ht2VvnAYG6g/</link><description>&lt;a href="http://voxy.com/" target="avt"&gt;&lt;img src="http://www.menendez.com/site_media/images/blog/voxy-launch.jpg" width="550" height="400" border="0" vspace="5"&gt;&lt;/a&gt;&lt;p&gt;Voxy helps you learn a language from life. That means, doing things you would do anyway but learn a language while you do it. Like reading about the &lt;a href="http://voxy.com/en/stories/nfl-players-return-to-work-fighting-in-court,2324/es/"&gt;NFL lock-out&lt;/a&gt; in Spanish. If you're learning English, an English version is also available &lt;a href="http://voxy.com/es/stories/jugadores-de-la-nfl-vuelven-a-sus-trabajos,2323/en/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The iPhone app has reached #1 in the AppStore for education apps in 14 countries. Android app is coming any day now too. Both apps support location based learning. Are you near a bank and need to figure how to linguically maneuver through a transaction? Voxy can help!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/ht2VvnAYG6g" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/voxy-launch/</guid><feedburner:origLink>http://menendez.com/blog/voxy-launch/</feedburner:origLink></item><item><title>National Geographic Education Site Launch!</title><link>http://feedproxy.google.com/~r/edmenendez/~3/herDf82el8I/</link><description>&lt;a href="http://education.nationalgeographic.com/education/edu/" target="avt"&gt;&lt;img src="http://www.menendez.com/site_media/images/blog/national-geographic-education.jpg" width="550" height="625" border="0" vspace="5"&gt;&lt;/a&gt;&lt;p&gt;National Geographic creates educational programs, reference material and news used by teachers, students and parents in the United States and across the world to promote geo-literacy. And now this content is available online using a custom CMS built with Django.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/herDf82el8I" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/national-geographic-edu-launch/</guid><feedburner:origLink>http://menendez.com/blog/national-geographic-edu-launch/</feedburner:origLink></item><item><title>Search Twitter Public Timeline with Python</title><link>http://feedproxy.google.com/~r/edmenendez/~3/oqQzviEpKo0/</link><description>&lt;p&gt;This Python function takes a search string as a parameter and returns a dictionary representing the JSON returned by Twitter with your search results from the public timeline. Code requires &lt;a href="http://code.google.com/p/simplejson/"&gt;simplejson&lt;/a&gt;. It supports all the parameters as defined by Twitter &lt;A href="http://apiwiki.twitter.com/Twitter-Search-API-Method:+search"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search_public_timeline&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;refresh_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sd"&gt;&amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;
&lt;span class="sd"&gt;    Searches the public timeline for the q string. There is no sanity checking&lt;/span&gt;
&lt;span class="sd"&gt;    of the parameters. It&amp;#39;s all passed straight to the API. Spec defined here:&lt;/span&gt;
&lt;span class="sd"&gt;    &lt;/span&gt;
&lt;span class="sd"&gt;    http://apiwiki.twitter.com/Twitter-Search-API-Method:+search&lt;/span&gt;
&lt;span class="sd"&gt;    &lt;/span&gt;
&lt;span class="sd"&gt;    If you send refresh_url then all parameters are ignored. Example usage:&lt;/span&gt;
&lt;span class="sd"&gt;    &lt;/span&gt;
&lt;span class="sd"&gt;    search_public_timeline(&amp;#39;menendez&amp;#39;)&lt;/span&gt;
&lt;span class="sd"&gt;    search_public_timeline(&amp;#39;menendez&amp;#39;, since=&amp;#39;2010-04-15&amp;#39;)&lt;/span&gt;
&lt;span class="sd"&gt;    &lt;/span&gt;
&lt;span class="sd"&gt;    Ed Menendez - ed@menendez.com&lt;/span&gt;
&lt;span class="sd"&gt;    &lt;/span&gt;
&lt;span class="sd"&gt;    &amp;gt;&amp;gt;&amp;gt; len(search_public_timeline(&amp;#39;the&amp;#39;)[&amp;#39;results&amp;#39;]) &amp;gt; 1&lt;/span&gt;
&lt;span class="sd"&gt;    True&lt;/span&gt;
&lt;span class="sd"&gt;    &amp;#39;&amp;#39;&amp;#39;&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;refresh_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;parms&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
        &lt;span class="n"&gt;parms&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;q&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;q&lt;/span&gt;
        &lt;span class="n"&gt;parms&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;query_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;?&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;urllib&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;urlencode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;parms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;query_str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;refresh_url&lt;/span&gt;
    
    &lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;http://search.twitter.com/search.json&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;query_str&lt;/span&gt;
    
    &lt;span class="c"&gt;#user_agent = &amp;#39;Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)&amp;#39;&lt;/span&gt;
    &lt;span class="c"&gt;#headers = {&amp;#39;User-Agent&amp;#39; : user_agent}&lt;/span&gt;
    
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;#, None, headers&lt;/span&gt;
    
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;simplejson&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;urllib2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/oqQzviEpKo0" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/search-twitter-public-timeline-python/</guid><feedburner:origLink>http://menendez.com/blog/search-twitter-public-timeline-python/</feedburner:origLink></item><item><title>Python Syntax Highlighting</title><link>http://feedproxy.google.com/~r/edmenendez/~3/XUe4msYhSFE/</link><description>&lt;p&gt;Simple web utility that colors your python code. Useful for putting in blogs, HTML emails, etc.&lt;/p&gt;

&lt;p&gt;See: &lt;a href="http://menendez.com/util/python_color/"&gt;Python Color Utility&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/XUe4msYhSFE" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/python-syntax-highlighting/</guid><feedburner:origLink>http://menendez.com/blog/python-syntax-highlighting/</feedburner:origLink></item><item><title>Human Resources in the Cloud</title><link>http://feedproxy.google.com/~r/edmenendez/~3/JUyJ4t2wjKc/</link><description>&lt;img src="http://www.menendez.com/site_media/images/blog/thecloud.jpg" width="262" height="393" border="0" hspace="7" align="left" alt="Photo by BamaWester"&gt;

&lt;p&gt;Back in the days when everyone thought a computer virus was science fiction, you would have to travel to a computer to use it. Computers were large, required special environments and special knowledge just to keep them running. You couldn't take this computer with you, or connect to it from very far.&lt;/p&gt;

&lt;p&gt;With time, technology improved. Many innovators made fortunes with computers that became more portable. As the capabilities of the internet have grown, entrepreneurs have figured out how to make products where the real processing isn't happening anywhere near you, but somewhere else where you don't even see it. This is called, &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing"&gt;Cloud Computing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You probably already use cloud computing and may not even be aware of it. Gmail is a cloud computing product. As is Facebook and WordPress. The real hard work of running those tools is not done on your tiny phone or in your web browser. The work mostly happens in the cloud.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/JUyJ4t2wjKc" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/human-resources-in-the-cloud/</guid><feedburner:origLink>http://menendez.com/blog/human-resources-in-the-cloud/</feedburner:origLink></item><item><title>Using Django as a Pass Through Image Proxy</title><link>http://feedproxy.google.com/~r/edmenendez/~3/SyFxvmJIj8Q/</link><description>&lt;p&gt;An earlier post shows you how to &lt;a href="http://menendez.com/blog/configuring-nginx-pass-through-image-proxy/"&gt;setup Nginx as a pass through image proxy&lt;/a&gt;. This post shows you how to do it with just Django and nothing else.&lt;/p&gt;

&lt;b&gt;The Problem&lt;/b&gt;
&lt;p&gt;We've solving the same problem as the earlier post. However, I will repeat it here for clarity as there's been some confusion.&lt;/p&gt;

&lt;p&gt;You have a production DB with lots of images uploaded by users. For example, &lt;a href="http://www.NationalGeographic.com" target="_new"&gt;NationalGeographic.com&lt;/a&gt; has over 11gb of user uploaded images. When you download a data dump of the production database, it has links to all these images which you don't have. You either have to download and sync all the images locally every time you copy the database, live with broken images or point your static images to the prod server.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/edmenendez/~4/SyFxvmJIj8Q" height="1" width="1"/&gt;</description><guid isPermaLink="false">http://menendez.com/blog/using-django-as-pass-through-image-proxy/</guid><feedburner:origLink>http://menendez.com/blog/using-django-as-pass-through-image-proxy/</feedburner:origLink></item></channel></rss>
