<?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:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D0UESX84cCp7ImA9WhJQEko.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711</id><updated>2012-07-26T00:00:08.138-04:00</updated><category term="java" /><category term="gtug" /><category term="experience" /><category term="developer relations" /><category term="cloud" /><category term="algorithms" /><category term="ted" /><category term="yensid" /><category term="chrome" /><category term="c" /><category term="thank you" /><category term="k and r" /><category term="ioadventure" /><category term="io" /><category term="android" /><category term="data structures" /><category term="bob" /><category term="spaz" /><category term="android2cloud" /><category term="chromium" /><category term="stats" /><category term="oauth" /><category term="why" /><category term="c++" /><category term="app engine" /><category term="google" /><title>Such a GIT</title><subtitle type="html">An English major takes on the mantle of a Googler In Training--a GIT. Join him as he attempts to learn C, learn software design, and ultimately get hired by Google.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.suchagit.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://www.suchagit.com/" /><author><name>Paddy Foran</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>20</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/SuchAGit" /><feedburner:info uri="suchagit" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUcESXY9fCp7ImA9WhZWF0o.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-6765685342945212918</id><published>2011-05-18T23:50:00.000-04:00</published><updated>2011-05-18T23:50:08.864-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-18T23:50:08.864-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="gtug" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="ioadventure" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Day Five: Oh, hai Twitter</title><content type="html">So, day five of #ioadventure. Like, a week after the fact. Because I'm a terrible, terrible blogger like that.&lt;br /&gt;
&lt;br /&gt;
I woke up at a reasonable time today (Yay!), and arrived to breakfast a little after it started, around 7:15 or 7:30. The keynote wasn't scheduled until 9:30, so I wasn't too worried. I met up with Parker and Dylan for breakfast, and we ate pretty quickly. Dylan's competitive nature rubbed off on me, and we were determined to get good seats for the keynote. So we waited in line at the escalator up, then waited in line in front of the keynote doors. Which, incidentally, look like something you'd see in an airport hangar. We managed to get right in the front. Because we're awesome.&lt;br /&gt;
&lt;br /&gt;
Two employees came around and told us we needed to stand behind a certain point, and that when the doors opened, we had to hold people back until the doors reached a certain height.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://4.bp.blogspot.com/-VyH_wrpdJLw/Tcx0t6qk0pI/AAAAAAAAJ0Q/uPL9fWzaqP8/s1600/IMG_20110511_085407.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-VyH_wrpdJLw/Tcx0t6qk0pI/AAAAAAAAJ0Q/uPL9fWzaqP8/s320/IMG_20110511_085407.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I have &lt;i&gt;no idea&lt;/i&gt;&amp;nbsp;why they did this, because they &lt;i&gt;didn't actually open&lt;/i&gt;&amp;nbsp;that door. They opened the one next to us. The jerks.&lt;br /&gt;
&lt;br /&gt;
We still managed to get good seats, though. So I can't complain too much. If you're interested in the keynote, I'll embed it below.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/MiYND_zvIc0/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/MiYND_zvIc0&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/MiYND_zvIc0&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
After the keynote, we went to the sessions. Some of them were a bit over my head. Some of them were a bit obvious, to me at least. During the session, however, &lt;a class="vt-p" href="http://twitter.com/#!/cbogie/status/68183220788793345"&gt;I got a tweet&lt;/a&gt; from &lt;a class="vt-p" href="http://www.twitter.com/cbogie"&gt;Christian&lt;/a&gt;, a Twitter recruiter I know. He used to be a recruiter for Google. He wanted to know if I was in San Francisco for I/O. When I told him he was, he invited me and the #googleioparty (Dylan, Parker, and our honorary member, Kevin) to come have lunch at Twitter. I passed the message along, and we met up before lunch to travel to the Twitter offices, down the street from Moscone West.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://3.bp.blogspot.com/-zY1vsKZNfBI/Tcx1D4Riq-I/AAAAAAAAJ1A/gCDaH8wCp30/s1600/IMG_20110511_130031.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-zY1vsKZNfBI/Tcx1D4Riq-I/AAAAAAAAJ1A/gCDaH8wCp30/s320/IMG_20110511_130031.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The Twitter dining area has a really cool sign that displays a random tweet as they come in.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://2.bp.blogspot.com/-okvKwGx80AI/Tcx03_oou-I/AAAAAAAAJ04/IWPy9sUnY1s/s1600/IMG_20110511_122348.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-okvKwGx80AI/Tcx03_oou-I/AAAAAAAAJ04/IWPy9sUnY1s/s320/IMG_20110511_122348.jpg" width="239" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Christian took a picture of me and Kevin in the dining hall on my tablet.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://3.bp.blogspot.com/-l4QprGwX3w0/Tc70TyGgzXI/AAAAAAAAJ4c/OIGViyQYzYc/s1600/2011-05-11+12.19.12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-l4QprGwX3w0/Tc70TyGgzXI/AAAAAAAAJ4c/OIGViyQYzYc/s320/2011-05-11+12.19.12.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Some engineers and documentation people came and sat with us, which was pretty awesome. We talked for a bit, and Kevin managed to get &lt;a class="vt-p" href="http://www.barcamproc.org/"&gt;BarCamp Rochester&lt;/a&gt; their Twitter account back (they lost it when the person who set it up left).&lt;br /&gt;
&lt;br /&gt;
After we left the Twitter offices, we walked back to Moscone for some sessions. This was followed by the Unicorn Summit, which I now get to talk about.&lt;br /&gt;
&lt;br /&gt;
As it was described to me, the Unicorn Summit (or 'Advocate Summit' as it was officially dubbed. We used Unicorn Summit instead, because that name is so much more awesome) was basically a meeting between external advocates and the top executives at Google. They basically said "Hey, let's take external advocates and the top Google execs, put them in a room, and watch what happens." Which is essentially what happened. We met in the press briefing room, and the executives started taking questions. A lot of the questions were requests for support or calling the execs out on things the advocates took issue with. Which started making me feel bad; feedback should be praise for what was going right and criticism for what was going wrong. So I tried to balance out the sea of negative with a little bit of praise.&lt;br /&gt;
&lt;br /&gt;
After the official Summit, project leads were available to us for questions. I met briefly with Shannon Madison, the University Program contact at Google and chatted with her about a few things. After that, we did some sessions, and met back at the GTUG lounge. We took some group pictures, and headed out for a dinner of Chinese on Google.&lt;br /&gt;
&lt;br /&gt;
At the restaurant, I sat with Dylan, Joseph (the 14 year old), and a few other people. Shannon (the Google University person I spoke with) joined us, and shamed us all with her Chinese skills. We ate, talked, got swag, took pictures, and generally enjoyed each other's company for the last time.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://2.bp.blogspot.com/-I1KMdi7Pbw0/Tc70Cn2wh7I/AAAAAAAAJ3s/MJFMJVq5ha0/s1600/2011-05-11+20.20.18.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-I1KMdi7Pbw0/Tc70Cn2wh7I/AAAAAAAAJ3s/MJFMJVq5ha0/s320/2011-05-11+20.20.18.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Me and Joseph&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://2.bp.blogspot.com/-A4EHFFgt1QU/Tc70Hyn-RdI/AAAAAAAAJ4A/WPCSD7YMYEc/s1600/2011-05-11+20.16.37.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-A4EHFFgt1QU/Tc70Hyn-RdI/AAAAAAAAJ4A/WPCSD7YMYEc/s320/2011-05-11+20.16.37.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Me, Dylan, and Steph. I look like a creeper.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://4.bp.blogspot.com/-ebXo5xT2_2k/Tc7z-Q5pHfI/AAAAAAAAJ3g/XsGWokstNNs/s1600/2011-05-11+20.27.15.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-ebXo5xT2_2k/Tc7z-Q5pHfI/AAAAAAAAJ3g/XsGWokstNNs/s320/2011-05-11+20.27.15.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Me and Van&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;After the dinner, I went back to my room. Dylan tagged along to say goodbye to Kevin. Kevin wasn't there, so Dylan and I chatted some. When Kevin showed up, Dylan said goodbye to us both. Which is sad. He was a bunch of fun to hang out with.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Kevin and I talked a bit as I packed, and then said goodnight.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I can't believe it's over. It's been quite the adventure.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/gq-dpjVuo6Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/6765685342945212918/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2011/05/day-five-oh-hai-twitter.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/6765685342945212918?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/6765685342945212918?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/gq-dpjVuo6Q/day-five-oh-hai-twitter.html" title="Day Five: Oh, hai Twitter" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-VyH_wrpdJLw/Tcx0t6qk0pI/AAAAAAAAJ0Q/uPL9fWzaqP8/s72-c/IMG_20110511_085407.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2011/05/day-five-oh-hai-twitter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkACRXg6fyp7ImA9WhZWF0o.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-862326415749173111</id><published>2011-05-18T23:12:00.000-04:00</published><updated>2011-05-18T23:12:44.617-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-18T23:12:44.617-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ioadventure" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Day 4: #googleio</title><content type="html">Yes, I'm disgustingly late with this. Oh well.&lt;br /&gt;
&lt;br /&gt;
I did something different for Day 4, and created a video. Why? Because I had a shiny new tablet with a front-facing camera. Is there any better reason?&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/eMuhXasLzG8/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/eMuhXasLzG8?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/eMuhXasLzG8?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://3.bp.blogspot.com/-3nz0vt_PG-M/TcwVKNrhFmI/AAAAAAAAJzE/liPmuDfSpsY/s1600/IMG_20110510_062706.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-3nz0vt_PG-M/TcwVKNrhFmI/AAAAAAAAJzE/liPmuDfSpsY/s320/IMG_20110510_062706.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Urban Airship, with their coffee..&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://3.gvt0.com/vi/OxzucwjFEEs/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/OxzucwjFEEs&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/OxzucwjFEEs&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Google I/O Keynote, Day 1&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://2.bp.blogspot.com/-Rmo2Ubamkn8/Tcx0fuSv5wI/AAAAAAAAJ0E/v1GFLAPf9nE/s1600/IMG_20110510_180439.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-Rmo2Ubamkn8/Tcx0fuSv5wI/AAAAAAAAJ0E/v1GFLAPf9nE/s320/IMG_20110510_180439.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Pamela Fox (and the Go Gopher)&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://2.bp.blogspot.com/-qXRJCW_jL9s/Tc70lacu5dI/AAAAAAAAJ4w/TheXYwAa-qs/s1600/2011-05-10+11.05.04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-qXRJCW_jL9s/Tc70lacu5dI/AAAAAAAAJ4w/TheXYwAa-qs/s320/2011-05-10+11.05.04.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Dylan and Parker in the GTUG area. First picture on the new tablet!&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://4.bp.blogspot.com/-r6_LIOk0QRk/TcwVw1IUZUI/AAAAAAAAJz0/Dtt-N6L_hHg/s1600/IMG_20110510_130222.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-r6_LIOk0QRk/TcwVw1IUZUI/AAAAAAAAJz0/Dtt-N6L_hHg/s320/IMG_20110510_130222.jpg" width="239" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Just Vic Gundotra. No big deal.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/0OOFfP3xsTM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/862326415749173111/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2011/05/day-4-googleio.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/862326415749173111?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/862326415749173111?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/0OOFfP3xsTM/day-4-googleio.html" title="Day 4: #googleio" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-3nz0vt_PG-M/TcwVKNrhFmI/AAAAAAAAJzE/liPmuDfSpsY/s72-c/IMG_20110510_062706.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2011/05/day-4-googleio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIFSH89eyp7ImA9WhZWEE0.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-9103965740346992340</id><published>2011-05-10T00:58:00.000-04:00</published><updated>2011-05-10T00:58:39.163-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-10T00:58:39.163-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer relations" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="yensid" /><category scheme="http://www.blogger.com/atom/ns#" term="ioadventure" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Day 3: Freedom!</title><content type="html">After the epicness that was day two, I needed a bit of a break on day 3. Well, for my usual schedule it was a break, at least.&lt;br /&gt;
&lt;br /&gt;
Today, I had absolutely nothing scheduled. How liberating is that? I had nothing I needed to do, nowhere I needed to be. And I made the most of it.&lt;br /&gt;
&lt;br /&gt;
I woke up, showered, and got ready for the day. I had been avoiding wearing my Google gear because I didn't want to mislead anyone at any of the official events, so I decked myself out in it today. Google t-shirt, Google hat, the GTUG jacket I got during day two... I was a walking billboard for my favourite corporate giant.&lt;br /&gt;
&lt;br /&gt;
I spent the day... wandering. There's no better way to put it. I left my phone in my pocket, ignoring the direct link it has to satellite maps of the area, and just walked around with no particular aim or direction. I decided I wanted to eat, and instead of pulling up a list of restaurants in the area, I just wandered until something caught my eye. I ended up buying a hotdog and a soda at a tiny little stand outside of U.N. Plaza, then eating and working with my Chrome OS laptop while sitting by the fountain in the plaza. I even made a friend: a bird of some sort (I'm no ornithologist, and will be the first to admit it) sat staring at me the entire time I ate.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://1.bp.blogspot.com/-Q9hw79hl1o0/TchojcMGfiI/AAAAAAAAJvI/D1AN-74DU6E/s1600/IMG_20110509_121854.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-Q9hw79hl1o0/TchojcMGfiI/AAAAAAAAJvI/D1AN-74DU6E/s320/IMG_20110509_121854.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;After I ate, I proceeded to wander for a few minutes. My aimlessness was cut short, however, by a text message from Kevin Purdy. He just got into town, and wanted to eat. So I called him up, and arranged to meet him at his hotel. Which, coincidentally, was &lt;i&gt;right across the street&lt;/i&gt;&amp;nbsp;from mine. His timing couldn't have been better; I had just finished arguing with some American Red Cross volunteers (they had no understanding of the inherent principles involved in organizing people) and was standing mere yards away from my hotel. So I met up with him, and he and I proceeded to wander and talk until a place caught &lt;i&gt;his&lt;/i&gt;&amp;nbsp;eye and we could eat. He chose Show Dogs, a hotdog joint near the U.N. Plaza (though a different hotdog joint). I guess it was just a hotdog kind of day.&lt;br /&gt;
&lt;br /&gt;
Both fed, we proceeded to wander some more, and wound up around Moscone. We stopped by the Google Networking team and saw them finalising their preparations. We also managed to pinpoint the single point of failure for the network: a door propped open with a wire running through the crack.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://1.bp.blogspot.com/-yEcluzNdXPk/TchoSCAAxuI/AAAAAAAAJuw/PYFkNZFdtm8/s1600/IMG_20110509_142956.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-yEcluzNdXPk/TchoSCAAxuI/AAAAAAAAJuw/PYFkNZFdtm8/s320/IMG_20110509_142956.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;We continued walking, and enjoyed the sight of the giant map marker that has become tradition at I/O every year.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://4.bp.blogspot.com/-ztvQ-noONUA/TchoZWZk0xI/AAAAAAAAJu4/oeNABsXUcPk/s1600/IMG_20110509_142746.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-ztvQ-noONUA/TchoZWZk0xI/AAAAAAAAJu4/oeNABsXUcPk/s320/IMG_20110509_142746.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;Kevin was tired and jet-lagged, so we started heading back towards the hotels at that point. He napped for a few hours and I entertained myself, uploading photos and checking in/updating my social media (Twitter, Facebook, etc.), which had been neglected during the excitement of my #ioadventure.&lt;br /&gt;
&lt;br /&gt;
In the course of updating my social media, I decided to put my I/O session calendar (a listing of what sessions I would be in) into a Google Calendar so that the &lt;a class="vt-p" href="http://www.2cloudproject.com/"&gt;2cloud Project&lt;/a&gt; users who were attending I/O could find me and say hi. I did that, and noticed something funny: check-in had actually started already.&lt;br /&gt;
&lt;br /&gt;
Obviously, the only appropriate reaction was to head down to Moscone again and check in. The girls behind the desk were very nice, and proceeded to have a nice conversation with me about my name tag. My full name is Sean Patrick Foran, but my mother always wanted a Paddy. So she and my father agreed to call me Paddy until I grew out of it at age four or five. Those who know me know I'm a giant six year old, so I never really grew out of the name. So while most my programming contacts know me as Paddy Foran, my Student I.D. (which I needed to present to claim my Academia badge) read Sean Foran. My solution was to have my badge read "Sean 'Paddy' Foran". The girls thought this was rather amusing, and chatted with me about it for a bit.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://2.bp.blogspot.com/-LvsHZiSNpEk/TchwuvA2p1I/AAAAAAAAJvg/rgJVdP1FtPc/s1600/IMG_20110509_155217.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-LvsHZiSNpEk/TchwuvA2p1I/AAAAAAAAJvg/rgJVdP1FtPc/s320/IMG_20110509_155217.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I then proceeded to pick up my Google I/O t-shirt. It's pretty awesome.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://2.bp.blogspot.com/-Y9wD3692ezo/Tch-sdIBnNI/AAAAAAAAJv8/7v-IEJlFmNY/s1600/IMG_20110509_164054.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-Y9wD3692ezo/Tch-sdIBnNI/AAAAAAAAJv8/7v-IEJlFmNY/s320/IMG_20110509_164054.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://3.bp.blogspot.com/-DoOhkwlnKl4/Tch-1WVqhWI/AAAAAAAAJwE/Y4v0VwmjgGw/s1600/IMG_20110509_164111.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-DoOhkwlnKl4/Tch-1WVqhWI/AAAAAAAAJwE/Y4v0VwmjgGw/s320/IMG_20110509_164111.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;The morse code on the back intrigued me, so of course I sent pictures to Dylan (who was in &lt;a class="vt-p" href="http://www.io-bootcamp.com/"&gt;BootCamp&lt;/a&gt;, which I had elected not to attend) and we decoded it. It led to a &lt;a class="vt-p" href="http://goo.gl/"&gt;http://goo.gl&lt;/a&gt; short URL that led to a site telling us to &lt;a class="vt-p" href="http://www.androidify.com/"&gt;Androidify&lt;/a&gt; ourselves with a special Google I/O t-shirt. It wasn't in the app yet, so I'm assuming it'll be there tomorrow.&lt;br /&gt;
&lt;br /&gt;
My day wasn't over yet, however. At the #gtugcamp, I was told about a meetup for Chrome OS laptop owners. It was a small event hosted by Google in a wine bar a couple blocks from my hotel. Seeing as both Kevin and I had received Chrome laptops from Google back in December, he woke and met me to go to the meetup.&lt;br /&gt;
&lt;br /&gt;
The meetup was small, informal, and fun. I met a host of people: a few "Consumer Operations" (like DevRel, but for consumers) employees from Google, a couple of Chrome OS engineers, a Marine, an independent developer, and Steve Pirk. Steve is the founder of &lt;a class="vt-p" href="http://www.yensid.net/"&gt;Yensid&lt;/a&gt; and a friend from last summer. He's a nice guy, and I didn't expect to see him here, so it was nice to meet up face-to-face for once. Google footed the bill for drinks and dinner, so I once again had my dinner paid for. I was, again, the only underage one at the meetup, so I nursed my Dr. Pepper whilst the others drank wine. Which I wasn't bothered by.&lt;br /&gt;
&lt;br /&gt;
They gave us some free Chrome stickers, and we parted. On the way out, the organiser pulled me aside and took my business card, so she could email me about the problems I was having accessing my school's archaic and silly LMS, &lt;a class="vt-p" href="http://www.blackboard.com/Platforms/Learn/Products/Blackboard-Learn/ANGEL-Edition.aspx"&gt;ANGEL&lt;/a&gt;. I told her it was a problem with ANGEL and not Chrome, but she insisted.&lt;br /&gt;
&lt;br /&gt;
All-in-all, one of the main things I pondered today was how nice Google employees are. I had met about a half dozen before coming to San Francisco, so I thought it might be an isolated phenomenon. But now I've met dozens from different departments, and it's shocking how friendly all of them are. None of them, whether it was the more-money-than-God &lt;a class="vt-p" href="http://www.google.com/ventures/"&gt;Google Ventures&lt;/a&gt; team or the paid-to-talk-to-you Developer Relations staff, ever had a problem with taking some time to get to know you as a person and helping however they could.&lt;br /&gt;
&lt;br /&gt;
And that is why I'm a GIT.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/6D88HY6bAYQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/9103965740346992340/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2011/05/day-3-freedom.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/9103965740346992340?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/9103965740346992340?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/6D88HY6bAYQ/day-3-freedom.html" title="Day 3: Freedom!" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Q9hw79hl1o0/TchojcMGfiI/AAAAAAAAJvI/D1AN-74DU6E/s72-c/IMG_20110509_121854.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://www.suchagit.com/2011/05/day-3-freedom.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYDQHk4fCp7ImA9WhZXGU4.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-7738710735471059299</id><published>2011-05-09T04:36:00.000-04:00</published><updated>2011-05-09T04:36:11.734-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T04:36:11.734-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer relations" /><category scheme="http://www.blogger.com/atom/ns#" term="gtug" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="ioadventure" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Day Two: #gtugcamp</title><content type="html">So, I haven't said a lot about it, but I'm the manager of the &lt;a class="vt-p" href="http://www.buffalogtug.org/"&gt;Buffalo GTUG&lt;/a&gt;. We haven't done much, just a single meeting. But that manager position qualified me for entry at the barcamp and dinner that Google held for GTUG organisers going to I/O. &lt;i&gt;Of course&lt;/i&gt;&amp;nbsp;I was in attendance. And let me tell you, it was an experience.&lt;br /&gt;
&lt;br /&gt;
First of all, the event was held in Google's San Francisco offices. That means I was drinking sodas from Google's fridge for employees, sitting in their office, presenting and being presented to. That was pretty surreal. Fun fact: did you know the lights in the office are tinted in Google colours? That's so incredibly awesome.&lt;br /&gt;
&lt;br /&gt;
Second, the event was heavily attended by several members of &lt;a class="vt-p" href="http://sites.google.com/site/googdevreljobs/"&gt;Google's DevRel&lt;/a&gt; team. You know, that team I &lt;a class="vt-p" href="http://www.suchagit.com/2010/12/human-in-machine.html"&gt;want to work for&lt;/a&gt;? I applied to be their intern this summer (&lt;a class="vt-p" href="http://www.twitter.com/moishel"&gt;Moishe&lt;/a&gt;, the engineer behind the &lt;a class="vt-p" href="http://code.google.com/appengine/docs/python/channel/"&gt;Channel API&lt;/a&gt; that I've been working with for the past few months, referred me) and just found out today I was rejected. That's ok, I'll try again next year. But it was really cool meeting everyone from the expected (&lt;a class="vt-p" href="http://www.twitter.com/vanriper"&gt;Van Riper&lt;/a&gt;, &lt;a class="vt-p" href="http://www.twitter.com/stephliu"&gt;Steph Liu&lt;/a&gt;) to the unexpected and mildly jaw-drop-inducing (&lt;a class="vt-p" href="http://www.twitter.com/timbray"&gt;Tim Bray&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
We went around the room and introduced ourselves in three words. Mine were: "I got lucky". They sum up how I came to be in that room, how I came into such close proximity to Google.&lt;br /&gt;
&lt;br /&gt;
The sessions were fun, informative, and informal. I sat next to a Google Brazil team member and debated how to best organise people into a software project over the internet without much face-time. I got business cards for more Android developers than I knew existed. I presented to people on how to present, according to Batman. It was a blast.&lt;br /&gt;
&lt;br /&gt;
After the barcamp, there was a dinner for everyone. We left the room we were meeting in and traveled to the Google dining area. This led us straight through the offices that Google engineers work in, past computers that undoubtedly hold secrets none of us can dream of. Dylan and I were careful to avert our gazes.&lt;br /&gt;
&lt;br /&gt;
When we got into the dining area, we sat at tables and talked until dinner was ready. I realised that Dylan and I were sitting with an employee of T-Mobile, and got ourselves invited to parties from several of the largest companies in the mobile space. We got invited to a meetup about the Cr-48 laptops Google sent both of us. We talked with developers from all over the world. We also got cool GTUG t-shirts and magnetic pins.&lt;br /&gt;
&lt;br /&gt;
When dinner was served, I didn't know what any of it was. So I took some of everything. Now, I'm a pretty skinny guy. I'm six feet tall and 120 pounds. There's a reason for that. I don't like eating. I never really derive pleasure from my food. I do it to stay alive, and that's about it. But the food Google served... I savoured every bite. It was amazing.&lt;br /&gt;
&lt;br /&gt;
After dinner, we got dessert—again, amazing—and they gave all the organisers a GTUG jacket. It's a wonderful jacket—stylish, high quality. People started trickling out, and Steph came and sat at our table. She started talking with us, and then Van came over and sat next to us. Then a few more of the DevRel team came and joined us. And we sat and chatted. It was a bit surreal.&lt;br /&gt;
&lt;br /&gt;
Then they wanted to know if Dylan and I knew each other before the event. We didn't know what to say, so we told the story of how we met.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Dylan and I met in an interesting way. He was watching the &lt;a class="vt-p" href="http://www.twitter.com/search/%23googleio"&gt;#googleio&lt;/a&gt; hashtag on Twitter, and I &lt;a class="vt-p" href="http://twitter.com/#!/paddyforan/status/33305422999846912"&gt;asked when the tickets would go on sale&lt;/a&gt;. Dylan then &lt;a class="vt-p" href="http://twitter.com/#!/dstaley/status/33329869614096384"&gt;helpfully responded&lt;/a&gt;. In my paranoid way, I then wanted to know how Dylan found my tweet. So I began searching around, digging up information on him. I couldn't find an obvious connection, but I noticed he and I were very similar. So I just &lt;a class="vt-p" href="http://twitter.com/#!/paddyforan/status/33404926608543746"&gt;asked him&lt;/a&gt;, and he explained. From there, he and I friended each other on all of the social networks we used and formed #googleioparty, a loose group of students going to I/O. We talked more and more on Google Talk, used Google Wave (RIP) a bit, and generally became friends. And then he noticed something:&lt;br /&gt;
&lt;br /&gt;
The at-the-time-android2cloud logo was atrocious. I designed it, and so it looked horrible. He wanted to redo the design, and submit it for a design competition at his school. I had talked about rebranding the project before, and so agreed to let him do the new design. I talked him through my thoughts on the rebranding effort, and he came up with a beautiful new set of logos and a great tagline.&lt;br /&gt;
&lt;br /&gt;
At this point, we were past the point of no return. Dylan and I were set to be friends. After he made the new icon and tagline, I told him he was my hero. He told me he didn't have a cape, and I joked I'd make him one. He said if I made him one, he'd totally wear it at Google I/O. My joke suddenly turned serious, and I pledged to make him a cape.&lt;br /&gt;
&lt;br /&gt;
But it didn't stop there. I got contracted to do some Android development for &lt;a class="vt-p" href="http://www.thepurdman.com/"&gt;Kevin Purdy&lt;/a&gt; and &lt;a class="vt-p" href="http://www.3ones.com/"&gt;3ones&lt;/a&gt;, and wanted to do a great job for them, because of how vital Kevin has been to my professional development. I thought about it, and knew I would need help doing UI/UX for the project. I asked Dylan if he wanted to help. His response was something to the effect of "For Kevin Purdy? &lt;em&gt;The&lt;/em&gt; Kevin Purdy? Hell yes!". So I sub-contracted Dylan to do the UI/UX work.&lt;br /&gt;
&lt;br /&gt;
During this time, I decided that my goal for &lt;a class="vt-p" href="http://www.secondbit.org/"&gt;Second Bit&lt;/a&gt; was to assemble a small team that made great products. And I knew Dylan would be part of that team. Since then, I've been trying to get profitable enough that I could afford to hire Dylan.&lt;/blockquote&gt;When we had finished telling our story, the DevRel team was ecstatic. They loved that two people met through the hashtag for their conference and were now close enough to be confused for brothers. Steph asked Dylan and me to email her our story, because she wanted to blog about it. It was pretty awesome.&lt;br /&gt;
&lt;br /&gt;
We then proceeded to talk some more with the DevRel team, and they mentioned the after party was at a bar. I mentioned that Dylan and I weren't of age, and they all got confused. We explained that I was 18 and Dylan was 20, and they thought it was hysterical. They thought it was so cute that we were both drinking soda, instead of taking advantage of the beer and wine that we could've just picked up without a problem. They didn't think we were that young, and proceeded to make only-mildly-condescending "&lt;i&gt;Awww&lt;/i&gt;!" noises at us. In good fun, of course. They then told us about &lt;a class="vt-p" href="http://www.twitter.com/jcla1"&gt;Joseph&lt;/a&gt;, the youngest attendee of Google I/O. You have to be sixteen to attend I/O, but because his dad is a GTUG manager and he works with Google tech, they pulled some strings and made an exception for Joseph.&lt;br /&gt;
&lt;br /&gt;
I, of course, ran over to him and dragged him back to our table to chat with us. He was a fascinating kid. I can't wait to see what he does in the future.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/1rl_a48dgic/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1rl_a48dgic?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/1rl_a48dgic?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
Finally, we talked about the Unicorn Summit. The Unicorn Summit is the code name for what is being publicly called the "Advocate Summit", but we all know Unicorn Summit is a much cooler name. I'm not sure how many details I'm supposed to share about that. I'll say it's invite-only, and it's an amazing opportunity. Even better, Steph allowed me to nominate Kevin for the event. Which was amazingly nice for her, and I think he'll be ecstatic when he checks his email in the morning.&lt;br /&gt;
&lt;br /&gt;
We had to leave shortly after that, but on the way out, I noticed a slide. Yes, a slide. It seemed like the appropriate ending to a trip to the Google office. No, I did not slide down it. Unfortunately.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://3.bp.blogspot.com/-M8mP0bcsifM/TcelOKb0S2I/AAAAAAAAJtc/wqK2Vi2PgkQ/s1600/IMG_20110508_221754.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-M8mP0bcsifM/TcelOKb0S2I/AAAAAAAAJtc/wqK2Vi2PgkQ/s320/IMG_20110508_221754.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/7h4vJT0pkTg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/7738710735471059299/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2011/05/day-two-gtugcamp.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/7738710735471059299?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/7738710735471059299?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/7h4vJT0pkTg/day-two-gtugcamp.html" title="Day Two: #gtugcamp" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-M8mP0bcsifM/TcelOKb0S2I/AAAAAAAAJtc/wqK2Vi2PgkQ/s72-c/IMG_20110508_221754.jpg" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://www.suchagit.com/2011/05/day-two-gtugcamp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUDQXozeip7ImA9WhZXGU4.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-8443136938393549447</id><published>2011-05-09T03:25:00.001-04:00</published><updated>2011-05-09T04:37:50.482-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T04:37:50.482-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer relations" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="ioadventure" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Night One: Startup</title><content type="html">This one's a day late. Forgive me.&lt;br /&gt;
&lt;br /&gt;
I got into San Francisco at around seven PM, PST. I proceeded to wait until about 8 for my shuttle, which was annoying. By 9, I was checked into &lt;a class="vt-p" href="http://www.themosser.com/"&gt;my hotel&lt;/a&gt;. It's TINY. My room is the size of my bedroom in my apartment, but they crammed a queen bed in instead of a twin. There's no bathroom, only a sink. The toilet and shower are around the corner, and shared. But it's dirt cheap, clean, and safe, so I can't really complain.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a class="vt-p" href="http://3.bp.blogspot.com/-6LsQ_ILwDMk/Tcehlh56uBI/AAAAAAAAJrk/drsNettEJK0/s1600/IMG_20110509_001417.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-6LsQ_ILwDMk/Tcehlh56uBI/AAAAAAAAJrk/drsNettEJK0/s320/IMG_20110509_001417.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
After I checked in, I sent an IM to Dylan's phone. He was already in San Francisco, at his hotel, working on a paper. After some hemming and hawing (he chose a hotel that is apparently &lt;i&gt;surrounded&lt;/i&gt;&amp;nbsp;by "bad parts" of San Francisco) his father convinced him that if he wanted to experience the city, he'd have to go out after dark at some point. So Dylan came over, and I gave him &lt;a class="vt-p" href="http://yfrog.com/h3y7ipmj"&gt;his cape&lt;/a&gt; (there's a story behind that-- I told him he was my hero for doing design work for &lt;a class="vt-p" href="http://www.2cloudproject.com/"&gt;the 2cloud project&lt;/a&gt;, so he said he wanted a cape. I, of course, made him a cape). We then went out to a little indie coffee shop and sat and talked tech until they kicked us out to close. We passed Moscone West on the way there, so of course we took pictures of the Google I/O preparations. After being kicked out, we walked back to my hotel room and carried on our conversation.&lt;br /&gt;
&lt;br /&gt;
Our conversation, of course, led to an idea. An idea I had started playing with months ago. We pulled up that tech, and started discussing it. It wasn't until a hotel manager came by at eleven and told us we needed to close the door that we realised that we were doing the cliché startup thing—form an idea and iterate on it from the free wifi in our cheap lodging. He left around midnight, and I checked in on what I missed during the flights. Then I went to sleep, anticipating the &lt;a class="vt-p" href="http://wiki.gtugs.org/barcamp"&gt;GTUG Barcamp&lt;/a&gt; in the morning.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/4h5BEZjQIzg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/8443136938393549447/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2011/05/night-one-startup.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/8443136938393549447?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/8443136938393549447?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/4h5BEZjQIzg/night-one-startup.html" title="Night One: Startup" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-6LsQ_ILwDMk/Tcehlh56uBI/AAAAAAAAJrk/drsNettEJK0/s72-c/IMG_20110509_001417.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2011/05/night-one-startup.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYBQ3c_eip7ImA9WhZXF0Q.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-6657982849176693349</id><published>2011-05-07T14:48:00.001-04:00</published><updated>2011-05-07T14:49:12.942-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-07T14:49:12.942-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer relations" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="ioadventure" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>#ioadventure</title><content type="html">I haven't written here in a while. I have some stuff to share, but I need to catch a flight in fifteen minutes, so I'll keep this brief.&lt;br /&gt;
&lt;br /&gt;
I managed to get a ticket to Google I/O this year. And somehow, managed to finagle my way into rescheduling &lt;i&gt;all &lt;/i&gt;my final exams so that I could spend my finals week in San Francisco.&lt;br /&gt;
&lt;br /&gt;
As I type this, I'm sitting across from a girl hammering on a laptop while wearing a Google shirt. I'm wearing a Google hat. I look around the packed terminal, and wonder who's here for Google. I feel like I'm home.&lt;br /&gt;
&lt;br /&gt;
I'll do my best to keep this up to date with what I've dubbed my #ioadventure. I've got pictures I'll be putting up when I get a moment. I'll be writing up some stuff about exciting meetings. I'll be sharing and updating and documenting some more.&lt;br /&gt;
&lt;br /&gt;
I'll be in heaven. Come with me, it's a &lt;i&gt;magical&lt;/i&gt;&amp;nbsp;place.&lt;br /&gt;
&lt;br /&gt;
I'm going home.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/9TRdTYG1R_0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/6657982849176693349/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2011/05/ioadventure.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/6657982849176693349?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/6657982849176693349?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/9TRdTYG1R_0/ioadventure.html" title="#ioadventure" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><georss:featurename>Newark Liberty International Airport (EWR), Newark Liberty International Airport Marriott, 1 Hotel Rd, Newark, NJ 07114, USA</georss:featurename><georss:point>40.68987 -74.17821000000004</georss:point><georss:box>40.670878 -74.19775650000004 40.708861999999996 -74.15866350000003</georss:box><feedburner:origLink>http://www.suchagit.com/2011/05/ioadventure.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08AQn04eSp7ImA9Wx9QFE0.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-5232713777016384830</id><published>2010-12-26T17:17:00.000-05:00</published><updated>2010-12-26T17:17:23.331-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-26T17:17:23.331-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="developer relations" /><category scheme="http://www.blogger.com/atom/ns#" term="why" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>The Human In The Machine</title><content type="html">I guess it's about time we got around to the whys of this. I mean, I've built this blog up, chronicled the rise of one of my applications from the expected obscurity of its launch to the unexpected explosion of traffic that Lifehacker brought it. I've maintained report cards and game plans, and am still stoically working towards becoming good enough at what I do that Google will hire me. There are two questions that this raises, and I want to address both of them. First, the hard one: why do I want to work for Google? Second, the more easily explained one, &lt;i&gt;what is it exactly that I do&lt;/i&gt;? Or even want to do?&lt;br /&gt;
&lt;br /&gt;
I'm going to start with that second one, and it will just &lt;i&gt;naturally flow&lt;/i&gt;&amp;nbsp;into the first one. Fair enough?&lt;br /&gt;
&lt;br /&gt;
When I tell most people that my dream is to work for Google, they assume I want to write software for Google, software used by millions or billions of people on a daily basis. And I won't lie to you, that's an offer I wouldn't turn down. I'd actually work pretty hard for it. But it's not where my passion for computing stems from. I thrive, and always have thrived, on the human connections that software makes. I've always found computer geeks, of every walk of life, to be enjoyable company. And it occurs to me that it isn't computers that I love (the most, at least), but rather the community that surrounds computers. I speak, of course, of my beloved Open Source community.&lt;br /&gt;
&lt;br /&gt;
What I want to do is work in Google's developer relations staff. I want to be an advocate for Google's technology, and I want to show people how technology can make their life easier. I want to travel the world and meet geeks and enthusiasts and professionals and everyone in-between, and I want to have engaging, stimulating, and mutually enlightening conversations with them. In short, I want to spend my life engaging the human aspect of this digital world, on its own turf. Conferences, hackathons, developer days, office hours, random impromptu meetings on the street. I want to lose myself in something I've been deprived of ever since my fingers hit keyboard: a computer culture.&lt;br /&gt;
&lt;br /&gt;
But that still doesn't answer the question of &lt;i&gt;why Google&lt;/i&gt;? Everyone I've spoken to has warned me that Facebook is the future. The mass exodus of Google employees seems to reinforce that vision. It would certainly be easier for me to get hired as an advocate by a smaller company, something that would still make me engage that culture I love so much. So why shoot for the stars of today, when everyone seems to agree they're going supernova rather soon?&lt;br /&gt;
&lt;br /&gt;
Because a company is more than a stock price. A company is a culture. Google has a culture of trying weird, new, innovative things. Facebook does some amazing things with computers, but have none of that razzle dazzle that Google has. They have nothing &lt;i&gt;exciting&lt;/i&gt;. Yes, Facebook Messages is basically a clone of Google Wave. But that's what it is: basic. Facebook made the best product they could within the restraints of it being simple enough to be efficient and easily grasped. Google made the best product could within the restraints of it being &lt;i&gt;damn cool&lt;/i&gt;. That's really all Wave was: "Look at this. It's &lt;i&gt;cool&lt;/i&gt;." It was &lt;i&gt;exciting technology&lt;/i&gt;, and that's what killed it. It was so new, so foreign, so futuristic, it was amazing and cool. But it was also so new, so foreign, so futuristic that only the most hardcore could grasp the learning curve.&lt;br /&gt;
&lt;br /&gt;
As a person, I want to work with software that's exciting and cool, even if it's less practical. Because it's exciting and cool. I have enormous respect for the people at Facebook, churning away at their platform, fine-tuning it and making computers move faster than they were ever meant to, making networks work in ways nobody has thought of. I have enormous respect for the people in Google doing that work as well. But that's not me. That's not the kind of person or developer I am. I'm here for the glitter and glitz, the presentation, the razzle dazzle.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Rn5-VN3SH1o?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Rn5-VN3SH1o?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a class="vt-p" href="http://www.google.com/intl/en/jobs/uslocations/new-york/engops/devrel/developer-advocate-new-york/index.html"&gt;This is what I want to do&lt;/a&gt;. And to do this, it's not enough to know my computers. I need to know my community, and my community needs to know me. I've made starts into that, but I need to be doing more.&lt;br /&gt;
&lt;br /&gt;
So I'll see you all at Google I/O in May. And keep your eyes peeled for stuff from BuffaloGTUG. We'd love to have you at a meeting if you're in the area.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/WMQn3C0Sv1E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/5232713777016384830/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/12/human-in-machine.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/5232713777016384830?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/5232713777016384830?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/WMQn3C0Sv1E/human-in-machine.html" title="The Human In The Machine" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.suchagit.com/2010/12/human-in-machine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4GSHk5eip7ImA9Wx5UGU0.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-1489851729871381672</id><published>2010-10-24T02:48:00.000-04:00</published><updated>2010-10-24T02:48:49.722-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-24T02:48:49.722-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="stats" /><category scheme="http://www.blogger.com/atom/ns#" term="thank you" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><title>Indulge Me</title><content type="html">I'm laying in my bed, in pajamas and a sweatshirt, reading Scott Rosenberg's &lt;a href="http://www.sayeverything.com/" style="font-style: italic;"&gt;Say Everything&lt;/a&gt;&amp;nbsp;during a rare break from work (school, job, or independent). And as I read about &lt;a href="http://www.evhead.com/"&gt;Evan Williams&lt;/a&gt;' creation of Blogger and his efforts to sustain the product without cash, income, or employees, I'm reminded of myself. And I mean that in the least conceited way possible.&lt;br /&gt;
&lt;br /&gt;
Over the summer, I wrote a little hodge-podge of scripts that are being used by (by my estimate) roughly &lt;i&gt;ten thousand people&lt;/i&gt;&amp;nbsp;today. Let me take a second to talk about that number. I go to a college of about 4,000 people. I went to a high school of about 2,000. In all likelihood, &lt;i&gt;more people than I've ever met in my life&lt;/i&gt;&amp;nbsp;are using my software. That's unreal.&amp;nbsp;This has led me to receiving emails from Google employees, an ex-Googler who now works as a Product Manager at Zynga, a Comedy Central website developer, a Lifehacker writer, and thousands of people who I have never met in my life, but who appreciate my work. No, not my work-- &lt;i&gt;my play&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
I have no way to monetize these scripts, I have web servers crashing every night as they're overloaded with people using the service, and I don't even have a &lt;i&gt;company&lt;/i&gt;&amp;nbsp;yet. I'm just a kid, sitting in his pajama pants in his dorm room at 2:30 am, writing code in a free software editor on his little Dell Inspiron 1525 laptop, the same one he'll cart off to his medieval literature class in ten hours to take notes on Chaucer.&lt;br /&gt;
&lt;br /&gt;
People have donated. People have donated a &lt;i&gt;lot&lt;/i&gt;. 245 people have bought the $1 download version of the app. Ten people have donated a total of more than $150 to the application. We even have a corporate sponsor, thanks to &lt;a href="http://www.wonderproxy.com/"&gt;WonderProxy&lt;/a&gt;, who tossed us a $200 cash infusion as our servers were crashing and our coffers were empty.&lt;br /&gt;
&lt;br /&gt;
I just wanted to take a moment, and note how blessed I am. How blessed I am by great users and an Internet that could allow me to hold a tenuous, limited feeling of empathy with an Internet legend. No, android2cloud is not going to revolutionise the link-sharing world. No, I don't think people will be devoting chapters to me or android2cloud in some book on the Internet in the future. And no, I don't think I'll ever be at the helm as successful as Twitter.&lt;br /&gt;
&lt;br /&gt;
But I do think that, for one semester, at least, in a college where I'm not rewarded for my play, with a personal history of being told that my play is worthless and I should focus on things that will look good on a resume or that will make me money, I was given a chance to have my play mean something, and was told that thousands of people made meaning out of it.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/Ag86gYBhuSM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/1489851729871381672/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/10/indulge-me.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/1489851729871381672?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/1489851729871381672?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/Ag86gYBhuSM/indulge-me.html" title="Indulge Me" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2010/10/indulge-me.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08MSXY9eip7ImA9Wx5QEEs.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-1974350946324242828</id><published>2010-08-29T03:10:00.001-04:00</published><updated>2010-08-29T03:11:28.862-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-29T03:11:28.862-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="c" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="algorithms" /><category scheme="http://www.blogger.com/atom/ns#" term="data structures" /><category scheme="http://www.blogger.com/atom/ns#" term="stats" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="k and r" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Report Card!</title><content type="html">My classes start on Monday (which, because I'm writing this at about 3 a.m., is tomorrow morning), so my summer has officially come to a close. It's been a long time (an unacceptably long time—I'm sorry!) since I last wrote anything on here. I've been keeping busy with getting back on campus, returning to my paying jobs, and working on android2cloud. So I thought I'd do a quick post to give myself a grade on my &lt;a href="http://www.suchagit.com/2010/05/story-in-progress.html"&gt;summer school&lt;/a&gt; progress.&lt;br /&gt;
&lt;br /&gt;
If you remember, I laid out some specific tasks for myself at the beginning of the summer: &lt;b&gt;Learn C&lt;/b&gt;, &lt;b&gt;Learn Java and C++&lt;/b&gt;, &lt;b&gt;Learn Data Structures and Algorithms&lt;/b&gt;, and &lt;b&gt;Gain Experience&lt;/b&gt;. How did I do?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Learn C&lt;/b&gt;: Final Grade: B-&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;I picked up K&amp;amp;R's C book, as I said, and read much of it over the summer. I've yet to actually write a program in C, but feel I have a basic familiarity with it at this point. It's not much, but it's a start.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Learn Java and C++&lt;/b&gt;: Final Grade: B+&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;I hacked for most my summer on &lt;a href="http://code.google.com/p/android2cloud/"&gt;android2cloud&lt;/a&gt;, which, being written in three languages across three platforms, forced me to brush up on my Java skills. C++, however, got neglected.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Learn Data Structures and Algorithms&lt;/b&gt;: Final Grade: D-&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;I, unfortunately, didn't get to delve into the more abstract studies of computer science over the summer. I understand what Big O notation is, at least, but that is really the furthest I've gotten with this. A massive failure on my part, and one that will need to be remedied in the future.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Gain Experience&lt;/b&gt;: Final Grade: A+&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;As I said, I worked for most my summer on android2cloud. Since the project's inception, I have gained over 6,000 users, learned how to write Chrome Extensions, Android apps, and am in the process of learning Firefox extensions, interacted with more Googlers than I'd ever dreamed I would, been &lt;a href="http://.com/5604248/android2cloud-opens-urls-from-your-phone-in-chrome"&gt;covered by Lifehacker&lt;/a&gt;, and &lt;a href="http://blog.android2cloud.org/2010/08/channel-api.html"&gt;became one of the first ten people&lt;/a&gt; outside of Google with access to the &lt;a href="http://code.google.com/events/io/2010/sessions/building-real-time-apps-app-engine-feed-api.html"&gt;latest API&lt;/a&gt; for App Engine. As far as experience goes, I figure I knocked it out of the park this summer. That's absolutely more than I expected. And the summer has introduced me to some wonderful Googlers, ex-Googlers, and non-Googlers who are offering me a variety of opportunities to expand my experience in the future. And I'm not quite done with android2cloud yet.&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;For an overall grade, I would give myself a solid &lt;b&gt;B&lt;/b&gt;. Not the best grade in the world, but nothing to be ashamed of. I wish I had accomplished more, but am very pleased with what I did accomplish. And now that I'm back on campus, I'm ready to raise some hell.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Oh. And did I mention? I got Google's permission to form the &lt;a href="http://www.buffalogtug.org/"&gt;Buffalo GTUG&lt;/a&gt;&amp;nbsp;in Buffalo. Keep your eyes open—I'll have more to say on that soon, I hope.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/M1WDb2vc1xA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/1974350946324242828/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/08/report-card.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/1974350946324242828?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/1974350946324242828?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/M1WDb2vc1xA/report-card.html" title="Report Card!" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2010/08/report-card.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEBQXk9fyp7ImA9Wx5SEk8.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-670431910567247925</id><published>2010-08-07T20:33:00.001-04:00</published><updated>2010-08-07T20:34:10.767-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-07T20:34:10.767-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Am I Washed Up?</title><content type="html">OK, this is the last post for a while on &lt;a href="http://code.google.com/p/android2cloud"&gt;android2cloud&lt;/a&gt;. I promise. I would put it on the &lt;a href="http://blog.android2cloud.org/"&gt;android2cloud blog&lt;/a&gt;, except it's more about me than the project, so I feel it belongs over here.&lt;br /&gt;
&lt;br /&gt;
As I &lt;a href="http://www.suchagit.com/2010/08/double-edged-sword-users.html"&gt;posted&lt;/a&gt;, I got a &lt;i&gt;huge&lt;/i&gt;&amp;nbsp;surge of attention when &lt;a href="http://www.lifehacker.com/"&gt;Lifehacker&lt;/a&gt; &lt;a href="http://lifehacker.com/5604248/android2cloud-opens-urls-from-your-phone-in-chrome"&gt;covered&lt;/a&gt; android2cloud. Over a thousand new users in a day, a bunch of new donations, and a slew of user-run servers all poured in. The requests went off the charts, and the server went down.&lt;br /&gt;
&lt;br /&gt;
The next day, visits were down a little bit, but not an alarming amount. I worked to optimise the server to handle the load as cheaply as possible, and issued updates to the server, the extension, and the app that day.&lt;br /&gt;
&lt;br /&gt;
That night, the negligible error rate (around or below 1%) on requests from the extension for the latest link from the server skyrocketed to over 70%. Clearly, I had screwed &lt;i&gt;something&lt;/i&gt;&amp;nbsp;up.&lt;br /&gt;
&lt;br /&gt;
I investigated, and it seemed like the Chrome extension threw a hissy fit when updated. The authentication, for some reason, didn't carry over like it should have. Probably due to the change from an anonymous OAuth consumer key and secret to a registered one with Google. Whatever the case, people's extensions didn't work until they uninstalled and reinstalled, prompting a new authorisation. So I rolled out a new update, that detected when there was an auth error and forced a reauthentication, with a notification explaining things. The error rate started dropping, following that.&lt;br /&gt;
&lt;br /&gt;
Since then, however, all I've heard, anywhere I go, is "doesn't work". A lot of the time, I think it's a lack of polish: people don't realise they need to select the account after adding it, instead of choosing back. People don't realise they need to add an account in the first place, trusting it to be "magic". Etc. These are definitely things the app could improve upon, and things I'll be addressing in future updates. It is disheartening to see a barrage of "Crap." "Doesn't work" messages with no issue reports, emails, or clarification, though; especially when these messages are right next to messages confirming that the app works on the exact same device.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/__wnO9rF92-g/TF37Qc2TDrI/AAAAAAAAF3A/kcbGbgvHrlw/s1600/usercomplaints.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="94" src="http://4.bp.blogspot.com/__wnO9rF92-g/TF37Qc2TDrI/AAAAAAAAF3A/kcbGbgvHrlw/s320/usercomplaints.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Also since then, the number of requests per second on the server have decreased dramatically. As in, halved. I have a few thoughts on this. Yes, I think people are uninstalling the service, too frustrated to make it work. Which sucks, because it partially confirms my suspicions that I can't write software at anything more than a personal level. But I also think that people are launching their own servers, which is reducing some of the strain. I also suspect that people wanted to try out the app in the first few days, and so all of them were hitting the server that day. Whereas now, they're not all hitting the server at once, and are spaced out more.&lt;br /&gt;
&lt;br /&gt;
Part of me worries it's just that everyone realised this is a simple, plain application, and left. I try not to listen to that part of me.&lt;br /&gt;
&lt;br /&gt;
Whatever the reasons are, I'm going to try to get some analytical software running (or get the app's data somewhere where I can run analytical software) and try and trend total number of users and how often users are using the app, etc. Hopefully it will offer some insights as to how the application is faring, and how to better serve the users in the future.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/XkjvndM480g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/670431910567247925/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/08/am-i-washed-up.html#comment-form" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/670431910567247925?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/670431910567247925?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/XkjvndM480g/am-i-washed-up.html" title="Am I Washed Up?" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/__wnO9rF92-g/TF37Qc2TDrI/AAAAAAAAF3A/kcbGbgvHrlw/s72-c/usercomplaints.png" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://www.suchagit.com/2010/08/am-i-washed-up.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcFQ304eip7ImA9Wx5TGUU.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-6819908515751250862</id><published>2010-08-05T01:26:00.000-04:00</published><updated>2010-08-05T01:26:52.332-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-05T01:26:52.332-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="stats" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="bob" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>The Double Edged Sword: Users</title><content type="html">Well, the cat's out of the bag, now. The venerable &lt;a href="http://www.lifehacker.com/"&gt;Lifehacker&lt;/a&gt; &lt;a href="http://lifehacker.com/5604248/android2cloud-opens-urls-from-your-phone-in-chrome"&gt;covered&lt;/a&gt; &lt;a href="http://code.google.com/p/android2cloud"&gt;android2cloud&lt;/a&gt;. Others soon &lt;a href="http://www.google.com/#hl=en&amp;amp;source=hp&amp;amp;q=android2cloud&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=&amp;amp;gs_rfai=CtY2nyUdaTM7CJovwygStuq25CgAAAKoEBU_QWenf&amp;amp;pbx=1&amp;amp;fp=55e9fc9d93ce2d3a"&gt;followed&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Before the day was over, the app gained over a thousand new users, served 2 million requests, and crashed the server. Again. We burned through 24.5 hours of CPU time.&lt;br /&gt;
&lt;br /&gt;
How was this possible? I haven't advertised the application at all. The answer is simple: users.&lt;br /&gt;
&lt;br /&gt;
My users, my wonderful, generous users, were spreading the app by word of mouth. Enough people found it interesting and useful that the press people organically stumbled upon it. They found it useful enough to write about it. Rinse, repeat.&lt;br /&gt;
&lt;br /&gt;
This is, of course, a double edged sword, as most things are. Or even a triple. Quadruple? I'm losing track of the edges at this point.&lt;br /&gt;
&lt;br /&gt;
On the one hand, more users is awesome. I'm happy so many people are finding use in my application, and am flattered that so many of them think my code is worth using. It's really a humbling experience to see hits in Google Analytics from 678 cities across every continent but Antarctica.&lt;br /&gt;
&lt;br /&gt;
But with users comes server load. Server load brings crashes. Impending crashes need to be reported to users, and I have no real established way of doing so. Except that nice, big database of 1600+ emails. I battled myself over the decision—I do &lt;b&gt;not&lt;/b&gt;&amp;nbsp;want to be spamming these wonderful users who have given me so much—but decided, in the end, that keeping them informed of absolutely critical things by sending an unsolicited email was better than letting the server crash, and having a thousand plus people wonder what happened.&lt;br /&gt;
&lt;br /&gt;
Some disagreed.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/__wnO9rF92-g/TFpGfUhRYUI/AAAAAAAAF24/B3m_2geFPuQ/s1600/a2couch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/__wnO9rF92-g/TFpGfUhRYUI/AAAAAAAAF24/B3m_2geFPuQ/s320/a2couch.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Totally their prerogative. I understand completely. I've received two requests not to be contacted again, and plan to honor them. My privacy policy &lt;a href="http://www.google.com/buzz/115880905881518206826/4vJmkm68Ptk/Android2cloud-Opens-URLs-from-Your-Phone-in-Chrome"&gt;has come under attack&lt;/a&gt;, too. Which is cool, as well. I'd rather have safe, smart users than a popular app any day. This is exactly why I open-sourced the project: so people could still get use out of it, while feeling 100% secure.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;That doesn't take the sting out of "dev sends emails without opt in." though. Understanding your users' disappointment in you doesn't change the crappy feeling you get.&lt;br /&gt;
&lt;br /&gt;
I've even &lt;a href="http://lifehacker.com/comment/26990609"&gt;received complaints&lt;/a&gt; about the OAuth authentication screen. A shady app name (the Extension's ID) and the "insecure" (unregistered) connection combined to make users feel uneasy. Which is wonderful, because it means people are actually reading what they're agreeing to. And it should be more polished, I agree. I'm working on that. I was just totally unprepared to have more than a thousand users under a month after I launched.&lt;br /&gt;
&lt;br /&gt;
But the complaints, accusation, and distrust—all understandable, if unnecessary—are &lt;i&gt;far&lt;/i&gt;&amp;nbsp;outnumbered by the positive feedback I've been getting. I've received ideas today that go far beyond what I've ever envisioned for the application, and that I'm excited to start implementing. I've received more donations (for greater amounts!) today than I have up to now, combined. I've had more thank yous and well-wishes, more people inquiring as to how they can host servers to reduce the load, and more inexplicably wonderful random acts of kindness from strangers as they spread the word, than I have experienced thus far. This is why I'm an Open Source advocate. The very email I was so criticised for, a user felt strongly enough about that he wanted to &lt;a href="http://www.google.com/buzz/monsoon315/MjnmPvKJnTA/I-posted-earlier-about-the-app-Android2Cloud-It"&gt;share it on Buzz&lt;/a&gt; as an example of a developer that cares.&lt;br /&gt;
&lt;br /&gt;
Heck, even &lt;a href="http://www.suchagit.com/2010/05/story-in-progress.html"&gt;Bob&lt;/a&gt; emailed me, out of the blue, to congratulate me on the success.&lt;br /&gt;
&lt;br /&gt;
So, I guess that's my lesson for the day: with success comes server strain, and with happy users come unhappy users.&lt;br /&gt;
&lt;br /&gt;
All I can do is try to keep the servers up, try to make the best application possible, and do my best to keep as many users happy as I can.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/sQHyo29lS08" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/6819908515751250862/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/08/double-edged-sword-users.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/6819908515751250862?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/6819908515751250862?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/sQHyo29lS08/double-edged-sword-users.html" title="The Double Edged Sword: Users" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/__wnO9rF92-g/TFpGfUhRYUI/AAAAAAAAF24/B3m_2geFPuQ/s72-c/a2couch.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2010/08/double-edged-sword-users.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkADR3cyeyp7ImA9Wx5TEUo.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-7660034397740216955</id><published>2010-07-26T14:47:00.001-04:00</published><updated>2010-07-26T14:59:36.993-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-26T14:59:36.993-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="stats" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="yensid" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>A Global Entrance</title><content type="html">When I &lt;a href="http://www.suchagit.com/2010/07/android2cloud-alpha-release.html"&gt;hit the big green "Publish" button&lt;/a&gt; that made &lt;a href="http://code.google.com/p/android2cloud"&gt;android2cloud&lt;/a&gt; available to the world at large, I was nervous. I was nervous because it would be my entrance into the world of mobile applications, and I knew my name would either be associated with "amateur" or nothing at all.&lt;br /&gt;
&lt;br /&gt;
I spent the rest of that night ferreting out bugs that didn't exist in my tests. God bless patient testers (I'm looking at you, Patrick Kettner).&lt;br /&gt;
&lt;br /&gt;
Little did I realise, however, that this would be a &lt;i&gt;global&lt;/i&gt;&amp;nbsp;entrance into the Market. I understood that people all over the world &lt;i&gt;could&lt;/i&gt;&amp;nbsp;use my application... I just didn't think they &lt;i&gt;would&lt;/i&gt;. In the weeks since, I have been shown how wrong I was.&lt;br /&gt;
&lt;br /&gt;
First, a disclaimer. All these numbers are coming off the &lt;a href="http://www.blogger.com/goog_570044361"&gt;project &lt;/a&gt;&lt;i&gt;&lt;a href="http://code.google.com/p/android2cloud"&gt;page&lt;/a&gt;&lt;/i&gt;. This is based on the assumption that people going to the project page are people who are actually using the project. In the next release, I'll be tracking statistics for the actual &lt;i&gt;application&lt;/i&gt;, so my numbers will be much more specific and accurate.&lt;br /&gt;
&lt;br /&gt;
Since its release, android2cloud has seen visits from over &lt;b&gt;700 people&lt;/b&gt;, in &lt;b&gt;313 cities&lt;/b&gt;, across &lt;b&gt;42 countries&lt;/b&gt;. The country driving the most traffic is &lt;b&gt;Japan&lt;/b&gt;. It has served over &lt;b&gt;1,000 links&lt;/b&gt;, and has &lt;b&gt;209 users&lt;/b&gt;. (Those last two came right from the database, so I know they're accurate.)&lt;br /&gt;
&lt;br /&gt;
A large part of this popularity can be accounted for, I'm sure, by the coverage the application has received. &lt;a href="http://juggly.cn/"&gt;Juggly.cn&lt;/a&gt;, a Chinese (I believe) blog, covered the app twice, &lt;a href="http://juggly.cn/archives/5858.html"&gt;here&lt;/a&gt; and &lt;a href="http://juggly.cn/archives/5866.html"&gt;here&lt;/a&gt;. &lt;a href="http://moongift.jp/"&gt;Moongift.jp&lt;/a&gt;, a Japanese (I believe) blog, covered the app &lt;a href="http://www.moongift.jp/2010/07/android2cloud/"&gt;here&lt;/a&gt;. After these three articles were written, the visits to the projects page and the app usage both skyrocketed. As I write this, the server is serving &lt;b&gt;6 requests &lt;/b&gt;&lt;i&gt;&lt;b&gt;every second&lt;/b&gt;&lt;/i&gt;, and has served &lt;b&gt;250 &lt;/b&gt;&lt;i&gt;&lt;b&gt;thousand&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&amp;nbsp;requests in the last 12 hours&lt;/b&gt;. As I upgrade the software and App Engine gets its Channels API, I expect the requests to plummet. Still, App Engine has handled this huge amount of traffic without even blinking. The free quotas absolutely covered all the traffic, and I've not seen any unscheduled downtime.&lt;br /&gt;
&lt;br /&gt;
All in all, android2cloud was a &lt;i&gt;huge&lt;/i&gt;&amp;nbsp;success. I've been contacted twice about translation and localisation efforts, and the wonderful people at &lt;a href="http://www.yensid.com/"&gt;Yensid&lt;/a&gt; have contacted me about writing Android apps. I've brainstormed two new applications, and will be launching them in the future. An update is planned for android2cloud, and is mostly completed. I expect to release it in the next few days.&lt;br /&gt;
&lt;br /&gt;
Thanks, everyone, for your support. Especially the people that are donating; you really are too generous. I'm doing my best to repay you for your kindness, and hope you like the features that are coming. If you have ideas I haven't implemented, please contact me on &lt;a href="http://groups.google.com/group/android2cloud"&gt;the Google group&lt;/a&gt;, or file an issue on the issue tracker. I love hearing from users; you always have better ideas than I do.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/IKdk9ovl_2A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/7660034397740216955/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/07/global-entrance.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/7660034397740216955?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/7660034397740216955?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/IKdk9ovl_2A/global-entrance.html" title="A Global Entrance" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2010/07/global-entrance.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QHR3c5eSp7ImA9WxFaFko.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-2639635089668433865</id><published>2010-07-20T20:15:00.000-04:00</published><updated>2010-07-20T20:15:36.921-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-20T20:15:36.921-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="chromium" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Update to android2cloud</title><content type="html">&lt;a href="http://code.google.com/p/android2cloud"&gt;android2cloud&lt;/a&gt; has been a hit, so far. I keep meaning to do a post with statistics, coverage, and post-release data from it, but I keep forgetting to aggregate the information in a comprehensible form. I promise, I'll have one up soon.&lt;br /&gt;
&lt;br /&gt;
I do not, however, intend to rest on my haunches. There have been a couple of suggestions, and there are a few features I'd like to see included, as well. A few of these are taking priority right now:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;"&lt;a href="http://code.google.com/p/android2cloud/issues/detail?id=5"&gt;Silent Sending&lt;/a&gt;": this was a feature I hadn't thought of, but one of the commenters in the App Store requested it. Essentially, it asks that users can elect to skip the screen entirely, and just push their link to the cloud from the share intent, in the background. This requires a major restructuring of the code, but I'm hoping to include it in the next update.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/android2cloud/issues/detail?id=9"&gt;Settings for the Chrome Extension&lt;/a&gt;: this is an embarrassing oversight on my part; I thought I had included a settings page in the Chrome Extension before release that allowed people to select their server and change the account they were using to authenticate. Clearly, I was mistaken. I am working to rectify this, but there is a &lt;a href="http://code.google.com/p/chromium/issues/detail?id=49055"&gt;bug in Chromium's OAuth code&lt;/a&gt; that is blocking this. As soon as that bug is fixed, I'll be releasing this to the general public.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/android2cloud/issues/detail?id=10"&gt;Login Failure Detection&lt;/a&gt;: right now, the error handling for logins from the Chrome Extension is a bit... crude. It does nothing; doesn't alert you, doesn't log you out, nothing. If, somehow, your OAuth token or secret gets corrupted, changed, or stored incorrectly, Chrome will happily just keep pinging the server, and will do nothing when the server returns an error. I have a system to handle this largely in place, but it's being blocked by the same bug that Settings is being blocked by. As soon as that bug is fixed, I'll be rolling out that update, as these two features should have been included from the get-go.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/android2cloud/issues/detail?id=11"&gt;Allow moving the app to SD storage&lt;/a&gt;: This one should be a relatively simple fix. Someone has requested that they be able to store the app on their SD card. I thought about including that, but didn't think it was worth it, as the app is so small. It will, however, allow people to move the app between phones simply by moving their SD card, and it has been requested, so I'll enable it for the next release.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;There are, of course, other issues and features I'd like to have included. If you're curious about them, or have a feature request, check out the &lt;a href="http://code.google.com/p/android2cloud/issues/list"&gt;Issues page&lt;/a&gt; on the &lt;a href="http://code.google.com/p/android2cloud/"&gt;project website&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Thanks to everyone who has downloaded the app, and especially all the people who have downloaded the donation app. You guys rock.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/ernpMVovwnQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/2639635089668433865/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/07/update-to-android2cloud.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/2639635089668433865?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/2639635089668433865?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/ernpMVovwnQ/update-to-android2cloud.html" title="Update to android2cloud" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2010/07/update-to-android2cloud.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEERH46eSp7ImA9WxFaE0g.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-1717809232322626210</id><published>2010-07-17T04:48:00.001-04:00</published><updated>2010-07-17T04:50:05.011-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-17T04:50:05.011-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="app engine" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android, OAuth, and Google App Engine</title><content type="html">&lt;p&gt;The single &lt;a href="http://www.suchagit.com/2010/06/roadblocks-are-bad.html"&gt;biggest delay&lt;/a&gt; in &lt;a href="http://code.google.com/p/android2cloud"&gt;android2cloud&lt;/a&gt; I ran into was trying to get Android and App Engine to play nice over OAuth.&lt;/p&gt;

&lt;h3&gt;Getting Started&lt;/h3&gt;

&lt;p&gt;I ran through several different iterations of the account support in android2cloud before I finally managed to make this work. Save yourself the trouble, &lt;i&gt;Focus on one thing at a time.&lt;/i&gt; This project can be broken down into component parts, and those are much easier to tackle. Half the time, I wasn't entirely sure whether Android, &lt;a href="http://code.google.com/p/oauth-signpost/"&gt;Signpost&lt;/a&gt; (the OAuth library for Android I was using), or App Engine's OAuth implementation was at the root of my problems, and debugging was frustrating when I tried doing it all at once. Save yourself that headache.
&lt;b&gt;Build in Java first&lt;/b&gt;. The first thing I did was build a working Signpost client that ran from the command line. I abstracted every single step of the OAuth protocol into its own method, and tied them all together in main(). When I got that authenticating against App Engine, I knew any subsequent OAuth issues were solely due to my handling of the protocol in Android.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Gotchas:&lt;/i&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Signpost on Android &lt;a href="http://code.google.com/p/oauth-signpost/wiki/GettingStarted#Using_Signpost"&gt;doesn't work&lt;/a&gt; with the DefaultOAuth* classes. Use CommonsHttpOAuth* instead.&lt;/li&gt;
&lt;li&gt;You need to make sure you add a header to your request, or App Engine will complain. Here it is:
&lt;blockquote&gt;
request.addHeader("Content-Type", "application/x-www-form-urlencoded");&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Your consumer key and secret are both "anonymous"&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Make Mine Mobile&lt;/h3&gt;

&lt;p&gt;Once you have the working Java implementation, it's time to port it over into Android. This is tricky, because you need to pass a lot of information between Activities, and sometimes you don't even control the activities, so managing your information gets to be a tricky business. Intent.putExtra will become your best friend, and a solid understanding of startActivityForResult and Intent.getIntent will save you a headache or four.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Advice:&lt;/i&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Figure out how you're storing information ahead of time. It will save you trouble. Remember you need to store, at the very least, their token and secret.&lt;/li&gt;
&lt;li&gt;Store your consumer and provider in fields. It's much easier than instantiating new ones every method.&lt;/li&gt;
&lt;li&gt;I shouldn't even need to say this, but store your host, URLs, consumer key, consumer secret, and any other constants as... well... constants.&lt;/li&gt;
&lt;li&gt;Add "btmpl=mobile" to your authorize URL to get a mobile version of the authorization page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another interesting note is the debate between WebViews and the browser. I chose to open a WebView for users to authorize the application with. As &lt;a href="http://www.twitter.com/abraham"&gt;Abraham&lt;/a&gt; &lt;a href="http://code.google.com/p/android2cloud/issues/detail?id=4"&gt;pointed out&lt;/a&gt;, that's asking a user to trust my application not to harvest their details through that WebView. He suggests I &lt;a href="http://donpark.org/blog/2009/01/24/android-client-side-oauth"&gt;use an Intent and protocol filter&lt;/a&gt; to process the callback. I actually experimented with that method, and found it not to my liking, as it made the back button's functionality weird, and sent unexpected results to the application, at times. After his suggestion, though, I'm back to tinkering with it. If I can make it consistent and user friendly.&lt;/p&gt;

&lt;p&gt;For those interested in how I handled the callback, I actually set a callback URL on the host. When the WebView loads a page, it checks the URL. If the URL matches the callback, it extracts the returned parameters. Otherwise, it just loads the page up. I found this to be the most immersive, user-friendly experience, so that's what I went with. I'll write again if I switch to the protocol method.&lt;/p&gt;

&lt;p&gt;And, of course, all of my code for my OAuth implementation is in the &lt;a href="http://code.google.com/p/android2cloud/"&gt;project&lt;/a&gt;'s &lt;a href="http://code.google.com/p/android2cloud/source/browse/"&gt;source&lt;/a&gt; on Google Code. I'd be flattered if anyone actually used it, so hack it apart, take a look at how I did it, or anything else you want to do that will save you some time. And if you have suggestions or find bugs, go ahead and &lt;a href="http://code.google.com/p/android2cloud/issues/entry"&gt;file an issue&lt;/a&gt;. I'll work on it.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/qw6zvVqZP5g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/1717809232322626210/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/07/android-oauth-and-google-app-engine.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/1717809232322626210?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/1717809232322626210?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/qw6zvVqZP5g/android-oauth-and-google-app-engine.html" title="Android, OAuth, and Google App Engine" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2010/07/android-oauth-and-google-app-engine.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEDSX47eSp7ImA9WxFbGUo.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-2255895205989702126</id><published>2010-07-12T18:11:00.000-04:00</published><updated>2010-07-12T18:11:18.001-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-12T18:11:18.001-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>android2cloud Alpha Release</title><content type="html">After a &lt;i&gt;full month&lt;/i&gt;&amp;nbsp;of development (ok, it didn't &lt;i&gt;actually&lt;/i&gt;&amp;nbsp;take that long—I got sidetracked and busy in the middle there) I'm ready to announce the android2cloud alpha release.&lt;br /&gt;
&lt;br /&gt;
I hit the big green "Publish" button last night; today saw its first upgrade, to version 0.1b (a few usability tweaks and support for Android 1.5). You can find the app in the Market by searching for "android2cloud"—you'll notice there's a Donation app, as well, if you feel like tossing a buck my way. The applications are 100% identical, however.&lt;br /&gt;
&lt;br /&gt;
The Chrome Extension is also live. You can download it &lt;a href="https://chrome.google.com/extensions/detail/hkelgkihphkegiaagbcgglfidabmgkgp"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I set up a default app engine server at &lt;a href="http://android2cloud.appspot.com/"&gt;http://android2cloud.appspot.com&lt;/a&gt;. You're not going to see much there through the web interface.&lt;br /&gt;
&lt;br /&gt;
Of course, all of this can be downloaded, inspected, and viewed at &lt;a href="http://code.google.com/p/android2cloud"&gt;http://code.google.com/p/android2cloud&lt;/a&gt;. The entire project is open-sourced, and I'm releasing it there. By all means, open issues, leave feedback, and (if you can) contribute code to the project! I built this as decoupled as possible and open-sourced it for a reason. I want it to grow beyond me.&lt;br /&gt;
&lt;br /&gt;
We also have a discussion group at &lt;a href="http://groups.google.com/group/android2cloud"&gt;http://groups.google.com/group/android2cloud&lt;/a&gt;. Stop by and say hi!&lt;br /&gt;
&lt;br /&gt;
I learned a lot from developing this application. I used three different programming languages, four different frameworks, and three technologies that were entirely new to me. It was a challenge (more on that in a minute) but it was absolutely worth it.&lt;br /&gt;
&lt;br /&gt;
If you remember correctly, &lt;a href="http://www.suchagit.com/2010/06/roadblocks-are-bad.html"&gt;the last time I posted about this&lt;/a&gt;, I was at a roadblock, having trouble with OAuth and Google App Engine. I'll be drafting a post in the next few days about how I debugged the issue and got around it, and will be sure to include a step-by-step tutorial on how to implement OAuth with Google App Engine from Android in the future, along with some common pitfalls and mistakes.&lt;br /&gt;
&lt;br /&gt;
Go on, give it a try. Let me know what you think.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/XoLS5yD2kog" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/2255895205989702126/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/07/android2cloud-alpha-release.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/2255895205989702126?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/2255895205989702126?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/XoLS5yD2kog/android2cloud-alpha-release.html" title="android2cloud Alpha Release" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2010/07/android2cloud-alpha-release.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMARHo9fyp7ImA9WxFVF0w.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-6478069629367554291</id><published>2010-06-16T14:54:00.000-04:00</published><updated>2010-06-16T14:54:05.467-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-16T14:54:05.467-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="oauth" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Roadblocks Are Bad</title><content type="html">There has been a lot of stuff going on with Google recently that I have kind of wanted to write about: the &lt;a href="http://googleblog.blogspot.com/2010/06/freeze-frame.html"&gt;background on the main search page&lt;/a&gt;, the &lt;a href="http://googleblog.blogspot.com/2010/06/blogger-template-designer-now-available.html"&gt;Blogger template designer&lt;/a&gt;, and the &lt;a href="http://techcrunch.com/2010/05/27/palm-loses-their-lead-webos-designer-to-the-google-android-team-others-may-follow/"&gt;addition of a UX legend to the Android team&lt;/a&gt;&amp;nbsp;(and their subsequent &lt;a href="http://techcrunch.com/2010/06/16/android-team-laser-focused-on-the-user-experience-for-next-release/"&gt;UX focus for the next launch&lt;/a&gt;). And yet I haven't. Why is that?&lt;br /&gt;
&lt;br /&gt;
Well, I promised you &lt;a href="http://www.suchagit.com/2010/05/android-to-cloud-push.html"&gt;an application&lt;/a&gt;. And I'm racing to get it done before we start seeing &lt;a href="http://blog.notdot.net/2010/05/Google-I-O-day-2-The-Android-push-messaging-API"&gt;its counterpart&lt;/a&gt; appearing on Nexus Ones worldwide. Unfortunately, I've hit a roadblock.&lt;br /&gt;
&lt;br /&gt;
You see, I'm determined to build this right the first time. Well, "right". I do believe you should be embarrassed of your v1, but I also believe your v1 should be built on the same framework as your iterations will be. The same ideologies, the same principles. And so I'm putting my foot down, and refusing to save your username and/or password on your phone. I'm just not comfortable doing it; I don't want that responsibility. The only place your username will ever be stored is within App Engine, and only because I can't avoid it there.&lt;br /&gt;
&lt;br /&gt;
Fortunately, OAuth makes this a relatively simple process. Even better, App Engine supports being an OAuth Provider right out of the box. I managed to get the Chrome extension built and authenticating using OAuth in about six hours.&lt;br /&gt;
&lt;br /&gt;
I've spent over a week trying to get Android to authenticate using OAuth, and App Engine just won't take my requests. In the interest of saving some others time, and perhaps getting some help myself, I'm going to share some of the quirks I've learned using OAuth:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/oauth-signpost/"&gt;SignPost&lt;/a&gt;, the OAuth library for Android I'm using, is very versatile. I'd recommend it.&lt;/li&gt;
&lt;li&gt;Apache's HttpClient, which I'm using to make the POST request with the link to the App Engine server, does not support changing the URL of a request once it's initiated. Therefore, using a query string signing method requires you create two requests:&lt;/li&gt;
&lt;/ul&gt;&lt;blockquote&gt;&lt;blockquote&gt;String host = settings.getString("host", DEF_HOST);&lt;/blockquote&gt;&lt;blockquote&gt;consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);&lt;/blockquote&gt;&lt;blockquote&gt;String access_token = settings.getString("token", "error");&lt;/blockquote&gt;&lt;blockquote&gt;String access_secret = settings.getString("secret", "error");&lt;/blockquote&gt;&lt;blockquote&gt;consumer.setTokenWithSecret(access_token, access_secret);&lt;/blockquote&gt;&lt;blockquote&gt;String target = host+"/links/add";&lt;/blockquote&gt;&lt;blockquote&gt;HttpPost request = new HttpPost(target);&lt;/blockquote&gt;&lt;blockquote&gt;List&lt;namevaluepair&gt; data = new ArrayList&lt;namevaluepair&gt;(1);&lt;/namevaluepair&gt;&lt;/namevaluepair&gt;&lt;/blockquote&gt;&lt;blockquote&gt;data.add(new BasicNameValuePair("link", url));&lt;/blockquote&gt;&lt;blockquote&gt;UrlEncodedFormEntity entity = new UrlEncodedFormEntity(data);&lt;/blockquote&gt;&lt;blockquote&gt;request.setEntity(entity);&lt;/blockquote&gt;&lt;blockquote&gt;DefaultHttpClient httpClient = new DefaultHttpClient();&lt;/blockquote&gt;&lt;blockquote&gt;consumer.setSigningStrategy(new QueryStringSigningStrategy());&lt;/blockquote&gt;&lt;blockquote&gt;String newTarget = consumer.sign(target);&lt;/blockquote&gt;&lt;blockquote&gt;HttpPost newRequest = new HttpPost(newTarget);&lt;/blockquote&gt;&lt;blockquote&gt;newRequest.setEntity(entity);&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;String response = httpClient.execute(newRequest, new BasicResponseHandler());&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&amp;nbsp;For some reason, App Engine doesn't care if you use users.get_current_user() or oauth.get_current_user() when it's coming from&amp;nbsp;&lt;a href="http://code.google.com/chrome/extensions/tut_oauth.html"&gt;Chrome_Ex_OAuth&lt;/a&gt;&amp;nbsp;(note: I've only tried with GET requests, which may be why). However, when POSTing from SignPost, App Engine &lt;i&gt;does&lt;/i&gt;&amp;nbsp;care, and you need to make sure you're using oauth.get_current_user()&lt;/li&gt;
&lt;li&gt;I have no idea why, but App Engine will not play nice with SignPost. For some reason, it returns "&lt;span class="Apple-style-span" style="font-family: 'Courier New'; font-size: 13px; line-height: 19px; white-space: pre-wrap;"&gt;InvalidOAuthParametersError" &lt;/span&gt;for all of my requests, no matter what method I sign them with. I can't seem to figure out whether it's saying my token and signature don't match up, or whether it's saying I've included an unsupported parameter, or even whether it's saying I've not signed the data within correctly. All I know is it doesn't like something about my parameters. Anyone with any insight on this would be greatly appreciated. I'll update here when I figure out the issue.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;So far, navigating the OAuth realm has been tricky and treacherous. I still think it's worth it, and hopefully, you guys will, too. As soon as I actually figure it out.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/e7D0SkgIrw4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/6478069629367554291/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/06/roadblocks-are-bad.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/6478069629367554291?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/6478069629367554291?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/e7D0SkgIrw4/roadblocks-are-bad.html" title="Roadblocks Are Bad" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.suchagit.com/2010/06/roadblocks-are-bad.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkECRHczfSp7ImA9WxFWE0g.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-3488410328916123946</id><published>2010-05-31T18:49:00.001-04:00</published><updated>2010-05-31T21:11:05.985-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-31T21:11:05.985-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android Development</title><content type="html">I approached developing the Android application for&lt;a href="http://www.suchagit.com/2010/05/android-to-cloud-push.html"&gt; android2cloud&lt;/a&gt; with a few expectations in mind. Not all of them were met. Let's run through my naive list of presumptions, and then we can compare them with reality.&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;&lt;b&gt;Developing for Android was simply writing Java.&lt;/b&gt;&amp;nbsp;I assumed that writing an Android application would simply be writing a Java application, with a few conventions, and plenty of tools that made things easier for me.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;There was an open-source application that did something similar.&lt;/b&gt;&amp;nbsp;I expected there to be an open-source Android application that had implemented the Share Intent, an application that had made a POST request to a server, and an application that integrated OAuth.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;I could curate the code of these applications.&lt;/b&gt;&amp;nbsp;Rather than writing the entire application from scratch, I could re-use the code written in the applications mentioned in 2 to create android2cloud, which would save me a lot of time in getting a prototype out the door.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;Reality, however, decided it didn't want to meet my expectations. All of them, at least.&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Android != Java.&lt;/b&gt;&amp;nbsp;Android is, as best I can explain it, a framework built on top of Java. You write using Java, but you're not writing a Java application. You're writing an Android application. There's a whole new way of thinking, several new paradigms, and a new system you need to understand. Fortunately, the documentation is wonderful, so as long as you actually &lt;i&gt;learn&lt;/i&gt;&amp;nbsp;what you're trying to do, instead of taking shortcuts, you'll be fine.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Android community is wonderful.&lt;/b&gt;&amp;nbsp;There were indeed several different applications that had implemented everything I wanted to implement already. They had POST requests, they had OAuth, they had the Share Intent. I could simply stitch them together, and have android2cloud.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;I could not simply stitch them together and have android2cloud.&lt;/b&gt;&amp;nbsp;As I mentioned in 1, as long as you actually &lt;i&gt;learn&lt;/i&gt;&amp;nbsp;what you're trying to do, instead of taking shortcuts, you'll be fine. Unfortunately, stitching together components of other code is a major shortcut. Which is why it's appealing. So for a new developer on the Android platform, it really helps to write everything from scratch. &lt;a href="http://developer.android.com/resources/tutorials/hello-world.html"&gt;Follow the tutorials&lt;/a&gt;, ask questions, and write your own code. Later (as long as what you're doing is legal and ethical) you'll be able to curate your code without any problems.&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;Those are my findings on Android development so far: taking longer than I'd hoped. But, thinking about it, I'd rather spend the time doing it properly. It makes sense that, for my first foray, I should "own my code".&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/IGl7WaLR8Dc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/3488410328916123946/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/05/android-development.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/3488410328916123946?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/3488410328916123946?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/IGl7WaLR8Dc/android-development.html" title="Android Development" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.suchagit.com/2010/05/android-development.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4HRno7eSp7ImA9WxFXFUw.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-753055608660251576</id><published>2010-05-22T04:59:00.001-04:00</published><updated>2010-05-22T05:02:17.401-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-22T05:02:17.401-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>android2cloud Update</title><content type="html">I &lt;a href="http://www.suchagit.com/2010/05/android-to-cloud-push.html"&gt;announced&lt;/a&gt; yesterday that I would be embarking on a project that would reverse the Cloud to Android push that Froyo enables. The purpose of this software would be to enable a user to send a longer article (one found in Google Reader, online, or from Twitter, for example) to their computer with the push of a button on their phone. I challenged myself to build the cloud part of this in the four hour round trip to my brother's commencement in Rochester.&lt;br /&gt;
&lt;br /&gt;
It actually took six hours. What can I say? Developing for a platform you've never looked at before with only your phone for internet is tough.&lt;br /&gt;
&lt;br /&gt;
Granted, my implementation isn't spit-shine perfect yet—I still need to make the icon, still need to set up the main page of the App Engine site, still need to fix the OAuth middleman (it keeps saying you're coming from the extension ID, which is a long, unintelligible string of characters; I'd much rather it say I'm coming from android2cloud), and I need to let you destroy OAuth tokens. But all in all, it works, albeit with a (up to) 15 second delay.&lt;br /&gt;
&lt;br /&gt;
Here are the features as they stand:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;OAuth integration: you don't need to trust me with your password&lt;/li&gt;
&lt;li&gt;Chrome/App Engine integration: links are stored in App Engine, and if Chrome recognises them as a "new" link (a link it hasn't previously opened) it auto-opens a new tab for them.&lt;/li&gt;
&lt;li&gt;A browser icon that forces a check for your latest link. It will open that link without bothering to check if it has been opened before. Handy for revisiting your latest link.&lt;/li&gt;
&lt;li&gt;Tied to your Google Account: Only you can open links you've shared, and only links you've shared can be opened automatically for you. No worries about someone spamming your browser with their links.&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;All in all, it's a very simple system. I'm going to have to wait for my Nexus One (I think I'm ordering it in a couple of days, as in Monday/Tuesday/Wednesday) to check and make sure my android side of the plan makes sense. I intend to hijack the "Share" intent, and throw a post request to the server. Once I confirm that makes sense, is doable, and exactly what the UX will be like, I'll start the android app.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Another entirely new platform I'm developing on.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/nCTBuKWF7kc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/753055608660251576/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/05/android2cloud-update.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/753055608660251576?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/753055608660251576?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/nCTBuKWF7kc/android2cloud-update.html" title="android2cloud Update" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.suchagit.com/2010/05/android2cloud-update.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8GQ3k9cSp7ImA9WxFXFUw.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-484175094159468866</id><published>2010-05-21T00:01:00.001-04:00</published><updated>2010-05-22T05:00:22.769-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-22T05:00:22.769-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="android2cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="chrome" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="io" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>Android to Cloud Push</title><content type="html">I was watching the Google I/O keynote today (sadly, on YouTube—I'm a terrible GIT, and don't have the money to fly across the country for the conference. No matter how badly I want to) and I saw Vic Gundotra demo the Cloud to Android push feature. And I thought "Hey, what a neat idea! You push a button, and share the page you're on with your phone." Reminded me of Avatar, whose viewscreens transfer content with a simple swipe action.&lt;br /&gt;
&lt;br /&gt;
One thing I thought, though, was that a lot of the time, I'm reading feeds or Twitter on my phone, and I'd really like to read articles or links on my computer. But that would involve manually typing in the URL, searching, or finding the referrer again. So I &lt;a href="http://www.google.com/buzz/foran.paddy/8x1YuKe3kdu/Am-I-the-only-one-that-wants-to-reverse-the-Cloud"&gt;figured&lt;/a&gt; that Android to Cloud push would be at &lt;i&gt;least&lt;/i&gt;&amp;nbsp;as useful as Cloud to Android.&lt;br /&gt;
&lt;br /&gt;
So I'm going to write it.&lt;br /&gt;
&lt;br /&gt;
I have a 2 hour car trip to Rochester tomorrow, to see my brother graduate from RIT. I want to fully write the Chrome extension (and possibly the App Engine application) that will handle the "Cloud" side of this during that trip—a 2 hour trip there, whatever time I find while in Rochester, and a 2 hour trip home.&lt;br /&gt;
&lt;br /&gt;
Of course, in the spirit of "open" (a word tossed around quite a bit at I/O), I'll be releasing this project under the public domain when it's finished. When I get my Nexus One (a matter of days!) I'll be figuring out the best way to integrate the "Android" part of this, and will be licensing that under the public domain, as well.&lt;br /&gt;
&lt;br /&gt;
I do have an interesting pricing scheme for the Android half of this, but we'll cross that road when we get there.&lt;br /&gt;
&lt;br /&gt;
Think I can write the Chrome extension and App Engine app in a few hours, in a car, with my parents?&lt;br /&gt;
&lt;br /&gt;
I think I can, if I can keep my laptop charged.&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/WMCDms5bRUc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/484175094159468866/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/05/android-to-cloud-push.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/484175094159468866?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/484175094159468866?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/WMCDms5bRUc/android-to-cloud-push.html" title="Android to Cloud Push" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://www.suchagit.com/2010/05/android-to-cloud-push.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04FQng8eSp7ImA9WxFQFU8.&quot;"><id>tag:blogger.com,1999:blog-5516321598751083711.post-4909613099465294508</id><published>2010-05-10T17:45:00.001-04:00</published><updated>2010-05-10T18:18:33.671-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-10T18:18:33.671-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="c++" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="data structures" /><category scheme="http://www.blogger.com/atom/ns#" term="algorithms" /><category scheme="http://www.blogger.com/atom/ns#" term="ted" /><category scheme="http://www.blogger.com/atom/ns#" term="chromium" /><category scheme="http://www.blogger.com/atom/ns#" term="spaz" /><category scheme="http://www.blogger.com/atom/ns#" term="bob" /><category scheme="http://www.blogger.com/atom/ns#" term="k and r" /><category scheme="http://www.blogger.com/atom/ns#" term="experience" /><category scheme="http://www.blogger.com/atom/ns#" term="c" /><title>Story In Progress</title><content type="html">Hey everyone, my name is Paddy. As you may or may not know, I'm trying to get hired by Google as a software engineering intern (or more!). As I went over my to-do list for getting hired (I'll get to that in a minute), I realised that it would be quite a journey, a little project of its own right. And everyone knows, a journey didn't happen unless somebody documented it. So I'll be blogging here, almost as a journal, about my progress on my laundry list of things to do before I can be hired by Google.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, I have no set-in-stone laundry list of things to do that will assure me employment at my favourite company, the only company I would consider programming for for a living. What I &lt;i&gt;do&lt;/i&gt;&amp;nbsp;have, however, is a neat little list of things that I &lt;i&gt;should&lt;/i&gt;&amp;nbsp;do before applying, supplied to me by wonderful Google employees. At the moment, I'm not sure whether they wish to be named or not, and both assured me that this advice was coming from them, personally, and did not constitute any official Google advice or policy. But I do have a bit of a better idea about where to head, thanks to a current Google software engineer (we'll call him Bob, after the man that taught me Python) and a current Google recruiter (we'll call him Ted, after the conference).&lt;br /&gt;
&lt;br /&gt;
The following are things I need to do before I apply to Google:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Learn C&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;"Python is a great language, but you need experience with more than just Python. You need to learn C. You need to know how memory is allocated, what a pointer is, how all that works. K&amp;amp;R's book is a great place to start."&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Learn Java and C++&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;"I would also try to get a rudimentary familiarity with C++ and Java, OO languages that aren't as dynamic as Python. Pros and cons vs Python and C would be good. Most programming at Google is C++, Java, and Javascript. Python is a distant fourth."&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Learn Data Structures and Algorithms&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;"Data structures and algorithms. (This is somewhat tough to learn on your own.)&amp;nbsp;Big-O notation. This stuff is super important to getting a job. You can use a hashtable, but do you know the performance characteristics of all the operations? Can you implement a hashtable in C? How about a binary search tree? When would you use a linked list vs. a vector? Can you implement them? etc etc"&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Gain Experience&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;"One way to learn a lot of this stuff is to find an open source project that you like and start hacking. You could fix Chrome bugs! For example. Or you could do a successful Summer of Code project."&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;Clearly, I have quite a project ahead of me. Fortunately, you're all joining my story after it has begun. This semester, I took a Java course in college (I had taken one in high school, but it was independent study, and I needed the refresher). I've also started as a contributor to the &lt;a href="http://www.getspaz.com/"&gt;Spaz Project&lt;/a&gt;. After I've learned what I can there, I plan to reduce my hours (somewhat; I have no intention of abandoning the wonderful people at Spaz) and picking up hacking on a more... complicated and related project. Perhaps, as Bob suggested, I'll work on the Chromium project. I'll make that decision when I get there. I've also picked up K&amp;amp;R's "The C Programming Language", and intend to study it over the summer as a "summer school" of sorts.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;So there you have it. My 4 step plan to getting my dream job. Now that you're up-to-speed with me (sort of; I'll have to give you some more background on my skillset, I'm sure, as time goes on), I'm going back to what I was doing: finishing finals week, getting in programming when I can, and trying to learn the skills I need. I'll keep you updated with my Google travails as they happen, and perhaps my fanboyism will let me work with my heroes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;I'm feeling lucky.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: right;"&gt;-- Paddy Foran&lt;/div&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/SuchAGit/~4/kGIz1T9wpno" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.suchagit.com/feeds/4909613099465294508/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.suchagit.com/2010/05/story-in-progress.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/4909613099465294508?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5516321598751083711/posts/default/4909613099465294508?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/SuchAGit/~3/kGIz1T9wpno/story-in-progress.html" title="Story In Progress" /><author><name>Paddy Foran</name><uri>https://plus.google.com/112924888792635085586</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-PrksCke_LVA/AAAAAAAAAAI/AAAAAAAAWXY/LmAycmk4t8w/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.suchagit.com/2010/05/story-in-progress.html</feedburner:origLink></entry></feed>
