<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>python webdeveloper
Current/Past Projects:Pulsar web monitoring service
OneGratisKnewmismatic
GreatCoinsAppEnginePeopleWeGIFBoomerater


People:mugur.comcaraxLuciana

Work:devsArLivemade:
Contact:
seba…@gmail.com



  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-298362-14']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</description><title>Sebastián S.</title><generator>Tumblr (3.0; @sserrano)</generator><link>http://blog.sserrano.com/</link><item><title>Arcoiris (Taken with instagram)</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_lybpypOE4W1qztoydo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Arcoiris (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://blog.sserrano.com/post/16426709445</link><guid>http://blog.sserrano.com/post/16426709445</guid><pubDate>Tue, 24 Jan 2012 19:18:24 -0300</pubDate></item><item><title>Tortilla (Taken with instagram)</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lxp8irwKgA1qztoydo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Tortilla (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://blog.sserrano.com/post/15730813997</link><guid>http://blog.sserrano.com/post/15730813997</guid><pubDate>Thu, 12 Jan 2012 15:54:27 -0300</pubDate></item><item><title>Domingo made on wegif</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_luh70swXEU1qztoydo1_250.gif"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.wegif.com/gifs/sserrano/7626329/"&gt;Domingo&lt;/a&gt; made on &lt;a href="http://"&gt;wegif&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.sserrano.com/post/12625974464</link><guid>http://blog.sserrano.com/post/12625974464</guid><pubDate>Fri, 11 Nov 2011 00:00:21 -0300</pubDate><category>wegif</category><category>gif</category></item><item><title>plaza pictures made on wegif</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_lufcwaiSWI1qztoydo1_250.gif"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.wegif.com/gifs/sserrano/7622198/"&gt;plaza pictures&lt;/a&gt; made on &lt;a href="http://"&gt;wegif&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.sserrano.com/post/12584762354</link><guid>http://blog.sserrano.com/post/12584762354</guid><pubDate>Thu, 10 Nov 2011 00:11:56 -0300</pubDate></item><item><title>Login with Tumblr</title><description>&lt;p&gt;&lt;a href="http://blog.wegif.com/post/12128082519/login-with-tumblr" class="tumblr_blog"&gt;wegif&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;In case you miss it you can now login with your Tumblr on &lt;a title="WeGIF" target="_self" href="http://www.wegif.com"&gt;WeGIF&lt;/a&gt; !!!&lt;/p&gt;
&lt;p&gt;Please reblog!&lt;/p&gt;
&lt;p&gt;Cheers, The &lt;a title="WeGIF" target="_self" href="http://www.wegif"&gt;WeGIF&lt;/a&gt; Team&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://blog.sserrano.com/post/12128361449</link><guid>http://blog.sserrano.com/post/12128361449</guid><pubDate>Sun, 30 Oct 2011 16:59:55 -0300</pubDate></item><item><title>mugurm:

Photography has changed forever.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ltdsipQJEq1qascouo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://blog.mugur.com/post/11703084717" class="tumblr_blog"&gt;mugurm&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Photography has changed forever.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://blog.sserrano.com/post/11712574629</link><guid>http://blog.sserrano.com/post/11712574629</guid><pubDate>Thu, 20 Oct 2011 21:05:17 -0300</pubDate></item><item><title>analytics code to activate site speed</title><description>&lt;p&gt;&lt;script type=”text/javascript”&gt;&lt;br/&gt;
    var _gaq = _gaq || [];&lt;br/&gt;
    _gaq.push([‘_setAccount’, ‘UA-XXXXX-X’]);&lt;br/&gt;
    _gaq.push([‘_trackPageview’]);&lt;br/&gt;
    _gaq.push([‘_trackPageLoadTime’]);&lt;br/&gt;
    (function() {&lt;br/&gt;
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;&lt;br/&gt;
    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
    })();&lt;br/&gt;
    &lt;/script&gt;&lt;/p&gt;</description><link>http://blog.sserrano.com/post/8841056466</link><guid>http://blog.sserrano.com/post/8841056466</guid><pubDate>Fri, 12 Aug 2011 20:31:00 -0300</pubDate></item><item><title>Empty Gif view</title><description>&lt;p&gt;&lt;strong&gt;Python/Django version of a view that returns an empty 1x1 gif image&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;from django.http import HttpResponse
code = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\xf0\x01\x00\xff\xff\xff\x00\x00\x00\x21\xf9\x04\x01\x0a\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b"

def empty_gif(request):      
    return HttpResponse(code, mimetype="image/gif")
&lt;/code&gt;&lt;/pre&gt;</description><link>http://blog.sserrano.com/post/8226252791</link><guid>http://blog.sserrano.com/post/8226252791</guid><pubDate>Fri, 29 Jul 2011 17:02:21 -0300</pubDate></item><item><title>App Engine People Source Code Available</title><description>&lt;p&gt;We started AppEnginePeople.net to learn more about GAE and hopefully create something useful. Enough devs signed up and showed interest, more then we anticipated, so we decided to open source the code of the site.&lt;/p&gt;

&lt;p&gt;It’s available on Bitbucket and licensed under the Apache license:
&lt;a href="https://bitbucket.org/sserrano/ae-people/src"&gt;https://bitbucket.org/sserrano/ae-people/src&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s one of our first app engine projects. Sorry if the code is messy.
We hope it’s useful and don’t hesitate to fork and contribute patches.&lt;/p&gt;

&lt;p&gt;thanks,
Mugur Marculescu, Sebastian Serrano and Martin Riva.&lt;/p&gt;</description><link>http://blog.sserrano.com/post/1154043570</link><guid>http://blog.sserrano.com/post/1154043570</guid><pubDate>Mon, 20 Sep 2010 00:59:56 -0300</pubDate><category>app engine</category><category>app engine developers</category></item><item><title>Flying with Flask in Google App Engine</title><description>&lt;a href="http://www.franciscosouza.net/2010/08/flying-with-flask-in-google-app-engine.html"&gt;Flying with Flask in Google App Engine&lt;/a&gt;</description><link>http://blog.sserrano.com/post/940470487</link><guid>http://blog.sserrano.com/post/940470487</guid><pubDate>Thu, 12 Aug 2010 01:14:57 -0300</pubDate></item><item><title>App Engine People gets stats</title><description>&lt;p&gt;&lt;a href="http://blog.mugur.com/post/604859944/app-engine-people-gets-stats" class="tumblr_blog"&gt;mugurm&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Sebastian put up a statistics page up on &lt;a href="http://www.appenginepeople.net/stats/"&gt;appenginepeople.net&lt;/a&gt;. Check it out and see what version of the SDK devs are using and also what the countries with the most google app engine developers are.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://blog.sserrano.com/post/604874821</link><guid>http://blog.sserrano.com/post/604874821</guid><pubDate>Sun, 16 May 2010 18:44:35 -0300</pubDate></item><item><title>BlobStore upload with django form validation Example</title><description>&lt;p&gt;This is my current approach to handle blobstore uploads that also need a django form validation.&lt;/p&gt;

&lt;p&gt;You can find the get_uploads helper function here: &lt;a href="http://appengine-cookbook.appspot.com/recipe/blobstore-get_uploads-helper-function-for-django-request/?id=ahJhcHBlbmdpbmUtY29va2Jvb2tyjwELEgtSZWNpcGVJbmRleCI4YWhKaGNIQmxibWRwYm1VdFkyOXZhMkp2YjJ0eUZBc1NDRU5oZEdWbmIzSjVJZ1pFYW1GdVoyOE0MCxIGUmVjaXBlIjphaEpoY0hCbGJtZHBibVV0WTI5dmEySnZiMnR5RkFzU0NFTmhkR1ZuYjNKNUlnWkVhbUZ1WjI4TTIxDA"&gt;blobstore get_uploads helper function for django request
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I tried to do the example as simple as possible, but complete. This may not be perfect, all comments are welcome.&lt;/p&gt;

&lt;p&gt;Seba&lt;/p&gt;

&lt;pre&gt;

#### core/models.py ####

from google.appengine.ext import blobstore
from google.appengine.ext import db

class PhotoItem(db.Model):
    name = db.StringProperty()
    photo = blobstore.BlobReferenceProperty()

#### core/forms.py ####

from django import forms

class PhotoForm(forms.Form):
    name = forms.CharField(required=True)


##### core/views.py ####

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext

from google.appengine.ext import blobstore

from core.models import PhotoItem
from core.forms import PhotoForm
from core.utils import get_uploads

def upload_photo(request):
    if request.method == 'POST':
        photo_blobs = get_uploads(request, field_name="photo", populate_post=True)
        form = PhotoForm(request.POST)
        if form.is_valid() and len(photo_blobs) == 1:
            photo_item = PhotoItem(name=form.cleaned_data['name'],
                                   photo=photo_blobs[0])
            photo_item.put()
            
            return HttpResponseRedirect("/success")
        
        #ok, not valid
        if len(photo_blobs) == 0:
            #the file input is missing
            request.session['upload_error'] = "Photo is required"
            
        #save the post data in the session to be able to present errors after redirect
        request.session['upload_form_post'] = request.POST
        return HttpResponseRedirect(reverse("core.views.upload_photo"))
    elif request.session.has_key('upload_form_post'):
        form = PhotoForm(request.session['upload_form_post'])
        del request.session['upload_form_post']
    else:
        form = PhotoForm()
    
    params = {
        'upload_url': blobstore.create_upload_url(reverse("core.views.upload_photo")),
        'form': form,
        'upload_error': request.session.pop('upload_error', None)
    }
    
    return render_to_response("upload_photo.html", 
                              params,
                              RequestContext(request))

#### Example upload_photo.html ####
{% extends "base.html" %}

{% block main_content %}
    &lt;h1&gt;Upload Photo&lt;/h1&gt;
    
    {% if upload_error %}
    &lt;div class="error"&gt;{{ upload_error }}&lt;/div&gt;
    {% endif %}
    &lt;form action="{{ upload_url }}" method="post" 
                  enctype="multipart/form-data"&gt;
    &lt;ul&gt;
        {{ form.as_ul }}
        &lt;li&gt;&lt;input type="file" name="photo"/&gt;&lt;/li&gt;
        &lt;li&gt;&lt;input type="submit"/&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;/form&gt;
{% endblock %}
&lt;/pre&gt;</description><link>http://blog.sserrano.com/post/479962742</link><guid>http://blog.sserrano.com/post/479962742</guid><pubDate>Sun, 28 Mar 2010 17:50:00 -0300</pubDate><category>appengine</category><category>blobstore</category><category>django</category></item><item><title>late snack</title><description>&lt;img src="http://28.media.tumblr.com/tumblr_kzv9gnFp6n1qztoydo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;late snack&lt;/p&gt;</description><link>http://blog.sserrano.com/post/473750440</link><guid>http://blog.sserrano.com/post/473750440</guid><pubDate>Thu, 25 Mar 2010 22:57:59 -0300</pubDate></item><item><title>AppEngine Developer Directory</title><description>&lt;p&gt;&lt;a href="http://mugur.com/post/437421553/appengine-developer-directory" class="tumblr_blog"&gt;mugurm&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;a title="livemade" href="http://livemade.com"&gt;We’ve&lt;/a&gt; recently launched &lt;a title="AppEnginePeople" href="http://www.appenginepeople.net/"&gt;AppEnginePeople.net&lt;/a&gt;, a new directory site for &lt;a title="Google App Engine on Google Code" href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt; developers, which is basically a clone of &lt;a title="DjangoPeople" href="http://djangopeople.net"&gt;DjangoPeople.net&lt;/a&gt; but for app engine.&lt;/p&gt;
&lt;p&gt;If you are interested in creating a profile just &lt;a title="App Engine People" href="http://www.appenginepeople.net/"&gt;visit the site&lt;/a&gt; and sign in with your Google account.&lt;/p&gt;
&lt;p&gt;&lt;a title="App Engine People logo" href="http://www.appenginepeople.net/"&gt;&lt;img src="http://media.tumblr.com/tumblr_kz190ddmcg1qa9luj.png"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://blog.sserrano.com/post/437658104</link><guid>http://blog.sserrano.com/post/437658104</guid><pubDate>Tue, 09 Mar 2010 20:14:29 -0300</pubDate></item><item><title>appenginepeople</title><description>&lt;p&gt;if you develop apps for #appengine you can add yourself to &lt;a href="http://www.appenginepeople.net/"&gt;&lt;a href="http://www.appenginepeople.net/"&gt;http://www.appenginepeople.net/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.sserrano.com/post/435770863</link><guid>http://blog.sserrano.com/post/435770863</guid><pubDate>Mon, 08 Mar 2010 22:44:40 -0300</pubDate><category>appengine</category><category>gae</category><category>google app engine</category><category>appengine developers</category></item><item><title>antibiotics for an awful cold</title><description>&lt;img src="http://26.media.tumblr.com/tumblr_kxzpt0MPtQ1qztoydo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;antibiotics for an awful cold&lt;/p&gt;</description><link>http://blog.sserrano.com/post/394735966</link><guid>http://blog.sserrano.com/post/394735966</guid><pubDate>Wed, 17 Feb 2010 11:34:00 -0300</pubDate><category>flu</category><category>cold</category><category>antibiotics</category></item><item><title>tracking html5/css3 support with analytics and modernizr</title><description>&lt;p&gt;You may think that html5 and css3 is going to become widespread in something akin to a geologic time scale. The truth is that many html5 and css3 features have currently widespread support.&lt;/p&gt;

&lt;p&gt;Below, there is an small snippet to track the browser support for these advanced features for your user base, using google analytics and modernizr.&lt;/p&gt;

&lt;p&gt;Modernizr is a small footprint javascript library that let you test the support of html5 and css3 features. With the combination of modernizr and analytics custom vars, we can track which percent of our users support a particular html5 or css3 feature.&lt;/p&gt;

&lt;p&gt;So suppose we want to know the user base support for: sessionstorage, localstorage, canvas, fonfaces and borderradius.&lt;/p&gt;

&lt;p&gt;Our analytics tracking code would look like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? 
"https://ssl." : "http://www."); 
document.write(unescape("%3Cscript src='" + gaJsHost + 
"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;

&lt;script type="text/javascript" src="/media/js/modernizr-1.1.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript"&gt;

try {
var pageTracker = _gat._getTracker("UA-YYYYY-X");

pageTracker._setCustomVar(1, "sessionstorage", Modernizr.sessionstorage , 2 );
pageTracker._setCustomVar(2, "localstorage", Modernizr.localstorage, 2 );
pageTracker._setCustomVar(3, "fontface", Modernizr.fontface, 2 );
pageTracker._setCustomVar(4, "canvas", Modernizr.canvas, 2 );
pageTracker._setCustomVar(5, "borderradius", Modernizr.borderradius, 2 );

pageTracker._trackPageview();

} catch(err) {}&lt;/script&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After you append this to your site html body the results are going to appear on analytics under “visitors &gt; custom variables”&lt;/p&gt;

&lt;p&gt;Using a similar snippet we found that at &lt;a href="http://www.wegif.com"&gt;www.wegif.com&lt;/a&gt; more than 80% of our users support all these features. Cool right?&lt;/p&gt;

&lt;p&gt;For more info about how all this works, continue reading at:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.modernizr.com/"&gt;http://www.modernizr.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://code.google.com/intl/en/apis/analytics/docs/tracking/gaTrackingCustomVariables.html"&gt;http://code.google.com/intl/en/apis/analytics/docs/tracking/gaTrackingCustomVariables.html&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.sserrano.com/post/292194914</link><guid>http://blog.sserrano.com/post/292194914</guid><pubDate>Sun, 20 Dec 2009 17:28:00 -0300</pubDate><category>analytics</category><category>html5</category><category>modernizr</category><category>css3</category></item><item><title>this kitty got popular (animated gif)</title><description>&lt;a href="http://www.wegif.com/gifs/sserrano/250385/"&gt;this kitty got popular (animated gif)&lt;/a&gt;</description><link>http://blog.sserrano.com/post/286956005</link><guid>http://blog.sserrano.com/post/286956005</guid><pubDate>Thu, 17 Dec 2009 00:31:49 -0300</pubDate></item><item><title>appengine-storages has now a datastore backend</title><description>&lt;p&gt;I just push a datastore based backend.&lt;/p&gt;
&lt;p&gt;The code still needs more work and testing, so please not use it on any production site.&lt;/p&gt;
&lt;p&gt;But if you are brave enough (or stupid) to do it, send me an email with your experience.&lt;/p&gt;
&lt;p&gt;Cheers, Sebastián&lt;/p&gt;</description><link>http://blog.sserrano.com/post/273233194</link><guid>http://blog.sserrano.com/post/273233194</guid><pubDate>Mon, 07 Dec 2009 10:36:00 -0300</pubDate></item><item><title>django-flash works on app engine</title><description>&lt;p&gt;The django-flash application, that provides a Rails-like flash messages support for Django. Works out of the box, if you have session support at the Google App Engine.&lt;/p&gt;
&lt;p&gt;&lt;a title="django-flash" href="http://djangoflash.destaquenet.com/"&gt;&lt;a href="http://djangoflash.destaquenet.com/"&gt;http://djangoflash.destaquenet.com/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.sserrano.com/post/259115229</link><guid>http://blog.sserrano.com/post/259115229</guid><pubDate>Fri, 27 Nov 2009 02:07:44 -0300</pubDate></item></channel></rss>

