<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dannyroa</title>
	<atom:link href="http://www.dannyroa.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dannyroa.com</link>
	<description>tech, music, travel</description>
	<lastBuildDate>Thu, 12 Jan 2012 19:23:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>FourSquare Hackathon Entry: Burp&#8217;s Most Popular Places By Checkins</title>
		<link>http://www.dannyroa.com/2011/10/04/foursquare-hackathon-entry-burps-most-popular-places-by-checkins/</link>
		<comments>http://www.dannyroa.com/2011/10/04/foursquare-hackathon-entry-burps-most-popular-places-by-checkins/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 05:46:48 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dannyroa.com/?p=249</guid>
		<description><![CDATA[My co-founder Dan Kwon (@dankwonjr) &#38; I built a small app for the FourSquare Hackathon a few weeks ago. It ranks Popular Places for Barbecue, Fried Chicken, Wings and Burgers in different cities. Check it out! http://goburp.com/popular/]]></description>
			<content:encoded><![CDATA[<p>My co-founder Dan Kwon (@dankwonjr) &amp; I built a small app for the FourSquare Hackathon a few weeks ago.</p>
<p>It ranks Popular Places for Barbecue, Fried Chicken, Wings and Burgers in different cities. Check it out!</p>
<p><a href="http://goburp.com/popular/">http://goburp.com/popular/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2011/10/04/foursquare-hackathon-entry-burps-most-popular-places-by-checkins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sign In With Google &amp; Get User Info from Google+ Profile</title>
		<link>http://www.dannyroa.com/2011/09/26/sign-in-with-google-get-user-info-from-google-profile/</link>
		<comments>http://www.dannyroa.com/2011/09/26/sign-in-with-google-get-user-info-from-google-profile/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 00:13:59 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.dannyroa.com/?p=260</guid>
		<description><![CDATA[At the start, authentication options for our site Burp (http://goburp.com) include regular email/password &#38; Facebook Connect. For quite a while, I&#8217;ve been wanting to integrate Google Accounts Authentication. I&#8217;ve looked at django-socialauth (http://social.matiasaguirre.net/) but it uses OpenID. I prefer a pure OAuth2 implementation similar to what Facebook &#38; FourSquare uses. Looking at Google&#8217;s documentation, it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>At the start, authentication options for our site Burp (<a href="http://goburp.com">http://goburp.com</a>) include regular email/password &amp; Facebook Connect. For quite a while, I&#8217;ve been wanting to integrate Google Accounts Authentication.</p>
<p>I&#8217;ve looked at django-socialauth (<a href="http://social.matiasaguirre.net/">http://social.matiasaguirre.net/</a>) but it uses OpenID. I prefer a pure OAuth2 implementation similar to what Facebook &amp; FourSquare uses.</p>
<p>Looking at Google&#8217;s documentation, it&#8217;s not easy to figure out. The Federated Login (<a href="http://code.google.com/apis/accounts/docs/OpenID.html">http://code.google.com/apis/accounts/docs/OpenID.html</a>) is just a pain to implement. </p>
<p>Google recently streamlined their API &amp; they have libraries for every major programming language. Implementation is too complex though which includes a separate model to store credentials (see <a href="http://code.google.com/p/google-api-python-client/source/browse/oauth2client/django_orm.py">http://code.google.com/p/google-api-python-client/source/browse/oauth2client/django_orm.py</a>).</p>
<p>OAuth2 implementation by FourSquare &amp; Facebook is so simple that there must be a way to do that with Google: Get an authorization url, Get a code back &amp; Exchange that for an access token. Then use that access token to access the API. Google has documentation for OAuth2 but it actually lacks information on how to get a user&#8217;s email address (<a href="http://code.google.com/apis/accounts/docs/OAuth2.html">http://code.google.com/apis/accounts/docs/OAuth2.html</a>).</p>
<p>After scouring the internets, I finally stumbled into a PHP implementation. It has the scope (https://www.googleapis.com/auth/userinfo#email) that I&#8217;ve been looking for which is missing from Google&#8217;s documentation (<a href="http://code.google.com/apis/gdata/faq.html#AuthScopes">http://code.google.com/apis/gdata/faq.html#AuthScopes</a>). The OAuth2 steps are pretty standard except that the access token can be added to the header of the request instead of as a parameter in the url (<a href="http://code.google.com/apis/accounts/docs/OAuth2.html#CallingAnAPI">http://code.google.com/apis/accounts/docs/OAuth2.html#CallingAnAPI</a>).</p>
<p>This, however, only gets me the email address of the user. I also want to get the user&#8217;s name, location, gender, etc.</p>
<p>Luckily, Google just opened up an API for Google+. </p>
<p>By adding the scope &#8211; https://www.googleapis.com/auth/plus.me &#8211; to the OAuth2 call, our app will have access to the public info the user provided in their Google+ Profile. The People:get method (<a href="http://developers.google.com/+/api/latest/people/get">http://developers.google.com/+/api/latest/people/get</a>) will provide you with the user&#8217;s Display Name, Location, and Profile Picture Url among others.</p>
<p>You can view the sample Django project at <a href="https://github.com/dannyroa/sign-in-with-google">https://github.com/dannyroa/sign-in-with-google</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2011/09/26/sign-in-with-google-get-user-info-from-google-profile/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Taskyo: Access Google Tasks on your mobile device</title>
		<link>http://www.dannyroa.com/2011/07/18/taskyo-access-google-tasks-on-your-mobile-device/</link>
		<comments>http://www.dannyroa.com/2011/07/18/taskyo-access-google-tasks-on-your-mobile-device/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 18:08:48 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dannyroa.com/?p=224</guid>
		<description><![CDATA[Over the weekend, I built Taskyo (http://www.taskyo.com) to solve this problem. It is not meant to replace the main Google Tasks site but instead supplement it. This is why the features for Taskyo is limited - no editing of lists, ordering of tasks among others. Being able to create a list, create a task, marking a task as 'Complete' and deleting a task pretty much covers everything you need when accessing it on the go. ]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a big user of Google Tasks. It&#8217;s barebones but I like it mainly because of its integration with GMail &amp; Google Calendar. However, Google doesn&#8217;t have a mobile-friendly site to use Google Tasks.</p>
<p>Over the weekend, I built Taskyo (<a target="_blank" href="http://www.taskyo.com">http://www.taskyo.com</a>). It is not meant to replace the main Google Tasks site but instead supplement it. This is why the features for Taskyo is limited &#8211; no editing of lists, ordering of tasks among others. Being able to create a list, create a task, marking a task as &#8216;Complete&#8217; and deleting a task pretty much covers everything you need when accessing it on the go.</p>
<p>I built this using Python on App Engine and JQuery Mobile. It works well on the phone and on the tablet too.</p>
<p>Developing this app also allowed to me play with the new Google APIs for the first time. I really like what Google did. All the APIs are consistent and centralized. There are libraries for Java, Python, and PHP. The API Explorer (https://code.google.com/apis/explorer/) was particularly useful.</p>
<p>I found some hiccups though especially how to do OAuth2. The authorization example they have for Google Tasks (<a href="http://code.google.com/apis/tasks/v1/using.html">http://code.google.com/apis/tasks/v1/using.html</a>) was not for websites. But having worked on the Twitter &amp; Foursquare API using OAuth2, I eventually figured it out. With the other issues I had, the Google Tasks Developer Forum helped me solved them (<a href="http://code.google.com/apis/tasks/forum.html">http://code.google.com/apis/tasks/forum.html</a>).</p>
<p><a href="http://www.taskyo.com" target="_blank"><img src="https://lh3.googleusercontent.com/-ClxpnZ-S5js/TiPykrwRRgI/AAAAAAAAFgE/wzQzaT7AEqk/Screen%252520shot%2525202011-07-18%252520at%2525201.42.56%252520AM.png" alt="Taskyo" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2011/07/18/taskyo-access-google-tasks-on-your-mobile-device/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>MapMyPhotos Now on Android Market</title>
		<link>http://www.dannyroa.com/2011/01/17/mapmyphotos-now-on-android-market/</link>
		<comments>http://www.dannyroa.com/2011/01/17/mapmyphotos-now-on-android-market/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 09:46:05 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.dannyroa.com/?p=225</guid>
		<description><![CDATA[After a week of development, my new Android app, Map My Photos, is now available on the Android Market. It comes in a Lite version (Ad-supported and only 50 photos) and Paid version ($0.99; No ads and unlimited photos).

Map My Photos lets you browse your geo-tagged photos from the camera folder by cities and on a map. This is similar to the IPhone's built-in Photo app. ]]></description>
			<content:encoded><![CDATA[<p>After a week of development, my new Android app, <strong>Map My Photos</strong>, is now available on the Android Market. It comes in a Lite version (Ad-supported and only 50 photos) and Paid version ($0.99; No ads and unlimited photos).</p>
<p><strong>Map My Photos</strong> lets you browse your geo-tagged photos from the camera folder by cities and on a map. This is similar to the IPhone&#8217;s built-in Photo app.</p>

<a href='http://www.dannyroa.com/2011/01/17/mapmyphotos-now-on-android-market/mapmyphotos1/' title='mapmyphotos1'><img width="150" height="150" src="http://www.dannyroa.com/wp-content/uploads/2011/01/mapmyphotos1-150x150.png" class="attachment-thumbnail" alt="mapmyphotos1" title="mapmyphotos1" /></a>
<a href='http://www.dannyroa.com/2011/01/17/mapmyphotos-now-on-android-market/mapmyphotos2/' title='mapmyphotos2'><img width="150" height="150" src="http://www.dannyroa.com/wp-content/uploads/2011/01/mapmyphotos2-150x150.png" class="attachment-thumbnail" alt="mapmyphotos2" title="mapmyphotos2" /></a>
<a href='http://www.dannyroa.com/2011/01/17/mapmyphotos-now-on-android-market/mapmyphotos3/' title='mapmyphotos3'><img width="150" height="150" src="http://www.dannyroa.com/wp-content/uploads/2011/01/mapmyphotos3-150x150.png" class="attachment-thumbnail" alt="mapmyphotos3" title="mapmyphotos3" /></a>

<p style="text-align: center;">Available on the Android Market:</p>
<p style="text-align: center;"><img class="aligncenter" src=http://chart.apis.google.com/chart?cht=qr&#038;chs=300x300&#038;chl=market://search?q=mapmyphotos" alt="" /></p>
<p style="text-align: center;">or if you are browsing from your Android phone, click <a href="market://search?q=mapmyphotos">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2011/01/17/mapmyphotos-now-on-android-market/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2010: Year In Review</title>
		<link>http://www.dannyroa.com/2011/01/02/2010-year-in-review/</link>
		<comments>http://www.dannyroa.com/2011/01/02/2010-year-in-review/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 21:46:00 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.dannyroa.com/?p=213</guid>
		<description><![CDATA[Career: I was employed full-time 7 months out of the year which is a one-month improvement from 2009. I was supposed to work for Movity (Winter 2009 -YCombinator) and be their first employee. But right before the YC session started, I got offered a job by another startup. I consider the Movity founders good friends [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Career</strong>:</p>
<p>I was employed full-time 7 months out of the year which is a one-month improvement from 2009. I was supposed to work for Movity (Winter 2009 -YCombinator) and be their first employee. But right before the YC session started, I got offered a job by another startup. I consider the Movity founders good friends but I had to make an objective decision and joined Mingle.com instead. I felt bad backing out at the last-minute but it turned out really well for Movity since they got a more talented developer in Zain (@zainy).</p>
<p>I didn&#8217;t leave Movity completely. I helped them out during the YC session.  On weekends, there were seven of us cramped in a very small office. It&#8217;s one of my most enjoyable coding experiences where I was surrounded by people who are focused on one goal.</p>
<p>I worked for Mingle.com for seven months. I learned a lot more about Django since I was surrounded by smart &amp; experienced Django developers (e.g. @david_ziegler). I left Mingle last July when I decided I need to do my own startup. To pay the bills, I did a short-term, part-time gig for Votizen.com.</p>
<p><strong>Health &amp; Fitness:</strong></p>
<p>Working a lot has taken a toll on my health earlier this year. Working full-time at Mingle and part-time for Movity stressed me out a lot. It weakened my immune system and this led me to get shingles. Fortunately, it wasn&#8217;t a painful experience and I just had to rest for a week.</p>
<p>Despite that, I was generally healthy in 2010 and able to play sports a lot. I had the motivation to work out a lot even just by myself. I don&#8217;t have the workout regimen I had back in 2008 though when I was doing <a href="http://www.facebook.com/group.php?gid=37220153796">ActiveX</a> at my old company in San Diego.</p>
<p>I started playing water polo again but my stamina wasn&#8217;t there. I ended up ruining the game for other people. I quit after a month but I plan to be back sometime in 2011.</p>
<p>I did Mission Bay Tri again (my second sprint race) and improved by almost 10 minutes (From 1:29:29 to 1:20:10).</p>
<p>I joined the Palo Alto soccer league in the summer and  started running with Burt (@burtherman) &amp; Brian (@dustball). I had to stop running though after having some foot problems. I got an Xray and found no broken bones. Therapy helped a little bit but I basically can&#8217;t run more than 5 miles now.</p>
<p><strong>Bay Area</strong>:</p>
<p>Hacker Dojo in Mountain View is my second home. Well, actually, I spend a lot more time there than at home. The place has great energy and I became friends with a lot of good people.</p>
<p>I got sick of the Bay Area for a little bit. This area is inside a bubble in both good and bad ways. Bay Area sets a lot of technology trends but it is not mainstream. What happens here is very different from the rest of the US and even the world but Bay Area people think that it is the same everywhere else.</p>
<p>This has led me to shun a lot of networking events because of the group-think. This is also why I decided to travel to Argentina, to get away from the area for a bit.</p>
<p>I still love the Bay Area though. This is where I belong and I can&#8217;t imagine being anywhere else.</p>
<p><strong>Travel</strong>:</p>
<p>The only travel I did was Buenos Aires. I went with my cofounder Dan Kwon (@dankwonjr) for a month. It was more of a team-building for us. I learned a lot about my cofounder and also about myself. I have been a loner for the past few years and it&#8217;s refreshing to hang out with somebody a lot and hear what they think about me.</p>
<p><strong>Lessons Learned:</strong></p>
<p><strong>Never settle</strong>: Time and time again, settling for something has brought me unhappiness. I have always wanted to have my own company but I tried to convince myself to stay at Mingle instead. This has led me to be unhappy at work. I finally came to my senses and resigned. I&#8217;ve been happier since. I work on projects I&#8217;m passionate about and started building a startup with @dankwonjr. There are some financial uncertainties though since I don&#8217;t have a lot of liquid savings so I do some part-time work from time to time.</p>
<p><strong>Always Be Positive</strong>: It&#8217;s been tough for me since I moved from DC to the West Coast. I became a bit negative and it has held me back on a lot of things. Lately though, I make it a point to be more positive. I always try not to get angry and not complain. This is largely influenced by the people I surround myself with. I plan to continue this habit indefinitely.</p>
<p><strong>Believing in Myself</strong>: I doubt myself a lot. It has gotten worse when I moved to the Bay Area. I&#8217;m surrounded by more intelligent and more experienced developers. The good thing is this motivated me to get better by learning new things. I picked up Python/Django in 2009 and it paid off for me in 2010. I also have been doing a lot of Android development. Learning a new programming language or framework doesn&#8217;t intimidate me anymore. I&#8217;m also not scared to take on projects that maybe over my head. I know that I can figure out a way to build it.</p>
<p>===============================================================================</p>
<p>2010 was a good year for me but it is actually more of a build-up for the great years to come. For the next few years, my plan is to continue learning and be more open to new experiences.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2011/01/02/2010-year-in-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Default values when creating new row in Django Admin</title>
		<link>http://www.dannyroa.com/2010/06/20/default-values-when-creating-new-row-in-django-admin/</link>
		<comments>http://www.dannyroa.com/2010/06/20/default-values-when-creating-new-row-in-django-admin/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 02:56:08 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[django]]></category>

		<guid isPermaLink="false">http://blog.dannyroa.com/?p=173</guid>
		<description><![CDATA[In one of the apps I'm developing at work, I wanted to make it easy for our content admins to create a new row in the Django Admin. Most of the time, they need to create a new row that is associated to their own user account. It would save them a couple of steps if the user field is set to a default value]]></description>
			<content:encoded><![CDATA[<p>In one of the apps I&#8217;m developing at work, I wanted to make it easy for our content admins to create a new row in the Django Admin. Most of the time, they need to create a new row that is associated to their own user account. It would save them a couple of steps if the user field is set to a default value. Thanks to my coworker, <a title="Dave Ziegler" href="http://twitter.com/david_ziegler">Dave Ziegler</a>,  for helping me  figure this out.</p>
<p><script src="http://gist.github.com/446318.js"></script></p>
<p><em>Extra tip: </em><br />
use raw_id_fields in Django Admin. This is especially useful when you have plenty of users. What you&#8217;ll see is the id of the user in the text field with a link to look up users next to it (instead of a dropdown containing usernames of all the users).<br />
If you don&#8217;t set the raw_id_fields, it would take a long time for Django Admin to load the &#8216;Change &#8216; page since all the users in your database needs to be loaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2010/06/20/default-values-when-creating-new-row-in-django-admin/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Diving into Google Chrome Extensions Development</title>
		<link>http://www.dannyroa.com/2009/12/14/diving-into-google-chrome-extensions-development/</link>
		<comments>http://www.dannyroa.com/2009/12/14/diving-into-google-chrome-extensions-development/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 08:05:22 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.dannyroa.com/?p=164</guid>
		<description><![CDATA[Last Friday, I  joined CodeFest2 which is part of the AddOn Conference. I decided to create an extension that will display additional information when browsing a Craigslist Housing Ad. The additional information includes displaying the address on a Google Map and listing businesses (restaurants, bars, groceries, and gyms) nearby. You can find my extension, Craigslist [...]]]></description>
			<content:encoded><![CDATA[<p>Last Friday, I  joined CodeFest2 which is part of the AddOn Conference.</p>
<p>I decided to create an extension that will display additional information when browsing a Craigslist Housing Ad. The additional information includes displaying the address on a Google Map and listing businesses (restaurants, bars, groceries, and gyms) nearby. You can find my extension, Craigslist Housing Helper <a href="https://chrome.google.com/extensions/detail/abldbnfoccnddpmjljlhepmnnlnpholf">here</a>.</p>
<p>I have never developed a browser extension of any kind before. However, I wasn&#8217;t too intimidated having read that developing Google Chrome Extensions are very easy since it uses Html, Javascript, and CSS.</p>
<p>I started with the tutorial (<a href="http://code.google.com/chrome/extensions/getstarted.html">link</a>). It was very to follow and I literally had an extension running in 2 minutes.</p>
<p>I then proceed to working on my extension. I started with displaying the address of the Craigslist ad on a map. Luckily, one of Google&#8217;s samples, <a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/">Mappy</a>, exactly does that. I only had to tweak the code on how it finds the address.</p>
<p>Next, I used Ajax to access Yelp&#8217;s API. It was a simple javascript call and I was able to use JQuery.</p>
<p>I was able to get my extension running in less than 2 hours. I&#8217;m not sure how easy it would have been if I tried to develop one for Firefox. (Mozilla, however,  will be launching Jetpack soon that would allow developing of extensions using Html, Javascript, and CSS).</p>
<p>Here are some tips based on what I learned while developing my first Chrome Extension:</p>
<ul>
<li>When testing your extension locally, there is no need to reload if you only made changes to the Html pages (e.g. background.html, popup.html). However, you need to reload if you made changes to the Javascript files.</li>
<li>If you have seen an extension that does some functionality of the extension you are developing, you can easily explore their code. Go to chrome://extensions and grab the Id of the extensions. Then go to C:\Users\{ your username }\AppData\Local\Google\Chrome\User Data\Default\Extensions\{ extension id } to browse the code.</li>
</ul>
<p><img class="aligncenter" title="Extension Id" src="http://rookery5.aviary.com/storagev12/2674000/2674064_5397_625x625.jpg" alt="" width="624" height="194" /></p>
<ul>
<li>Use Javascript frameworks. I used JQuery for my extension. JQuery has a number of functions and shortcuts that will help you in development. Same thing with using other frameworks such as Prototype, YUI, etc. You can either download the source, add it to your extension directory  and include it in &#8220;content scripts&#8221; of your manifest.json file. Sample: &#8220;js&#8221;: ["jquery-1.3.2.min.js", "content_script.js"]. Alternatively, you can use Google&#8217;s <a href="http://code.google.com/apis/ajaxlibs/">Ajax Library</a> and make sure you add &#8220;http://www.google.com/*&#8221; in the Permissions section of the Json manifest.</li>
</ul>
<p>The next step for my extension aside from improving its UI is to have it automatically rewrite the Craiglist Ad and have Google Map and Yelp data appear in the same page. I tried it before but I had difficulty making the map work mainly because of the domain and Api Key conflict.</p>
<p>Also, modifying the content of the page is cumbersome since you can only do it on the content_script.js file. However, the <a href="https://chrome.google.com/extensions/detail/mopngoefggcibgpnefgiojkehfmdfcjn">Readibility</a> extension seems to be doing something similar so I&#8217;ll be looking at its code shortly.</p>
<p>Overall, I enjoyed developing Chrome Extensions. Being able to use Html, Javascript, and CSS is a definite plus. Google will expose more of Chrome thorough the API so expect more powerful extensions in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2009/12/14/diving-into-google-chrome-extensions-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Friend Connect &amp; Facebook Connect Code Walk-through</title>
		<link>http://www.dannyroa.com/2009/04/20/google-friend-connect-facebook-connect-code-walk-through/</link>
		<comments>http://www.dannyroa.com/2009/04/20/google-friend-connect-facebook-connect-code-walk-through/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 07:20:45 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[facebookconnect]]></category>
		<category><![CDATA[googleappengine]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.dannyroa.com/?p=140</guid>
		<description><![CDATA[Here is Python code for integrating Google Friend Connect and Facebook Connect authentication to your site. I will be updating this post soon. For the meantime, check the source code. Views.py facebookconnect.py googlefriendconnect.py utils.py index.html login.html]]></description>
			<content:encoded><![CDATA[<p>Here is Python code for integrating Google Friend Connect and Facebook Connect authentication to your site. I will be updating this post soon. For the meantime, check the source code.</p>
<p>Views.py<br />
<script src="http://widgets.clearspring.com/o/49c725b6cdc5aa01/49cfc78fac9244d2/49c725b6cdc5aa01/ba8696ea/-/-/-/id/5001/widget.js" type="text/javascript"></script> facebookconnect.py <script src="http://widgets.clearspring.com/o/49c725b6cdc5aa01/49cfc78fac9244d2/49c725b6cdc5aa01/ba8696ea/-/-/-/id/5002/widget.js" type="text/javascript"></script></p>
<p>googlefriendconnect.py<br />
<script src="http://widgets.clearspring.com/o/49c725b6cdc5aa01/49cfc78fac9244d2/49c725b6cdc5aa01/ba8696ea/-/-/-/id/5003/widget.js" type="text/javascript"></script> utils.py <script src="http://widgets.clearspring.com/o/49c725b6cdc5aa01/49cfc78fac9244d2/49c725b6cdc5aa01/ba8696ea/-/-/-/id/5004/widget.js" type="text/javascript"></script></p>
<p>index.html<br />
<script src="http://widgets.clearspring.com/o/49c725b6cdc5aa01/49cfc78fac9244d2/49c725b6cdc5aa01/ba8696ea/-/-/-/id/5005/widget.js" type="text/javascript"></script> login.html <script src="http://widgets.clearspring.com/o/49c725b6cdc5aa01/49cfc78fac9244d2/49c725b6cdc5aa01/ba8696ea/-/-/-/id/6001/widget.js" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2009/04/20/google-friend-connect-facebook-connect-code-walk-through/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My Startup Weekend Experience (Part 2)</title>
		<link>http://www.dannyroa.com/2009/04/08/my-startup-weekend-experience-part-2/</link>
		<comments>http://www.dannyroa.com/2009/04/08/my-startup-weekend-experience-part-2/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 04:29:58 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[facebookconnect]]></category>
		<category><![CDATA[googleappengine]]></category>
		<category><![CDATA[sanfrancisco]]></category>
		<category><![CDATA[swsf]]></category>
		<category><![CDATA[swsf09]]></category>

		<guid isPermaLink="false">http://blog.dannyroa.com/?p=127</guid>
		<description><![CDATA[Sunday AM and afternoon: I was back to coding at the Microsoft office at around 10am. I looked at our domain and checked to see if it resolves to GAE. Nope, still parked at GoDaddy. I scoured the internets and it seems like most have difficulty getting domains resolve. I was not too confident that [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Sunday AM and afternoon:</strong></p>
<p>I was back to coding at the Microsoft office at around 10am. I looked at our domain and checked to see if it resolves to GAE. Nope, still parked at GoDaddy. I scoured the internets and it seems like most have difficulty getting domains resolve. I was not too confident that the hubb.me domain would work by the time on the demo. I told the rest of the team that there is a possibility that we would use swsf.appspot.com (GAE domain) instead of hubb.me. Fortunately, Alex had some time on his hands and were able to figure it out. Still, we were crossing our fingers that the new nameservers would propagate in time.</p>
<p>As demo time nears, I felt like we won&#8217;t all the functionalities that we all intended to have. We had to make some choices and drop some features. I was very confident that all the main functionalities will finish on time. However, the bells and whistles probably won&#8217;t. I told the team that we&#8217;ll drop all the fancy AJAX and UI stuff and they agreed.</p>
<p>I then proceeded to do our first deployment. This is my favorite feature of GAE. One command line and your code is off to Production. Painless. I had to do some tweaking for our Facebook Connect (FBC) feature though. FBC will only work for a specific domain so I had to set up 2 apps in Facebook: HubbMe (Dev) and HubbMe (Prod). I created a function that would return the Production APIKey and APISecret when it is deployed and use the Dev keys when testing locally.</p>
<p>One difficulty we had with GAE though was test data. Alex, Vaughn, and I separated the development tasks by functionality. Alex was in-charged with the IFrame that displays the links, Vaughn with the Dashboard to see the links you createds, and I was tasked with the add and edit links functionalities. I was fine to go ahead with development. Alex and Vaughh, however, needed some test data for their pages. GAE uses its own database called Big Table which was not easily exportable. My solution was to create a page that generates test data so they can test their code.</p>
<p>I made a number of deployments in the afternoon. I attempted to add more features. However, I ended up breaking the app. I didn&#8217;t want people to see errors during the demo so I decided to stop making major changes on it. Left it stable although I was still making minor tweaks.</p>
<p>I alos checked the domain. It was finally working. Nice!</p>
<p><strong>Demo</strong></p>
<p>About 30 minutes before the demo, the team met up to figure out our presentation. There were some brainstorming on what to include in the demo. We decided to cut down the number of slides and show the app more.</p>
<p>There were about 5 teams before us. The most notable was the Big Ponzi but they didn&#8217;t have a demo available. Then, it was our turn. Anish, Matt, and Vaughn took turns presenting the app and it was over in less than 5 minutes. The app worked app. No errors.</p>
<p>There were 10+ teams after us. My favorite demo of the night was from the Img.gr which allows you to tag photos on Twitter. They still don&#8217;t have a public site and I&#8217;m hoping they would push through with the app.</p>
<p>Dave McClure was not present on demo night. However, throughout the demos, he was consistenly tweeting about the apps (@davemcclure) which was definitely appreciated by everybody.</p>
<p>After the demos, we all headed to Jillians in SoMa and mingled with the other attendees.</p>
<p>I was glad I did Startup Weekend. In my final tweet/Facebook Status for the weekend, I said that it was the most satisfying geek experience of my life. I feel lucky with the team I ended up with. I was able to sit back and just concentrate on coding. I was able to trust that no one would make unilateral decisions to the detriment of the team. More importantly, we were able to deliver a working app &#8211; my main goal in this event. I&#8217;m looking forward to working with them in the near future.</p>
<p>This event has validated even more my decision to move to the Bay Area. People are driven, ambitious, and trying to come up with the next big thing.</p>
<p>Special thanks to Andrew Hyde and Tyler Willis for organizing the event. I can&#8217;t wait for the next one. However, I will approach the next one differently. I will be pitching an idea and recruit people for my team.</p>
<p>Here are some pictures of our team as well as video of the demo:</p>
<div class="wp-caption aligncenter" style="width: 510px"><img title="Whiteboard" src="http://farm4.static.flickr.com/3397/3424245127_f356af6a31.jpg" alt="Our Ideas" width="500" height="375" /><p class="wp-caption-text">Our Ideas</p></div>
<p> </p>
<div class="wp-caption aligncenter" style="width: 510px"><img title="The Hubb.Me team" src="http://farm4.static.flickr.com/3307/3424247599_b33841c200.jpg" alt="The Hubb.Me team (minus Matt)" width="500" height="375" /><p class="wp-caption-text">The Hubb.Me team (minus Matt) L to R: Amin, Eric, Alex, Danny, Anish and Vaughn (sitting down)</p></div>
<div style="text-align: center;"><object width="437" height="347" data="http://www.viddler.com/simple_on_site/a6f294fd" type="application/x-shockwave-flash"><param name="id" value="viddler" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.viddler.com/simple_on_site/a6f294fd" /><param name="name" value="viddler" /><param name="allowfullscreen" value="true" /></object>          </p>
<p>Our demo started on the 28th minute.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2009/04/08/my-startup-weekend-experience-part-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>My Startup Weekend Experience (Part 1)</title>
		<link>http://www.dannyroa.com/2009/04/06/my-startup-weekend-experience-part-1/</link>
		<comments>http://www.dannyroa.com/2009/04/06/my-startup-weekend-experience-part-1/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 05:57:44 +0000</pubDate>
		<dc:creator>dannyr</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[googleappengine]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sanfrancisco]]></category>
		<category><![CDATA[swsf]]></category>
		<category><![CDATA[swsf09]]></category>

		<guid isPermaLink="false">http://blog.dannyroa.com/?p=104</guid>
		<description><![CDATA[The past weekend was my first Startup Weekend.  I was somewhat skeptical if we could give build something good in a weekend. Nevertheless, I was still very excited. My main goal was to deliver a working app by Sunday night. All the actions and decisions I made the whole weekend was influenced mainly by this [...]]]></description>
			<content:encoded><![CDATA[<p>The past weekend was my first Startup Weekend.  I was somewhat skeptical if we could give build something good in a weekend. Nevertheless, I was still very excited.</p>
<p>My main goal was to deliver a working app by Sunday night. All the actions and decisions I made the whole weekend was influenced mainly by this goal.</p>
<p> </p>
<p><strong>Friday Night: The Pitches</strong></p>
<p>The event officially started at 7pm on Friday night. I came to the venue about 30 minutes early and were able to meet a few of the attendees. Andrew Hyde and Tyler Willis welcomed the attendees and talked about the event.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://farm4.static.flickr.com/3386/3415067557_c08bec64b5.jpg" alt="" /><br />
Organizers Andrew Hyde &amp; Tyler Willis. Image courtesy of <a href="http://www.flickr.com/photos/barefootexpeditions/">antoniocapo</a></p>
<p>Then came the pitches!</p>
<p>There were some pitches that caught my attention. Among them were the Ponzi site and Yelp for EULAs. I was going to pitch a Twitter app but decided not to. I just thought that it would be better for me join a team rather than convince other people to join me.</p>
<p style="text-align: left;">I was glad that the VCs gave feedback to the pitches. Dave McClure played Simon Cowell that night and gave an honest assessment of the pitches. Dave told us to present the problem first and then the solution. It was effective and everybody kept that in mind come demo night. It was refreshing to hear Dave&#8217;s comments. As an aspiring web entrepreneur, I have talked to a number of startup founders. I have met Y-Combinator founders through my roommate and also other founders through tech events. We usually play nice to each other when somebody pitches an idea because we don&#8217;t want to put a fellow entrepreneur down.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://farm4.static.flickr.com/3363/3411444514_9f3b07e3c7.jpg" alt="VC Panel" /></p>
<p style="text-align: center;">VC Panel. Image Courtesy of <a href="http://www.flickr.com/photos/kyeung808/">kyeung808</a>.</p>
<p>After the pitches ended, it was time to form teams. I felt like I was in American Idol where contestants form groups for their musical number. I&#8217;m not a social guy so I dread situations like this. Fortunately, the ratio of developers to non-developers favored me. As a developer, I had the luxury of choosing teams I want to join in.</p>
<p>With this advantage, I set three criteria for my ideal app. They are the following:</p>
<ul>
<li>A working app can be developed over the weekend.</li>
<li>The app is not based on a business built before the event.</li>
<li>The app doesn&#8217;t need a lot of content to become usable.</li>
</ul>
<p>Using this criteria, I talked to the people who have made pitches. After half an hour, I didn&#8217;t find one that satisfies all of them. I was hanging around by the pantry and stumbled to a bunch of guys who either didn&#8217;t have a team or doesn&#8217;t have a real team. The idea that was thrown around was an app that is like bit.ly but with analytics for different social networks. I decided to join the group and we discussed the idea. I wasn&#8217;t really too keen on the app because it&#8217;s not something I would use. However, I decided to stick with them because I felt that they are a bunch of smart and level-headed people.</p>
<p>Our team had 2 front-end (Amin and Eric) and 3 backend developers (Vaughn, Alex and me) plus 2 business guys (Matt and Anish). It was 11pm and the venue was closing so we decided to head to Mel&#8217;s diner. we brainstormed a little bit more and went home afterwards.</p>
<p><strong>Saturday AM: Evolution of an Idea</strong></p>
<p>The next day, we met up first thing in the morning to discuss the app. I believed that the app needed some tweaking and I was glad that Eric stepped up and suggested we change it. He suggested to have a service that gives a short url for multiple links. I told him that several services with this functionality exist already.</p>
<p>This is when I started to really enjoy this event. The idea started evolving before our very eyes. Everybody made their own suggestions to make this app different. All had strong opinions but nobody was being overly aggressive in pushing their own idea. Consensus was finally reached. The app will aggregate multiple links into 1 short url and present them as tabs in an iframe at the top of the page.</p>
<p>Then came the technological decisions. The developers all have different skill sets. Alex is a Ruby guy, Vaughn is .Net and I&#8217;m .Net and Python/Django. I suggested that we use the Google App Engine (GAE) platform and they agreed. I was glad about this decision since I love coding in Python. Vaughn and Alex, however, were out of their comfort zone and had to learn Python and GAE fast.</p>
<p>We got down to coding right away. We set up an SVN repository and our development environments. I was impressed at how Alex and Vaughn picked up Python, Django&#8217;s templating engine, and GAE easily. I sat between the two of them while we were coding and answered some questions they have. I have been coding in Python for less than a year so I&#8217;m not really an expert. Fortunately, James from img.gr was sitting next to us and lent his expertise.</p>
<p>At this time, we still did not have a name for the app. I realized that we had to come up with one soon because we need to get a domain name and have it resolved to Google by demo time. We met up and suggested names for app. We were hammering domain web sites to determine if the domain we want is available. Since our app is shortening urls, we had to get a domain name with few letters as possible. We looked at domains that end in &#8216;ph&#8217;, &#8216;it&#8217;, and &#8216;me&#8217;. Again, I really enjoyed this part. We agreed and disagreed on different names but we eventually picked one that we all stood by with. Our app would be called <a title="hubb.me" href="http://www.hubb.me">hubb.me</a>.</p>
<p><strong>Saturday PM: Building the app</strong></p>
<p>From mid-afternoon onwards was building the UI, coding and working on the presentation. We had issues merging our individual code changes but eventually figured out how to split our code. I also had a lot of hiccups trying to get our domain set up on Google Apps. Documentation is not one of Google&#8217;s strength. Their articles on Google App Engine and Google Friend Connect are just insufficient. Their documentation on setting up your domain on Google Apps is no exception. You cannot find Google&#8217;s nameservers anywhere on their site.</p>
<p>We called it a night by 11pm. I was pretty tired and I was glad that I was not the only developer on our team. I felt a little bad though since I heard that other teams didn&#8217;t have any backend developers while our team had three.</p>
<p><em><strong>Part 2 (Crunchtime and Demo Night) coming tomorrow.</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dannyroa.com/2009/04/06/my-startup-weekend-experience-part-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

