<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUEHQXc7cSp7ImA9WxBbEU0.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224</id><updated>2010-03-09T05:07:10.909+01:00</updated><title>Bigcurl</title><subtitle type="html">...so I do not forget</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.bigcurl.de/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.bigcurl.de/" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/bigcurl" /><feedburner:info uri="bigcurl" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEcAQ3c8eCp7ImA9WxBVF0s.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-3469966244988939307</id><published>2010-02-21T16:25:00.001+01:00</published><updated>2010-02-21T16:27:22.970+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-21T16:27:22.970+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="vip" /><category scheme="http://www.blogger.com/atom/ns#" term="party" /><category scheme="http://www.blogger.com/atom/ns#" term="was geht heute ab" /><category scheme="http://www.blogger.com/atom/ns#" term="gästeliste" /><title>Look what was in the mail</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;Saying "Thank you" is very appreciated and a nice way of show what you like.&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;Thank you Rolf for making us smile.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3bAhW9EXF2o/S4FP8p2fW1I/AAAAAAAAACY/ERXrY6ndqVw/s1600-h/IMG_0018.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/_3bAhW9EXF2o/S4FP8p2fW1I/AAAAAAAAACY/ERXrY6ndqVw/s400/IMG_0018.jpg" width="300" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-3469966244988939307?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WWYeiX7ab4pgv5QtLfaG6vzGhiM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WWYeiX7ab4pgv5QtLfaG6vzGhiM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WWYeiX7ab4pgv5QtLfaG6vzGhiM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WWYeiX7ab4pgv5QtLfaG6vzGhiM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=HOiJDtTao40:c6vbHtGwBSU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=HOiJDtTao40:c6vbHtGwBSU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=HOiJDtTao40:c6vbHtGwBSU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=HOiJDtTao40:c6vbHtGwBSU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/HOiJDtTao40" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2010/02/look-what-was-in-mail.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/3469966244988939307?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/3469966244988939307?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/HOiJDtTao40/look-what-was-in-mail.html" title="Look what was in the mail" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_3bAhW9EXF2o/S4FP8p2fW1I/AAAAAAAAACY/ERXrY6ndqVw/s72-c/IMG_0018.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2010/02/look-what-was-in-mail.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYMRXk5fyp7ImA9WxBWEU8.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-871545447432898595</id><published>2010-02-02T16:47:00.005+01:00</published><updated>2010-02-02T17:29:44.727+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-02T17:29:44.727+01:00</app:edited><title>Reverse Graffiti</title><content type="html">&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Here are some images from our venture in making our office more beautiful from the outside. For the yearly OpenDoors we cleaned parts of the wall which is a bit dirty after all those years of dust and cars that drive on the nearby road.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;When people see the writting on the wall they first think it is some kind of foil applied to the wall but in reallity it is just more clean than the rest of the wall. Reverse Graffiti if you want to see it that way.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The sentence is a poam from &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Ingeborg_Bachmann"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Ingeborg Bachmann&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;. "Nichts Schönres unter der Sonne als unter der Sonne zu sein ..." Which translated means: "Nothing more beautiful under the sun than to be under the sun ..."&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I must say. It just looks nice!!! If you have a chance take a look in real life.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Enjoy the images after&lt;a href="http://blog.bigcurl.de/2010/02/reverse-graffiti.html"&gt; the break&lt;/a&gt;. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3bAhW9EXF2o/S2hHZCI1hyI/AAAAAAAAABY/tQhhIa0BQos/s1600-h/STH70395.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_3bAhW9EXF2o/S2hHZCI1hyI/AAAAAAAAABY/tQhhIa0BQos/s320/STH70395.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_3bAhW9EXF2o/S2hHS5VwsZI/AAAAAAAAABQ/G78mQb5f6J4/s320/DSCN2679.JPG" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_3bAhW9EXF2o/S2hHfXuzxfI/AAAAAAAAABg/tSJbeEzoAGE/s320/STH70412.JPG" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_3bAhW9EXF2o/S2hHlorY7FI/AAAAAAAAABo/rTsVqginLNE/s320/STH70422.JPG" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: auto;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_3bAhW9EXF2o/S2hHrVFGFSI/AAAAAAAAABw/VSwxXDeQcY0/s320/STH70438.JPG" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/_3bAhW9EXF2o/S2hSqhpP3gI/AAAAAAAAACQ/f386TmHZqGE/s1600-h/DSCN2698.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_3bAhW9EXF2o/S2hSqhpP3gI/AAAAAAAAACQ/f386TmHZqGE/s320/DSCN2698.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3bAhW9EXF2o/S2hHuHaKQNI/AAAAAAAAAB4/qt-O9A07_FQ/s1600-h/DSCN2706.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_3bAhW9EXF2o/S2hHuHaKQNI/AAAAAAAAAB4/qt-O9A07_FQ/s320/DSCN2706.JPG" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3bAhW9EXF2o/S2hH0tmK2II/AAAAAAAAACA/iQM--OF6R2k/s1600-h/STH70485.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_3bAhW9EXF2o/S2hH0tmK2II/AAAAAAAAACA/iQM--OF6R2k/s320/STH70485.JPG" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3bAhW9EXF2o/S2hH3p0hPlI/AAAAAAAAACI/2ImCMl5GW2M/s1600-h/DSCN2719.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_3bAhW9EXF2o/S2hH3p0hPlI/AAAAAAAAACI/2ImCMl5GW2M/s320/DSCN2719.JPG" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Lucida Grande'; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-871545447432898595?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JVAnhNB-7OFItM0g0ChyLFiEeHc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JVAnhNB-7OFItM0g0ChyLFiEeHc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JVAnhNB-7OFItM0g0ChyLFiEeHc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JVAnhNB-7OFItM0g0ChyLFiEeHc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=0jYfLHU2Wz4:67ojG-FJDhY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=0jYfLHU2Wz4:67ojG-FJDhY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=0jYfLHU2Wz4:67ojG-FJDhY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=0jYfLHU2Wz4:67ojG-FJDhY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/0jYfLHU2Wz4" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2010/02/reverse-graffiti.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/871545447432898595?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/871545447432898595?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/0jYfLHU2Wz4/reverse-graffiti.html" title="Reverse Graffiti" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_3bAhW9EXF2o/S2hHZCI1hyI/AAAAAAAAABY/tQhhIa0BQos/s72-c/STH70395.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.bigcurl.de/2010/02/reverse-graffiti.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIBQHc9fyp7ImA9WxNUFUQ.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-7218907525691936516</id><published>2009-11-07T11:57:00.008+01:00</published><updated>2009-11-07T12:49:11.967+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-07T12:49:11.967+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="frankfurt" /><category scheme="http://www.blogger.com/atom/ns#" term="art" /><category scheme="http://www.blogger.com/atom/ns#" term="open doors" /><title>OpenDoors at AtelierFrankfurt</title><content type="html">&lt;div&gt;Since almost a year, I work in my office at the artist residence &lt;a href="http://www.atelierfrankfurt.de/"&gt;AtelierFrankfurt&lt;/a&gt;. It is a place for artists/creatives of every category ranging from people doing photos, painting, sculpturing, design, architecture and everything in between.&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Every year for a weekend we open up our rooms for the public and show off what he/she has done in the past year.&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Luckily we are not the only artists residence in Frankfurt. &lt;a href="http://basis-frankfurt.de/"&gt;Basis&lt;/a&gt; and a whole slew of private ateliers join us in the &lt;a href="http://opendoors-frankfurt.de/"&gt;open door&lt;/a&gt; tradition. The weekend is a good way to broaden up your horizon on new talented artists and what they have done in the last year.&lt;br /&gt;
To give you a little preview you should check out the very talented artists:&amp;nbsp;&lt;a href="http://www.jasminejustice.com/"&gt;Jasmin Justice&lt;/a&gt;, &lt;a href="http://paulaanta.vox.com/"&gt;Paula Anta&lt;/a&gt;, &lt;a href="http://6230.org/"&gt;Florian Kissling&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.atelierfrankfurt.de/ateliers/kuenstlerliste/amalia-barboza.html"&gt;Amalia Borboza&lt;/a&gt;, &lt;a href="http://www.atelierfrankfurt.de/ateliers/kuenstlerliste/jesse-farber.html"&gt;Jesse Farber&lt;/a&gt;, &lt;a href="http://www.atelierfrankfurt.de/ateliers/kuenstlerliste/niklas-klotz.html"&gt;Niklas Klotz&lt;/a&gt;, &lt;a href="http://www.bergmannstudios.com/"&gt;Kai Bergmann&lt;/a&gt;&amp;nbsp;and &lt;a href="http://www.eunjoo-shin.com/"&gt;Eunjoo Shin&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;The &lt;a href="http://www.atelierfrankfurt.de/"&gt;AtelierFrankfurt&lt;/a&gt; and all the other participating ateliers are open for your visit on the 21-22 November 2009. The opening is on the 20.November and also features the opening of companion exhibitions from &lt;a href="http://www.wasgehtheuteab.de/de/frankfurt-am-main/events/148-Welche-Krise--party-im-Atelier-Frankfurt-am-20-11-2009-in-Frankfurt-am-Main"&gt;v3ent? and the city loves you&lt;/a&gt;, &lt;a href="http://www.wasgehtheuteab.de/de/frankfurt-am-main/events/150-Familientreffen-party-im-Atelier-Frankfurt-am-20-11-2009-in-Frankfurt-am-Main"&gt;Familientreffen&lt;/a&gt; and &lt;a href="http://www.wasgehtheuteab.de/de/frankfurt-am-main/events/149-Graffiti-Repositioned-party-im-Atelier-Frankfurt-am-20-11-2009-in-Frankfurt-am-Main"&gt;Graffiti Repositioned&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Click on the flyer for more details and opening times.&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a href="http://www.wasgehtheuteab.de/de/frankfurt-am-main/events/151-ER-FFNUNG-OPEN-DOORS-party-im-Atelier-Frankfurt-am-20-11-2009-in-Frankfurt-am-Main"&gt;&lt;img alt="" src="http://img.wasgehtheuteab.de/flyer/e6a7c7d86aedaf644524b9195e69f94ddae31578.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-7218907525691936516?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JpUcqcu-7Tt-AAan0P_cn61tTKA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JpUcqcu-7Tt-AAan0P_cn61tTKA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JpUcqcu-7Tt-AAan0P_cn61tTKA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JpUcqcu-7Tt-AAan0P_cn61tTKA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=vhs_Xw0SrUE:yQM0UEyuSKo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=vhs_Xw0SrUE:yQM0UEyuSKo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=vhs_Xw0SrUE:yQM0UEyuSKo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=vhs_Xw0SrUE:yQM0UEyuSKo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/vhs_Xw0SrUE" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/11/since-almost-year-i-work-in-my-office.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7218907525691936516?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7218907525691936516?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/vhs_Xw0SrUE/since-almost-year-i-work-in-my-office.html" title="OpenDoors at AtelierFrankfurt" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/11/since-almost-year-i-work-in-my-office.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcNQn04fSp7ImA9WxNVFEs.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-6108834393973209486</id><published>2009-10-25T10:37:00.014+01:00</published><updated>2009-10-25T11:54:53.335+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-25T11:54:53.335+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="clubbing" /><category scheme="http://www.blogger.com/atom/ns#" term="party" /><category scheme="http://www.blogger.com/atom/ns#" term="dance" /><category scheme="http://www.blogger.com/atom/ns#" term="events" /><category scheme="http://www.blogger.com/atom/ns#" term="club" /><title>A little work on the side, ...</title><content type="html">Some of you might remember those days when you went to your local record store to fetch all flyers for the weekend and had a great selection of partys and events?&lt;br /&gt;&lt;br /&gt;Today with all that digital media available at home,  physical record stores loose their role as central party/events/flyer hub.&lt;br /&gt;Myspace, Facebook and all the other social network sites have taken over. The only problem is that now you have to go on a digital hunt for the flyers. You'll find them well missplaced as user profiles images or burried in the comments section.&lt;br /&gt;Not to mention that you have to know the right profiles where those flyers are posted, on ALL of these sites. Sounds like a big time investment. It certainly is.&lt;br /&gt;&lt;br /&gt;In the sense of solving only one problem but this one well, Florian Kissling from &lt;a href="http://6230.org/"&gt;6230.org&lt;/a&gt; and I started a little project on the side:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.wasgehtheuteab.de/"&gt;was geht heute ab.de&lt;/a&gt; (what's up today)&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;A place for uploading and showing flyers for events and partys in Frankfurt am Main&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If you're in the area and want to go out, check the website and have a really good, long night out in town.&lt;br /&gt;&lt;br /&gt;Here is a one of the flyers using the embedded links generated from the site.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wasgehtheuteab.de/de/frankfurt-am-main/events/37-SUNDAE-Releaseparty-party-im-Mood-am-24-10-2009-in-Frankfurt-am-Main"&gt;&lt;img alt="" src="http://img.wasgehtheuteab.de/flyer/7e0fde59e62f3b7a620c4a376fb33ee66b509640.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-6108834393973209486?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xICObb3pcS865hYvlbfik6pG5lQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xICObb3pcS865hYvlbfik6pG5lQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xICObb3pcS865hYvlbfik6pG5lQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xICObb3pcS865hYvlbfik6pG5lQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=TyGQivSgdEo:S8dLsyQdzDU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=TyGQivSgdEo:S8dLsyQdzDU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=TyGQivSgdEo:S8dLsyQdzDU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=TyGQivSgdEo:S8dLsyQdzDU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/TyGQivSgdEo" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/10/little-work-on-side.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/6108834393973209486?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/6108834393973209486?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/TyGQivSgdEo/little-work-on-side.html" title="A little work on the side, ..." /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/10/little-work-on-side.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcEQXgyfCp7ImA9WxNXEkw.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-6660693798890325022</id><published>2009-09-29T11:15:00.002+02:00</published><updated>2009-09-29T11:20:00.694+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-29T11:20:00.694+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hosted api" /><category scheme="http://www.blogger.com/atom/ns#" term="ipod touch" /><category scheme="http://www.blogger.com/atom/ns#" term="httpush" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="push notifications" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title>150 granted invitations</title><content type="html">I just wanted to share an exciting milestone with you. &lt;a href="http://www.httpush.com"&gt;HTTPush&lt;/a&gt; just passed the 150 granted invitations mark. For us this is very exciting news and we are very happy with the service so far. So if you have been holding yourself off, go to &lt;a href="http://www.httpush.com/collectors/new"&gt;the signup page&lt;/a&gt; now and put yourself on the waiting list.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-6660693798890325022?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/JS_rE8BbYjnf7p5pXDGP-FvVGok/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JS_rE8BbYjnf7p5pXDGP-FvVGok/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/JS_rE8BbYjnf7p5pXDGP-FvVGok/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/JS_rE8BbYjnf7p5pXDGP-FvVGok/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=Vvvt1RWChIU:mOka31x9Zz8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=Vvvt1RWChIU:mOka31x9Zz8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=Vvvt1RWChIU:mOka31x9Zz8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=Vvvt1RWChIU:mOka31x9Zz8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/Vvvt1RWChIU" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/09/150-granted-invitations.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/6660693798890325022?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/6660693798890325022?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/Vvvt1RWChIU/150-granted-invitations.html" title="150 granted invitations" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/09/150-granted-invitations.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04NQX08eCp7ImA9WxNREUU.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-1492667588025772888</id><published>2009-09-06T00:25:00.003+02:00</published><updated>2009-09-06T00:33:10.370+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-06T00:33:10.370+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hosted api" /><category scheme="http://www.blogger.com/atom/ns#" term="ipod touch" /><category scheme="http://www.blogger.com/atom/ns#" term="httpush" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title>New API call: notifications statistics</title><content type="html">You no longer need to guess how many notifications you send on a given day.&lt;br /&gt;&lt;br /&gt;A new feature which enables statistics for your account has been live for a while but had no offical announcement on the blog.&lt;br /&gt;&lt;br /&gt;With the new API calls it is now possible to query your statistics data per application with resolution in days, month and per year.&lt;br /&gt;&lt;br /&gt;Read more about the &lt;a href="http://doc.httpush.com/statistics.html"&gt;new API calls here &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We are updating the count every hour. Polling the data once a day should be sufficient for most use cases.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-1492667588025772888?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M4HJq4A5Akn-ER0dgyxmSs7fngs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M4HJq4A5Akn-ER0dgyxmSs7fngs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M4HJq4A5Akn-ER0dgyxmSs7fngs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M4HJq4A5Akn-ER0dgyxmSs7fngs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=WDdgcL4T27c:KRjisJZhkzU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=WDdgcL4T27c:KRjisJZhkzU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=WDdgcL4T27c:KRjisJZhkzU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=WDdgcL4T27c:KRjisJZhkzU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/WDdgcL4T27c" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/09/sent-notifications-statistics-for-your.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/1492667588025772888?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/1492667588025772888?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/WDdgcL4T27c/sent-notifications-statistics-for-your.html" title="New API call: notifications statistics" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/09/sent-notifications-statistics-for-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04NR3oyfSp7ImA9WxNREUU.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-781134969615039030</id><published>2009-07-08T15:32:00.004+02:00</published><updated>2009-09-06T00:33:16.495+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-06T00:33:16.495+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hosted api" /><category scheme="http://www.blogger.com/atom/ns#" term="ipod touch" /><category scheme="http://www.blogger.com/atom/ns#" term="httpush" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title>New API call: get a token based on a recipient_key.</title><content type="html">We rolled out a new API call for &lt;a href="http://www.httpush.com/"&gt;HTTPush&lt;/a&gt;. You can now get a token based on a recipient_key.&lt;br /&gt;Read more about the call &lt;a href="http://docs.httpush.com/user-exists-v2.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We updated&lt;br /&gt;* the online documentation at &lt;a href="http://docs.httpush.com/"&gt;docs.httpush.com&lt;/a&gt;&lt;br /&gt;* the offline documentation at &lt;a href="http://download.bigcurl.de/d/a65cc1d34c98cf437cf3a102375486aafde674e5"&gt;HTTPush Docu v0.10&lt;/a&gt;&lt;br /&gt;* the client implementations at &lt;a href="http://download.bigcurl.de/d/b518314e77d090ac302313e6ebbb472aaeaa92d5"&gt;HTTPush Ruby Client v4&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also today we crossed an internal milestone with over a hundred signups, which makes us very happy.&lt;br /&gt;&lt;br /&gt;Thank you all so far&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-781134969615039030?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UuICccDsHiaPDke0SJXDqAg37Tg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UuICccDsHiaPDke0SJXDqAg37Tg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UuICccDsHiaPDke0SJXDqAg37Tg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UuICccDsHiaPDke0SJXDqAg37Tg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=lDMxSg0SRAM:LoLtjIxxWPs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=lDMxSg0SRAM:LoLtjIxxWPs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=lDMxSg0SRAM:LoLtjIxxWPs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=lDMxSg0SRAM:LoLtjIxxWPs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/lDMxSg0SRAM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/07/we-rolled-out-new-api-call-for-httpush.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/781134969615039030?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/781134969615039030?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/lDMxSg0SRAM/we-rolled-out-new-api-call-for-httpush.html" title="New API call: get a token based on a recipient_key." /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/07/we-rolled-out-new-api-call-for-httpush.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEENRHk-eyp7ImA9WxJVEE0.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-4422431255620258946</id><published>2009-06-26T09:28:00.006+02:00</published><updated>2009-06-26T10:58:15.753+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-26T10:58:15.753+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hosted api" /><category scheme="http://www.blogger.com/atom/ns#" term="ipod touch" /><category scheme="http://www.blogger.com/atom/ns#" term="pricing" /><category scheme="http://www.blogger.com/atom/ns#" term="httpush" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title>Pricing for HTTPush API</title><content type="html">The &lt;a href="http://developer.apple.com/WWDC/"&gt;Apple World Wide Developers Conference&lt;/a&gt; (WWDC for short) is over and I returned back home to fine tune the &lt;a href="http://www.httpush.com/"&gt;HTTPush API,&lt;/a&gt; our hosted gateway to the &lt;a href="http://developer.apple.com/iphone/program/sdk/apns.html"&gt;Apple Push Notification service&lt;/a&gt;. Developers keep on signing up every day (&lt;a href="http://www.httpush.com/collectors/new"&gt;you can sign up here&lt;/a&gt;) and the number one question that they have is: "What about pricing?".&lt;br /&gt;&lt;br /&gt;Pricing is a tricky question, since this kind of service is an industry first, with many variables to keep in mind. But we wanted something &lt;span style="font-weight: bold;"&gt;simple&lt;/span&gt;. We didn't just want to pass down the raw costs of the service. This would have made the billing amount unpredictable and very complicated for the developers.&lt;br /&gt;We wanted &lt;span style="font-weight: bold;"&gt;one&lt;/span&gt; number, that can easily be understand.&lt;br /&gt;&lt;br /&gt;Paying in volume is the easiest way, we could come up with. That is how everybody think about notifications, similar to text messages on a phone plan and here are the details:&lt;br /&gt;&lt;br /&gt;Sandbox and Production&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;unlimited&lt;/span&gt; users&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;unlimited&lt;/span&gt; apps&lt;/li&gt;&lt;li&gt;token registration is &lt;span style="font-weight: bold;"&gt;free&lt;/span&gt; (see the &lt;a href="http://docs.httpush.com/"&gt;documentation&lt;/a&gt; for details)&lt;/li&gt;&lt;/ul&gt;Sandbox&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1000 notifications per month/per account &lt;span style="font-weight: bold;"&gt;free&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Production&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1000 notifications for &lt;span style="font-weight: bold;"&gt;1€&lt;/span&gt;&lt;/li&gt;&lt;li&gt;pre payable&lt;/li&gt;&lt;li&gt;notifications valid for 3 months&lt;/li&gt;&lt;li&gt;notifications are account wide usable by all apps, pool with friends if you want&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;This means in certain limits the sandbox environment is &lt;span style="font-weight: bold;"&gt;free&lt;/span&gt;. We like to try before we buy and I guess most of you are the same here.&lt;br /&gt;&lt;br /&gt;To give you a hint on how you can calculate your costs, use this easy formula.&lt;br /&gt;&lt;br /&gt;Costs of one notifications per customer, per year.&lt;br /&gt;&lt;code&gt;1 notification * 356 days = 365&lt;/code&gt;&lt;br /&gt;&lt;code&gt;365 / 1000 = 0.365€ per year, per customer&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This means for &lt;span style="font-style: italic;"&gt;1€&lt;/span&gt; per customer you can send roughly 1 notification per day to a customer for the next 3 years.&lt;br /&gt;&lt;br /&gt;If you leverage tools like the Apple &lt;a href="http://developer.apple.com/iphone/program/sdk/inapppurchase.html"&gt;In-App Purchase&lt;/a&gt; framework, you have an easy way to pass this costs on to the customer in a recurring way and do not have to incorporate those costs into the application price itself. Also it can represent an additional incoming stream from your application, for the entire life cycle of the application.&lt;br /&gt;&lt;br /&gt;Let me know what you think.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-4422431255620258946?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Kmsb1LUqO5Um4d-G6xuGH-RvRBg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kmsb1LUqO5Um4d-G6xuGH-RvRBg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Kmsb1LUqO5Um4d-G6xuGH-RvRBg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kmsb1LUqO5Um4d-G6xuGH-RvRBg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=X_zztL_xiwk:3dJPOzNVB6E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=X_zztL_xiwk:3dJPOzNVB6E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=X_zztL_xiwk:3dJPOzNVB6E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=X_zztL_xiwk:3dJPOzNVB6E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/X_zztL_xiwk" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/06/pricing-for-httpush-api.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4422431255620258946?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4422431255620258946?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/X_zztL_xiwk/pricing-for-httpush-api.html" title="Pricing for HTTPush API" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/06/pricing-for-httpush-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08BRH4-fyp7ImA9WxJXEU0.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-5632639466464479559</id><published>2009-05-23T19:16:00.005+02:00</published><updated>2009-06-04T09:50:55.057+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T09:50:55.057+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="notification" /><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="push" /><category scheme="http://www.blogger.com/atom/ns#" term="client" /><title>HTTPush Ruby Client</title><content type="html">I sat down and coded a ruby client for the HTTPush API, our hosted gateway to the &lt;a href="http://developer.apple.com/iphone/program/sdk/apns.html"&gt;Apple Push Notification service,&lt;/a&gt; using the excellent &lt;a href="http://httparty.rubyforge.org/"&gt;HTTParty gem&lt;/a&gt;. The whole client weights in at 45 lines of code and excercises every call from the API.&lt;br /&gt;&lt;br /&gt;You can request an invitation to the API &lt;a href="http://push.bigcurl.de/"&gt;here&lt;/a&gt; and download the client from &lt;a href="http://download.bigcurl.de/d/683671f1f8c539c1b89e720cd683da9e862e7783"&gt;here&lt;/a&gt;. You need to be a registered iPhone developer and need an invitation from HTTPush to use this client.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-5632639466464479559?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FhuSQKGtC4Q2gHasYzhCa_Qqi4s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FhuSQKGtC4Q2gHasYzhCa_Qqi4s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FhuSQKGtC4Q2gHasYzhCa_Qqi4s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FhuSQKGtC4Q2gHasYzhCa_Qqi4s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=GtjCAOo89aE:e9PfA-r3KNQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=GtjCAOo89aE:e9PfA-r3KNQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=GtjCAOo89aE:e9PfA-r3KNQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=GtjCAOo89aE:e9PfA-r3KNQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/GtjCAOo89aE" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/05/httpush-ruby-client.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/5632639466464479559?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/5632639466464479559?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/GtjCAOo89aE/httpush-ruby-client.html" title="HTTPush Ruby Client" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/05/httpush-ruby-client.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUERX89eSp7ImA9WxJRFE0.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-7103188550297339025</id><published>2009-05-15T16:34:00.006+02:00</published><updated>2009-05-15T18:16:44.161+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-15T18:16:44.161+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Google App Engine" /><category scheme="http://www.blogger.com/atom/ns#" term="ipod touch" /><category scheme="http://www.blogger.com/atom/ns#" term="push notifications" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><title>What to do with Apple Push Notifications (Part 1)</title><content type="html">This article is part of a series in which I cover use cases for the &lt;a href="http://developer.apple.com/iphone/program/sdk/apns.html"&gt;Apple Push Notification Service.&lt;/a&gt; &lt;a href="http://www.bigcurl.de/"&gt;Bigcurl&lt;/a&gt; runs a &lt;a href="http://push.bigcurl.de/"&gt;hosted gateway: Bigcurl HTTPush&lt;/a&gt; that frees you from running you own servers to make use of those notifications. It is rest based and can be called via plain HTTP from almost any language. You can sign up at &lt;a href="http://push.bigcurl.de/"&gt;push.bigcurl.de&lt;/a&gt;. Indepth documentations about the different api calls can be downloaded from within your HTTPush account.&lt;br /&gt;&lt;br /&gt;In this series I'll cover more in depth about the different use cases and how to archive them in your app. The first one deals with the situation where you do not want to run your own servers and want to reach all your customers with the same message at the same time. You can easily archive this with HTTPush. With some Google &lt;a href="http://code.google.com/intl/de-DE/appengine/"&gt;App Engine&lt;/a&gt; trickery you might not need to run a server at all. I want to show you on a high level, how you would implement this using the &lt;a href="http://push.bigcurl.de/"&gt;HTTPush web service.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;An application that wants to reach all users at the same time&lt;/span&gt;&lt;br /&gt;Say you are building an app for a local band. Your app shows news from the band and mixes that up with tour dates and behind-the-scene pictures. Whenever there is news from the group itself or they have a new gig, you want to send out a notification to the users, letting them know that something is new and they should launch the app to be up-to-date. The primary source for news are a bunch of rss feeds that get called every time the app launches.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Registering a recipient&lt;/span&gt;&lt;br /&gt;Your users launch your app for the first time and they register for the device token (more about how this works after the NDA is lifted). The device token is a unique identifier for the device similar to a phone number, which enables Apple to reach that phone.&lt;br /&gt;&lt;br /&gt;With the received token, you call the api method&lt;br /&gt;&lt;code&gt;http://push.squidshot.com/:account/v2/recipient/registration.json&lt;/code&gt;&lt;br /&gt;with the HTTP verb &lt;span style="font-style: italic;"&gt;POST&lt;/span&gt;, to add that user to the general recipient pool of the application.&lt;br /&gt;&lt;br /&gt;Call this method every time, the app is launched because you can not be sure if the token changed or not. You &lt;span style="font-weight: bold;"&gt;SHOULD NOT&lt;/span&gt; however store the token somewhere on the device. Just call the method.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Send notifications&lt;/span&gt;&lt;br /&gt;To gather the news, pictures and tour dates for your app, you call several rss feeds from within the app. You'll need to outsource this logic to a server machine in order to know when somethings has changed in the feeds and you want to send out a notification.&lt;br /&gt;&lt;br /&gt;Have a look at Google App Engine for running your script. The limits should be sufficient for a small script like this and you can HTTPush from there. Use App Engines cron feature to call your script periodically and send a notification from there to the api.&lt;br /&gt;&lt;br /&gt;Call&lt;br /&gt;&lt;code&gt;http://push.squidshot.com/:account/v2/recipient/notification.json&lt;/code&gt;&lt;br /&gt;with the HTTP verb &lt;span style="font-style: italic;"&gt;POST&lt;/span&gt;, to reach all users in your app.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;No notifications anymore please!&lt;/span&gt;&lt;br /&gt;If a user chooses to opt-out of notifications, simply call&lt;br /&gt;&lt;code&gt;http://push.squidshot.com/:account/v2/recipient/registration.json&lt;/code&gt;&lt;br /&gt;with the HTTP verb &lt;span style="font-style: italic;"&gt;DELETE&lt;/span&gt;, to get him out of the recipient pool.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As you can see it is very simple to use the api and with a little trickery you do not need to run a server on your own to make use of push notifications. If you have more complicated needs for your server script, contact &lt;a href="http://www.bigcurl.de/"&gt;Bigcurl&lt;/a&gt;. We do all things server side for a living and are happy to work with you on your app.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-7103188550297339025?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rgND8PzHTehrP76Ls3_KKk_hllo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rgND8PzHTehrP76Ls3_KKk_hllo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rgND8PzHTehrP76Ls3_KKk_hllo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rgND8PzHTehrP76Ls3_KKk_hllo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=RVIkiu-Y32c:8k8Vcpz7pXM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=RVIkiu-Y32c:8k8Vcpz7pXM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=RVIkiu-Y32c:8k8Vcpz7pXM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=RVIkiu-Y32c:8k8Vcpz7pXM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/RVIkiu-Y32c" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/05/what-to-do-with-apple-push.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7103188550297339025?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7103188550297339025?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/RVIkiu-Y32c/what-to-do-with-apple-push.html" title="What to do with Apple Push Notifications (Part 1)" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/05/what-to-do-with-apple-push.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IAQHcycSp7ImA9WxJREEU.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-4743369305554799918</id><published>2009-05-12T01:17:00.004+02:00</published><updated>2009-05-12T01:45:41.999+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-12T01:45:41.999+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="service" /><category scheme="http://www.blogger.com/atom/ns#" term="hosted api" /><category scheme="http://www.blogger.com/atom/ns#" term="notification" /><category scheme="http://www.blogger.com/atom/ns#" term="web service" /><category scheme="http://www.blogger.com/atom/ns#" term="httpush" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="push" /><title>The four most common use cases for push notification</title><content type="html">Since the &lt;a href="http://push.bigcurl.de/"&gt;Bigcurl HTTPush web service&lt;/a&gt; was opened to a few individuals, first feedback is starting to trickle in. What follows is the essence of the feedback we received so far.&lt;br /&gt;We identified four patterns of how developer want to use push notifications in there own app. Most applications will do a combination of them.&lt;br /&gt;&lt;br /&gt;The Bigcurl HTTPush web service handles two of those cases out of the box without the need for extra machines. Later this month we invite you to test v2 of the api, which sports some new calls to support the use cases discribed. If you are interested to learn more or receive an invitation sign up at &lt;a href="http://push.bigcurl.de/"&gt;http://push.bigcurl.de&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The first two use cases are mostly triggered by an external source, like a script. The later two are mostly triggered by the users themselves.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;1. A single application wide topic&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What do I mean by a topic.&lt;br /&gt;Lets imagine an application for a specific conference. People would download the app, subscribe to receive notifications and when ever there are news regarding the conference or a particular talk, a new notification is send to the api and received by all users of the app. The user would start the application and see what has been updated.&lt;br /&gt;It is very similar to a feed (rss, atom). A Topic means basically a broadcast: One source, many recipients that get the same text.&lt;br /&gt;&lt;br /&gt;The trigger can be anything that has access to the same data, the application wants to display and simply fires a notification to the api when the data changes. This can be either a script or coupled a content management system.&lt;br /&gt;&lt;br /&gt;Since all user get the same notification anyway, you do not need to know much about your users. You don't even need to be able to identify a single user. As we see later this is not always the case.&lt;br /&gt;So the developer should not bother the user to pick a username and sign up. Just create a random string and store it on the device. We only need this username in case the user wants to de-register from  receiving notifications. The only thing we do need to store is the token for the device that is interested in such a notification.&lt;br /&gt;&lt;br /&gt;Except from the trigger part, you can fully use the api to support this use case in your app. We store the token for you and provide you with an access point to reach all users with a single request. Depending on how you want to trigger the notification you might just need to host a script.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;2. Many application wide topics&lt;/span&gt;&lt;br /&gt;If we spin the conference application idea a little further, it would be nice if a person only receives a notification if an update happens on a talk he/she subscribed to.&lt;br /&gt;&lt;br /&gt;Now we need to store a little bit more information to make many different topics happen. We need to store the token for the device and we need to store which topic the device wants updates for.&lt;br /&gt;&lt;br /&gt;As you can imagine that sending the notification now becomes a little more complicated because our trigger needs to know which group wants an update for a specific event.&lt;br /&gt;&lt;br /&gt;The api enables you to send a message to a predefined group and the api figures out who should receive the notification. We still do not need to know a lot about the user. Just the device token and which topic a user is interested.&lt;br /&gt;&lt;br /&gt;This use-case is also fully supported by the api without running own infrastructure besides a script that triggers the message for a certain group. The whole token registration, group membership thing is handled by the api. You specify a group at the management website and you can subscribe or unsubscribe your users from within your app. You should think of the topics here like preferences in an application.&lt;br /&gt;&lt;br /&gt;There are two ways for a developer to support this use case. Either take advantage of the api for storing the device tokens and groups or do the whole registration, topic membership logic them self and fire of individual notifications if something happens.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;3. Individual Messages&lt;br /&gt;&lt;/span&gt;This use case is probably the first one that comes to mind when thinking about notifications. An individual sending a notification to another individual, like a text message. To stay with our conference app, we now want to enable that users can invite each other to topics. The notification should display the request to invite to a topic and the app should handle an acception or decline.&lt;br /&gt;&lt;br /&gt;To allow a user of your application to send notifications, you need to identify who sent the message and detect if he/she is allowed to do so. This means you need some kind of sign up, you need to authenticate a user (a server that stores username and passwords) and you need a discovery mechanism to find users (search).&lt;br /&gt;&lt;br /&gt;You as a developer are responsible for handling sign up, authentication and search.&lt;br /&gt;We only support this case partially by either letting you send a message to a username, which means we do the token registration for you or by letting you send a message to a token directly. In this case you store all the data and do the device registration yourself but let us handle the direct connection to apple.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;4. Individual one-off topics&lt;/span&gt;&lt;br /&gt;A client sends a message to a group that is not predefined and only exists for one message. This is similar to a text message (sms) where you can send the same message to a number of people. You rarely send another message to the same group of people again.&lt;br /&gt;&lt;br /&gt;Since this is a not predefined group, your application should fake such a group by sending individual notification for every identifier on the list.&lt;br /&gt;Like with sending individual notifications you need to handle sign up, authentication and searching for other users. If there is demand we might create such an api in the future.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you need help here with building an online community contact &lt;a href="http://www.bigcurl.de"&gt;Bigcurl.&lt;/a&gt; We do custom development for all things server side for a living and are happy to work with you on your application.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-4743369305554799918?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e6SxwhQPCyMXejWpboUFhGgs1uo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e6SxwhQPCyMXejWpboUFhGgs1uo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e6SxwhQPCyMXejWpboUFhGgs1uo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e6SxwhQPCyMXejWpboUFhGgs1uo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=9WV4Z2Tu-dw:pYQN5zFD2pM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=9WV4Z2Tu-dw:pYQN5zFD2pM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=9WV4Z2Tu-dw:pYQN5zFD2pM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=9WV4Z2Tu-dw:pYQN5zFD2pM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/9WV4Z2Tu-dw" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/05/four-most-common-use-cases-for-push.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4743369305554799918?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4743369305554799918?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/9WV4Z2Tu-dw/four-most-common-use-cases-for-push.html" title="The four most common use cases for push notification" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/05/four-most-common-use-cases-for-push.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IGR3k_fip7ImA9WxJSEUs.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-7303046091339432914</id><published>2009-04-28T15:56:00.008+02:00</published><updated>2009-05-01T10:12:06.746+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-01T10:12:06.746+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="service" /><category scheme="http://www.blogger.com/atom/ns#" term="hosted api" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="hosting" /><category scheme="http://www.blogger.com/atom/ns#" term="iphone" /><category scheme="http://www.blogger.com/atom/ns#" term="push" /><category scheme="http://www.blogger.com/atom/ns#" term="http" /><category scheme="http://www.blogger.com/atom/ns#" term="notification" /><category scheme="http://www.blogger.com/atom/ns#" term="os" /><category scheme="http://www.blogger.com/atom/ns#" term="api" /><category scheme="http://www.blogger.com/atom/ns#" term="ipod touch" /><category scheme="http://www.blogger.com/atom/ns#" term="hosted" /><category scheme="http://www.blogger.com/atom/ns#" term="3.0" /><category scheme="http://www.blogger.com/atom/ns#" term="ipod" /><title>Hosted HTTP API for the Apple Push Notification Service</title><content type="html">&lt;a href="http://www.bigcurl.de/"&gt;Bigcurl&lt;/a&gt; is building a simple web service  for the &lt;a href="http://www.apple.com/iphone/preview-iphone-os/"&gt;Apple Push Notification service&lt;/a&gt; for iPhone and iPod Touch.&lt;br /&gt;&lt;br /&gt;Bigcurl HTTPush is a hosted web service that enables developers for the iPhone and iPod Touch to easily and cost-effectively send vast amounts of push notifications to there customers. It stores the information to map a user name to a device, collect all notifications and act as a secure gateway to Apples infrastructure.&lt;br /&gt;&lt;br /&gt;To get some ideas what you can do with the Push service, you should &lt;a href="http://www.apple.com/quicktime/qtv/preview-iphone-os/"&gt;watch the preview-presentation for the iPhone OS 3.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Bigcurl HTTPush is in private alpha at the moment, but you can request an invite by signing up at &lt;a href="http://push.bigcurl.de/"&gt;http://push.bigcurl.de&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-7303046091339432914?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Vk1j_qrz04r59hQqOCKaglhUtYo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vk1j_qrz04r59hQqOCKaglhUtYo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Vk1j_qrz04r59hQqOCKaglhUtYo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Vk1j_qrz04r59hQqOCKaglhUtYo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=hsXfT5hvUsE:v-rRPrVQZE8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=hsXfT5hvUsE:v-rRPrVQZE8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=hsXfT5hvUsE:v-rRPrVQZE8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=hsXfT5hvUsE:v-rRPrVQZE8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/hsXfT5hvUsE" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/04/early-access-to-http-api-for-appless.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7303046091339432914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7303046091339432914?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/hsXfT5hvUsE/early-access-to-http-api-for-appless.html" title="Hosted HTTP API for the Apple Push Notification Service" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/04/early-access-to-http-api-for-appless.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMERng9eyp7ImA9WxVaE0g.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-6207154365812259262</id><published>2009-04-10T11:42:00.003+02:00</published><updated>2009-04-10T11:56:47.663+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-10T11:56:47.663+02:00</app:edited><title>...and since twitter is the...</title><content type="html">If you like, follow me on twitter here &lt;a href="http://twitter.com/bigcurl"&gt;@bigcurl&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-6207154365812259262?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tOBLZTAO1a1TjvlexaFfs1ZO6K0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tOBLZTAO1a1TjvlexaFfs1ZO6K0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tOBLZTAO1a1TjvlexaFfs1ZO6K0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tOBLZTAO1a1TjvlexaFfs1ZO6K0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=o5yt61ZXkOw:HnYg0bT0NSk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=o5yt61ZXkOw:HnYg0bT0NSk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=o5yt61ZXkOw:HnYg0bT0NSk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=o5yt61ZXkOw:HnYg0bT0NSk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/o5yt61ZXkOw" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/04/and-since-twitter-is.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/6207154365812259262?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/6207154365812259262?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/o5yt61ZXkOw/and-since-twitter-is.html" title="...and since twitter is the..." /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/04/and-since-twitter-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUGSX0yeip7ImA9WxVaE0g.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-4045362725699077834</id><published>2009-04-10T10:41:00.003+02:00</published><updated>2009-04-10T10:47:08.392+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-10T10:47:08.392+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="service" /><category scheme="http://www.blogger.com/atom/ns#" term="referer" /><category scheme="http://www.blogger.com/atom/ns#" term="jruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Google App Engine" /><category scheme="http://www.blogger.com/atom/ns#" term="free" /><category scheme="http://www.blogger.com/atom/ns#" term="removal" /><category scheme="http://www.blogger.com/atom/ns#" term="jruby-rack" /><category scheme="http://www.blogger.com/atom/ns#" term="sinatra" /><title>A small sinatra app in Google App Engine</title><content type="html">As I discussed Google AppEngine with friends, the question of perfomance for a ruby app arrised. I ported our smallest app to sinatra and used the &lt;a href="http://blog.bigcurl.de/2009/04/running-sinatra-apps-on-google.html"&gt;instructions on how to set up a sinatra app.&lt;/a&gt; The result is &lt;a href="http://r.squidshot.com/"&gt;here&lt;/a&gt;. It is a free referer removal service and it is not touching the database or does any fancy calculations.&lt;br /&gt;&lt;br /&gt;Take a look for yourself &lt;a href="http://r.squidshot.com/"&gt;http://r.squidshot.com/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-4045362725699077834?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6s_7qQn2gjcsn3_AA1HKv6bzsyo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6s_7qQn2gjcsn3_AA1HKv6bzsyo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6s_7qQn2gjcsn3_AA1HKv6bzsyo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6s_7qQn2gjcsn3_AA1HKv6bzsyo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=QPkv_0njCDc:MQUNjoKPHqU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=QPkv_0njCDc:MQUNjoKPHqU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=QPkv_0njCDc:MQUNjoKPHqU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=QPkv_0njCDc:MQUNjoKPHqU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/QPkv_0njCDc" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/04/small-sinatra-app-in-google-app-engine.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4045362725699077834?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4045362725699077834?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/QPkv_0njCDc/small-sinatra-app-in-google-app-engine.html" title="A small sinatra app in Google App Engine" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/04/small-sinatra-app-in-google-app-engine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08CQ3o4fip7ImA9WxVaFkU.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-3614459583735482152</id><published>2009-04-08T16:12:00.016+02:00</published><updated>2009-04-14T08:17:42.436+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-14T08:17:42.436+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="deployment" /><category scheme="http://www.blogger.com/atom/ns#" term="Google App Engine" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="code" /><category scheme="http://www.blogger.com/atom/ns#" term="sinatra" /><title>Running Sinatra apps on Google AppEngine (Java)</title><content type="html">&lt;span style="color: rgb(255, 0, 0);"&gt;Update(14.04.2009)&lt;/span&gt;: &lt;a href="http://blog.headius.com/2009/04/jruby-moves-to-git.html"&gt;Jruby moved to git today&lt;/a&gt;. Please use git instead of svn to checkout the jruby project.&lt;br /&gt;&lt;br /&gt;Google today &lt;a href="http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html"&gt;announced&lt;/a&gt; Java as a new runtime environment for Google &lt;a href="http://appengine.google.com/"&gt;AppEngine&lt;/a&gt;. This not only enables developers to use the Java Language to build web applications but also opens the door for a lot of dynamic languages including my current favourite one &lt;a href="http://www.ruby-lang.org/"&gt;Ruby&lt;/a&gt;. With the help of the&lt;a href="http://jruby.codehaus.org/"&gt; Jruby project&lt;/a&gt; it is possible to deploy ruby apps in Googles Cloud.&lt;br /&gt;&lt;br /&gt;At &lt;a href="http://www.bigcurl.de/"&gt;Bigcurl&lt;/a&gt; most applications are written in ruby and a new hosting option which is basicly free is always welcomed. Take a look at some of our internal apps for yourself (&lt;a href="http://www.squidshot.com/"&gt;www.squidshot.com&lt;/a&gt;) and try to spot which ones are hosted in the cloud and which ones are hosted in a traditional data center.&lt;br /&gt;&lt;br /&gt;This is a proof of concept which shows that it is possible to run ruby applications and maybe also ruby on rails applications on Google AppEngine. With the help of &lt;a href="http://olabini.com/blog/2009/04/jruby-on-rails-on-google-app-engine/"&gt;Ola Bini&lt;/a&gt; and the &lt;a href="http://code.google.com/appengine/docs/java/overview.html"&gt;AppEngine Docs for Java&lt;/a&gt; , I created a tiny &lt;a href="http://www.sinatrarb.com/"&gt;sinatra app&lt;/a&gt; (which acts as a placeholder for your much-more-logic-containing-app) and show how to use Google AppEngine as a ruby deployment option.&lt;br /&gt;&lt;br /&gt;This was done on Mac OS X 10.5.6.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;Jruby&lt;/span&gt;&lt;br /&gt;First check out a fresh copy of jruby&lt;br /&gt;&lt;code&gt;git clone &lt;span style="font-family: Georgia,serif;"&gt;git://kenai.com/jruby~main&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;go into the jruby dir&lt;br /&gt;&lt;code&gt;cd &lt;/code&gt;&lt;code&gt;&lt;span style="font-family: Georgia,serif;"&gt;jruby~main&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and compile jruby.&lt;br /&gt;&lt;code&gt;ant &amp;amp;&amp;amp; ant jar-complete&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Lets see if we have the correct version.&lt;br /&gt;&lt;code&gt;bin/jruby -v&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The output should be something like:&lt;br /&gt;&lt;code&gt;jruby 1.3.0 (ruby 1.8.6p287) (2009-04-08 r9524) (Java HotSpot(TM) Client VM 1.5.0_16) [i386-java]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install some gems for our newly created jruby.&lt;br /&gt;&lt;code&gt;PATH-TO-JRUBY/bin/jruby -S gem install rake sinatra warbler&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;jruby-rack&lt;/span&gt;&lt;br /&gt;Get a fresh version from &lt;a href="http://github.com/nicksieger/jruby-rack/tree/master"&gt;http://github.com/nicksieger/jruby-rack/tree/master&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;cd jruby-rack&lt;br /&gt;PATH-TO-JRUBY/bin/jruby -S rake SKIP_SPECS=true&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;We will come back to jruby-rack later.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;br /&gt;Create the sinatra app.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a new folder "sinatra-app"&lt;br /&gt;&lt;code&gt;cd sinatra-app&lt;br /&gt;touch config.ru app.rb appengine-web.xml&lt;br /&gt;mkdir views public config lib&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Fill the files config.ru, config/warble.rb, appengine-web.xml and app.rb with the content from this gist: &lt;a href="http://gist.github.com/91801"&gt;http://gist.github.com/91801&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is our basic Sinatra app. It will just display a string. But then we know it is working.&lt;br /&gt;&lt;br /&gt;For a quick test run:&lt;br /&gt;&lt;code&gt;ruby app.rb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and go to &lt;a href="http://localhost:4567/"&gt;http://localhost:4567/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we need to copy some files to the lib dir.&lt;br /&gt;First go to the &lt;a href="http://code.google.com/appengine/downloads.html"&gt;download section&lt;/a&gt; to find the Google App Engine SDK for Java. &lt;a href="http://googleappengine.googlecode.com/files/appengine-java-sdk-1.2.0.zip"&gt;Version 1.2.0 - 04/07/09 is here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After the download is finished we need to copy &lt;code&gt;appengine-java-sdk-1.2.0/lib/user/appengine-api-1.0-sdk-1.2.0.jar&lt;/code&gt; to the lib dir.&lt;br /&gt;&lt;br /&gt;Copy following jar file from jruby-rack to lib folder.&lt;br /&gt;&lt;code&gt;JRUBY-RACK/target/jruby-rack-*.jar.&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Next up is jruby itself. Since Ola pointed to the 1000 file limit with AppEngine he wrote a script which splits the jruby-jar into two pieces.&lt;br /&gt;&lt;br /&gt;But first copy &lt;code&gt;jruby-complete.jar&lt;/code&gt; from &lt;code&gt;PATH-TO-JRUBY/lib/jruby-complete.jar&lt;/code&gt; to the lib folder of the sinatra app.&lt;br /&gt;&lt;br /&gt;Then run his script in the lib folder and you should have two jar files instead of one. &lt;code&gt;jruby-core.jar&lt;/code&gt; and &lt;code&gt;ruby-stdlib.jar&lt;/code&gt;. &lt;a href="http://gist.github.com/91801"&gt;You find the script here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now we should be ready to pack our application.&lt;br /&gt;run &lt;code&gt;PATH-TO-JRUBY/bin/jruby -S warble&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This should create a tmp folder and a .war file. Since AppEngine needs the exploded war folder and not the .war file, we simply ignore the file&lt;br /&gt;&lt;br /&gt;Go to &lt;code&gt;tmp/war/WEB-INF/gems/gems/sinatra-0.9.1.1/lib/sinatra.rb&lt;/code&gt; and commend out the last line which is &lt;code&gt;use_in_file_templates!&lt;/code&gt;. Somehow this makes problems with the runtime.&lt;br /&gt;&lt;br /&gt;Run &lt;code&gt;appengine-java-sdk-1.2.0/bin/dev_appserver.sh tmp/war/&lt;/code&gt; to get a local server up and running for testing stuff.&lt;br /&gt;&lt;br /&gt;If you have no error on the console go to &lt;a href="http://localhost:8080/"&gt;http://localhost:8080&lt;/a&gt; and you should see a nice welcome message in form of the string from the app.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Things work fine? Lets deploy.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You need to be signed up as one of the 10.000 developers who have early access to the java runtime. &lt;a href="http://appengine.google.com/promo/java_runtime"&gt;Sign up here&lt;/a&gt; if you haven't allready.&lt;br /&gt;If so got to the &lt;a href="http://appengine.google.com/"&gt;Google AppEngine,&lt;/a&gt; sign in and create a new application.&lt;br /&gt;Copy the &lt;code&gt;application-id&lt;/code&gt; you get from there into the &lt;code&gt;appengine-web.xml&lt;/code&gt; file and replace &lt;code&gt;YOUR-APPLICATION-ID&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Run this to repopulate with the new id&lt;br /&gt;&lt;code&gt;PATH-TO-JRUBY/bin/jruby -S warble&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and then deploy running&lt;br /&gt;&lt;code&gt;appengine-java-sdk-1.2.0/bin/appcfg.sh update tmp/war/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now got to your-application-id.blogspot.com and it should work. The first request takes quite a while but the following should be fine.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;&lt;br /&gt;Want to redirect naked domains in App Engine. &lt;a href="http://blog.bigcurl.de/2008/08/redirect-naked-domains-to-subdomain-in.html"&gt;Take a look here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-3614459583735482152?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rfbyOzc5Dqnf_WabFX7KAC5s5ow/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rfbyOzc5Dqnf_WabFX7KAC5s5ow/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rfbyOzc5Dqnf_WabFX7KAC5s5ow/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rfbyOzc5Dqnf_WabFX7KAC5s5ow/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=1EkRz6dI3Sc:qmK9QyDFHe8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=1EkRz6dI3Sc:qmK9QyDFHe8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=1EkRz6dI3Sc:qmK9QyDFHe8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=1EkRz6dI3Sc:qmK9QyDFHe8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/1EkRz6dI3Sc" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/04/running-sinatra-apps-on-google.html#comment-form" title="33 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/3614459583735482152?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/3614459583735482152?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/1EkRz6dI3Sc/running-sinatra-apps-on-google.html" title="Running Sinatra apps on Google AppEngine (Java)" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">33</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/04/running-sinatra-apps-on-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcERns9fip7ImA9WxVbF0w.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-1399099052213160637</id><published>2009-04-02T10:03:00.009+02:00</published><updated>2009-04-03T01:46:47.566+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-03T01:46:47.566+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="long" /><category scheme="http://www.blogger.com/atom/ns#" term="password" /><category scheme="http://www.blogger.com/atom/ns#" term="secure" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>Fresh passwords, every 5 seconds</title><content type="html">Passwords should be secure.  One way to archive this is by making them very long.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most web applications I create, have a common workflow of sending a preconfigured password to a newly signed up user . To make it unguessable before the user changes it, this password is normally 40 characters long and contains only numbers and characters and no special characters. Some mail clients tend to do special stuff with the characters, remove some and the copy/pasted password is not working anymore.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Beeing a user myself I like to have these long passwords as login but most apps tend to send out either no password at all or send very short, memorizable passwords.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The short ones are good if you want to access your account from arround the world but most of the time I sit in front of the same computer and Keychain in Mac OS X (or any other app that stores and fills in password for you) does a pretty good job of remembering the long passwords for me.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So you need a password now. Want it long, copy/paste save and secure? Here you go: &lt;a href="http://p.squidshot.com/"&gt;http://p.squidshot.com&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Passwords are refreshed every 5 seconds. So no excuse of using bad passwords anymore. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-1399099052213160637?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FG03-ehfYT91-WOjTsCXNinRsBQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FG03-ehfYT91-WOjTsCXNinRsBQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FG03-ehfYT91-WOjTsCXNinRsBQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FG03-ehfYT91-WOjTsCXNinRsBQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=ygAJ_TKRMrA:EEMrBfEYW0s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=ygAJ_TKRMrA:EEMrBfEYW0s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=ygAJ_TKRMrA:EEMrBfEYW0s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=ygAJ_TKRMrA:EEMrBfEYW0s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/ygAJ_TKRMrA" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/04/fresh-passwords-every-5-seconds.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/1399099052213160637?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/1399099052213160637?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/ygAJ_TKRMrA/fresh-passwords-every-5-seconds.html" title="Fresh passwords, every 5 seconds" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/04/fresh-passwords-every-5-seconds.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMDQHs5fyp7ImA9WxVVGU0.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-4875148782268675693</id><published>2009-03-13T01:21:00.005+01:00</published><updated>2009-03-13T01:34:31.527+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-13T01:34:31.527+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="signature signaturportal.de invoices" /><title>Sign your invoices</title><content type="html">German tax law requires you to sign  an invoice with a valid digital signature, if you want to send it via email instead of snailmail. I wrote a script which connects to signaturportal.de and signs a given pdf.&lt;br /&gt;You can find the git repository at the &lt;a href="http://github.com/bigcurl/signaturportal-sign-script/tree/master"&gt;bigcurl section at github&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here are the steps to to sign your own invoices:&lt;br /&gt;&lt;br /&gt;1. Sign up for an account at signaturportal.de&lt;br /&gt;2. You have to wait for the PostIdent letter in your mailbox. This might take a few days.&lt;br /&gt;3. After you confirmed your identity sign into the page and go to Einstellungen -&gt; Webservices -&gt; Gatewayeinstellungen&lt;br /&gt;     Here you find your credentials for the service&lt;br /&gt;4. Change Servie to 'WS-Soap'&lt;br /&gt;5. Change Client to 'anderen wie nebenstehend'&lt;br /&gt;6. Get the script from github.com either by running &lt;br /&gt;     &lt;code&gt;git clone git@github.com:bigcurl/signaturportal-sign-script.git&lt;/code&gt; &lt;br /&gt;     or by downloading a zipped version from &lt;a href="http://github.com/bigcurl/signaturportal-sign-script/zipball/master"&gt;here&lt;/a&gt;.&lt;br /&gt;6. Open up the script and change username, password and kontonr to your provided &lt;br /&gt;values.&lt;br /&gt;&lt;br /&gt;You should have ruby and ruby gems installed. See your operating system manual how to install these two.&lt;br /&gt;&lt;br /&gt;7. Install soap4r with &lt;code&gt;sudo gem install soap4r&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Then run &lt;code&gt;ruby sign-script.rb /path_to_pdf_file&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You should see a file in the same directory like your original pdf file with a '-signed' prepended to the filename.&lt;br /&gt;This is your signed pdf. You can check the signature either by using Adobes Acrobat Reader which is free or use the free service provided by &lt;a href="https://www.signaturportal.de/electronic-invoice-check.html"&gt;signaturportal.de&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Happy invoicing!&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-4875148782268675693?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NL5E_mKe95qFr_4j0LwNTZ5PzJw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NL5E_mKe95qFr_4j0LwNTZ5PzJw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NL5E_mKe95qFr_4j0LwNTZ5PzJw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NL5E_mKe95qFr_4j0LwNTZ5PzJw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=ttS7ZCZ5Tio:_74MDHGVw-E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=ttS7ZCZ5Tio:_74MDHGVw-E:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=ttS7ZCZ5Tio:_74MDHGVw-E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=ttS7ZCZ5Tio:_74MDHGVw-E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/ttS7ZCZ5Tio" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/03/sign-your-invoices.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4875148782268675693?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4875148782268675693?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/ttS7ZCZ5Tio/sign-your-invoices.html" title="Sign your invoices" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/03/sign-your-invoices.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cEQ3w7cCp7ImA9WxVVGU0.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-4603282062433723533</id><published>2009-03-13T00:29:00.004+01:00</published><updated>2009-03-13T00:36:42.208+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-13T00:36:42.208+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="brckmann" /><category scheme="http://www.blogger.com/atom/ns#" term="relaunch" /><category scheme="http://www.blogger.com/atom/ns#" term="6230" /><title>Brckmann (6230)</title><content type="html">Same base, new dress.&lt;br /&gt;Brckmann is a grid based theme hand-crafted by &lt;a href="http://6230.org/"&gt;6230&lt;/a&gt;. &lt;br /&gt;Find more about the theme &lt;a href="http://brckmann.blogspot.com/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Do not forget to leave a msg if you like what you see!&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-4603282062433723533?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wh9VnS75i-cWjC6cgxC2cmdlNI0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wh9VnS75i-cWjC6cgxC2cmdlNI0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wh9VnS75i-cWjC6cgxC2cmdlNI0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wh9VnS75i-cWjC6cgxC2cmdlNI0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=sjYNUWcK08w:GSylYNwhfGg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=sjYNUWcK08w:GSylYNwhfGg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bigcurl?a=sjYNUWcK08w:GSylYNwhfGg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bigcurl?i=sjYNUWcK08w:GSylYNwhfGg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/sjYNUWcK08w" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/03/brckmann-6230.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4603282062433723533?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/4603282062433723533?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/sjYNUWcK08w/brckmann-6230.html" title="Brckmann (6230)" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/03/brckmann-6230.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcNR3Yyeip7ImA9WxVVGU0.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-7834028407505485503</id><published>2009-01-28T18:47:00.009+01:00</published><updated>2009-03-13T00:21:36.892+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-13T00:21:36.892+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="password" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="backup" /><category scheme="http://www.blogger.com/atom/ns#" term="backup_fu" /><category scheme="http://www.blogger.com/atom/ns#" term="encryption" /><category scheme="http://www.blogger.com/atom/ns#" term="zip" /><title>backup_fu with zip and password encryption support</title><content type="html">backup_fu is known as a convinient method to backup databases and static files for rails apps. &lt;a href="http://shanti.railsblog.com/backup-fu-makes-amazon-s3-backups-redonkulous"&gt;Here is the original post from the creator&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I forked it today and added zip support and passwort encryption for zip archives.&lt;br /&gt;&lt;br /&gt;The passwort encryption is considered weak. From the zip man page:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Use password to encrypt zipfile entries (if any).  THIS IS INSECURE!  Many multi-user operating systems provide  ways  for  any user  to see the current command line of any other user; even on stand-alone systems there is  always  the  threat  of  over-the-shoulder  peeking.   Storing the plaintext password as part of a command line in an automated script  is  even  worse.   Whenever possible, use the non-echoing, interactive prompt to enter pass-words.  (And where  security  is  truly  important,  use  strong encryption such as Pretty Good Privacy instead of the relatively weak encryption provided by standard zipfile utilities.)&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;You have been warned!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Install the right_aws gems with&lt;br /&gt;&lt;br /&gt;&lt;code&gt;sudo gem install right_aws&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Install backup_fu with&lt;br /&gt;&lt;br /&gt;&lt;code&gt;script/plugin install git://github.com/bigcurl/backup_fu.git&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Add this to your config file to enable zip and password encryption:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;zip-password: your-super-secret-password&lt;br /&gt;compressor: zip&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;See backup_fu use zip and encrypt your files before uploading it to Amazon S3.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-7834028407505485503?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZB3SE3cx-uD2cnFBYq8pQLW1e4U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZB3SE3cx-uD2cnFBYq8pQLW1e4U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZB3SE3cx-uD2cnFBYq8pQLW1e4U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZB3SE3cx-uD2cnFBYq8pQLW1e4U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=3PMQOtGu"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=KlNqMpLc"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=MK3Kn47C"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?i=MK3Kn47C" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/cAfTZFn3jvM" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2009/01/backupfu-with-zip-and-password.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7834028407505485503?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7834028407505485503?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/cAfTZFn3jvM/backupfu-with-zip-and-password.html" title="backup_fu with zip and password encryption support" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://blog.bigcurl.de/2009/01/backupfu-with-zip-and-password.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEHQ3k_fCp7ImA9WxVQEkk.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-7163720228446501647</id><published>2008-11-20T10:43:00.005+01:00</published><updated>2009-01-29T16:40:32.744+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-29T16:40:32.744+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="feed url redirect subscription" /><title>Changing the feed links!</title><content type="html">I updated the feed address to &lt;a href="http://feedproxy.google.com/bigcurl"&gt;http://feedproxy.google.com/bigcurl&lt;/a&gt;.&lt;div&gt;Redirections from the old url are in place but it is better if you update your subscription right away.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;New feed address: &lt;a href="http://feedproxy.google.com/bigcurl"&gt;http://feedproxy.google.com/bigcurl &lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-7163720228446501647?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nuokYRDbOaC_ZEF0TCv65ZfbQ3U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nuokYRDbOaC_ZEF0TCv65ZfbQ3U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nuokYRDbOaC_ZEF0TCv65ZfbQ3U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nuokYRDbOaC_ZEF0TCv65ZfbQ3U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=stBGT6fg"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=Dcs59cFc"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=JPK7gwRK"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?i=JPK7gwRK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/C_F-ku2BfXE" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2008/11/changing-feed-links.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7163720228446501647?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7163720228446501647?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/C_F-ku2BfXE/changing-feed-links.html" title="Changing the feed links!" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2008/11/changing-feed-links.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQNRX0zfyp7ImA9WxVVGU0.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-5398832582792570904</id><published>2008-11-19T02:12:00.008+01:00</published><updated>2009-03-13T00:26:34.387+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-13T00:26:34.387+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="amazon s3 cloudfront cache" /><title>Amazon S3: Save money by setting the cache header appropriately</title><content type="html">Maybe I'm late to the party but I just discovered that you can set the header Cache-Control in Amazon S3.&lt;br /&gt;&lt;br /&gt;What does setting the cache control header mean?&lt;br /&gt;&lt;br /&gt;Straight from the rfc:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;The Cache-Control general-header field is used to specify directives that MUST be obeyed by all caching mechanisms along the request/response chain. The directives specify behavior intended to prevent caches from adversely interfering with the request or response. These directives typically override the default caching algorithms. Cache directives are unidirectional in that the presence of a directive in a request does not imply that the same directive is to be given in the response.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Explained in simple words this means that every cache between you and the requesting browser will keep the file for the timeframe specified in the header. Even the browser itself will cache the file and if a user encounters for example an previously in s3 uploaded image, it will not request that image again.&lt;br /&gt;Everybody wins. The page loads faster for the enduser and you have to pay less for traffic.&lt;br /&gt;&lt;br /&gt;If you use ruby and the rightscale gem, here is a simple request setting the header right for caching it. Start irb:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'right_aws'&lt;br /&gt;s3 = RightAws::S3Interface.new(ACCESS_KEY,SECRET_ACCESS,{:multi_thread =&gt; true})&lt;br /&gt;s3.create_bucket('test.bigcurl.de')&lt;br /&gt;s3.put "test.bigcurl.de", "untitled.txt",'Cache me if you can!',{'Content-Type'=&gt;'text/plain','Cache-Control' =&gt; 'public,max-age=31536000'}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;the result from the web looks like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;curl -I s3.amazonaws.com/test.bigcurl.de/untitled.txt&lt;br /&gt;HTTP/1.1 200 OK&lt;br /&gt;x-amz-id-2: QWpqMS6h32b+&lt;br /&gt;x-amz-request-id: ECC1EF0ABCAA0AD6&lt;br /&gt;Date: Wed, 19 Nov 2008 00:27:19 GMT&lt;br /&gt;Cache-Control: public, max-age=31536000&lt;br /&gt;Last-Modified: Wed, 19 Nov 2008 00:23:35 GMT&lt;br /&gt;ETag: "ce114e4501d2f4e2dcea3e17b546f339"&lt;br /&gt;Content-Type: text/plain&lt;br /&gt;Content-Length: 14&lt;br /&gt;Server: AmazonS3&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Pretty cool and since the header is still intact after Amazon Cloudfront, you'll benefit there as well.&lt;br /&gt;&lt;br /&gt;Keep in mind that some files are more suitable than others for caching. Every static content like pictures, css files, javascript files are good candidates for caching. Dynamically generate data in which the content might change over time are no good candidates.&lt;br /&gt;So be careful on which filetypes you increase the cache control time. You can not expire the file later via the server.&lt;br /&gt;&lt;br /&gt;To avoid at least a few hickups implement a versioning mechanism like this: flower.jpg becomes flower.1.jpg. If you want to upload a newer version of the flowers pic you simply increase the number like this flower.2.jpg and it will be instantaneously available in the cache and as you generate new links with the new filename in your app it will not serve the old file anymore.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-5398832582792570904?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nvdyP0HJk8Inpm1TCr9oFcMuMTg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nvdyP0HJk8Inpm1TCr9oFcMuMTg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nvdyP0HJk8Inpm1TCr9oFcMuMTg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nvdyP0HJk8Inpm1TCr9oFcMuMTg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=C69zkLUh"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=Iq4l5mZZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=UF7nUbhD"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?i=UF7nUbhD" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/Jx-itWQfBgs" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2008/11/amazon-s3-save-money-by-setting-cache.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/5398832582792570904?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/5398832582792570904?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/Jx-itWQfBgs/amazon-s3-save-money-by-setting-cache.html" title="Amazon S3: Save money by setting the cache header appropriately" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://blog.bigcurl.de/2008/11/amazon-s3-save-money-by-setting-cache.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIDR307eyp7ImA9WxRVF0s.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-7352077458401984512</id><published>2008-11-15T15:03:00.010+01:00</published><updated>2008-11-15T18:02:56.303+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-15T18:02:56.303+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="subversion" /><category scheme="http://www.blogger.com/atom/ns#" term="svn" /><title>Using a git frontend with a subversion backend Part 1</title><content type="html">I find myself going back to a few unrelated articles about how to use &lt;span style="font-style: italic;"&gt;git-svn&lt;/span&gt; because I keep forgetting the exact commands. Also not everybody is familiar with the concept of using subversion (&lt;span style="font-style: italic;"&gt;svn&lt;/span&gt;) and &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; together.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Why should someone mix those two?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The answer is, like usual, not so simple.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Maybe your corporate policies do not allow to use another source code management system (scm).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;You have existing infrastructure that you can not or do not want to change.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;You do not need the distributed features of &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; but like the command line tool because it is a little more closer to the metal than &lt;span style="font-style: italic;"&gt;svn&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;These are more or less the reasons why I want to use it that way. &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; brings some refreshing ideas to the command line but I do not need the distributed features that are often associated with it.&lt;br /&gt;Also I find myself working on a regular basis with other developers who need to use Windows for development.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Windows support in git&lt;/span&gt; is not the best if it exists at all. &lt;span style="font-style: italic;"&gt;svn&lt;/span&gt; on the other side is pretty good at it. Having the ability to support both platforms  and maybe something else in the future is a good thing to have.&lt;br /&gt;&lt;br /&gt;So what are the pros and cons of using either tech:&lt;br /&gt;Subversion&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Longer around: This can be either a good or a bad thing but &lt;span style="font-style: italic;"&gt;svn&lt;/span&gt; was already a big icebreaker for many companies to start moving away from &lt;span style="font-style: italic;"&gt;cvs&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Many companies have existing infrastructures and see no reason to move away from their investment&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Backups: This hit one of my mates once. A headcrash on his laptop with more than 40 local commits in &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; and no backup. "Stupid", you might say but it happens more than you think. &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; with all its possibilities to change a commit after you commited, keeps many developers from pushing there changes to a public viewable repository. "Maybe I forgot something and need to tweak it again", is an often heard excuse and discussed &lt;a href="http://blog.red-bean.com/sussman/?p=96"&gt;here&lt;/a&gt; in more detail.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Path authorization: Some people want the ability to hide certain parts of a repository from others&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt; Apache integration: No need to run a special daemon to host a repository. Most sysadmins are familiar with apache and do not need to learn a new tool or setup new tools to monitor the new daemon.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Platforms: Like I said before subversion supports many plattforms including windows.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Git&lt;br /&gt;&lt;ul&gt;&lt;li&gt; The index: The possibility to have a staging station where you can "park" things you want to commit on a patch per file level is awesome.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;patch -i&lt;/span&gt;: Commiting only a certain part of an edited file was something I always emulated by using a graphical diff tool. In &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; this is support natively.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;rebase&lt;/span&gt;: Forget to check in a file ends up with a new commit in subversion that is not related to the initial one where you forget the file. In &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; it is possible to rearrange commits and "squash" them together into one.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;merge&lt;/span&gt;: Merging in &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; is easy. Merge is easy in subversion too now but it first started getting attention when &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; came around and showed how easy it could be done.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;stash&lt;/span&gt;: Stashing is the ability to take changes you have done to a local branch and copy them over to a newly created local branch.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Offline commits: You do not need a working network connection to commit your changes.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Http/git protocol: &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; over &lt;span style="font-style: italic;"&gt;http&lt;/span&gt; is only one way. It does not allow to push changes back from your local repository to the public repository. If you want that you have to run the custom daemon and use the &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; protocol.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;git&lt;/span&gt;'s distributed features are great if you work on open source projects as it encourages forking the repository and generally more open development. In a more corporate environment you often do not needs these features and luckily &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; has &lt;span style="font-style: italic;"&gt;git-svn&lt;/span&gt; which bridges both worlds.&lt;br /&gt;&lt;br /&gt;The following articles will show you how I use &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; in a pure &lt;span style="font-style: italic;"&gt;svn&lt;/span&gt; environment.&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-7352077458401984512?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tKHG1W6vL9N1YGwYt5KgCdiNync/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tKHG1W6vL9N1YGwYt5KgCdiNync/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tKHG1W6vL9N1YGwYt5KgCdiNync/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tKHG1W6vL9N1YGwYt5KgCdiNync/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=XBnuOEpq"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=LoXFfRFW"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=1A8DmKsz"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?i=1A8DmKsz" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/Xt5q9aU9ny8" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2008/11/using-git-frontend-with-subversion.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7352077458401984512?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/7352077458401984512?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/Xt5q9aU9ny8/using-git-frontend-with-subversion.html" title="Using a git frontend with a subversion backend Part 1" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.bigcurl.de/2008/11/using-git-frontend-with-subversion.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcGSH06eyp7ImA9WxVaEkQ.&quot;"><id>tag:blogger.com,1999:blog-5255900111414844224.post-1585576837651738916</id><published>2008-08-15T20:58:00.005+02:00</published><updated>2009-04-09T17:13:49.313+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-09T17:13:49.313+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Google App Engine redirect" /><title>Redirect naked domains to a subdomain in Google's App Engine</title><content type="html">&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Update&lt;/span&gt;: Seems like Google removed the feature to actually add a naked domain through the admin page. I'll leave the project around for reference but consider using another service or server to redirect your domain.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Say you want to deploy an app on Google App Engine under your own domain name. Historicaly users were trained to enter the subdomain www before your naked domain name, so you configure this one too.&lt;div&gt;Both domains point to the same application.&lt;/div&gt;&lt;div&gt;The problem with this approach is that both domains will work, which can lead to inconsitent results.&lt;div&gt;You want to redirect one to the other and settle on a single domain but for now it is not possible to configure a redirect directly in Goole App Engine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That is why I wrote redirector. It is a little application which redirects all the apps in your Google Apps account from a naked domain name to a subdomain. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Eg. &lt;a href="http://bigcurl.de/"&gt;bigcurl.de&lt;/a&gt; --&gt; &lt;a href="http://www.bigcurl.de/"&gt;www.bigcurl.de&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you want it can also do this vice versa but be aware that you are not taking advantage of Googles geocaching mechanism with this approach.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One deployed application is sufficent to provide redirect service for all other applications in your Google Apps account.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can find the code and setup instructions &lt;a href="http://code.google.com/p/redirector/"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;br/&gt;
&lt;br/&gt;
Go visit all articles at &lt;a href="http://blog.bigcurl.de"&gt;http://blog.bigcurl.de&lt;/a&gt; or visit our work at &lt;a href="http://www.bigcurl.de"&gt;http://www.bigcurl.de&lt;/a&gt;.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5255900111414844224-1585576837651738916?l=blog.bigcurl.de' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zmsdEK9YFh00V9ufIe57XTkXv_Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zmsdEK9YFh00V9ufIe57XTkXv_Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zmsdEK9YFh00V9ufIe57XTkXv_Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zmsdEK9YFh00V9ufIe57XTkXv_Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=DyrTHhSC"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=sXuS05RZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/bigcurl?a=eBCbQmFO"&gt;&lt;img src="http://feeds.feedburner.com/~f/bigcurl?i=eBCbQmFO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/bigcurl/~4/d6McoiUibhI" height="1" width="1"/&gt;</content><link rel="replies" type="text/html" href="http://blog.bigcurl.de/2008/08/redirect-naked-domains-to-subdomain-in.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/1585576837651738916?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5255900111414844224/posts/default/1585576837651738916?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/bigcurl/~3/d6McoiUibhI/redirect-naked-domains-to-subdomain-in.html" title="Redirect naked domains to a subdomain in Google's App Engine" /><author><name>Samuel Goebert</name><uri>http://www.blogger.com/profile/12513686100830506482</uri><email>blog@bigcurl.de</email><gd:extendedProperty name="OpenSocialUserId" value="14502526809802857704" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://blog.bigcurl.de/2008/08/redirect-naked-domains-to-subdomain-in.html</feedburner:origLink></entry></feed>
