<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>Nigel Babu</title>
 
 <link href="http://nigelb.me/" />
 <updated>2013-05-27T16:04:01+00:00</updated>
 <id>http://nigelb.me/</id>
 <author>
   <name>Nigel Babu</name>
   <email>nigelbabu@ubuntu.com</email>
 </author>

 
 <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/nigelbabu" /><feedburner:info uri="nigelbabu" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><entry>
   <title>CIS Anniversary and Encyclopedia of Indian Cinema</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/TCrqxmycFao/2013-05-23-cis-anniversary-and-encyclopedia-of-indian-cinema.html" />
   <updated>2013-05-23T18:35:00+00:00</updated>
   <id>http://nigelb.me/cis-anniversary-and-encyclopedia-of-indian-cinema</id>
   <content type="html">&lt;p&gt;Centre for Internet and Society &lt;a href='http://cis-india.org/internet-governance/events/celebrating-5-years-of-cis'&gt;celebrated&lt;/a&gt; their 5-year anniversary with an exhibition at their Bangalore and Delhi offices and a series of talks in Bangalore. I was there on Tuesday and managed to spend some time at the exhibition and attend the talks.&lt;/p&gt;

&lt;p&gt;The exhibition showed off some of the work that CIS has been doing and the work of several independent artists. The bits that are particularly in my memory is Tara Kelton&amp;#8217;s work as well as Sharath&amp;#8217;s work.&lt;/p&gt;

&lt;p&gt;Later in the day, Lawrence Liang talked about the Encyclopedia of Indian cinema. It was a very interesting talk, especially for me since it encompasses open data, open source software, and copyright issues! A convergence of a lot of my interests :) Lawrence talked about what they&amp;#8217;ve built and the problems they&amp;#8217;ve faced and how internet as a medium for a film encyclopedia is very powerful, but is limited by the legal issues surrounding copyright laws.&lt;/p&gt;

&lt;p&gt;&lt;a href='http://indiancine.ma/'&gt;Indian Cinema&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href='https://wiki.indiancine.ma/'&gt;Indian Cinema Wiki&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On that note, I&amp;#8217;ll close with this video about copyright.&lt;/p&gt;
&lt;iframe src='http://www.youtube.com/embed/tk862BbjWx4' frameborder='0' allowfullscreen='1' height='315' width='560'&gt;&amp;nbsp;&lt;/iframe&gt;
&lt;p&gt;I know Disney is great, but I&amp;#8217;m not sure I like them as much after this video.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/TCrqxmycFao" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2013-05-23-cis-anniversary-and-encyclopedia-of-indian-cinema.html</feedburner:origLink></entry>
 
 <entry>
   <title>My Banking Woes - Part 2</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/9Hxp_MQCoGA/2013-05-17-my-banking-woes-part-2.html" />
   <updated>2013-05-17T01:55:00+00:00</updated>
   <id>http://nigelb.me/my-banking-woes-part-2</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; All the problems I had with the money transfer is now solved!&lt;/p&gt;

&lt;p&gt;So, I&amp;#8217;ve given my employers details to directly transfer money into my account. The money is deposited without needing me to fill up a form. So, I guess they were being all formal when it was sent to their intermediary account.&lt;/p&gt;

&lt;p&gt;Our best guess at this point is that the intermediary bank were missing out on details all the time. And then my bank would have to ask them for more details and then they would send an addendum with the clarification. Meh. Problems solved. Twice I&amp;#8217;ve recieved direct transfers to my account and both times I got at the end of the second working day!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/9Hxp_MQCoGA" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2013-05-17-my-banking-woes-part-2.html</feedburner:origLink></entry>
 
 <entry>
   <title>I May Have an Addiction</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/ok80q1y_t48/2013-05-05-i-may-have-an-addiction.html" />
   <updated>2013-05-05T07:58:00+00:00</updated>
   <id>http://nigelb.me/i-may-have-an-addiction</id>
   <content type="html">&lt;p&gt;I visted Blossoms yesterday, and picked up a few books.&lt;/p&gt;
&lt;div style='text-align: center; padding: 10px 0;'&gt; &lt;img src='http://nigelb.me/img/addiction-books.jpg' alt='Book Addiction' /&gt; &lt;/div&gt;
&lt;p&gt;And that&amp;#8217;s what happens when I go there with money.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/ok80q1y_t48" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2013-05-05-i-may-have-an-addiction.html</feedburner:origLink></entry>
 
 <entry>
   <title>My Banking Woes</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/QT0p-Hd3XZc/2013-03-15-my-banking-woes.html" />
   <updated>2013-03-15T09:00:00+00:00</updated>
   <id>http://nigelb.me/my-banking-woes</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve always had a phobia of banks. They kept making me think of a teacher waiting to punish me because I wrote something wrong in one of their precious forms. When I was younger, I had terrible stage fright, that&amp;#8217;s pretty much what happens to me every time I have to deal with a bank.&lt;/p&gt;

&lt;h2 id='first_payment'&gt;First Payment&lt;/h2&gt;

&lt;p&gt;Ever since I started working at &lt;a href='http://okfn.org'&gt;OKF&lt;/a&gt;, I&amp;#8217;ve had trouble with my bank, Axis Bank. I&amp;#8217;ve received Wire Transfers to my account several times in the past, and never had to do anything. But for some reason this time, I ran into trouble. Axis bank promises &amp;#8221;&lt;a href='http://www.axisbank.com/nri/others/remitance/wire-transfer/wire-transfer.aspx'&gt;Direct Credit to your Axis account in less than 48 hours&lt;/a&gt;&amp;#8221; . I&amp;#8217;m, of course, willing to give a leeway of 48 hours more. But the last for 3 times, it&amp;#8217;s taken 12 days. Transfers are made out on 10th every month and I receive them on 22nd. This was true for both December and January.&lt;/p&gt;

&lt;p&gt;The first payment at OKF wasn&amp;#8217;t released into my account until I called the call center about 2 to 3 times and logged a complaint. Finally, I was told to contact my branch, who redirected me to the Forex Department. After being transferred around since nobody was sure who was the right person, explaining the entire problem, I finally got transfered to the right person. As soon as I told him my name, he started with &amp;#8220;We&amp;#8217;ve been trying to contact you.&amp;#8221; This was just surprising and out of the blue. My bank has my phone number, email, and home address. How the hell did they try to contact me? &lt;a href='http://camphalfblood.wikia.com/wiki/Iris_Message'&gt;Iris Messages&lt;/a&gt;? Because, I definitely didn&amp;#8217;t get a call, an email, or a letter. I went to the bank because they wanted me to fill up a form. He turned out to be the Deputy Manager in the Forex Department and insisted that the form had to be filled in original and they wanted a copy of my invoice before they released my money. I don&amp;#8217;t know if this is what they call &lt;a href='http://en.wikipedia.org/wiki/Stockholm_syndrome'&gt;Stockholm Syndrome&lt;/a&gt;, but I played along in November, December, and January because there were other things happening in my life that didn&amp;#8217;t allow me to change banks.&lt;/p&gt;
&lt;div style='text-align: center; padding: 10px 0;'&gt; &lt;img src='http://nigelb.me/img/headdesk.gif' alt='That&amp;apos;s me, when I have to deal with this mess' /&gt; &lt;/div&gt;
&lt;h2 id='march_incident'&gt;March Incident&lt;/h2&gt;

&lt;p&gt;A payment was made into my account on the March 1, 2013. Today is March 15, 2013. I went to the bank on Wednesday, the 13th, to fill up the form, assuming my money would be released then. Except it wasn&amp;#8217;t. It&amp;#8217;s been 2 full weeks, how are you guys dealing with wire transfers? With carrier pigeons? Because they&amp;#8217;d be faster. I&amp;#8217;ve checked with my other colleague in India, and he definitely gets the money faster than me. It takes 7 days for him, which is the max he&amp;#8217;s seen. I&amp;#8217;ve never seen money come into my account any faster than 10 days.&lt;/p&gt;

&lt;h2 id='and_in_conclusion'&gt;And In Conclusion&lt;/h2&gt;

&lt;p&gt;I can imagine some of this is part of RBI&amp;#8217;s strict control about foreign currency and all that. But seriously? This is just hurting those of us who deal with international transfers on a regular basis for completely legal reasons. First step, I&amp;#8217;m going to change banks. As soon as I receive the money for this month, I&amp;#8217;m going to walk into an SBI branch and open an account. I&amp;#8217;ve talked to a bunch of people and least troublesome bank so far seems to be SBI. And It also helps that they give the best exchange rate. And this morning I&amp;#8217;ve been greeting &lt;a href='http://www.indianexpress.com/news/cobrapost-sting-hdfc-bank-icici-bank-axis-bank-in-moneylaundering-net-rbi-probes/1088071/0'&gt;ironic news&lt;/a&gt; of Axis, HDFC, and ICICI are being alleged to be assisting with money laundering. I almost thought that was from Faking News.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: This post was written in extreme anger. I may end up withdrawing it later, but hell, I had to write it and get it off my chest.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/QT0p-Hd3XZc" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2013-03-15-my-banking-woes.html</feedburner:origLink></entry>
 
 <entry>
   <title>Hello Kobo!</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/TYzK4gGopSU/2013-03-04-hello-kobo.html" />
   <updated>2013-03-04T02:35:00+00:00</updated>
   <id>http://nigelb.me/hello-kobo</id>
   <content type="html">&lt;p&gt;I was in the UK for 3 weeks recently, and I &amp;#8220;made the mistake&amp;#8221; of walking into a WHSmith bookstore. I still haven&amp;#8217;t built up the necessary self-control to walk into a bookstore and walk out without buying a book. In this instance though, I actually did walk out without buying a book. Instead, I bought a &lt;a href='http://www.whsmith.co.uk/eReaders/KoboToucheReader.aspx'&gt;KoboTouch&lt;/a&gt;. I really had no intention of buying one when I walked into the store, I was only going to look at it. Eventually, though, a combination of a really friendly sales person, reasonable pricing, and common sense won out; and I walked out with the KoboTouch, a case, and a light. Common sense, because I&amp;#8217;ve almost run out of space for physical books. It&amp;#8217;s been a little over 3 weeks since I&amp;#8217;ve bought the Kobo and I&amp;#8217;ve read for a total of about 60 hours and finished 9 books. I think I might have a problem :P&lt;/p&gt;
&lt;div style='text-align: center; padding: 10px 0;'&gt; &lt;img src='http://nigelb.me/img/kobo.jpg' alt='Kobo Touch' /&gt; &lt;/div&gt;
&lt;p&gt;I downloaded a few books from &lt;a href='http://www.gutenberg.org/'&gt;Project Gutenburg&lt;/a&gt;, mostly classics, that I wanted to re-read. I hate to admit it, but I ended up pirating a few books too because, some of the books were simply priced too high . I could buy it from Amazon for a cheaper price, but they would be DRM&amp;#8217;d. While music is most available to be bought DRM-free, ebooks aren&amp;#8217;t there yet. How I wish I could I could compare prices on multiple providers and buy from the one that has the cheapest. I &lt;em&gt;think&lt;/em&gt; I can buy books from any provider that sells epubs with Adobe DRM, but I&amp;#8217;m yet to risk it. I&amp;#8217;m sure over the next few months, I&amp;#8217;ll buy at least one book each month. Definitely more often than I used to before I owned the Kobo since buying is so easy.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/TYzK4gGopSU" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2013-03-04-hello-kobo.html</feedburner:origLink></entry>
 
 <entry>
   <title>Mozcamp - Day 0</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/O9yv8cIgZh0/2012-11-16-mozcamp-day-0.html" />
   <updated>2012-11-16T16:22:00+00:00</updated>
   <id>http://nigelb.me/mozcamp-day-0</id>
   <content type="html">&lt;p&gt;Hello from Mozcamp Asia! I&amp;#8217;ve just gotten back from the welcome event at Mozcamp. It&amp;#8217;s been great to meet friends I&amp;#8217;ve talked to on IRC or met at last year&amp;#8217;s Mozcamp, and make new friends who&amp;#8217;re at this year&amp;#8217;s Mozcamp!&lt;/p&gt;

&lt;p&gt;I was at &lt;a href='http://singapore.the-hub.net/'&gt;The Hub&lt;/a&gt; today morning after checking-in at the V-Hotel. Top priority today was setting up B2G on my laptop. I messed around with it for &lt;em&gt;hours&lt;/em&gt; to finally learn, to great frustration and disappointment, that B2G on the linux desktop doesn&amp;#8217;t work on Ubuntu 10.04. I know I can upgrade, but I really don&amp;#8217;t want to do that in the middle of a conference. Well, looks like I&amp;#8217;m not going to accomplish that Mozcamp Mission until I get home :(&lt;/p&gt;

&lt;p&gt;Later, I was at the Scape, which is the venue for keynotes and a bunch of us had volunteered to help organize the swag bags. It was great to work with Mozillians and do small things to help with the event :) I was going to head over to The Hub right afterward, but then it started raining quite heavily! Of course, it&amp;#8217;s Singapore! We&amp;#8217;re going to hit this problem quite a few times over the next few days, it should be absolutely fun! (Although, I hope nobody falls sick). I went right back in and had a long and interesting chat with Mike Connor and Harold about Social API.&lt;/p&gt;

&lt;p&gt;At 7, we had the Mozcamp registration and welcome party &amp;#8211; an absolutely fabulous time that involved meeting lots of people, eating good food, meeting my Mozcamp buddy (Amy Tsay!), and of course, the country fair. The country fair was a great way to chat with everyone and kind of get semi-familiar about names to faces. Unforgettable moment of the day: Watching &lt;a href='http://www.youtube.com/watch?v=9LK3V_NH-h0'&gt;Foxeh and Mozillians dance&lt;/a&gt; to Gangam style.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: I&amp;#8217;m trying to write a blog entry for every day of Mozcamp. I may or may not be able to pull this off, but I&amp;#8217;m definitely going to be trying!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/O9yv8cIgZh0" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-11-16-mozcamp-day-0.html</feedburner:origLink></entry>
 
 <entry>
   <title>A Month of Being a Remotee</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/quM6VNxuOxA/2012-11-12-a-month-of-being-a-remotee.html" />
   <updated>2012-11-12T02:52:00+00:00</updated>
   <id>http://nigelb.me/a-month-of-being-a-remotee</id>
   <content type="html">&lt;p&gt;Since October, I&amp;#8217;ve been a remote employee, working for the &lt;a href='http://okfn.org'&gt;The Open Knowledge Foundtion&lt;/a&gt;. I was nervous about being a remotee and I talked to a lot of my friends who&amp;#8217;re remotees at Mozilla. Shout out to ashish, fox2mike, glob, and Unfocused for helping me out. I also enjoyed reading about people who wrote what their team did, particularly, RelEng at Mozilla, shout out to you guys as well! Also, &lt;a href='http://theoatmeal.com/comics/working_home'&gt;The Oatmeal&lt;/a&gt; was right! Although, ironically, I&amp;#8217;ve started to wake up unnaturally early &lt;em&gt;after&lt;/em&gt; being a remote employee :P&lt;/p&gt;

&lt;p&gt;The biggest fear about working from home were the distractions The most important distraction-killer is a time tracker. We use &lt;a href='https://www.toggl.com/'&gt;toggl&lt;/a&gt; for timesheeting anyway, and turning off the time tracker when I&amp;#8217;m distracted helps. After a few times of doing that, I automatically stop myself when I&amp;#8217;m getting distracted. I keep two Firefox profiles, one for work and one for everything else. While I&amp;#8217;m working, the non-work profile is closed, so I can&amp;#8217;t get distracted. I reward myself with time to look at it when I finish 2 hours of work and take a short break.&lt;/p&gt;

&lt;p&gt;Having good communication channels is great since we&amp;#8217;re distributed. Every day, our team gets on a stand up call. It&amp;#8217;s great to actually hear everyone talk about their and ask for help from the team if they&amp;#8217;re stuck. We also have a Campfire chat room and an IRC channel (&lt;a href='irc://irc.freenode.net/#okfn'&gt;#okfn on irc.freenode.net&lt;/a&gt;); they keep me sane. Seriously. Speaking of sanity, on some days, the Campfire room is just a world of gifs, we&amp;#8217;re awesome like that. There&amp;#8217;s also the weekly &lt;a href='http://notebook.okfn.org/'&gt;notebook&lt;/a&gt; posts to keep track of what folks in other teams do.&lt;/p&gt;

&lt;p&gt;Time&amp;#8217;s flown by so fast; 10 days ago, I finished a month here! It&amp;#8217;s been a fun and busy time!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: If you want to work with me at OKFN, we&amp;#8217;re &lt;a href='http://okfn.org/jobs/'&gt;hiring&lt;/a&gt; for a bunch of positions!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/quM6VNxuOxA" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-11-12-a-month-of-being-a-remotee.html</feedburner:origLink></entry>
 
 <entry>
   <title>The Migration - Part I: Database</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/oEoR8VDZ0yM/2012-10-21-the-migration-part-1-database.html" />
   <updated>2012-10-21T09:05:01+00:00</updated>
   <id>http://nigelb.me/the-migration-part-1-database</id>
   <content type="html">&lt;p&gt;This is a series of posts on migration from Apache and MySQL to Nginx+uwsgi and PostgreSQL. In this post, I&amp;#8217;ll be detailing the steps we took to migrate the database from MySQL to PostgreSQL, with as little downtime as possible. Please leave a comment if you have suggestions!&lt;/p&gt;

&lt;h3 id='onetime_premigration_steps'&gt;One-time Pre-migration Steps&lt;/h3&gt;

&lt;h4 id='utf8'&gt;UTF-8&lt;/h4&gt;

&lt;p&gt;The default encoding on PostgreSQL is SQL_ASCII and you probably want UTF-8. If you don&amp;#8217;t know what you want, you want UTF-8 (trust me). The easiest way was to &lt;a href='http://jacobian.org/writing/pg-encoding-ubuntu/'&gt;blow away the default cluster and re-create it&lt;/a&gt; (Thanks jacobian!)&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;sudo pg_dropcluster --stop 9.1 main
sudo pg_createcluster --start -e UTF-8 9.1 main
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id='make_postgresql_listen_on_all_interfaces'&gt;Make PostgreSQL listen on all interfaces&lt;/h4&gt;

&lt;p&gt;Edit &lt;code&gt;/etc/postgresql/9.1/main/postgresql.conf&lt;/code&gt; and ensure PostgreSQL is listening on all interfaces.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='text'&gt;listen_addresses = &amp;#39;0.0.0.0&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id='allow_access_to_postgresql_from_the_old_server'&gt;Allow access to PostgreSQL from the old server&lt;/h4&gt;

&lt;p&gt;Edit &lt;code&gt;/etc/postgresql/9.1/main/pg_hba.conf&lt;/code&gt; and add an entry for the old server (where 123.123.123.123 is the IP address of the old server).&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='text'&gt;host    all             all             123.123.123.123/32       md5
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h4 id='install_client_libraries_on_the_old_server'&gt;Install client libraries on the old server&lt;/h4&gt;

&lt;p&gt;We use sqlalchemy for db access and I had to do &lt;code&gt;apt-get install python-psycopg2&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id='creating_users_and_databases'&gt;Creating Users and Databases&lt;/h4&gt;

&lt;p&gt;Our process is to create a user for each app and have that app&amp;#8217;s database be owned by this user, here&amp;#8217;s a script that automated creating the user and database.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;&lt;span class='c'&gt;#!/bin/bash&lt;/span&gt;
sudo -u postgres createuser -d -R -S &lt;span class='nv'&gt;$1&lt;/span&gt;
sudo -u postgres createdb &lt;span class='nv'&gt;$1&lt;/span&gt; -O &lt;span class='nv'&gt;$1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style='text-align: center; padding: 10px 0;'&gt;
&lt;a href='http://www.flickr.com/photos/noodlefish/864841518/'&gt;
&lt;img src='http://nigelb.me/img/migration.jpg' alt='Migration.jpg by Noodlefish on Flickr' /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;h3 id='the_move'&gt;The move&lt;/h3&gt;

&lt;h4 id='import_preparation'&gt;Import Preparation&lt;/h4&gt;

&lt;p&gt;Create user and database on the new server with the script above. Remember to set a password for this new user.&lt;/p&gt;

&lt;h4 id='exporting'&gt;Exporting&lt;/h4&gt;

&lt;p&gt;The most worrisome bit about the whole migration was exporting the data from MySQL and importing it into PostgreSQL. We used &lt;a href='https://github.com/maxlapshin/mysql2postgres/'&gt;mysql2psql&lt;/a&gt; and it didn&amp;#8217;t give a lot of troubles except for the bit where floats got a little messed up. My personal recommendation is to not use &lt;code&gt;real&lt;/code&gt;, but use &lt;code&gt;numeric(7,4)&lt;/code&gt; with the accuracy adjusted for what you need (this particular definition is used for our lat/long definitions.&lt;/p&gt;

&lt;p&gt;First, run &lt;code&gt;mysql2psql&lt;/code&gt; on your command line, this will create the config file.&lt;/p&gt;

&lt;p&gt;Now edit the &lt;code&gt;mysql2psql.yml&lt;/code&gt; file and add your appropriate entries. Here&amp;#8217;s what ours looked like&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='yaml'&gt;&lt;span class='l-Scalar-Plain'&gt;mysql&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt;
 &lt;span class='l-Scalar-Plain'&gt;hostname&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;localhost&lt;/span&gt;
 &lt;span class='l-Scalar-Plain'&gt;port&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;3306&lt;/span&gt;
 &lt;span class='l-Scalar-Plain'&gt;socket&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;/var/run/mysqld/mysqld.sock&lt;/span&gt;
 &lt;span class='l-Scalar-Plain'&gt;username&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;mysuperuser&lt;/span&gt;
 &lt;span class='l-Scalar-Plain'&gt;password&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;mypassword&lt;/span&gt;
 &lt;span class='l-Scalar-Plain'&gt;database&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;mydb&lt;/span&gt;

&lt;span class='l-Scalar-Plain'&gt;destination&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt;
 &lt;span class='c1'&gt;# if file is given, output goes to file, else postgres&lt;/span&gt;
 &lt;span class='l-Scalar-Plain'&gt;file&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;mydb.sql&lt;/span&gt;
 &lt;span class='l-Scalar-Plain'&gt;postgres&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt;
  &lt;span class='l-Scalar-Plain'&gt;hostname&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;localhost&lt;/span&gt;
  &lt;span class='l-Scalar-Plain'&gt;port&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;5432&lt;/span&gt;
  &lt;span class='l-Scalar-Plain'&gt;username&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;mysql2psql&lt;/span&gt;
  &lt;span class='l-Scalar-Plain'&gt;password&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt;
  &lt;span class='l-Scalar-Plain'&gt;database&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;mysql2psql_test&lt;/span&gt;

&lt;span class='c1'&gt;# if tables is given, only the listed tables will be converted.  leave empty to convert all tables.&lt;/span&gt;
&lt;span class='c1'&gt;#tables:&lt;/span&gt;
&lt;span class='c1'&gt;#- table1&lt;/span&gt;
&lt;span class='c1'&gt;#- table2&lt;/span&gt;
&lt;span class='c1'&gt;# if exclude_tables is given, exclude the listed tables from the conversion.&lt;/span&gt;
&lt;span class='c1'&gt;#exclude_tables:&lt;/span&gt;
&lt;span class='c1'&gt;#- table3&lt;/span&gt;
&lt;span class='c1'&gt;#- table4&lt;/span&gt;


&lt;span class='c1'&gt;# if supress_data is true, only the schema definition will be exported/migrated, and not the data&lt;/span&gt;
&lt;span class='l-Scalar-Plain'&gt;supress_data&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;false&lt;/span&gt;

&lt;span class='c1'&gt;# if supress_ddl is true, only the data will be exported/imported, and not the schema&lt;/span&gt;
&lt;span class='l-Scalar-Plain'&gt;supress_ddl&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;false&lt;/span&gt;

&lt;span class='c1'&gt;# if force_truncate is true, forces a table truncate before table loading&lt;/span&gt;
&lt;span class='l-Scalar-Plain'&gt;force_truncate&lt;/span&gt;&lt;span class='p-Indicator'&gt;:&lt;/span&gt; &lt;span class='l-Scalar-Plain'&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;When you run &lt;code&gt;psql2mysql&lt;/code&gt; again, it will export the database &lt;code&gt;mydb&lt;/code&gt; into &lt;code&gt;mydb.sql&lt;/code&gt;. Before we did that, we removed this particular site from /etc/apache2/sites-enabled and restarted apache. We didn&amp;#8217;t want the sql file to go stale as soon as it was exported. This is where the downtime starts&lt;/p&gt;

&lt;h4 id='importing'&gt;Importing&lt;/h4&gt;

&lt;p&gt;Copy the file over to the new server and import it into PostgreSQL with psql.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='bash'&gt;sudo -u mydb psql mydb &amp;lt; mydb.sql
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In retrospect, I should have just imported it directly with &lt;code&gt;mysql2psql&lt;/code&gt;. I was initially hesitant because it involved creating a user that could access that machine from outside. But I later realized I needed it anyway.&lt;/p&gt;

&lt;h3 id='go_live'&gt;Go live!&lt;/h3&gt;

&lt;p&gt;Now change the settings on the old server to use the postgres database as the backend, enable the site in Apache and you&amp;#8217;re all set to serve this site from PostgreSQL!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/oEoR8VDZ0yM" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-10-21-the-migration-part-1-database.html</feedburner:origLink></entry>
 
 <entry>
   <title>Moving On</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/W37l_AjS8VU/2012-09-17-moving-on.html" />
   <updated>2012-09-17T15:00:00+00:00</updated>
   <id>http://nigelb.me/moving-on</id>
   <content type="html">&lt;p&gt;It&amp;#8217;s been about 10 months since I&amp;#8217;ve started working at &lt;a href='http://hasgeek.com'&gt;HasGeek&lt;/a&gt; and it&amp;#8217;s been an amazing few months. I&amp;#8217;ve been part of 4 amazing conferences, a workshop, and a bunch of &lt;a href='http://geekup.in'&gt;Geekups&lt;/a&gt;. Among other things, I&amp;#8217;ve &lt;a href='http://github.com/hasgeek'&gt;written code&lt;/a&gt;, &lt;a href='http://rootconf.in'&gt;organized content&lt;/a&gt;, and &lt;a href='http://youtube.com/user/hasgeek'&gt;edited videos&lt;/a&gt;. It&amp;#8217;s probably the most intense job I&amp;#8217;ve ever had.&lt;/p&gt;
&lt;div style='text-align: center; padding: 10px 0;'&gt;
&lt;a href='http://www.flickr.com/photos/chumpolo/2425541572/'&gt;
&lt;img src='http://nigelb.me/img/road.jpg' alt='Bow Valley Parkway Ice Road by Matt Seppings on Flickr' /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;When I joined HasGeek last year, I&amp;#8217;d committed for a minimum of 6 months. After 10 months at HasGeek, I&amp;#8217;m moving on. I&amp;#8217;m very exicted to announce that starting Oct 2, I&amp;#8217;ll be working for the &lt;a href='http://okfn.org'&gt;Open Knowledge Foundation&lt;/a&gt; a Data Wrangler and Web Developer! I&amp;#8217;m very excited and looking forward to working with the amazing folks at OKFN. As &lt;a href='https://twitter.com/sunil_abraham'&gt;Sunil&lt;/a&gt; pointed out, I&amp;#8217;m now in the non-profit sector :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/W37l_AjS8VU" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-09-17-moving-on.html</feedburner:origLink></entry>
 
 <entry>
   <title>The Making of the Equivalent Salary Calculator</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/YJw8WRxrUxY/2012-08-31-the-making-of-equivalent-salary-calculator.html" />
   <updated>2012-08-31T09:30:00+00:00</updated>
   <id>http://nigelb.me/the-making-of-equivalent-salary-calculator</id>
   <content type="html">&lt;p&gt;I spoke to Rufus Pollock from &lt;a href='http://okfn.org'&gt;OKFN&lt;/a&gt; a week ago and he encouraged me to try one of the &lt;a href='http://wiki.okfn.org/Get_The_Data_Challenge'&gt;Get the Data challenges&lt;/a&gt;. I decided to build the &lt;a href='http://salaryconverter.nigelb.me/'&gt;equivalent salary converter&lt;/a&gt; since I&amp;#8217;d always been curious to have some way to equivalent salary based on cost of living.&lt;/p&gt;

&lt;h2 id='whats_the_data_i_need'&gt;What&amp;#8217;s the data I need?&lt;/h2&gt;

&lt;p&gt;The first challenge was to understand what data I needed to solve this problem. I spent a few hours reading the Wikipedia page for &lt;a href='http://en.wikipedia.org/wiki/Purchasing_power_parity'&gt;Purchasing Power Parity&lt;/a&gt; . As someone who hated originally Economics, it took me a while to make some sense of all this. I further branched to reading about the Big Mac Index and &lt;a href='http://en.wikipedia.org/wiki/Geary-Khamis_dollar'&gt;Geary-Khamis dollar&lt;/a&gt;, among others.&lt;/p&gt;

&lt;h2 id='finding_the_data'&gt;Finding the Data!&lt;/h2&gt;

&lt;p&gt;Since the original challenge itself is called &amp;#8220;Get the Data Challenge&amp;#8221;, I&amp;#8217;ll honestly admit that this was perhaps the most challenging of all the tasks in building this application (XML parsing finished a close second :P). The Wikipedia article on Purchasing Power Parity has links to several data sources, which was a cause for great joy until I discovered all of them lead to 404s. I went through &lt;a href='https://finances.worldbank.org/page/datasets'&gt;some parts of the World Bank data&lt;/a&gt; and looked at the &lt;a href='http://data.un.org/'&gt;UN Data&lt;/a&gt; website. I was stuck at not knowing what exactly I was looking for.&lt;/p&gt;

&lt;p&gt;At some point, as I was going through &lt;a href='http://data.worldbank.org/'&gt;another part of the World Bank data site&lt;/a&gt;, I saw something about indicators and decided to poke at it. At one point, I even wondered if I should give up and pick some of the other interesting data available like &lt;a href='http://data.worldbank.org/indicator/SH.MED.PHYS.ZS'&gt;Physicians per 1000&lt;/a&gt;. Finally, I stumbled upon the &lt;a href='http://data.worldbank.org/indicator/PA.NUS.PRVT.PP'&gt;PPP conversion factor&lt;/a&gt; data. I didn&amp;#8217;t realize this was the data I needed until a little while later. For someone like me, who&amp;#8217;s unfamiliar with the words involved, it&amp;#8217;s not easy even recognizing that I&amp;#8217;ve found what I was looking for. I exported the data from the World Bank website and decided to have a go at parsing it.&lt;/p&gt;

&lt;h2 id='parsing_the_data_aka_xml_hell'&gt;Parsing the data a.k.a. XML Hell&lt;/h2&gt;

&lt;p&gt;76756 lines of XML?! It send shivers down my spine when I first opened the file. I started off with the lxml module to parse the data. It took me several hours of reading the documentation, and trial and error to get a hang of the API. I raced to write down a quick python script to take all the data from the XML and give me a CSV with data that I wanted. The original XML had much more data than I wanted. &lt;a href='https://github.com/nigelbabu/pppconverter/blob/master/parsexml.py'&gt;The script&lt;/a&gt; and &lt;a href='https://github.com/nigelbabu/pppconverter/blob/master/data.csv'&gt;CSV output of the script&lt;/a&gt; are both on GitHub if you&amp;#8217;d like to look. I suspect if you&amp;#8217;d like to play with another World Bank dataset, this script might give you a starting point. In retrospect, importing the data directly into &lt;a href='http://explorer.datahub.io/'&gt;Recline DataHub&lt;/a&gt; might have been a good idea.&lt;/p&gt;

&lt;h2 id='writing_the_app'&gt;Writing the App&lt;/h2&gt;

&lt;p&gt;I strongly believe in MVP when I build an application. My MVP when starting was getting a form working which would let me select a country of origin and a target country and it would calculate the salary for that country. This is what the app can currently do. The original challenge involved showing a map and clicking on a point in the map would show the equivalent salary for that country. I&amp;#8217;m very glad that I decided on an easier to achieve MVP or else I&amp;#8217;d have nothing to show right now. The UI is built on Zurb Foundation and the minimal backend is written in Flask. The first iteration of the app didn&amp;#8217;t use client-side Javascript to do the calculation, the form was POSTed to the server for every calculation. Later, I wrote that logic in JavaScript and it falls back to server side for folks with JavaScript disabled.&lt;/p&gt;

&lt;p&gt;Over the next 2 weeks, I&amp;#8217;d like to try and get a map based on &lt;a href='http://kartograph.org/'&gt;kartograph&lt;/a&gt; working on the website. I got as far as being able to display the map, however, I couldn&amp;#8217;t get click events to fire and I&amp;#8217;m trying to figure out what&amp;#8217;s wrong (Side Note: If you have any advice related to events on kartograph maps, please leave a comment or catch me on twitter/IRC). If I have enough time, I&amp;#8217;d like to convert equivalent salary to dollars based on the day&amp;#8217;s exchange rate and add a choropleth map to show which country would give the highest equivalent salary normalized to USD based on the day&amp;#8217;s exchange rate (The current results are in local currency units). That&amp;#8217;s much more complicated and it&amp;#8217;s a stretch goal.&lt;/p&gt;

&lt;h2 id='the_data_isnt_perfect_though'&gt;The data isn&amp;#8217;t perfect though&lt;/h2&gt;

&lt;p&gt;After all this, I&amp;#8217;ll have to add that the data isn&amp;#8217;t perfect. The data I currently have is country-level Purchasing Power Parity conversion factor, but having lived in two cities in India, I know that it varies between cities too.&lt;/p&gt;

&lt;p&gt;Overall, I&amp;#8217;d have to say this was a fun experience and highly educational :-)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/YJw8WRxrUxY" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-08-31-the-making-of-equivalent-salary-calculator.html</feedburner:origLink></entry>
 
 <entry>
   <title>Building the Mozalien</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/G6q0QJ1_GfM/2012-08-16-building-the-mozalien.html" />
   <updated>2012-08-16T03:05:00+00:00</updated>
   <id>http://nigelb.me/building-the-mozalien</id>
   <content type="html">&lt;p&gt;We all love &lt;a href='http://mozillamemes.tumblr.com'&gt;Mozilla Memes&lt;/a&gt;, and there&amp;#8217;s some of us who like Reddit. Beltzner started &lt;a href='http://www.reddit.com/r/mozillamemes/'&gt;r/MozillaMemes&lt;/a&gt; a while back and it was kind of painful to manually post each post onto Reddit for upvotes and discussion. It was painful enough, that we stopped doing that after some time. A few weekends ago, I had some free time and I wanted to write something interesting. That&amp;#8217;s when I came up with &lt;a href='http://github.com/nigelbabu/mozalien'&gt;mozalien&lt;/a&gt;.&lt;/p&gt;
&lt;div style='text-align: center; padding: 10px 0;'&gt;
&lt;a href='http://mozillamemes.tumblr.com/post/28145053527/https-bugzilla-mozilla-org-page-cgi-id-splinter-h/'&gt;
&lt;img src='/img/mozilla-meme.png' alt='I herd you liek Makefiles' /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Mozalien is a bot that looks at RSS feed, and posts new posts to a given subreddit. Thanks to authors of &lt;a href='https://github.com/praw-dev/praw'&gt;python client libraries for Reddit&lt;/a&gt;, it even obeys the Reddit rate-limiting rules! I&amp;#8217;ll be running it everyday locally to post updates to r/MozillaMemes. It&amp;#8217;s still not perfect, for instance, everything posted with mozalien seems to going into the moderation queue and I&amp;#8217;m having to clear it manually (that&amp;#8217;s still easier that posting the URL to Reddit manually, so I&amp;#8217;m going to bear with it for a bit). Suggestions/Patches welcome!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/G6q0QJ1_GfM" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-08-16-building-the-mozalien.html</feedburner:origLink></entry>
 
 <entry>
   <title>Have you fallen prey to misconfiguring Nginx?</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/avLTZwdANns/2012-08-08-have-you-misconfigured-nginx.html" />
   <updated>2012-08-08T12:25:00+00:00</updated>
   <id>http://nigelb.me/have-you-misconfigured-nginx</id>
   <content type="html">&lt;p&gt;Ever googled for Nginx configuration? For example, how to redirect &lt;a href='http://www.example.com'&gt;http://www.example.com&lt;/a&gt; to &lt;a href='http://example.com'&gt;http://example.com&lt;/a&gt;? I have, and guess what, most of the top results are wrong or inefficient. All of these are documented in &lt;a href='http://wiki.nginx.org/Pitfalls'&gt;a Pitfalls page on the Nginx wiki&lt;/a&gt;. I&amp;#8217;m just going to point out the parts of my config I&amp;#8217;ve optimized recently with great help from the Nginx wiki.&lt;/p&gt;
&lt;div style='text-align: center; padding: 10px 0;'&gt;
&lt;a href='http://wiki.nginx.org/Pitfalls'&gt;
&lt;img src='http://nigelb.me/img/nginx-sudden-clarity.jpg' alt='Nginx Configuration - The top Google results are wrong or inefficient!' style='float:none;' /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;h3 id='redirect_from_www_to_nonwww'&gt;Redirect from www to non-www&lt;/h3&gt;

&lt;p&gt;Nginx wiki recommends using &lt;a href='http://wiki.nginx.org/NginxHttpRewriteModule#return'&gt;return&lt;/a&gt;, but the version in Ubuntu 10.04 doesn&amp;#8217;t seem to support it, so I use this:&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='nginx'&gt;&lt;span class='k'&gt;rewrite&lt;/span&gt; &lt;span class='s'&gt;^&lt;/span&gt; &lt;span class='s'&gt;http://nigelb.me&lt;/span&gt;&lt;span class='nv'&gt;$request_uri?&lt;/span&gt; &lt;span class='s'&gt;permanent&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id='static_files'&gt;Static files&lt;/h3&gt;

&lt;p&gt;Set the Expires and Cache-Control headers with the &lt;a href='http://wiki.nginx.org/NginxHttpHeadersModule#expires'&gt;expires&lt;/a&gt; header. Another thing I do is turn off access log for static files.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='nginx'&gt;&lt;span class='k'&gt;location&lt;/span&gt; &lt;span class='p'&gt;~&lt;/span&gt; &lt;span class='sr'&gt;^/(img|js|css)/&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
        &lt;span class='kn'&gt;expires&lt;/span&gt; &lt;span class='s'&gt;30d&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
        &lt;span class='kn'&gt;access_log&lt;/span&gt; &lt;span class='no'&gt;off&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id='running_php_with_nginx'&gt;Running PHP with Nginx&lt;/h3&gt;

&lt;p&gt;Most PHP applications only have an index.php file that needs to be executed, everything else is usually an include.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='nginx'&gt;&lt;span class='k'&gt;location&lt;/span&gt; &lt;span class='p'&gt;~&lt;/span&gt; &lt;span class='sr'&gt;index.php$&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
        &lt;span class='kn'&gt;include&lt;/span&gt; &lt;span class='s'&gt;fastcgi_params&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
        &lt;span class='kn'&gt;fastcgi_pass&lt;/span&gt;    &lt;span class='s'&gt;unix:/tmp/php.socket&lt;/span&gt;&lt;span class='p'&gt;;&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Remember to place your &lt;a href='http://wiki.nginx.org/NginxHttpCoreModule#root'&gt;root&lt;/a&gt; directive outside any location block. Then, you can add another route for static files, just so that Nginx can serve them instead of that request going to PHP.&lt;/p&gt;
&lt;div class='highlight'&gt;&lt;pre&gt;&lt;code class='nginx'&gt;&lt;span class='k'&gt;location&lt;/span&gt; &lt;span class='s'&gt;^~&lt;/span&gt; &lt;span class='s'&gt;/pub/&lt;/span&gt; &lt;span class='p'&gt;{&lt;/span&gt;
&lt;span class='p'&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;By no means are these meant to be authoritative, and newer versions of Nginx lets you use &lt;a href='
http://wiki.nginx.org/NginxHttpCoreModule#try_files'&gt;try_files&lt;/a&gt; instead of some of what I&amp;#8217;ve done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR: Use the &lt;a href='http://wiki.nginx.org/Main'&gt;Nginx Wiki&lt;/a&gt;. RTFM.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href='http://princessleia.com/'&gt;Lyz&lt;/a&gt; pointed out that the default config file that come with the CentOS packages on the Nginx website put root inside the location block instead of outside. She&amp;#8217;s just helped me verify that and I verified the same problem with the Ubuntu packages from the Nginx website.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/avLTZwdANns" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-08-08-have-you-misconfigured-nginx.html</feedburner:origLink></entry>
 
 <entry>
   <title>Screwups are important</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/91-OLD8IrOI/2012-08-02-screwups-are-important.html" />
   <updated>2012-08-02T02:58:00+00:00</updated>
   <id>http://nigelb.me/screwups-are-important</id>
   <content type="html">&lt;p&gt;At my &lt;a href='http://hasgeek.com'&gt;day job&lt;/a&gt;, one of the tasks that &lt;a href='https://twitter.com/#!/jackerhack'&gt;Kiran&lt;/a&gt; and I have to do frequently is to watch the job posting on the &lt;a href='http://jobs.hasgeek.com'&gt;HasGeek Job Board&lt;/a&gt; and reject the ones that don&amp;#8217;t conform to our &lt;a href='http://jobs.hasgeek.com/tos'&gt;Terms of Service&lt;/a&gt;. Last night, Kiran pinged me on IRC with a link to a job that he wanted me to knock off. Usually, I use phpmyadmin to do this, but I thought I&amp;#8217;d turn it into a bash script and started writing a mysql update query.&lt;/p&gt;
&lt;div style='text-align: center; padding: 10px 0;'&gt;
&lt;a href='http://www.flickr.com/photos/proimos/4199675334/'&gt;&lt;img src='/img/headdesk.jpg' alt='Head in Hands by Alex E Proimos on Flickr' /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;In retrospect, that&amp;#8217;s probably my first mistake right there. Production server is really not the right place to have done this and I don&amp;#8217;t even know why I thought it was a good idea. I wrote the query and executed it. Suddenly, I realized that I screwed up. I had that sinking feeling where you know exactly what went wrong and that it&amp;#8217;s entirely your fault. I forgot the WHERE clause in the query and managed to reject every job in the job board. Thankfully, there was a backup handy, from about 10 minutes earlier too. Because of the &lt;a href='http://www.nytimes.com/2012/08/01/world/asia/power-outages-hit-600-million-in-india.html'&gt;power outages in North India&lt;/a&gt; and the fact that our servers are hosted by &lt;a href='http://e2enetworks.com/'&gt;E2E Networks&lt;/a&gt; in Delhi, I had set up hourly backups earlier in the day. Quickly, I brought down apache and started restoring from the backup. In about 10 minutes from executing the wrong query, we were back and running.&lt;/p&gt;

&lt;p&gt;We had two things to take away from this mistake &amp;#8211; modifying the database directly should stop, and hourly backups are a good. We don&amp;#8217;t have a lot of data yet, and hourly backups don&amp;#8217;t take a lot of time. I spent all day today &lt;a href='https://github.com/hasgeek/hasjob/pull/33'&gt;writing code&lt;/a&gt; so that we don&amp;#8217;t touch the database manually ever for this. There&amp;#8217;s been a plan to write this code for months, but true motivation came in the form of this embarrassing mistake. Most of us hate admitting our mistakes, but when working on servers, it is essential we move to a &lt;a href='http://codeascraft.etsy.com/2012/05/22/blameless-postmortems/'&gt;culture of blameless post-mortems&lt;/a&gt; to fix broken systems and ensure the same mistakes aren&amp;#8217;t repeated or at least occur less frequently.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/91-OLD8IrOI" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-08-02-screwups-are-important.html</feedburner:origLink></entry>
 
 <entry>
   <title>Getting myself to use j,j,k, and l in vim</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/fPr0iISrQjg/2012-07-15-using-hjkl-in-vim.html" />
   <updated>2012-07-15T04:30:00+00:00</updated>
   <id>http://nigelb.me/using-hjkl-in-vim</id>
   <content type="html">&lt;p&gt;I’ve been using vim for a while now, I guess about 2 years? Heck, I’m even writing this post in vim (yay, jekyll!). After all this, I was using arrow keys for moving around in vim. I thought, they worked for me, until I recently read a &lt;a href="http://stevelosh.com/blog/2010/09/coming-home-to-vim/"&gt;blog post about vim&lt;/a&gt;. One of the suggestions in there was to map the arrow keys to in normal mode and insert mode. I’ve tried it out for a week now, and I wonder, how did I ever use the arrow keys; h, j, k, and l make so much more sense!&lt;/p&gt;
&lt;p&gt;If you’ve always wanted to get rid of your arrow key habit, add this to your .vimrc!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="vim"&gt;&lt;span class="nb"&gt;nnoremap&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;up&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;nop&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;nnoremap&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;down&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;nop&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;nnoremap&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;nop&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;nnoremap&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;right&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;nop&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;inoremap&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;up&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;nop&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;inoremap&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;down&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;nop&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;inoremap&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;left&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;nop&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nb"&gt;inoremap&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;right&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;nop&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The one place where I used arrows was for vim completion with ^N and ^P. Quickly, I learned that ^N and ^P can replace the arrow keys there too! It’s still not yet muscle memory, but pretty close.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/fPr0iISrQjg" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-07-15-using-hjkl-in-vim.html</feedburner:origLink></entry>
 
 <entry>
   <title>Geektionary, Julython, and BrowserID</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/ggK69q_jAnE/2012-07-03-julython-and-geektionary.html" />
   <updated>2012-07-03T04:30:00+00:00</updated>
   <id>http://nigelb.me/julython-and-geektionary</id>
   <content type="html">&lt;p&gt;It&amp;#8217;s been quite a while since I blogged, more than 6 months or so. Between a family emergency in December, then switching to a Macbook since Jan, and then jekyll not working properly on it (entirely due to my lack of ruby knowledge/experience), I never found the time. Hopefuly, I&amp;#8217;ll have more time in the coming weeks (yeah, right :P). On Sunday, I noticed &lt;a href="http://julython.org"&gt;Julython&lt;/a&gt; pop up in my twitter feed. It’s an event about encouraging developers of all skill levels to try and work on their pet project(s) just a little each day, in this instance specific to python-related projects. This reminded of a project I started a while back to get a hang of MongoDB called &lt;a href="https://github.com/nigelbabu/geektionary"&gt;Geektionary&lt;/a&gt;. I spend some time plotting and it seems like a perfect fit to do a Julython project. I get to learn lots of new things and start a project from scratch to finish on my own.&lt;/p&gt;
&lt;p&gt;At &lt;a href="http://github.com/hasgeek"&gt;work&lt;/a&gt;, we use Flask all the time, but we have our own &lt;a href="http://github.com/hasgeek/hgapp"&gt;boilerplate&lt;/a&gt; for our Flask apps. For Geektionary, I’m using the &lt;a href="https://github.com/mitsuhiko/flask/wiki/Large-app-how-to"&gt;large app how-to&lt;/a&gt; on the Flask wiki. I made some modification to that example and already got something basic up and running. The change I’ve made is to change how configuration is handled, I’ve always liked to have a base settings file, and then a local file overriding it. Thanks to Julython, I think I&amp;#8217;ll be working on Geektionary a little bit each day to make a final product that allows login with &lt;a href="http://browserid.org"&gt;BrowserID&lt;/a&gt; and all that jazz ;-)&lt;/p&gt;
&lt;p&gt;Speaking of BrowserID, another thing I want to do over this July, if I have time, is to port mkelly’s &lt;a href="https://github.com/osmose/django-browserid"&gt;django-browserid&lt;/a&gt; to Flask. It is non-trivial because I need to support multiple DB backends somehow. I have a basic idea of what I want to do in my head, I’m just hoping to find some time to punch it out into code.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/ggK69q_jAnE" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2012-07-03-julython-and-geektionary.html</feedburner:origLink></entry>
 
 <entry>
   <title>Switched to Clang</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/_QHJa4iv44A/2011-12-06-switched-to-clang.html" />
   <updated>2011-12-06T18:40:00+00:00</updated>
   <id>http://nigelb.me/switched-to-clang</id>
   <content type="html">&lt;p&gt;A recent conversation in #devtools&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="irc"&gt;&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;My current build segfaults when I touch the webconsole.
&lt;span class="nt"&gt;&amp;lt;robcee&amp;gt; &lt;/span&gt;that&amp;#39;s no good
&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;That&amp;#39;s counter productive when I&amp;#39;m patching the webconsole.
&lt;span class="nt"&gt;&amp;lt;robcee&amp;gt; &lt;/span&gt;are you on linux?
&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;Ya.
&lt;span class="nt"&gt;&amp;lt;robcee&amp;gt; &lt;/span&gt;are you building with clang?
&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;No I&amp;#39;m not.
&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;gcc forever &amp;lt;3
.
a little while later
.
&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;Wait, that&amp;#39;s a gcc bug?
&lt;span class="nt"&gt;&amp;lt;msucan&amp;gt; &lt;/span&gt;yes
&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;Sadness.
&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;gcc &amp;lt;/3
&lt;span class="nt"&gt;&amp;lt;nigelb&amp;gt; &lt;/span&gt;its time to move on.
&lt;span class="nt"&gt;&amp;lt;robcee&amp;gt; &lt;/span&gt;it was a good run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;So, yeah, I&amp;#8217;ve switched to clang on Ubuntu.  A quick rundown of what I did for any Ubuntu or other Linux users.  The instructions are pretty much the same as what &lt;a href="http://ehsanakhgari.org/blog/2011-10-18/why-you-should-switch-clang-today-and-how"&gt;ehsan posted for Mac&lt;/a&gt;, except I didn&amp;#8217;t install clang system-wide.&lt;/p&gt;
&lt;p&gt;So, here&amp;#8217;s what I did.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="bash"&gt;mkdir clang
&lt;span class="nb"&gt;cd &lt;/span&gt;clang
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
&lt;span class="nb"&gt;cd &lt;/span&gt;llvm/tools
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
&lt;span class="nb"&gt;cd&lt;/span&gt; ../../
mkdir build
&lt;span class="nb"&gt;cd &lt;/span&gt;build
../llvm/configure --enable-optimized --disable-assertions
make
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This got the clang binary in &lt;code&gt;Release/bin&lt;/code&gt;.  I use &lt;span class="caps"&gt;ZSH&lt;/span&gt;, so I added that folder to my $&lt;span class="caps"&gt;PATH&lt;/span&gt; variable like so&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="bash"&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;:&lt;span class="nv"&gt;$HOME&lt;/span&gt;/clang/build/Release/bin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The last bit is to add the following to your .mozconf&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="bash"&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;CC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;clang
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;CXX&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;clang++
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note &amp;#8211; If you&amp;#8217;re working on Ubuntu 10.04 with gcc version 4:4.4.3-1ubuntu1, it might be essential to use clang and not gcc. As of now the segfaults are attributed to gcc.  For more details, see &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=694594"&gt;bug 694594&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/_QHJa4iv44A" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-12-06-switched-to-clang.html</feedburner:origLink></entry>
 
 <entry>
   <title>Mozcamp Asia</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/b2DlcD7sEKg/2011-12-06-mozcamp-asia.html" />
   <updated>2011-12-06T15:26:00+00:00</updated>
   <id>http://nigelb.me/mozcamp-asia</id>
   <content type="html">&lt;p&gt;Finally, I&amp;#8217;m getting around the write my MozCamp Asia post.  This has been long pending and got delayed mostly because I&amp;#8217;ve been writing &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=609730"&gt;patches&lt;/a&gt; &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=704204"&gt;for&lt;/a&gt; &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=642598"&gt;Firefox&lt;/a&gt; &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=698662"&gt;and&lt;/a&gt; &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=641527"&gt;Thunderbird&lt;/a&gt; instead of writing a blog post :P&lt;/p&gt;
&lt;h5&gt;Travel&lt;/h5&gt;
&lt;p&gt;The night before I was to due to travel, I fell ill and almost called the whole thing off.  After taking a break for a day, I decided that I was good to go, started packing, and left for the airport.  At the airport, I was sitting down and finishing the slides for my talk since I never got a chance thanks to work and other commitments.  We landed in Kuala Lumpur at about 12 am local time and I got into my room at 2:30 am.  I ended up waking up my roommate, Siddharth, who I&amp;#8217;ve known for a while but never met.  With all the excitement of the event, and also because it was just 12 am in India, I was wide awake (Proud member of &lt;a href="https://mozillians.org/en-US/group/10791-weird-hours"&gt;Weird Hours&lt;/a&gt;) .  At some point, I even thought of not sleeping, but thankfully, I caught about 3 hours of sleep, which at least saved the day to some extent.&lt;/p&gt;
&lt;h5&gt;Day 1&lt;/h5&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/mozcamp-1.jpg" title="Day 1, right before we started" alt="Day 1, right before we started" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;At Breakfast, I met the &amp;#8220;IT crowd&amp;#8221; &amp;#8211; fox2mike, zandr, phong, and bkero. Fun gang, we were hanging out later on Sunday.  I then hurried to the Welcome session by Mitchell Baker.  I don&amp;#8217;t remember most of the session now, but I remember tweeting like crazy all through the morning.  The update from Mozilla China was particular interesting because, as the representative from China said, &amp;#8220;We don&amp;#8217;t have Facebook or Youtube on our internet&amp;#8221;.  I also remember Mozilla Japan had an interseting video of their work and Chibi was on stage for the first time giving a talk in English.  We had extra applause for her courage :-)  During the coffee break, I caught up with Tim Watts, who works on the &lt;a href="http://support.mozilla.org"&gt;&lt;span class="caps"&gt;SUMO&lt;/span&gt; team&lt;/a&gt;.  We realized that we were planning on talking about the same thing and decided we&amp;#8217;d merge our talks into one (all the work I did in the airport had to be re-done. &lt;span class="caps"&gt;YAY&lt;/span&gt;!).  Mary then talked about Engagement.  There was a lot of learning from that session, like the fact that 2.2 million people download firefox every day, and about the huge poster in the &lt;span class="caps"&gt;JFK&lt;/span&gt; arrival area.  Everyone loved the &amp;#8220;Don&amp;#8217;t work for the man, work for the mankind&amp;#8221; &lt;a href="http://yfrog.com/gzslzztmj"&gt;poster&lt;/a&gt;.  Then, we had the most exciting bit ever, the community quilt.  It was great to listen to all the communities talk about their efforts and also about their challenges.  Again, it was great to hear people give a talk for the first time, especially in a langauge they&amp;#8217;re not used to speaking all the time.&lt;/p&gt;
&lt;p&gt;At lunch, I met Khairul (ejat) who I also know from the Ubuntu community and Stormy Peters who I&amp;#8217;ve heard about from friends.  After lunch I took one look at the schedule and wished I had a time machine.  I wanted to attend all the sessions!  After lunch I attended the session about building community websites.  It was interesting to hear Laura talk about the Mozilla websites from the product owner&amp;#8217;s point of view.  After this, I went to the talk about Developer Evangelism, &lt;span class="caps"&gt;MDN&lt;/span&gt;, and Docs.  We all agreed to blog about &lt;a href="https://developer.mozilla.org"&gt;&lt;span class="caps"&gt;MDN&lt;/span&gt;&lt;/a&gt; and push it up in search rankings instead of &amp;#8220;other&amp;#8221; usual sources (I&amp;#8217;m looking at you w3schools).  Next was probably one of the most interesting sessions for me, David Dahl&amp;#8217;s &amp;#8220;From Web Developer to Firefox Hacker&amp;#8221; session.  I&amp;#8217;ve been shying away from hacking on Firefox or Thunderbird, because I&amp;#8217;m not exactly a C++ person.  ddahl&amp;#8217;s session kind of got me intersted in Firefox hacking and I&amp;#8217;ve been doing a fair bit of Firefox hacking since I got back (Thanks again ddhal!).  The last session for the day was the user engagement session by Chelsea and William.  It was nice to hear about &lt;a href="https://affiliates.mozilla.org"&gt;Affiliates&lt;/a&gt; and about how campaigns could use a lot of localized help to connect to the right audience.&lt;/p&gt;
&lt;p&gt;Most of the things after this is a blur thanks to the lack of sleep from previous night.  We went had dinner at a resturant which also had a cultural show, but I was too tired to watch any of it and just headed back to the hotel to crash.&lt;/p&gt;
&lt;h5&gt;Day 2&lt;/h5&gt;
&lt;p&gt;On the Day 1 open session, Mitchell announced that we&amp;#8217;d all have wake up calls at 8 am and they actually did it!  Thankfully, I&amp;#8217;d set a 7 am wake up call, so we didn&amp;#8217;t have the 8 am wake up call, but I did see other people comment about it on twitter.  Despite all this, we did start about 15 minutes late because we waited for everyone to finish breakfast.  I was much more alert thanks to a good night&amp;#8217;s sleep.  We opened the day with the &amp;#8220;State of the Product&amp;#8221; talk.  There was a lot of applause during the talk, especially for the B2G demo (philikon and qDot recently &lt;a href="http://www.youtube.com/watch?v=RuIQskGD3u0"&gt;managed to get the B2G phone to dial&lt;/a&gt;!).  It was mind blowing to see the View Source.  The devtools demo, especially, the Tilt demo also generated a fair bit of applause. After this, I attended Siddharth&amp;#8217;s session about building a Thunderbird Extension.  Sid0 demoed writing a simple Hello World extension to using &lt;a href="https://developer.mozilla.org/en/Thunderbird/gloda"&gt;Gloda&lt;/a&gt;.  It was a fun session with a lot of code to digest through.  The WebFWD talk was something I was looking forward to and Diane explained about what WebFWD does and how it can help potential startups with the same ideologies as Mozilla, especially openess.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/yofiesetiawan/6373062883/"&gt;&lt;img src="http://nigelb.me/img/mozcamp-5.jpg" title="Photobombed by timw - Photo by Yofie Setiawan" alt="Photobombed by timw - Photo by Yofie Setiawan" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The leader Q &amp;amp; A was interesting for its format and for the questions that were asked.  Some of the answers, like the ones about Mozilla Spaces, and Thunderbird were particularly interesting.  Right after lunch, was the session about contributing to Mozilla webdev led by Tim Watts and I.  We &lt;a href="https://twitter.com/#!/fox2mike/status/138143503912939520/photo/1"&gt;talked&lt;/a&gt; about contributing to Mozilla&amp;#8217;s Webdev projects, some of the blockers, and the respective solutions.  Tim talked about everything except trouble with setting up the environment, while I focused on getting an environment setup with Vagrant.  The audience already had people using Vagrant so it was fun to talk about it.  We had most of Mozilla IT at our talk as well, so we had some good feeback from the about getting our environment as close as possible to production environment.  I summarized most of these thoughts into a &lt;a href="http://blog.mozilla.com/webdev/2011/11/24/guest-post-i-want-to-contribute-how-do-i-start/"&gt;blog post&lt;/a&gt; on the Mozilla WebDev blog a few weeks back.&lt;/p&gt;
&lt;p&gt;I then went to Dan&amp;#8217;s session about BrowserID and apps.  I had a lot of questions about BrowserID and few of us heckled Dan throughout and after the talk :P  Nevertheless, it cleared up a lot of questions I had about BrowserID.  The last session of the day before the closing was Community IT.  Shyam, Phong, and Ben talked about the scale of IT at Mozilla and how they&amp;#8217;re trying to open it up for the community to contribute.  Memorable phrase from the session was &amp;#8220;We&amp;#8217;ll all be one big happy family and we&amp;#8217;ll all have root&amp;#8221; by fox2mike :-) (and yeah, he&amp;#8217;s probably going to kill me for that).  Another issue raised was how bouncer wasn&amp;#8217;t working and needed some debugging; as time permits over the next few months I intend to look into this and figure out how to improve it.  Finally, we had the closing remarks from Mitchell.  It dawned on me that Mozcamp was over and most of us would be leaving that night or the next morning, and it was indeed saddening.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/mozcamp-2.jpg" title="Always stylish ddahl in Jalan Aloor" alt="Always stylish ddahl in Jalan Aloor" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I joined Arky, bkero, cedricv, Dave, ddhal, fox2mike, Harinder, John, Mihca, phong, and zandr in exploring Jalan Aloor. Harinder suggested a chineese place there for dinner.  It was indeed a great dinner.  We did some experimentation with food &amp;#8211; the biggest of which was &lt;a href="http://en.wikipedia.org/wiki/Durian"&gt;Durian&lt;/a&gt;.  When I entered the street I did smell some sort of sticky sweet smell which seemed pleasant.  When we had the Durian, I matched the smell to Durian and it wasn&amp;#8217;t so pleasant after that ;-)  We also tasted some &lt;a href="http://en.wikipedia.org/wiki/Bakkwa"&gt;bakkwa&lt;/a&gt; (bacon candy!) and &lt;a href="http://en.wikipedia.org/wiki/Rambutan"&gt;Rambutan&lt;/a&gt;.  It was a long street filled with the most eatable things ever!  We had a 10 pm drink up planned at the hotel, so we got back to hotel to be there on time, only to walk into an empty pub.  Later everyone else joined us and we pretty much took over the pub.  We were all chatting for the next few hours.  I think it was eventually 4 am when I headed to bed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;tl;dr: I went to Mozcamp Asia, and started writing patches for Firefox :)&lt;/strong&gt;&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/mozcamp-3.jpg" title="Durian adventure" alt="Durian adventure" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/mozcamp-4.jpg" title="The drinkup" alt="The drinkup" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/b2DlcD7sEKg" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-12-06-mozcamp-asia.html</feedburner:origLink></entry>
 
 <entry>
   <title>Please nitpick</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/2mimX3iO-rQ/2011-10-30-please-nitpick.html" />
   <updated>2011-10-30T19:21:00+00:00</updated>
   <id>http://nigelb.me/please-nitpick</id>
   <content type="html">&lt;p&gt;When working with Open Source, some of the best learnings come from code reviews.  When I first started coding on projects with strict code reviews (&lt;a href="https://launchpad.net"&gt;Launchpad&lt;/a&gt;), I was uncomfortable getting nitpicked.  I (wrongly) thought the goal was to have a code review that has absolutely no nitpicks (crazy right?).  Whenever someone had a nitpick with my code, I felt like I couldn&amp;#8217;t code properly.  That&amp;#8217;s when I read this &lt;a href="https://lists.launchpad.net/launchpad-dev/msg07867.html"&gt;excellent mail&lt;/a&gt; from &lt;a href="https://launchpad.net/~jtv"&gt;Jeroen Vermeulen&lt;/a&gt; to the &lt;a href="https://launchpad.net/~launchpad-dev"&gt;launchpad-dev team&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A rubber-stamp approval can save you minutes or more in the short term, but it does nothing for your longer-term development.  A rubber-stamp approval leaves you without proof that the reviewer has read and understood the branch.  A rubber-stamp approval sets no performance bar, no communicable standard for reviewers to live up to.  A rubber-stamp approval does not tell you whether your branch was excellent, so-so, or too hard to read.  A rubber-stamp approval buys you time that you could use towards the self-improvement you&amp;#8217;re missing out on, but fails to tell you where you need it most.  A rubber-stamp approval deprives you of a chance to harmonize your part of the codebase with our best practices.  So I don&amp;#8217;t like getting rubber-stamped any more than I like to rubber-stamp others.  Good reviews take time, and that&amp;#8217;s not time I put in for the sheer fun of it.&lt;/em&gt;&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/jenosaur/3776887321/"&gt;&lt;img src="http://nigelb.me/img/good-advice.jpg" title="&amp;#39;good advice&amp;#39; by jen collins" alt="&amp;#39;good advice&amp;#39; by jen collins" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;It changed my world.  I&amp;#8217;ve had &lt;a href="https://code.launchpad.net/~nigelbabu/launchpad/bug-title-849121/+merge/75267"&gt;epic&lt;/a&gt; &lt;a href="https://github.com/mozilla/input.mozilla.org/pull/29"&gt;nitpicky&lt;/a&gt; code reviews after that.  Its even changing how I do my code reviews; I&amp;#8217;m warming up to be more nitpicky.  Lesson learnt &amp;#8212; code reviews are one of the strongest takeaways from open source.  So, if you&amp;#8217;re reviewing code, please nitpick.  Don&amp;#8217;t rubber stamp.  The professional development of the person whose code you&amp;#8217;re reviewing depends on it!&lt;/p&gt;
&lt;p&gt;PS: For acceptable levels of nitpick ;-)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/2mimX3iO-rQ" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-10-30-please-nitpick.html</feedburner:origLink></entry>
 
 <entry>
   <title>How I Got Involved With Mozilla</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/0tUfM-nlIOQ/2011-10-16-how-i-got-involved-with-mozilla.html" />
   <updated>2011-10-16T22:05:00+00:00</updated>
   <id>http://nigelb.me/how-i-got-involved-with-mozilla</id>
   <content type="html">&lt;p&gt;There have been a fair number of responses to &lt;a href="http://davidwboswell.wordpress.com/2011/10/11/how-i-got-involved-with-mozilla-and-why-that-wouldnt-work-today/"&gt;David Boswell&amp;#8217;s post&lt;/a&gt; about how he got involved with Mozilla.  Most of the responses have been from fairly established contributors and contributing for a while.  I thought I&amp;#8217;d share my experience since I&amp;#8217;ve been around for hardly 4 months now and moderately active.&lt;/p&gt;
&lt;p&gt;My first attempt at contributing to Mozilla was a disaster.  It was around January 2011 and I tried to contribute to &lt;a href="https://addons.mozilla.org/" title="AMO"&gt;addons.mozilla.org&lt;/a&gt; before its cleaned database was publically available.  It took me a while to set the whole thing up and eventually when I did have things setup, I couldn&amp;#8217;t properly reproduce bugs since I had no data and I had trouble adding new data.  Eventually, I gave up out of frustration and I had lesser time available and my interest died out.  Things have definitely changed since, the database for &lt;span class="caps"&gt;AMO&lt;/span&gt; is now downloadable and I&amp;#8217;m pretty sure my setup troubles were my lack of experience; thank you Wil Clouser for being patient with me back then.&lt;/p&gt;
&lt;p&gt;Around June 2011, I applied to a web developer opening at Mozilla.  The email which confirms my application said this, &amp;#8220;&lt;em&gt;If you’ve gotten this far, we’re certain you care about the future of  the web.  It’s easy to get involved and further that mission.&lt;/em&gt;&amp;#8221;  I think this struck a note in me (whoever thought to add it, great job!).  I wanted to give it another shot.  This time, I just joined &lt;a href="irc://irc.mozilla.org/#webdev"&gt;#webdev&lt;/a&gt; and asked if any projects needed help.  &lt;a href="http://davedash.com"&gt;Dave&lt;/a&gt; quickly responded saying that &lt;a href="http://input.mozilla.com"&gt;Input&lt;/a&gt; could use some help and I started checking out the code and setting it up.  By July, I had cleaned up &lt;a href="https://bugzilla.mozilla.org/buglist.cgi?list_id=1513777&amp;amp;emailtype1=substring&amp;amp;emailassigned_to1=1&amp;amp;query_format=advanced&amp;amp;bug_status=RESOLVED&amp;amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;amp;email1=nigelbabu%40gmail.com&amp;amp;product=Input"&gt;most of the easy bugs on Input&lt;/a&gt; and I continue to &lt;a href="http://harthur.github.com/bzhome/?user=nigelbabu@gmail.com"&gt;help fix bugs&lt;/a&gt;.  I ended up not getting picked for the position I applied for, but I&amp;#8217;m really glad to be contributing.&lt;/p&gt;
&lt;p&gt;Things have changed since my attempt in January.  There is now a significant interest in making virtual machine images available via either vagrant or some other means so setting up a dev environment is much easier (See posts by &lt;a href="http://blog.mozilla.com/webdev/2011/10/04/developing-with-vagrant-puppet-and-playdoh/"&gt;tofumatt&lt;/a&gt;, &lt;a href="http://decafbad.com/blog/2011/10/02/putting-clouds-in-boxes"&gt;lochard&lt;/a&gt;, and &lt;a href="http://groovecoder.com/2011/10/11/virtual-machines-real-humans/"&gt;groovecoder&lt;/a&gt;).  This reduces the barrier of entry and frustration levels significantly.  A frontend person need not be a linux sysadmin anymore to be able to fix a small &lt;span class="caps"&gt;CSS&lt;/span&gt; bug.  Another good thing about this is, since everyone will be on the same environment, we&amp;#8217;re reducing the chances of a weird environment problem.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.quickmeme.com/meme/356py9/"&gt;&lt;img src="http://nigelb.me/img/create-vm-all-the-things.jpg" title="Create VM, for all the things" alt="Create VM, for all the things" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Is the route I took still possible?  I&amp;#8217;d definitely say yes.  If you know Python and Django or &lt;span class="caps"&gt;PHP&lt;/span&gt; or &lt;span class="caps"&gt;CSS&lt;/span&gt; or JavaScript, there are a bunch of webdev projects, and just asking in #webdev channel could guide you to projects that need help.  It&amp;#8217;s probably a good idea to ask during &lt;span class="caps"&gt;UTC&lt;/span&gt;-8 working hours since working hours of most of Mozilla WebDev overlap significantly around that time.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/0tUfM-nlIOQ" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-10-16-how-i-got-involved-with-mozilla.html</feedburner:origLink></entry>
 
 <entry>
   <title>Monkeypatching Django Admin</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/X0ktfajsWtw/2011-10-14-monkey-patching-djangoadmin.html" />
   <updated>2011-10-14T05:10:00+00:00</updated>
   <id>http://nigelb.me/monkey-patching-djangoadmin</id>
   <content type="html">&lt;p&gt;When I started contributing to Mozilla Webdev, I started with &lt;a href="http://input.mozilla.com"&gt;Input&lt;/a&gt;.  The bug that was always a mystery to me was &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=658658"&gt;bug 658658&lt;/a&gt;.  The login page to Django&amp;#8217;s admin worked in Django 1.2.3, but didn&amp;#8217;t work with 1.3, which is what was in the input vendor.  At that time, I didn&amp;#8217;t know about monkeypatching Django well enough, or care enough to fix this.  Last night, I was scrolling through &lt;a href="http://harthur.github.com/bzhome/"&gt;bzhome&lt;/a&gt; (Thanks again Heather!) to find this bug again.&lt;/p&gt;
&lt;p&gt;This is how it looks before I fixed it&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/input-before.png" title="Before fixing" alt="Before fixing" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;After 3 hours of working with folks in #webdev, especially &lt;a href="https://twitter.com/#!/jamessocol"&gt;jsocol&lt;/a&gt;, &lt;a href="https://twitter.com/#!/peterbe"&gt;peterbe&lt;/a&gt;, and &lt;a href="https://twitter.com/#!/r1cky"&gt;r1cky&lt;/a&gt;, we finally &lt;a href="https://github.com/mozilla/input.mozilla.org/commit/0ac2660d7dc4db2b3e1db5aed49124398a7fd2b4"&gt;fixed it&lt;/a&gt;.  The problem was that the monkey patching didn&amp;#8217;t catch one case, the login and logout views which where not in &lt;code&gt;django.contrib.admin&lt;/code&gt; but in &lt;code&gt;django.contrib.auth&lt;/code&gt;.  Thanks to everyone&amp;#8217;s patience (especially r1cky, since we spent about 1 hour trying various combinations of things), the bug is fixed and I now know a little more about monkeypatching.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/input-after.png" title="After fixing" alt="After fixing" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/X0ktfajsWtw" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-10-14-monkey-patching-djangoadmin.html</feedburner:origLink></entry>
 
 <entry>
   <title>User Days Poll</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/USa3Qhiv3p0/2011-09-29-user-days-poll.html" />
   <updated>2011-09-29T19:50:00+00:00</updated>
   <id>http://nigelb.me/user-days-poll</id>
   <content type="html">&lt;p&gt;User Days were created to be sets of classes offered during a one day period to teach the beginning or intermediate Ubuntu user the basics in order to get them started using Ubuntu.  User Days were born out of a discussion at the Ubuntu Developers Summit in November 2009 regarding Ubuntu Open Week not being targeted enough at users.  User Days is hosted over the weekend for many hours at a strech so everyone will be able to participate at some point.  Open week, however, is hosted during the week at the fixed time-range.&lt;/p&gt;
&lt;p&gt;This, however, is now changing. From this cycle on, Ubuntu Open Week will be targeted at users.  As the organizers of User Days for the past 4 cycles, we&amp;#8217;ve been wondering what the community thinks about this &amp;#8211; Should we continue User Days or should we not.  Please mark your opinion in a &lt;a href="https://docs.google.com/spreadsheet/viewform?hl=en_US&amp;amp;formkey=dGhpU2FZZmhURkNXU3JqaVQ4LUtVTHc6MQ#gid=0"&gt;quick poll that I&amp;#8217;ve created&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/USa3Qhiv3p0" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-09-29-user-days-poll.html</feedburner:origLink></entry>
 
 <entry>
   <title>Launchpad bug titles are everywhere!</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/YCVIXLPWDAk/2011-09-20-launchpad-bug-title.html" />
   <updated>2011-09-20T04:30:00+00:00</updated>
   <id>http://nigelb.me/launchpad-bug-title</id>
   <content type="html">&lt;p&gt;A while back, I &lt;a href="http://nigelb.me/ubuntu/launchpad/2011/09/02/some-new-improvements-to-lp.html"&gt;wrote&lt;/a&gt; about smart autolinkifying in bugs.  Last week, at the urging of Brian Murray, I built on top of the work that I&amp;#8217;d already done.  This time, it grabs all the bug links and sends to the linkchecker and, in addition to the set of invalid bugs, it also returns a set of valid bugs with bug titles!  The after effect is a &amp;#8220;bug 1245&amp;#8221; link in the body of Launchpad like in bug tracker, merge proposals, etc, where bug 1245 is a valid bug number will have its &amp;#8220;title&amp;#8221; attribute set to the bug title.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/bug-improvements.png" title="Valid bugs have the &amp;#39;title&amp;#39; attribute set as bug title and it shows up as a tooltip" alt="Valid bugs have the &amp;#39;title&amp;#39; attribute set as bug title and it shows up as a tooltip" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/YCVIXLPWDAk" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-09-20-launchpad-bug-title.html</feedburner:origLink></entry>
 
 <entry>
   <title>Write more beautiful python code</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/KjitJt0fxps/2011-09-12-more-beautiful-python-code.html" />
   <updated>2011-09-12T04:50:00+00:00</updated>
   <id>http://nigelb.me/more-beautiful-python-code</id>
   <content type="html">&lt;p&gt;Contributing to more Python projects like &lt;a href="https://dev.launchpad.net/Contributions"&gt;Launchpad&lt;/a&gt; has also taught me about writing &lt;a href="http://www.python.org/dev/peps/pep-0008"&gt;PEP8&lt;/a&gt; compliant code.  One is expected to run &lt;code&gt;make lint&lt;/code&gt; and fix lint errors.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/pep8.png" title="Running pep8. Not real code though. I&amp;#39;m not /that/ bad :P" alt="Running pep8. Not real code though. I&amp;#39;m not /that/ bad :P" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;A major part of the code I write at my day job consist of scripts, which I most often prefer to write in Python (second only to bash).  I hate to admit it, but my code is rarely pretty.  I just write hacky scripts.  I now use &lt;a href="apt:pep8"&gt;pep8&lt;/a&gt; and &lt;a href="apt:pyflakes"&gt;pyflakes&lt;/a&gt; on all the python code that I write.  It does look nicer, although occasionally painful to fix ;)  Almost all the time pyflakes help me catch an error in the script even before I run the script.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/KjitJt0fxps" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-09-12-more-beautiful-python-code.html</feedburner:origLink></entry>
 
 <entry>
   <title>32-bit binary arrgh</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/Up_jj8dMmFA/2011-09-10-32-bit-binary-arrgh.html" />
   <updated>2011-09-10T08:10:00+00:00</updated>
   <id>http://nigelb.me/32-bit-binary-arrgh</id>
   <content type="html">&lt;p&gt;Running 32-bit binaries on 64-bit machines and it refuses to work? Over the last one month this happened to me several times.  Sometimes even disguised as something else.  Finally, figured out the solution and noted it down all over the place so I don&amp;#8217;t forget.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/building.png" title="Building OpenCity" alt="Building OpenCity" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The magic words are &lt;code&gt;libc6-1386&lt;/code&gt; and &lt;code&gt;ia32-libs&lt;/code&gt;.  Oh, and to check if a binary is 32-bit or 64-bit, use the &lt;code&gt;file&lt;/code&gt; command.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/Up_jj8dMmFA" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-09-10-32-bit-binary-arrgh.html</feedburner:origLink></entry>
 
 <entry>
   <title>Hello Mozilla!</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/H_7iCPo6bJQ/2011-09-06-hello-mozilla.html" />
   <updated>2011-09-06T19:35:00+00:00</updated>
   <id>http://nigelb.me/hello-mozilla</id>
   <content type="html">&lt;p&gt;Hello Planet Mozilla! I was added to the planet about 2 weeks ago and never actually got around to writing a hello post.  I&amp;#8217;m Nigel and I contribute to a few of the WebDev projects, most notably &lt;a href="http://input.mozilla.org"&gt;input&lt;/a&gt; and &lt;a href="https://crash-stats.mozilla.com"&gt;socorro&lt;/a&gt;. I&amp;#8217;m also currently writing a patch for firefox to help &lt;a href="http://support.mozilla.org"&gt;&lt;span class="caps"&gt;SUMO&lt;/span&gt;&lt;/a&gt;, which I seem to work on when I&amp;#8217;m sleep deprived.  I&amp;#8217;m also an active contributor to Ubuntu and Launchpad and often blog about my work there, however, my posts to the planet will exclusively be the work I do on Mozilla projects.  Hopefully, I shall have lots to write soon!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/H_7iCPo6bJQ" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-09-06-hello-mozilla.html</feedburner:origLink></entry>
 
 <entry>
   <title>Some new improvements to Launchpad</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/IIdOuNl1Xn4/2011-09-02-some-new-improvements-to-lp.html" />
   <updated>2011-09-02T13:35:00+00:00</updated>
   <id>http://nigelb.me/some-new-improvements-to-lp</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve been hacking on Launchpad for a while now and I&amp;#8217;d like to announce some of the new things I&amp;#8217;ve added.  The first 2 are in production now.  The last two, however, will need a few more days to get into production.&lt;/p&gt;
&lt;h3&gt;Smart autolinkifying in bugs&lt;/h3&gt;
&lt;p&gt;As evident from the screenshot, it greys out the bug if the bug does not exit (or is private).  I &lt;a href="http://nigelb.me/webdev/launchpad/2011/08/24/another-launchpad-bug.html"&gt;wrote in detail&lt;/a&gt; about fixing this earlier.&lt;/p&gt;
&lt;div style="text-align: center; height: 110px;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/bug-linkify.png" title="Invalid bugs are greyed out" alt="Invalid bugs are greyed out" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3&gt;&lt;span class="caps"&gt;UTC&lt;/span&gt; offset along with timezone&lt;/h3&gt;
&lt;p&gt;We now go the extra mile and display the &lt;span class="caps"&gt;UTC&lt;/span&gt; offset as well to help in some play plan out meetings, etc.&lt;/p&gt;
&lt;div style="text-align: center; height: 85px;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/timezone.png" title="Timezone also shows UTC offset" alt="Timezone also shows UTC offset" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3&gt;Edit sprite for attachments&lt;/h3&gt;
&lt;p&gt;Long time frustration of mine.  The edit &lt;span class="caps"&gt;URL&lt;/span&gt; for attachments is in a portlet on the right side, not easy to spot. Once this fix rolls out, however, it will be much more friendlier.&lt;/p&gt;
&lt;div style="text-align: center; height: 85px;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/patch-edit.png" title="Edit sprite for attachments" alt="Edit sprite for attachments" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3&gt;Better blueprints validation&lt;/h3&gt;
&lt;p&gt;Earlier, I&amp;#8217;d just get a &amp;#8220;&amp;#8230; is already registered by another blueprint&amp;#8221;, this fix, once rolled out, helps ease out and find that blueprint.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/blueprints-validation.png" title="Blueprint validation" alt="Blueprint validation" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;To repeat again, the last two fixes are not in production as of me writing this post.  Perhaps by next week or the week after, it should be.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/IIdOuNl1Xn4" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-09-02-some-new-improvements-to-lp.html</feedburner:origLink></entry>
 
 <entry>
   <title>7 things about me</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/ZkpTw1t-QHY/2011-08-30-7-things-about-me.html" />
   <updated>2011-08-30T05:10:00+00:00</updated>
   <id>http://nigelb.me/7-things-about-me</id>
   <content type="html">&lt;p&gt;For the first time, I&amp;#8217;m doing a meme! &lt;a href="http://theunfocused.net/2011/08/28/7-things-about-me-2/"&gt;Unfocused&lt;/a&gt; tagged me and here it goes.&lt;/p&gt;
&lt;h4&gt;4 Rules&lt;/h4&gt;
&lt;ol&gt;
	&lt;li&gt;Link to your original tagger(s) and list these rules in your post.&lt;/li&gt;
	&lt;li&gt;Share seven facts about yourself in the post.&lt;/li&gt;
	&lt;li&gt;Tag seven people at the end of your post by leaving their names and the links to their blogs.&lt;/li&gt;
	&lt;li&gt;Let them know they’ve been tagged.&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;7 Things&lt;/h4&gt;
&lt;ol&gt;
	&lt;li&gt;&lt;strong&gt;I live in a half-hour timezone&lt;/strong&gt;.  If you think timezones suck, trust me, half-hour timezones suck even more.  Every calculation needs just a bit more time so that you don&amp;#8217;t get it wrong.  My sleep cycle is mostly &lt;span class="caps"&gt;UTC&lt;/span&gt; though ;)&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;I&amp;#8217;ve only been involved with open source for less than 2 years&lt;/strong&gt;.  But I&amp;#8217;ve contributed code to Ubuntu, Debian, Etherpad, Launchpad, Mozilla WebDev, and Firefox in this time.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;My &lt;a href="http://www.sonyericsson.com/cws/products/mobilephones/overview/j121i?cc=in&amp;amp;lc=en"&gt;cellphone&lt;/a&gt; can do calls, texts, and radio&lt;/strong&gt;.  That&amp;#8217;s it.  It has worked for me for the past few years, and continues to serve me well.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;I lost my cellphone in the middle of the road and got it back&lt;/strong&gt;.  Yes, my phone fell out of my pocket on the way to work one day.  Someone found it, called the last dialed number (my parents), found where I was working, and dropped it off at the office!  &lt;em&gt;My friends, however, joke that even someone who found the phone on road don&amp;#8217;t want to be caught dead with it (its purple in color).&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;I read a lot and own a lot of books&lt;/strong&gt;.  In fact, when I get my own place, I most probably will have a room just for books.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;I walk to work&lt;/strong&gt;.  I have friends who work from home, so you folks will not think this is great, but my friends with an hour long commute will know how precious being able to walk to work is.  &lt;em&gt;Walking to work, and taking my bike almost results in the same time due to traffic anyway.&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;In December, I will have completed 5 years of having started a working life&lt;/strong&gt;.  Looking back to my first job to where I am now, I cannot even think how I landed up this way :-)&lt;br /&gt;
&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;7 People&lt;/h4&gt;
&lt;p&gt;I&amp;#8217;m tagging the following people &amp;#8211; &lt;a href="http://blog.aditseng.com"&gt;@aditseng&lt;/a&gt;, &lt;a href="http://davedash.com"&gt;@davedash&lt;/a&gt;, &lt;a href="http://devvrat.in"&gt;@_devrat&lt;/a&gt;, &lt;a href="http://sajjad.in"&gt;@geohacker&lt;/a&gt;, &lt;a href="https://twitter.com/#!/suryajith"&gt;@suryajith&lt;/a&gt;, &lt;a href="http://correresmidestino.com"&gt;@Xiaozhuli&lt;/a&gt;, and &lt;a href="http://writerruns.wordpress.com"&gt;@zainabbawa&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/ZkpTw1t-QHY" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-30-7-things-about-me.html</feedburner:origLink></entry>
 
 <entry>
   <title>Embedding a terminal with byobu</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/B2cMtRWe3go/2011-08-24-embedding-terminal-with-byobu.html" />
   <updated>2011-08-24T20:05:00+00:00</updated>
   <id>http://nigelb.me/embedding-terminal-with-byobu</id>
   <content type="html">&lt;p&gt;&lt;span itemprop="description"&gt;The other day I &lt;a href="http://nigelb.me/geek/2011/08/23/looking-for-vim.html"&gt;blogged&lt;/a&gt; about how I was looking for embedded terminal in vim and found something hilarious.  This post is about how I solved what I was trying to do.&lt;/span&gt;&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/vim-byobu.png" title="Typing this blog post on the kind of setup I&amp;#39;m writing about" alt="Typing this blog post on the kind of setup I&amp;#39;m writing about" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I know I can do &lt;code&gt;:shell&lt;/code&gt;, but that&amp;#8217;s quite not what I wanted.  Here&amp;#8217;s how I got it working the way I want with &lt;a href="apt:byobu"&gt;byobu&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Open a terminal and start &lt;code&gt;byobu&lt;/code&gt;.&lt;/li&gt;
	&lt;li&gt;Type &lt;code&gt;C-a S&lt;/code&gt;, basically, C followed by a, and then capital S.&lt;/li&gt;
	&lt;li&gt;Then, &lt;code&gt;C-a :&lt;/code&gt;, so you can type commands to the screen.&lt;/li&gt;
	&lt;li&gt;Now you can type &lt;code&gt;resize +15&lt;/code&gt; to increase the size of the top split&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;C-a Tab&lt;/code&gt;, to switch to the other split&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;C-a c&lt;/code&gt; to create a new terminal there.&lt;/li&gt;
	&lt;li&gt;Use &lt;code&gt;C-a Tab&lt;/code&gt; to switch between the splits.&lt;/li&gt;
	&lt;li&gt;???&lt;/li&gt;
	&lt;li&gt;&lt;span class="caps"&gt;PROFIT&lt;/span&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;d love to make this into some kind of config that I can load, but I haven&amp;#8217;t discovered that yet.  If someone knows how, please do let me know in the comments!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/B2cMtRWe3go" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-24-embedding-terminal-with-byobu.html</feedburner:origLink></entry>
 
 <entry>
   <title>Another Launchpad Bug Fixed!</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/5bKS1dkkkuM/2011-08-24-another-launchpad-bug.html" />
   <updated>2011-08-24T05:15:00+00:00</updated>
   <id>http://nigelb.me/another-launchpad-bug</id>
   <content type="html">&lt;p&gt;&lt;span itemprop="description"&gt;On Tuesday, I managed to land a fix for &lt;a href="http://pad.lv/4595"&gt;another Launchpad bug&lt;/a&gt;.  This one probably was my first non-trivial bug fix and also older than any other bug I&amp;#8217;ve attempted (4-digit bug!).&lt;/span&gt;  Earlier, during page load, Launchpad would take each bug, search if its, valid, get the title, and show tooltips.  This feature was removed to reduce page load times and timeouts.  Instead, anything that matches the bug pattern gets linked whether the bug is valid or not.  Obviously, less friendly, but much faster.  One of the days, there was a general complaint about this in &lt;a href="irc://irc.freenode.net/#launchpad-dev"&gt;#launchpad-dev&lt;/a&gt; and &lt;a href="https://launchpad.net/~wallyworld"&gt;Ian Booth&lt;/a&gt; mentioned that its probably trivial to fix with the link checking bits he wrote for branches.  I jumped in when I saw a chance to get mentored for a bug.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/splorp/2038095555/"&gt;&lt;img src="http://nigelb.me/img/yay.jpg" title="Yay by Grant Hutchinson" alt="Yay by Grant Hutchinson" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Fixing the bug involved, first adding a class to all the bug URLs, then grabbing all the URLs with that class and posting it as &lt;span class="caps"&gt;JSON&lt;/span&gt; to check-links internal &lt;span class="caps"&gt;API&lt;/span&gt;, which uses the search to verify valid/invalid bugs.  Then, it returns a list of invalid bugs.  Fixing this including writing python and JavaScript code; a first, for my fixes to Launchpad.  I broke a gazillion tests with my fixes though.  Twice, I submitted it to ec2 and failed thanks to b0rked tests.  Finally, on third try, I caught all of them and its now &lt;a href="https://code.launchpad.net/~nigelbabu/launchpad/4595-upgrade-bug-linking/+merge/71575"&gt;merged to devel&lt;/a&gt;.  It is working on &lt;a href="http://qastaging.launchpad.net"&gt;QA Staging&lt;/a&gt; if you want to give it a try.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/5bKS1dkkkuM" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-24-another-launchpad-bug.html</feedburner:origLink></entry>
 
 <entry>
   <title>Looking for vim</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/twYhufoHkZY/2011-08-23-looking-for-vim.html" />
   <updated>2011-08-23T04:15:00+00:00</updated>
   <id>http://nigelb.me/looking-for-vim</id>
   <content type="html">&lt;p&gt;Yesterday, I was trying to find how to get a terminal inside vim, like the embedded terminal in gEdit and Kate.  Look what I found out instead!&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/looking-for-vim.png" title="Facebook: Looking for vim?" alt="Facebook: Looking for vim?" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I have no words.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/twYhufoHkZY" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-23-looking-for-vim.html</feedburner:origLink></entry>
 
 <entry>
   <title>E_TOO_MANY_CHANNELS</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/KV5Dyr5ojSk/2011-08-21-e-too-man-channels.html" />
   <updated>2011-08-21T15:41:00+00:00</updated>
   <id>http://nigelb.me/e-too-man-channels</id>
   <content type="html">&lt;p&gt;For the past year or so, &lt;a href="apt:irssi"&gt;irssi&lt;/a&gt; has been my primary &lt;a href="http://www.youtube.com/watch?v=O2rGTXHvPCQ"&gt;&lt;span class="caps"&gt;IRC&lt;/span&gt;&lt;/a&gt; client.  At first, I joined just &lt;a href="irc://irc.freenode.net/#ubuntu-beginners"&gt;one channel on one server&lt;/a&gt;.  Then, it started growing.  The more projects I participated in, the more channels I had.  Currently, I&amp;#8217;m on 3 networks and a lot of channels.  Recently, I crossed the 100-window mark on irssi and I realized I&amp;#8217;m missing people leaving a message or pinging me.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;iframe width="560" height="345" src="http://www.youtube.com/embed/O2rGTXHvPCQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
Click &lt;a href="www.youtube.com/watch?v=O2rGTXHvPCQ"&gt;here&lt;/a&gt; to see the video&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Now I&amp;#8217;m using &lt;a href="http://scripts.irssi.org/scripts/hilightwin.pl"&gt;hilightwin.pl&lt;/a&gt;.  Its a pretty rad script that lets you have a small split window with all your hilights.  Hard to miss them that way!  Installation is pretty simple too.  Downloading the file, place it in &lt;code&gt;~/.irssi/scripts/autorun&lt;/code&gt;.  Then run the following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="bash"&gt;/run autorun/hilightwin.pl
/window new split
/window name hilight
/window size 5
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/KV5Dyr5ojSk" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-21-e-too-man-channels.html</feedburner:origLink></entry>
 
 <entry>
   <title>Working from home</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/GLRoBuiqzQw/2011-08-18-working-from-home.html" />
   <updated>2011-08-18T17:40:00+00:00</updated>
   <id>http://nigelb.me/working-from-home</id>
   <content type="html">&lt;p&gt;This is how my desk looks on days when I&amp;#8217;m working from home.  The one of the left has the &lt;a href="http://www.nagios.org"&gt;Nagios status page&lt;/a&gt; and the right has my &lt;a href="http://www.youtube.com/watch?v=O2rGTXHvPCQ" title="The classic numb3rs snippet about IRC"&gt;chat client&lt;/a&gt; ;)&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;img src="http://nigelb.me/img/table.jpg" title="My table!" alt="My table!" /&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/GLRoBuiqzQw" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-18-working-from-home.html</feedburner:origLink></entry>
 
 <entry>
   <title>Amazon RDS Timezone Hack</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/WWmUUB65SFA/2011-08-17-amazon-rds-time-hack.html" />
   <updated>2011-08-17T04:08:00+00:00</updated>
   <id>http://nigelb.me/amazon-rds-time-hack</id>
   <content type="html">&lt;p&gt;&amp;#8220;Amazon Relational Database Service (Amazon &lt;span class="caps"&gt;RDS&lt;/span&gt;) is a web service that makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity while managing time-consuming database administration tasks, freeing you up to focus on your applications and business.&amp;#8221;  &amp;#8212; &lt;a href="http://aws.amazon.com/rds/"&gt;Amazon &lt;span class="caps"&gt;RDS&lt;/span&gt; Website&lt;/a&gt;&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/torkildr/3462607995/in/photostream"&gt;&lt;img src="http://nigelb.me/img/servers.jpg" title="Server room by Torkild Retvedt" alt="Server room by Torkild Retvedt" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Amazon &lt;span class="caps"&gt;RDS&lt;/span&gt; uses &lt;span class="caps"&gt;UTC&lt;/span&gt; by default.  Personally, I think systems should use &lt;span class="caps"&gt;UTC&lt;/span&gt; by default, but at my work place, all systems are in &lt;span class="caps"&gt;IST&lt;/span&gt;, which means we want the &lt;span class="caps"&gt;RDS&lt;/span&gt; to work in &lt;span class="caps"&gt;IST&lt;/span&gt; too.  So, we have this hack of setting the &lt;code&gt;init_connect&lt;/code&gt; parameter to &lt;code&gt;set time_zone = 'Asia/Kolkata';&lt;/code&gt;.  This works great, except when you have to restart &lt;span class="caps"&gt;RDS&lt;/span&gt;.  We&amp;#8217;ve had to restart our instance twice so far, both times leading to considerable downtime, pain, and grief because of this hack (thankfully, the &lt;span class="caps"&gt;RDS&lt;/span&gt; machine is a backup machine and not used in production).&lt;/p&gt;
&lt;p&gt;When it happened the first time, my ex-colleague did the modification and all I did note down was to remove the &lt;code&gt;init_connect&lt;/code&gt; parameter.  When it happened the second time, I remembered and set the &lt;code&gt;init_connect&lt;/code&gt; parameter to an empty string, which I thought would work.  Unfortunately, it didn&amp;#8217;t.  We talked to Amazon Support and now I know that when it happens, I should not be setting it to an empty value, but resetting instead.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="bash"&gt;rds-reset-db-parameter-group my-params --parameters &lt;span class="s2"&gt;&amp;quot;name=init_connect, method=immediate&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This post is for all those poor souls who might make the same mistake as me as well as a note to myself (though I suspect I&amp;#8217;ll never forget this lesson :P) :-)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/WWmUUB65SFA" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-17-amazon-rds-time-hack.html</feedburner:origLink></entry>
 
 <entry>
   <title>Why work doesn't happen at work</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/YB7qpJkE-XU/2011-08-08-why-work-doesnt-happen-at-work.html" />
   <updated>2011-08-08T14:50:00+00:00</updated>
   <id>http://nigelb.me/why-work-doesnt-happen-at-work</id>
   <content type="html">&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;object width="526" height="374"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talk/stream/2010X/Blank/JasonFried_2010X-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JasonFried-2010X.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=1014&amp;lang=eng&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=jason_fried_why_work_doesn_t_happen_at_work;year=2010;theme=not_business_as_usual;theme=a_taste_of_tedx;event=TEDxMidwest;tag=Business;tag=Culture;tag=Design;tag=Technology;tag=creativity;tag=work;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="526" height="374" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talk/stream/2010X/Blank/JasonFried_2010X-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JasonFried-2010X.embed_thumbnail.jpg&amp;vw=512&amp;vh=288&amp;ap=0&amp;ti=1014&amp;lang=eng&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=jason_fried_why_work_doesn_t_happen_at_work;year=2010;theme=not_business_as_usual;theme=a_taste_of_tedx;event=TEDxMidwest;tag=Business;tag=Culture;tag=Design;tag=Technology;tag=creativity;tag=work;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;"&gt;&lt;/embed&gt;&lt;br /&gt;
&lt;/object&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Often I&amp;#8217;ve noticed that my most productive time is actually at home.  So, when I have to spend a few hours of solid work that I don&amp;#8217;t need to depend on a teammate or a teammate doesn&amp;#8217;t have to depend on me, I work from home.  I get a lot more done thanks to less interruptions.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/YB7qpJkE-XU" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-08-why-work-doesnt-happen-at-work.html</feedburner:origLink></entry>
 
 <entry>
   <title>What I learned about the cloud</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/t5xG8Y4ekHc/2011-08-06-what-i-learned-about-cloud.html" />
   <updated>2011-08-06T16:40:00+00:00</updated>
   <id>http://nigelb.me/what-i-learned-about-cloud</id>
   <content type="html">&lt;p&gt;My day job primarily involves maintaining the bunch of Ubuntu servers.  What the last few months has taught me is to plan for failure.  With the &amp;#8220;cloud&amp;#8221; being everywhere, we&amp;#8217;re probably in a false sense of security.  I&amp;#8217;ve 3 anecdotes to share from my brief experience.&lt;/p&gt;
&lt;p&gt;One &amp;#8211; One of our database instances needed to be restarted.  After the restart, we couldn&amp;#8217;t connect to it.  It took a few hours for Support to get back to us (it was an Amazon &lt;span class="caps"&gt;RDS&lt;/span&gt; instance) and figure out what was the problem.  Our init_connect parameter, in which we put a hack for timezone, was causing the failure to connect after a restart.&lt;/p&gt;
&lt;p&gt;Two &amp;#8211; One machine randomly died due to hardware failure on the host.  Luckily, I had just launched a new instance which was meant to replace it eventually.  Within a few minutes, I switched the IP address with the new instance.  Thankfully, there was no service disruption.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://xkcd.com/908/"&gt;&lt;img src="http://nigelb.me/img/cloud.png" title="The Cloud - XKCD by Randall Munroe" alt="The Cloud - XKCD by Randall Munroe" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Three &amp;#8211; I have a &lt;span class="caps"&gt;VPS&lt;/span&gt; with a &lt;a href="http://ramhost.us"&gt;small provider&lt;/a&gt;.  This is the &lt;span class="caps"&gt;VPS&lt;/span&gt; that powers this blog and my &lt;span class="caps"&gt;IRC&lt;/span&gt; session.  In the first week of July, the provider &lt;a href="https://forum.ramhost.us/bbs/viewtopic.php?id=563"&gt;notified me&lt;/a&gt; that there was some targeted network attack happening on two of their hosts (one of which hosts my &lt;span class="caps"&gt;VPS&lt;/span&gt;) and they&amp;#8217;ll be power cycling the hosts several times a day.  This, of course, brought down my website (for a short while) and my &lt;span class="caps"&gt;IRC&lt;/span&gt; session (until I manually started it).  Note that my website is not high-availability or or hosted with one of the major providers.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t blame the providers for any of these failures/issues.  It is and always will be the responsibility of the customer to make sure there are backups and disaster recovery plans in place because the only thing servers consistently do is fail.  It maybe after 1 hour, 1 week, 1 month, or a decade.  But they fail.  Eventually.&lt;/p&gt;
&lt;p&gt;At a recent conference I attended, there was a &lt;a href="http://funnel.hasgeek.com/phpcloud/28-failure-is-an-option"&gt;whole session&lt;/a&gt; about planning for failure.  This may include making sure that you have backup servers, new servers can be brought up quickly in an automated manner, making sure there is no dependency on a &lt;a href="http://blog.reddit.com/2011/03/why-reddit-was-down-for-6-of-last-24.html"&gt;single provider or service&lt;/a&gt;, making sure the application handles not being able to access another machine gracefully, and much more.  I&amp;#8217;ve agonizingly gone over disaster scenarios over the past few days, situations in which any of the servers go down, whether it be App server, DB server, or Monitoring server, or Load Balancer, or even the entire data center, and in conclusion, all I have to say is &amp;#8220;Prepare for failure.&amp;#8221;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/t5xG8Y4ekHc" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-06-what-i-learned-about-cloud.html</feedburner:origLink></entry>
 
 <entry>
   <title>Shooting myself in the foot with Apparmor</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/l5-s3pPkrto/2011-08-04-shooting-myself-in-the-foot-with-apparmor.html" />
   <updated>2011-08-04T21:15:00+00:00</updated>
   <id>http://nigelb.me/shooting-myself-in-the-foot-with-apparmor</id>
   <content type="html">&lt;p&gt;The other day at &lt;a href="http://capillary.co.in"&gt;work&lt;/a&gt;, I was working on setting up a new database server.  This is the first time in a while we&amp;#8217;re doing this.  Almost no-one remembers who or how it was done the last time.  Our data is kinda big, so we tend to put the mysql data files into an &lt;span class="caps"&gt;EBS&lt;/span&gt; volume by itself so that we always have the data separate from the machine and because we get as much space as want.  We created the new machine, new disk, changed the path of the data folders, and started mysql.  &lt;span class="caps"&gt;BAM&lt;/span&gt;!  It threw a whole bunch of errors about permissions.&lt;/p&gt;
&lt;p&gt;I went in and checked the ownership, which seemed to be correct, but re-ownershipped everything anyway.  Tried again.  Nope, didn&amp;#8217;t work.  Out of frustration, tried again after doing a &lt;code&gt;chmod -R 777&lt;/code&gt;.  Still failed.  For a while, we googled extensively for the error, leading us to nothing much to go on.  Before this, we had some backup stuff to do, so I think it was close to 1 am when we actually got down to troubleshooting this.  After sometime, we had the sense to google for what we wanted to accomplish, leading me to apparmor.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/magpietown/5470868598/"&gt;&lt;img src="http://nigelb.me/img/lock.jpg" title="Lock and Chain by Martin Magdalene" alt="Lock and Chain by Martin Magdalene" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Then, my memory kicked in about Apparmor and what it did.  I figured out that mysql probably didn&amp;#8217;t have permission to use other directories.  We gave it permissions and it worked!  But, we ended up not having enough time to restore data on this new server in and rotate out the old server.  Overall, we were working on this from 12 am to 4 am.  The next day, my &lt;span class="caps"&gt;QOTD&lt;/span&gt; was from my friend, who shall not be named &amp;#8211; &amp;#8220;Oops. That said, it&amp;#8217;s happened to me, too.  The irony bit is that I&amp;#8217;m one of the primary upstream apparmor devs.&amp;#8221;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/l5-s3pPkrto" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-08-04-shooting-myself-in-the-foot-with-apparmor.html</feedburner:origLink></entry>
 
 <entry>
   <title>RTFD and Summit</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/PLeQHLejoCk/2011-07-30-rtfd-summit.html" />
   <updated>2011-07-30T05:30:00+00:00</updated>
   <id>http://nigelb.me/rtfd-summit</id>
   <content type="html">&lt;p&gt;Writing documentation isn&amp;#8217;t easy. And maintaining up-to-date documentation isn&amp;#8217;t easy either.  &lt;a href="http://readthedocs.org"&gt;readthedocs.org&lt;/a&gt; is a Django project which was written as part of &lt;a href="http://www.djangodash.com"&gt;Django Dash&lt;/a&gt;.  It is backed by RevSys, Python Software Foundation, and Mozilla Webdev.  We can write our docs in Sphinx and import it into Read the Docs.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/cote/94256599/in/photostream/"&gt;&lt;img src="http://nigelb.me/img/books.jpg" title="Books for Sale by Michael Coté" alt="Books for Sale by Michael Coté" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I&amp;#8217;ve just got it setup for summit.  New contributors to Summit can see its developer documentation at &lt;a href="http://summit.rtfd.org"&gt;summit.rtfd.org&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/PLeQHLejoCk" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-07-30-rtfd-summit.html</feedburner:origLink></entry>
 
 <entry>
   <title>Summit improvements and bug fixes</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/81HVTJ5VgPc/2011-07-27-summit-improvements-and-bugfixes.html" />
   <updated>2011-07-27T16:10:00+00:00</updated>
   <id>http://nigelb.me/summit-improvements-and-bugfixes</id>
   <content type="html">&lt;p&gt;&amp;#8220;If I do that, I might break Summit!&amp;#8221;&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s something often heard at UDSes by organizers.  Indeed, Summit has historically had stability issues, especially during the high-usage week of a &lt;span class="caps"&gt;UDS&lt;/span&gt;.  But Summit is starting to outgrow it&amp;#8217;s troubled youth, gaining better code, better testing, and most importantly, more stability.&lt;/p&gt;
&lt;p&gt;The Summit team, consisting of Michael Hall, Chris Johnston, and I, has been hacking on Summit much more this cycle than ever.  We even had a few new contributors this cycle.  Our focus this cycle was to make it more stable first, and then more usable.  There are lots of UI fixes that people have requested.  We only haven&amp;#8217;t gotten to them because we want Summit to be very stable this cycle.  If you&amp;#8217;d like to help us make Summit more awesome, please &lt;a href="https://bugs.launchpad.net/summit/+filebug"&gt;file bugs&lt;/a&gt; on things that you think Summit should do or places were Summit sucks.  We can&amp;#8217;t promise anything, but its great to nail down things we should fix.&lt;/p&gt;
&lt;p&gt;The Summit team has fixed a whole bunch of bugs this cycle.  Big shout out to Chris Johnston and Michael Hall for setting the speed of development early on.  Before I reached home back from &lt;span class="caps"&gt;UDS&lt;/span&gt;, there were I think 4 MPs for Summit (!?!).  We&amp;#8217;d also like to thank Maris Fogel for helping us setup a test framework.  We&amp;#8217;d like Summit to be more stable and having unit tests drives us in this direction.&lt;/p&gt;
&lt;p&gt;These are the bugs we have fixed this cycle:&lt;/p&gt;
&lt;table&gt;
	&lt;tr&gt;
		&lt;th&gt;Bug Number &lt;/th&gt;
		&lt;th&gt;Summary &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/813531"&gt;813531&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; logo should point to http://uds.ubuntu.com/ &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/798826"&gt;798826&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Name fields throw confusing error &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/798822"&gt;798822&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; initslots doesn&amp;#8217;t give feedback when done &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/793020"&gt;793020&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Match uds.ubuntu.com and summit.ubuntu.com main-nav &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/790675"&gt;790675&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Stop screen scraping launchpad for information. Use the &lt;span class="caps"&gt;API&lt;/span&gt; instead. &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/783291"&gt;783291&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Brainstorm should be removed from summit &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/783030"&gt;783030&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Change room.name to room.title on the next sessions page &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/783029"&gt;783029&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Add link to meeting page in iCal &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/782062"&gt;782062&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; When importing from Launchpad, the blueprint name should be cleaned before being used &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/781137"&gt;781137&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Need more space between QR code and Day/Room name &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/781117"&gt;781117&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Change /today to be /xx/today &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/780969"&gt;780969&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Enable 404 page instead of showing a debug &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/779922"&gt;779922&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Create an output in the iCal for the bots &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/779887"&gt;779887&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Etherpad &lt;span class="caps"&gt;URL&lt;/span&gt; should really be a db field &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/779884"&gt;779884&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; autoscheduler should never schedule sessions at times in the past &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/779769"&gt;779769&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Remove &amp;#8216;Attendees&amp;#8217; from meeting page if it is a plenary &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/668542"&gt;668542&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Don&amp;#8217;t reschedule events/days that have already happened &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/665589"&gt;665589&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; Importing blueprints unreliable &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/664879"&gt;664879&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; &amp;#8220;previous day&amp;#8221; and &amp;#8220;next day&amp;#8221; links on schedule would be nice &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://bugs.launchpad.net/bugs/664843"&gt;664843&lt;/a&gt; &lt;/td&gt;
		&lt;td&gt; autoscheduler stole all my &amp;#8220;ad-hoc&amp;#8221; sessions &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Yeah, that&amp;#8217;s lots! We&amp;#8217;ve been busy working to make Summit more awesome!  And these are our merge proposals:&lt;/p&gt;
&lt;table&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/migrations"&gt;lp:~chrisjohnston/summit/migrations&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~mhall119/summit/fixes-814375"&gt;lp:~mhall119/summit/fixes-814375&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~mhall119/summit/fix-lpupdate-meetings"&gt;lp:~mhall119/summit/fix-lpupdate-meetings&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/960px"&gt;lp:~chrisjohnston/summit/960px&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/813531"&gt;lp:~chrisjohnston/summit/813531&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~mhall119/summit/today"&gt;lp:~mhall119/summit/today&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/today"&gt;lp:~chrisjohnston/summit/today&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/links"&gt;lp:~chrisjohnston/summit/links&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/version-update"&gt;lp:~chrisjohnston/summit/version-update&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/fields-spelling"&gt;lp:~chrisjohnston/summit/fields-spelling&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/spelling"&gt;lp:~chrisjohnston/summit/spelling&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/openids"&gt;lp:~chrisjohnston/summit/openids&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/798822"&gt;lp:~chrisjohnston/summit/798822&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/798826"&gt;lp:~chrisjohnston/summit/798826&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~mars/summit/reschedule-command-tests"&gt;lp:~mars/summit/reschedule-command-tests&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~pendulum/summit/665589-launchpad-request-retries"&gt;lp:~pendulum/summit/665589-launchpad-request-retries&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~nigelbabu/summit/stop-screen-scrape"&gt;lp:~nigelbabu/summit/stop-screen-scrape&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~nigelbabu/summit/space-qr-room-title"&gt;lp:~nigelbabu/summit/space-qr-room-title&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~nigelbabu/summit/779769-remove-attendees-plenary"&gt;lp:~nigelbabu/summit/779769-remove-attendees-plenary&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~nigelbabu/summit/nuke-brainstorm"&gt;lp:~nigelbabu/summit/nuke-brainstorm&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~nigelbabu/summit/782062-fix-naming"&gt;lp:~nigelbabu/summit/782062-fix-naming&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~nigelbabu/summit/autoschedule-fix"&gt;lp:~nigelbabu/summit/autoschedule-fix&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/664879"&gt;lp:~chrisjohnston/summit/664879&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/private"&gt;lp:~chrisjohnston/summit/private&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; &lt;a href="http://code.launchpad.net/~chrisjohnston/summit/ical"&gt;lp:~chrisjohnston/summit/ical&lt;/a&gt; &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;We&amp;#8217;ve been busying making Summit much more awesome!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/81HVTJ5VgPc" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-07-27-summit-improvements-and-bugfixes.html</feedburner:origLink></entry>
 
 <entry>
   <title>Helping with breakpad</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/0fSLzY09SXM/2011-07-23-helping-with-breakpad.html" />
   <updated>2011-07-23T10:55:00+00:00</updated>
   <id>http://nigelb.me/helping-with-breakpad</id>
   <content type="html">&lt;p&gt;Wednesday was a fun day. I finally decided to take the plunge and step in and help with &lt;a href="https://wiki.mozilla.org/Breakpad"&gt;Breakpad&lt;/a&gt;. Fine day to make that decision too, since the &lt;a href="https://wiki.mozilla.org/Breakpad/Status_Meetings"&gt;Breakpad status meetings&lt;/a&gt; are on Wednesdays at 11 am Pacific Time.  I ended up being on the call via Google Voice. (Side note: Skype on linux had problems with Mozilla toll-free number).&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/35323150@N02/3389668627/"&gt;&lt;img src="http://nigelb.me/img/giftbox.jpg" title="Gift Box by Ken&amp;#39;s Oven" alt="Gift Box by Ken&amp;#39;s Oven" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I now have &lt;a href="https://developer.mozilla.org/en/What_to_do_and_what_not_to_do_in_Bugzilla#Editbugs_privilege"&gt;editbugs privilege&lt;/a&gt; on bugzilla and I already fixed my &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=605574"&gt;first bug&lt;/a&gt; on Breakpad!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/0fSLzY09SXM" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-07-23-helping-with-breakpad.html</feedburner:origLink></entry>
 
 <entry>
   <title>Nailing a localization bug</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/LkkjJNFxM2s/2011-07-20-nailing-localization-bug.html" />
   <updated>2011-07-20T04:30:00+00:00</updated>
   <id>http://nigelb.me/nailing-localization-bug</id>
   <content type="html">&lt;p&gt;As I wrote in my last post, I&amp;#8217;ve &lt;a href="http://goo.gl/En6hh"&gt;been working on Mozilla input&lt;/a&gt;.  After the first 2 weeks of my work, I ended up finishing almost all of the easy bugs on the project.  On Monday, I decided to tackle one of the more challenging bugg, &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=614535"&gt;bug 614535&lt;/a&gt;.  The situation in Input is interesting because we often show &lt;span class="caps"&gt;LTR&lt;/span&gt; text in &lt;span class="caps"&gt;RTL&lt;/span&gt; localized pages.  This bug was about problems with that.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/nazareth_college/3276325501/"&gt;&lt;img src="http://nigelb.me/img/languages.jpg" title="A Sign of the Times by NazarethCollege" alt="A Sign of the Times by NazarethCollege" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;My solution to the problem was to use the locale that&amp;#8217;s associated with each &amp;#8220;opinion&amp;#8221; and mark the text and the name of the locale itself with the correct direction.  I had sat down thought about this earlier and also brainstormed with a friend.  Our conclusion was to have a list in the settings that would be a list of locales that are Right to Left.  I discussed this solution in #webdev, and  &lt;a href="http://fredericiana.com"&gt;Fred Wenzel&lt;/a&gt; told me there already is such a list (Doh! I should have checked).  With the general agreement that my solution did make sense, I started to implement it.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;img src="http://nigelb.me/img/input.png" title="Screenshot of Input" alt="Screenshot of Input" /&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The above picture is a screenshot of input searches before the fix.  Some of the opinions have punctuations slightly messed up.  And the locale, English(US), isn&amp;#8217;t displayed properly.  Fixing the opinions was easy, I created a new class with property &amp;#8220;direction: ltr&amp;#8221; and applied that class if the locale of the message was not it the RTL_LANGUAGES array.  Fixing the locale name was slightly more challenging because its an item in &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; list.  Simply adding a class to the &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; made the bullet point to also switch.  This, may be technically correct (because that&amp;#8217;s where you&amp;#8217;d expect the bullet point in an &lt;span class="caps"&gt;LTR&lt;/span&gt; text), but it wasn&amp;#8217;t an elegant or good-looking solution.  I tried to put a span around the locale name, that didn&amp;#8217;t work either.  Eventually, with help from #webdev, I went with the &lt;a href="www.w3.org/WAI/PA/WCAG20/WD-WCAG20-TECHS-20070910/H34.html"&gt;Unicode left-to-right mark&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I still can&amp;#8217;t say nailed it, my pull request is pending review.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/LkkjJNFxM2s" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-07-20-nailing-localization-bug.html</feedburner:origLink></entry>
 
 <entry>
   <title>Pair Debugging with Byobu</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/xh8zxIlZoQo/2011-07-12-pair-debugging-with-byobu.html" />
   <updated>2011-07-12T07:50:00+00:00</updated>
   <id>http://nigelb.me/pair-debugging-with-byobu</id>
   <content type="html">&lt;p&gt;Lately, I&amp;#8217;ve been contributing to &lt;a href="http://input.mozilla.org"&gt;Mozilla Input&lt;/a&gt;.  After writing a few small fixes, I started picking up the slightly not-small ones.  My fixes ended up breaking tests.  That&amp;#8217;s when I ran into trouble.  The Mozilla webdevs I&amp;#8217;ve been working with use Mac and I use Ubuntu.  With help from &lt;a href="http://farmdev.com"&gt;kumar&lt;/a&gt; and &lt;a href="http://davedash.com"&gt;davedash&lt;/a&gt;, I tried debugging my setup to no avail. Long story short, we wanted to all be the same session and try to see the errors and use pdb.&lt;/p&gt;
&lt;p&gt;Eventually, davedash gave me a user on an Ubuntu &lt;span class="caps"&gt;VPS&lt;/span&gt; where I set everything up.  Since, the whole point of it was debugging this together, we debugged over byobu.  Dave and I both logged into the same byobu session.  It was just great for pair debugging.  He waited while I setup everything and I watched how he was debugging.  Perfect when your teammate is half a world away.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/xh8zxIlZoQo" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-07-12-pair-debugging-with-byobu.html</feedburner:origLink></entry>
 
 <entry>
   <title>Lighting Talks at UDW</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/HHEfZYjZiGM/2011-07-08-lightning-talk-at-udw.html" />
   <updated>2011-07-08T13:00:00+00:00</updated>
   <id>http://nigelb.me/lightning-talk-at-udw</id>
   <content type="html">&lt;p&gt;Since the last Ubuntu Developer Week, we&amp;#8217;ve been having a session dedicated to project lighting talks, if you have an interesting project that you&amp;#8217;re working on, talk about it for 5 minutes.  Show case your project and maybe ask for new contributors in this quick 5 minutes per project session!  If you&amp;#8217;re interested, please add your name and project name to the &lt;a href="https://wiki.ubuntu.com/UbuntuDeveloperWeek/LightningTalks"&gt;Lightning Talks page&lt;/a&gt; or come find me in #ubuntu-devel or #ubuntu-motu and let me know.  I&amp;#8217;ll add you to the list!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/HHEfZYjZiGM" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-07-08-lightning-talk-at-udw.html</feedburner:origLink></entry>
 
 <entry>
   <title>Nerd-friendly blogging</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/4XlcrTeh18A/2011-07-01-nerd-friendly-blogging.html" />
   <updated>2011-07-01T04:25:00+00:00</updated>
   <id>http://nigelb.me/nerd-friendly-blogging</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve been promising myself to write about my blog setup for a while now.  As I &lt;a href="http://nigelb.me/ubuntu/2011/06/08/new-domain-and-summit.html"&gt;explained earlier&lt;/a&gt;, I use &lt;a href="http://jekyllrb.com"&gt;Jekyll&lt;/a&gt; &amp;#8212; &amp;#8220;a simple, blog aware, static site generator&amp;#8221;.  Every time jekyll generates html, it gets dumped to the &lt;code&gt;_site&lt;/code&gt; folder.  I have my local nginx pointing to the &lt;code&gt;_site&lt;/code&gt; folder, so every time I start write blog posts, I open a terminal, go to my blog&amp;#8217;s root folder, and run &lt;code&gt;jekyll --auto&lt;/code&gt; and hit my nginx install from the browser.  This way, every time I save, I get to see what it looks like.  I found this much faster than doing &lt;code&gt;jekyll --auto --server&lt;/code&gt; and using the server with Jekyll.  I version control the whole folder minus the &lt;code&gt;_site&lt;/code&gt; folder with git and I&amp;#8217;ve set up a bare repo on my server to which this will get pushed too.&lt;/p&gt;
&lt;p&gt;Jekyll also runs on my server because I want to be able to blog from any machine from which I have &lt;span class="caps"&gt;SSH&lt;/span&gt; access to my server.  I&amp;#8217;ve set up the following commit hook on the bare git repo that regenerates the &lt;span class="caps"&gt;HTML&lt;/span&gt; files on every push.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="bash"&gt;&lt;span class="nv"&gt;GIT_REPO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blog.git
&lt;span class="nv"&gt;TMP_GIT_CLONE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/blog
&lt;span class="nv"&gt;PUBLIC_WWW&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/blog-www

git clone &lt;span class="nv"&gt;$GIT_REPO&lt;/span&gt; &lt;span class="nv"&gt;$TMP_GIT_CLONE&lt;/span&gt;
jekyll --no-auto &lt;span class="nv"&gt;$TMP_GIT_CLONE&lt;/span&gt; &lt;span class="nv"&gt;$PUBLIC_WWW&lt;/span&gt;
rm -Rf &lt;span class="nv"&gt;$TMP_GIT_CLONE&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Its a pretty rad setup.  For comments, I&amp;#8217;ve setup Disqus, which was quite easy.  I set up askimet with them, so that the spam gets filtered, yet to get spammed though (&lt;strong&gt;knocks on wood&lt;/strong&gt;).  Overall, the setup has been quite nice and yes &lt;strong&gt;very nerd friendly&lt;/strong&gt;.  I can write in my text editor of choice and commit to git with complete rollback history if I want to.  Not having an admin panel from which things can be changed is a great benefit!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/4XlcrTeh18A" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-07-01-nerd-friendly-blogging.html</feedburner:origLink></entry>
 
 <entry>
   <title>Git and Bash Love</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/CfNE4Gr8YAk/2011-06-30-git-bash-love.html" />
   <updated>2011-06-30T13:55:00+00:00</updated>
   <id>http://nigelb.me/git-bash-love</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve recently been working with git a lot, more specifically with branches.  I love git&amp;#8217;s branching and its fairly awesome.  However, its also easy to forget which branch you&amp;#8217;re currently working on (especially awful to find that the commits you did were to master :/).  Sometime back I did some extensive searching to fix that situation and finally stumbled upon a neat way to fix it.  I modified the PS1 variable to show the current branch!  Here&amp;#8217;s what I added to the .bashrc file in Ubuntu :)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="bash"&gt;&lt;span class="k"&gt;function &lt;/span&gt;parse_git_branch &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;ref&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;git symbolic-ref HEAD 2&amp;gt; /dev/null&lt;span class="k"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;span class="k"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;(&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;#refs/heads/&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;)&amp;quot;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="nv"&gt;RED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;\[\033[0;31m\]&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;YELLOW&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;\[\033[0;33m\]&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;GREEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;\[\033[0;32m\]&amp;quot;&lt;/span&gt;

&lt;span class="nv"&gt;PS1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;$PS1$RED\$(date +%H:%M) \w$YELLOW \$(parse_git_branch)$GREEN\$\[\033[0m\] &amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/CfNE4Gr8YAk" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-06-30-git-bash-love.html</feedburner:origLink></entry>
 
 <entry>
   <title>Fix FTBFS Jam</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/GByKPtUK-Oo/2011-06-27-fix-ftbfs-jam.html" />
   <updated>2011-06-27T15:25:00+00:00</updated>
   <id>http://nigelb.me/fix-ftbfs-jam</id>
   <content type="html">&lt;p&gt;As of me writing this post, there are about &lt;a href="http://qa.ubuntuwire.com/ftbfs" title="FTBFS"&gt;428 packages that have failed to build from source&lt;/a&gt;.  We&amp;#8217;re doing a &lt;span class="caps"&gt;FTBFS&lt;/span&gt; jam this Wednesday (29 June, 2011).  If you&amp;#8217;re interested in helping out, drop by in &lt;a href="irc://irc.freenode.net/#ubuntu-motu"&gt;#ubuntu-motu&lt;/a&gt; and just generally say that you want to help fix &lt;span class="caps"&gt;FTBFS&lt;/span&gt; and someone will be able to guide you.  We have a &lt;a href="http://corelli.tumbleweed.org.za/ubuntu-qa/bugjam/"&gt;list of packages&lt;/a&gt; that are potential targets to be fixed.&lt;/p&gt;
&lt;p&gt;While we won&amp;#8217;t try to fix everything, we&amp;#8217;ll be focusing on specifc failures, the ones caused by toolchain changes.  Ubuntu is changing the way it handles shared library linking.  Similar changes are also happening in Debian.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/wearyaswater/1593859179/"&gt;&lt;img src="http://nigelb.me/img/compiling2.jpg" title="agh by lacinda" alt="agh by lacinda" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Before I get into spare details of the reason for these build failures, I&amp;#8217;d like to emphasise that the failures that we&amp;#8217;re targetting to fix are quite easy and just needs some tinkering with make files.  I recently fixed a build failure in the redis package.  Take a look at the &lt;a href="https://launchpadlibrarian.net/70903387/buildlog_ubuntu-oneiric-i386.redis_2%3A2.2.5-1_FAILEDTOBUILD.txt.gz"&gt;build log of the failure&lt;/a&gt;, &lt;a href="https://code.launchpad.net/~nigelbabu/ubuntu/oneiric/redis/fix-ftbfs/+merge/62204"&gt;the patch that fixed it&lt;/a&gt;, and &lt;a href="https://launchpadlibrarian.net/72523812/buildlog_ubuntu-oneiric-i386.redis_2%3A2.2.5-1ubuntu1_BUILDING.txt.gz"&gt;the build log after the fix&lt;/a&gt;.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://xkcd.com/303"&gt;&lt;img src="http://nigelb.me/img/compiling1.png" title="Compiling by Randall Munroe" alt="Compiling by Randall Munroe" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h3&gt;Cause of the failure&lt;/h3&gt;
&lt;p&gt;For more information on fixing these failures, please see the &lt;a href="https://wiki.ubuntu.com/NattyNarwhal/ToolchainTransition"&gt;Ubuntu wiki page&lt;/a&gt; and the &lt;a href="http://wiki.debian.org/ToolChain/DSOLinking"&gt;Debian wiki page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Previously, the linker (ld) would allow indirect linking of shared library symbols.  For example, if you had a function spin in the library libwheel, and the library libcar used libwheel, then a program that used libcar would have the ability to call spin even though it never directly used libwheel. This kind of indirect linking leads to fragile code; when the dependency chain of a shared library changes, it can break the program that used it.&lt;/p&gt;
&lt;p&gt;ld now runs with the &lt;code&gt;--no-copy-dt-needed-entries&lt;/code&gt; option enabled by default.  This option is also sometimes called &lt;code&gt;--no-add-needed&lt;/code&gt;.  This means that, in the example above, the spin function would only be available when libwheel was directly linked by adding &lt;code&gt;-lwheel&lt;/code&gt; to the command-line compiler flags, and not available indirectly through libcar.  Also, ld runs with the &lt;code&gt;--as-needed&lt;/code&gt; option enabled by default.  This means that, in the example above, if no symbols from libwheel were needed by racetrack, then libwheel would not be linked even if it was explicitly included in the command-line compiler flags.&lt;/p&gt;
&lt;p&gt;The solution to a build error caused by indirect linking, is to directly link all needed libraries in the compiler flags on the command-line. For example, if you were previously linking with &lt;code&gt;-lcar -ltruck&lt;/code&gt;, you would now need to explicitly add &lt;code&gt;-lwheel&lt;/code&gt;. For example:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gcc -Wall racetrack.c -lcar -ltruck -lwheel -o racetrack&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;--as-needed option&lt;/code&gt; also makes the linker sensitive to the ordering of libraries on the command-line. You may need to move some libraries later in the command-line, so they come after other libraries or files that require symbols from them. For example, the following link line is wrong, and needs to be changed so that libraries come after objects that use them:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;gcc -Wall -lwheel -lcar -ltruck -o racetrack racetrack.c&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;When problems result from the &lt;code&gt;--no-copy-dt-needed-entries&lt;/code&gt; option, the linker will always give you a hint at the right fix in the error message, for example &amp;#8220;try adding it to the linker command line&amp;#8221;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/GByKPtUK-Oo" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-06-27-fix-ftbfs-jam.html</feedburner:origLink></entry>
 
 <entry>
   <title>Hacking on Ubuntu Single Sign-On</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/_MN1VG9yKAI/2011-06-19-hacking-on-single-sign-on.html" />
   <updated>2011-06-19T11:30:00+00:00</updated>
   <id>http://nigelb.me/hacking-on-single-sign-on</id>
   <content type="html">&lt;p&gt;As most of you, who&amp;#8217;ve used community projects like &lt;a href="http://loco.ubuntu.com"&gt;Loco Team Portal&lt;/a&gt; and &lt;a href="http://summit.ubuntu.com"&gt;Summit&lt;/a&gt; know, we use &lt;a href="http://login.launchpad.net"&gt;login.launchpad.net&lt;/a&gt; as our open id provider.  I believe the future is to use &lt;a href="https//login.ubuntu.com"&gt;login.ubuntu.com&lt;/a&gt;.  It is more consitent in terms of design, and is the exact same code as login.launchpad.net but with different configuration and theme.&lt;/p&gt;
&lt;p&gt;We have bugs for both the projects to switch to login.ubuntu.com, but it isn&amp;#8217;t really easy because login.ubuntu.com configuration is actually more stricter.  We can&amp;#8217;t login from it locally, i.e., it will not pass on my credentials back to my app if I&amp;#8217;m running my app on 127.0.0.1.  The &lt;span class="caps"&gt;ISD&lt;/span&gt; team suggested that I just run &lt;span class="caps"&gt;SSO&lt;/span&gt; locally and do my testing.  After running Launchpad, what could be so hard right?  Famous last words ;-)&lt;/p&gt;
&lt;p&gt;I fetched the &lt;a href="https://launchpad.net/canonical-identity-provider"&gt;source of &lt;span class="caps"&gt;SSO&lt;/span&gt;&lt;/a&gt; and started the bootstrap as the instructions said.  It failed because some of the configs were in a private branch.  With much hair-pulling, head-desking, and lots of help from David and Ricardo, I finally got it running last week.  One of the main problems of doing this was the configuration for &lt;span class="caps"&gt;SSO&lt;/span&gt; are not stored in the &amp;#8220;django way&amp;#8221; of things.  It&amp;#8217;s stored as .cfg files with some &lt;a href="https://launchpad.net/configglue"&gt;configglue&lt;/a&gt; magic.  Configglue wasn&amp;#8217;t originally open-sourced and thus the configs were private.  The other problem was my inexperience with postgres :-)&lt;/p&gt;
&lt;p&gt;After configglue was open-sourced, the configs still sat in a private branch because nobody got around to fixing the bootstrap process, until last week.  On Friday, Ricardo finally &lt;a href="http://bazaar.launchpad.net/~canonical-isd-hackers/canonical-identity-provider/2.x-trunk/revision/165"&gt;gave me the good news!&lt;/a&gt;.  The bootstrap process is now fixed so that community members can actually run &lt;span class="caps"&gt;SSO&lt;/span&gt; without hair pulling.  We can now easily work on doing the transition from login.launchpad.net to login.ubuntu.com&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/_MN1VG9yKAI" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-06-19-hacking-on-single-sign-on.html</feedburner:origLink></entry>
 
 <entry>
   <title>Landing with tarmac</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/HHyjqZjDwh8/2011-06-11-landing-with-tarmac.html" />
   <updated>2011-06-11T07:30:00+00:00</updated>
   <id>http://nigelb.me/landing-with-tarmac</id>
   <content type="html">&lt;p&gt;I heard about &lt;a href="http://launchpad.net/tarmac"&gt;Tarmac&lt;/a&gt; a few weeks ago when Shane mentioned it in one of his intern diary blog posts.  At that point I didn&amp;#8217;t actually look into it much since I thought it was something that&amp;#8217;s internal to Canonical.  Last week, Michael Hall told me about Tarmac again and how they use it to land branches.  This time though, I could grasp what it was since it sounded to provide a functionality &lt;a href="https://launchpad.net/~launchpad-pqm"&gt;Launchpad&amp;#8217;s &lt;span class="caps"&gt;PQM&lt;/span&gt;&lt;/a&gt;.  Every time Tarmac is run, it checks for approved branches that are ready to land.  If it finds that they satisfy the conditions (optional) that are defined in its config, it lands them.  (It can do more, please read the documentation for that).&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/inf3ktion/4477642894/"&gt;&lt;img src="http://nigelb.me/img/tarmac.jpg" title="Gib Airport Runway by Willtron" alt="Gib Airport Runway by Willtron" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style="clear: both;"&gt;&lt;/div&gt;
&lt;p&gt;I&amp;#8217;m now running Tarmac for both &lt;a href="http://launchpad.net/loco-directory"&gt;Loco Team Portal project&lt;/a&gt; and the &lt;a href="http://launchpad.net/summit"&gt;Summit project&lt;/a&gt;.  The really cool commitmessage plugin allowed me to define how each commit should look.  I&amp;#8217;ve formatted it in a way easy to figure out how did the review and who authored the change, and which bugs it fixed.  If you want to see how it looks like, checkout the &lt;a href="http://bazaar.launchpad.net/~summit-hackers/summit/trunk/changes"&gt;last few commits for summit&lt;/a&gt;.  I did find a bug in tarmac documentation for which I now submitted a merge request :-)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/HHyjqZjDwh8" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-06-11-landing-with-tarmac.html</feedburner:origLink></entry>
 
 <entry>
   <title>Cleaning up the Planet</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/FW00W0tIa6I/2011-06-10-cleaning-up-the-planet.html" />
   <updated>2011-06-10T22:00:00+00:00</updated>
   <id>http://nigelb.me/cleaning-up-the-planet</id>
   <content type="html">&lt;p&gt;For a while I&amp;#8217;ve noticed that Planet Ubuntu configurations are in a sort of mess.  Officially, individuals who are Ubuntu members and some other organizations (&lt;a href="https://wiki.ubuntu.com/PlanetUbuntu"&gt;more details&lt;/a&gt;) can post to the planet.  But when someone&amp;#8217;s membership expires, cleaning the config is a painful and tedious task.  Additionally, there is also no way, other than manual, to verify if the folks with their feeds listed in the planet config file are people with Ubuntu membership.  In this regard, I brought this matter up with the Community Council.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/inf3ktion/4477642894/"&gt;&lt;img src="http://nigelb.me/img/cleaning.jpg" title="Cleaning by Roosh Inf3ktion" alt="Cleaning by Roosh Inf3ktion" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div style="clear: both;"&gt;&lt;/div&gt;
&lt;h2&gt;Cleaning up the Mess&lt;/h2&gt;
&lt;p&gt;The community council has decided that every feed would be &amp;#8220;owned&amp;#8221; by an Ubuntu member whose launchpad ID should be in the &lt;code&gt;nick&lt;/code&gt; field.  This will help us run a script to check if all the &amp;#8220;owners&amp;#8221; of the feeds are Ubuntu members.  If there are team / organization feeds, an Ubuntu member should put their launchpad ID in the nick field and this individual would be responsible for the feeds of that team.  Please note that its OK for an Ubuntu member to sponsor multiple feeds.  That way a member of the community can be the sponsor for their own feed as well as an affiliated organisation or sub-project, like in the example below.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="ini"&gt;&lt;span class="k"&gt;[http://feeds.feedburner.com/nigel-ubuntu]&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Nigel Babu&lt;/span&gt;
&lt;span class="na"&gt;face&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;nigelbabu.png&lt;/span&gt;
&lt;span class="na"&gt;nick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;nigel&lt;/span&gt;

&lt;span class="k"&gt;[http://ubuntuclassroom.wordpress.com/feed/?mrss=off]&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;Ubuntu Classroom&lt;/span&gt;
&lt;span class="na"&gt;face&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;ubuntuclassroom.png&lt;/span&gt;
&lt;span class="na"&gt;nick&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;ubuntuclassroom&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this example, I should be changing the nick for my feed to &lt;code&gt;nick = nigelbabu&lt;/code&gt; since my Launchpad ID is &lt;em&gt;nigelbabu&lt;/em&gt;. For the classroom feed, I should change &lt;code&gt;nick = ubuntuclassroom&lt;/code&gt; to &lt;code&gt;nick = nigelbabu&lt;/code&gt; since I&amp;#8217;m an Ubuntu member part of the team and I&amp;#8217;m willing to own that feed.&lt;/p&gt;
&lt;h2&gt;Where you can help!&lt;/h2&gt;
&lt;p&gt;If your feed needs fixing, this is how you should proceed.  You first need to &lt;a href="https://launchpad.net/+me/+editsshkeys"&gt;add an &lt;span class="caps"&gt;SSH&lt;/span&gt; public key&lt;/a&gt; to your launchpad account, if you haven&amp;#8217;t done so already.  Then to add your feed, first install the &amp;#8220;bzr&amp;#8221; package if you haven&amp;#8217;t done so already&lt;/p&gt;
&lt;p&gt;&lt;code&gt;$sudo apt-get install bzr&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next, check out the configuration files from the launchpad bzr tree.  Please note that I&amp;#8217;ve created a separate branch (&lt;strong&gt;lp:~planet-ubuntu/config/new&lt;/strong&gt;) for the new config change that is going to happen.  &lt;strong&gt;Remember to checkout the correct branch from Launchpad.&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="text"&gt;$ bzr launchpad-login yourusername
$ bzr checkout lp:~planet-ubuntu/config/new planet-ubuntu
$ cd planet-ubuntu/@
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now open up the config.ini file and edit your respective entries.&lt;/p&gt;
&lt;p&gt;Once you are done with your changes, commit your change&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="text"&gt;$ bzr commit
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Give a meaninful commit message, save, and exit your editor.  If you face any trouble or need help, please feel to ping me, nigelb on irc.freenode.net.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve fixed about 50 feeds to be owned by the right people.  Please find below the feeds that either do not have a nick field, or the name filled in the nick field is not the launchpad ID for an Ubuntu member (the nick is given next to the feed in that case).  This list can also be found in a &lt;a href="http://paste.ubuntu.com/623603/"&gt;pastebin&lt;/a&gt;.  If you know who owns a feed, please feel free to leave a comment so I can update!&lt;/p&gt;
&lt;table&gt;
	&lt;tr&gt;
		&lt;th&gt;Feed &lt;/th&gt;
		&lt;th&gt;nick &lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blogs.thehumanjourney.net/oaubuntu/feed/entries/rss &lt;/td&gt;
		&lt;td&gt; oxfordarchaeology &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://ubuntungo.wordpress.com/feed/atom &lt;/td&gt;
		&lt;td&gt; ubuntungo &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://screencasts.ubuntu.com/rss.xml &lt;/td&gt;
		&lt;td&gt; None &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.qa.ubuntu.com/rss.xml &lt;/td&gt;
		&lt;td&gt; ubuntuqa &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://debaday.debian.net/feed/?cat=4 &lt;/td&gt;
		&lt;td&gt; debaday &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://bazaarvcs.wordpress.com/feed/ &lt;/td&gt;
		&lt;td&gt; bzr &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://voices.canonical.com/kernelteam/feed/ &lt;/td&gt;
		&lt;td&gt; kernelteam &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://ubuntuserver.wordpress.com/atom &lt;/td&gt;
		&lt;td&gt; ubuntu-server &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://ubuntustudio.org/blog/6/feed &lt;/td&gt;
		&lt;td&gt; None &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://valueerror.wordpress.com/tags/planet-ubuntu/feed/atom/ &lt;/td&gt;
		&lt;td&gt; andrea-bs &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://normangarcia.info/blog/?cat=5&amp;amp;feed=rss2 &lt;/td&gt;
		&lt;td&gt; n0rman &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://haecceity.clearairturbulence.org/xml/atom/tags/tech/feed.xml &lt;/td&gt;
		&lt;td&gt; thom &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.digital-scurf.org/?flav=atom&amp;amp;planet=ubuntu &lt;/td&gt;
		&lt;td&gt; Kinnison &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://raw.no/personal/blog/tech/?flav=rss &lt;/td&gt;
		&lt;td&gt; Mithrandir &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://andrew.puzzling.org/diary/rss &lt;/td&gt;
		&lt;td&gt; spiv &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blogs.gnome.org/syndicate/jamesh &lt;/td&gt;
		&lt;td&gt; jamesh &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.fooishbar.org/blog/?flav=rss &lt;/td&gt;
		&lt;td&gt; daniels &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.advogato.org/person/Burgundavia/rss.xml &lt;/td&gt;
		&lt;td&gt; Burgundavia &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://engage.wordpress.com/tag/ubuntu/feed/atom &lt;/td&gt;
		&lt;td&gt; jsgotangco &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.manucornet.net/blog/dreamerant/?cat=6&amp;amp;feed=rss2 &lt;/td&gt;
		&lt;td&gt; lmanul &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://oskuro.net/blog?flav=rss &lt;/td&gt;
		&lt;td&gt; jordi &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://dev.osso.nl/herman/blog/feed/?cat=15 &lt;/td&gt;
		&lt;td&gt; spacey &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://sfllaw.livejournal.com/data/rss?tag=p.u.o &lt;/td&gt;
		&lt;td&gt; sfllaw &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.omma.net/?feed=rss2 &lt;/td&gt;
		&lt;td&gt; heno &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://ubuntudemon.wordpress.com/tag/english/feed/atom &lt;/td&gt;
		&lt;td&gt; ubuntu_demon &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://jeremie.famille-corbier.net/blog.atom &lt;/td&gt;
		&lt;td&gt; Toadstool &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://thefluxproject.com/blog/tags/play/ubuntu/?feed=rss2 &lt;/td&gt;
		&lt;td&gt; irvin &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://feeds.feedburner.com/skyplanet &lt;/td&gt;
		&lt;td&gt; imtheface &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.dhanapalan.com/blog/tags/special/syndication-floss/atom &lt;/td&gt;
		&lt;td&gt; yama &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.robotgeek.org/blog/topics/linux/feed/atom/ &lt;/td&gt;
		&lt;td&gt; robotgeek &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://mruiz.openminds.cl/blog/index.php/feed/?cat=11 &lt;/td&gt;
		&lt;td&gt; mruiz &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.cypherbios.org/blog/?cat=3&amp;amp;language=en&amp;amp;feed=rss2 &lt;/td&gt;
		&lt;td&gt; cypherbios &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.warma.dk/tag/planetubuntu/feed &lt;/td&gt;
		&lt;td&gt; shawarma &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://vizZzion.org/blog/tags/english/feed/ &lt;/td&gt;
		&lt;td&gt; sebas &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://janimo.blogspot.com/feeds/posts/default/-/en/ &lt;/td&gt;
		&lt;td&gt; janimo &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://useopensource.blogspot.com/feeds/posts/default &lt;/td&gt;
		&lt;td&gt; tristanbob &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://pereira-ubuntu.blogspot.com/feeds/posts/default &lt;/td&gt;
		&lt;td&gt; rpereira &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://etank.bglug.net/tags/linux/ubuntu/feed/atom &lt;/td&gt;
		&lt;td&gt; etank &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.earobinson.org/?feed=atom &lt;/td&gt;
		&lt;td&gt; earobinson &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://kubasik.net/blog/feed/ &lt;/td&gt;
		&lt;td&gt; kkubasik &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.joeterranova.net/archives/linux/ubuntu/planetubuntu/feed &lt;/td&gt;
		&lt;td&gt; Joe_CoT &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://mhb.ath.cx/blog/tags/planet/feed/ &lt;/td&gt;
		&lt;td&gt; mhb &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://tjaalton.wordpress.com/feed/ &lt;/td&gt;
		&lt;td&gt; tepsipakki &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.kagou.fr/feed/tag/PU/rss2 &lt;/td&gt;
		&lt;td&gt; kagou &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.reponses.net/blog/rss-meta.php?key=tag&amp;amp;value=Ubuntu &lt;/td&gt;
		&lt;td&gt; huats &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.screenage.de/blog/tags/ubuntu/feed &lt;/td&gt;
		&lt;td&gt; ccm &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.shermann.name/feeds/posts/default/-/Ubuntu &lt;/td&gt;
		&lt;td&gt; \\sh &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://en.andregondim.eti.br/?feed=rss2 &lt;/td&gt;
		&lt;td&gt; Andre_Gondim &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://pinstack.blogspot.com/feeds/posts/default/-/Planet%20Ubuntu &lt;/td&gt;
		&lt;td&gt; DPic &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://posingaspopular.wordpress.com/tags/ubuntu/feed/ &lt;/td&gt;
		&lt;td&gt; posingaspopular &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.czessi.de/en/weblog/tagged/ubuntu-planet/feed &lt;/td&gt;
		&lt;td&gt; Czessi &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://en.emgent.org/index.php/feed/ &lt;/td&gt;
		&lt;td&gt; emgent &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.ndeschildre.net/tags/ubuntu/feed/ &lt;/td&gt;
		&lt;td&gt; nand &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://zonatux.wordpress.com/tags/planet-ubuntu/feed/atom &lt;/td&gt;
		&lt;td&gt; viperhoot &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://adamsommer.blogspot.com/feeds/posts/default/-/ubuntu &lt;/td&gt;
		&lt;td&gt; sommer &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blogs.gnome.org/awalton/tags/ubuntu/feed/atom &lt;/td&gt;
		&lt;td&gt; awalton &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://compadre.dk/blog/tags/planet-ubuntu/feed/ &lt;/td&gt;
		&lt;td&gt; sbc &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://jontheechidna.wordpress.com/feed/?mrss=off &lt;/td&gt;
		&lt;td&gt; JontheEchidna &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://oldsoldiers.wordpress.com/tags/ubuntu/feed/atom &lt;/td&gt;
		&lt;td&gt; charles.davis &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://bryanquigley.com/?feed=atom&amp;amp;tag=planet-ubuntu &lt;/td&gt;
		&lt;td&gt; gQuigs &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.tuxmaniac.com/blog/tags/ubuntu/feed &lt;/td&gt;
		&lt;td&gt; tuxmaniac &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://ubuntu-rescue-remix.org/taxonomy/term/6/0/feed &lt;/td&gt;
		&lt;td&gt; arzajac &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://feeds2.feedburner.com/mrooney &lt;/td&gt;
		&lt;td&gt; michael &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://norsetto.site11.com/?feed=rss2 &lt;/td&gt;
		&lt;td&gt; norsetto &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.seqfault.de/en/taxonomy/term/181/0/feed &lt;/td&gt;
		&lt;td&gt; nemphis &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://milocasagrande.wordpress.com/tags/english/feed/atom &lt;/td&gt;
		&lt;td&gt; Gwaihir &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://ampache.wordpress.com/feed/atom/ &lt;/td&gt;
		&lt;td&gt; porthose &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://fnords.wordpress.com/tags/ubuntu/feed/atom/ &lt;/td&gt;
		&lt;td&gt; tcarrez &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://kyle.mcmartin.ca/.plan/index.php/feed/ &lt;/td&gt;
		&lt;td&gt; kylem &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://meanmachine.wordpress.com/tags/PlanetUbuntu/feed/?mrss=off &lt;/td&gt;
		&lt;td&gt; Mean-Machine &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://nocturn.vsbnet.be/taxonomy/term/12/0/feed &lt;/td&gt;
		&lt;td&gt; Nocturn &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://tomas.zeimys.lt/tags/ubuntu/feed/ &lt;/td&gt;
		&lt;td&gt; zeimys &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.lamalex.net/feed/atom/ &lt;/td&gt;
		&lt;td&gt; lamalex &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.daenim.com/atom/1 &lt;/td&gt;
		&lt;td&gt; ziroday &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://davidsiegel.org/tag/ubuntu/feed/ &lt;/td&gt;
		&lt;td&gt; djsiegel &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.gunbladeiv.com/feeds/posts/default/-/planet-ubuntu &lt;/td&gt;
		&lt;td&gt; gunbladeiv &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://wesley.vidiqatch.org/feed/ &lt;/td&gt;
		&lt;td&gt; profoX &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.warperbbs.de/index.php?/feeds/categories/1-Ubuntu.rss &lt;/td&gt;
		&lt;td&gt; Ampelbein &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://feeds.feedburner.com/cpwordpress?format=xml &lt;/td&gt;
		&lt;td&gt; Hellow &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://feeds.feedburner.com/JesperJarlskovsDevelopmentBlog &lt;/td&gt;
		&lt;td&gt; Jarlen &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blogs.fsfe.org/rcarreras/?feed=rss2 &lt;/td&gt;
		&lt;td&gt; rcarreras &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.rubmyubuntu.com/syndication/blogs/1 &lt;/td&gt;
		&lt;td&gt; foxbuntu &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://czam01.blogspot.com/feeds/posts/default/-/PlanetaUbuntu &lt;/td&gt;
		&lt;td&gt; czam &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.baablogic.net/drupal/taxonomy/term/1/0/feed &lt;/td&gt;
		&lt;td&gt; rhpot1991 &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://kristofkiszel.wordpress.com/tags/planet-ubuntu/feed/atom &lt;/td&gt;
		&lt;td&gt; Ulyses &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://josernestodavila.blogspot.com/feeds/posts/default/-/planet &lt;/td&gt;
		&lt;td&gt; alucardni &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.brettalton.com/feed/?cat=ubuntu &lt;/td&gt;
		&lt;td&gt; brettalton &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://blog.andrew.net.au/planetubuntu/index.rss &lt;/td&gt;
		&lt;td&gt; Caesar &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://ubuntuedge.wordpress.com/feed/?mrss=off &lt;/td&gt;
		&lt;td&gt; None &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://ayrtonaraujo.net/blog/en/tag/ubuntu/feed/?mrss=off &lt;/td&gt;
		&lt;td&gt; easter_egg &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.projblog.com/?cat=planet-ubuntu&amp;amp;feed=rss2 &lt;/td&gt;
		&lt;td&gt; j_baer &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://deindre.wordpress.com/tags/ubuntu/feed/atom &lt;/td&gt;
		&lt;td&gt; Deindre &lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td&gt; http://www.en.salvatorepalma.net/tags/planet-ubuntu/feed/ &lt;/td&gt;
		&lt;td&gt; totopalma &lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/FW00W0tIa6I" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-06-10-cleaning-up-the-planet.html</feedburner:origLink></entry>
 
 <entry>
   <title>Cookies and hugs to Penny!</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/sGyj0yAnc9Q/2011-06-09-cookies-and-hugs-to-penny.html" />
   <updated>2011-06-09T00:00:00+00:00</updated>
   <id>http://nigelb.me/cookies-and-hugs-to-penny</id>
   <content type="html">&lt;p&gt;Yesterday, &lt;a href="/ubuntu/2011/06/08/new-domain-and-summit.html"&gt;I talked&lt;/a&gt; about summit and how we need help with its development.  I&amp;#8217;m happy today that &lt;a href="http://launchpad.net/~pendulum"&gt;Penelope Stowe&lt;/a&gt; has joined us in &lt;del&gt;breaking&lt;/del&gt; fixing summit.  Congrats for her first &lt;a href="https://code.launchpad.net/~pendulum/summit/665589-launchpad-request-retries"&gt;merge proposal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are your cookies :-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/compujeramey/47025604/"&gt;&lt;img src="http://nigelb.me/img/cookies.jpg" title="&amp;#39;Cookies&amp;#39; by Jeramey Jannene" alt="&amp;#39;Cookies&amp;#39; by Jeramey Jannene" /&gt;&lt;/a&gt;&lt;br /&gt;
Cookies for Penny&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/sGyj0yAnc9Q" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-06-09-cookies-and-hugs-to-penny.html</feedburner:origLink></entry>
 
 <entry>
   <title>Blog moved and summit bitesize</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/fqgCQJmjY9I/2011-06-08-new-domain-and-summit.html" />
   <updated>2011-06-08T00:00:00+00:00</updated>
   <id>http://nigelb.me/new-domain-and-summit</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve moved my blog from &lt;a href="http://justanothertriager.wordpress.com"&gt;wordpress.com&lt;/a&gt; to &lt;a href="http://nigelb.me"&gt; nigelb.me&lt;/a&gt;.  I originally planned to run wordpress here too and export my posts from the old blog here.  Unfortunately, that ran into problems. My &lt;a href="http://www.ramhost.us/"&gt;&lt;span class="caps"&gt;VPS&lt;/span&gt;&lt;/a&gt; wouldn&amp;#8217;t run nginx + php-cgi + mysql at the same time.  Every time I tried, I would run out of memory.  My first instinct was to increase the &lt;span class="caps"&gt;RAM&lt;/span&gt;, which I did.  But, I looked for a better solution.  My friend suggested &lt;a href="http://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;.  In Jekyll, basically, the posts are written in markup and then converted to &lt;span class="caps"&gt;HTML&lt;/span&gt; files.  That got me interested, I could eleminate php and mysql out of the picture.  That&amp;#8217;s a lot of memory saved to do other things.  It took me a fair few number of hours to set everything up. But I&amp;#8217;m very happy with the security (no admin panel really) and I&amp;#8217;ve used git hooks so I write a blog post on my computer and push to the repository, which updates the live site.  Awesome and geeky.  With a bit of effort, I&amp;#8217;ve gotten &lt;span class="caps"&gt;RSS&lt;/span&gt; feeds and comments working too.&lt;/p&gt;
&lt;p&gt;Now, the other thing about summit.  If you&amp;#8217;ve ever participated in a &lt;abbr title="Ubuntu Developer Summit"&gt;&lt;span class="caps"&gt;UDS&lt;/span&gt;&lt;/abbr&gt;, you probably know &lt;a href="http://summit.ubuntu.com"&gt;summit&lt;/a&gt;.  You&amp;#8217;ve probably griped about it a couple of times, haven&amp;#8217;t you? ;)  Well, you should also know that summit is &lt;a href="http://launchpad.net/summit"&gt;open-source&lt;/a&gt; and built on Python/Django.  Right now, we&amp;#8217;re looking for fresh blood to come and join us.  We&amp;#8217;ve fixed a bunch of bugs post-&lt;span class="caps"&gt;UDS&lt;/span&gt; and we&amp;#8217;re looking for more people to join us in the fun.  I&amp;#8217;ve tagged &lt;a href="https://bugs.launchpad.net/summit/+bugs?field.tag=bitesize"&gt;a few bugs as bitesize&lt;/a&gt;.  They are quite easy and if you need help setting up the environment and actually going about fixing the bug, please feel free to ping me (nigelb), Michael Hall (mhall119), or Chris Johnston (cjohnston) in &lt;a href="irc://irc.freenode.net/#ubuntu-website"&gt;#ubuntu-website on irc.freenode.net&lt;/a&gt;.  If you&amp;#8217;re a web developer who wants to contribute to community projects other than summit, please take a look at the &lt;a href="https://launchpad.net/community-web-projects"&gt;Community Web Projects&lt;/a&gt;.  I believe we have enough for everyone :)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/fqgCQJmjY9I" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-06-08-new-domain-and-summit.html</feedburner:origLink></entry>
 
 <entry>
   <title>Fixing Launchpad Bugs</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/6JM2LF8tPCU/2011-05-20-fixing-launchpad-bugs.html" />
   <updated>2011-05-20T00:00:00+00:00</updated>
   <id>http://nigelb.me/fixing-launchpad-bugs</id>
   <content type="html">&lt;p&gt;At &lt;span class="caps"&gt;UDS&lt;/span&gt;, I met the Launchpad folks, who encouraged contributions to Launchpad itself in a couple of sessions.  I&amp;#8217;ve tried twice before and always get stuck with the getting a virtual machine set up stage.  This time, I decided that I&amp;#8217;m going to skip that step and go ahead and install it on my lucid laptop.  As soon as I got back, I &lt;a href="https://dev.launchpad.net/Getting"&gt;Getting the launchpad source code&lt;/a&gt;.  rocketfuel-setup is a 400-line shell script that does the heavy lifting of the installation for the user.  After having written such a script at work, I have huge respect for the author of this script :)&lt;/p&gt;
&lt;p&gt;After installing, I looked around for a simple bug to fix and picked &lt;a href="https://bugs.launchpad.net/launchpad/+bug/645825"&gt;bug 645825&lt;/a&gt;.  The bug appeared easy enough to fix and I had a fix ready in a few minutes.  I proposed a merge and was told that it needs work.  It needs test cases!  Another day I spend with &lt;a href="https://launchpad.net/~mbp"&gt;poolie&lt;/a&gt;, &lt;a href="https://twitter.com/#!/mumak"&gt;jml&lt;/a&gt;, and &lt;a href="https://twitter.com/#!/grahambinns"&gt;gmb&lt;/a&gt; and a few hours of learning to write test cases for Launchpad.  Gmb and I used etherpad to collaboratively write the test and I&amp;#8217;ll be honest, that was great fun and very productive.  Multiple tries and we finally got it right and he landed it in ec2 for the entire set of tests to run.  The tests failed.&lt;/p&gt;
&lt;p&gt;I quickly popped by #launchpad-dev and &lt;a href="http://launchpad.net/~wgrant"&gt;wgrant&lt;/a&gt; and &lt;a href="https://twitter.com/#!/mwhudson"&gt;mwhudson&lt;/a&gt; helped me fix and wgrant landed it into ec2 for me.  It passed and I did a qa on qastaging.launchpad.net!  I&amp;#8217;ll be honest that it was an extremely proud moment.  This kind of made me want to fix another bug and I found &lt;a href="https://bugs.launchpad.net/launchpad/+bug/203478"&gt;bug 203478&lt;/a&gt;.  This was something that did irk me before &lt;span class="caps"&gt;UDS&lt;/span&gt;.  This time, &lt;a href="https://twitter.com/#!/deryckh"&gt;deryck&lt;/a&gt; helped me with writing the test cases correctly first, watching it fail, fixing the bug, and then watch the test succeed.  Did something hugely silly this time.  I was running the test in a new branch and writing code in the devel branch, which would lead to test not being found, fix not being effective and a bunch of problems.  Lesson learned is to use only my branch never the devel branch.&lt;/p&gt;
&lt;p&gt;Overall, I liked fixing LP bugs though I&amp;#8217;ve been told that its a brave move.  The Launchpad developers have been extremely friendly and welcoming for new community developers.  I think I&amp;#8217;ll take more time to figure out the more complex bugs, but its fun helping fix the ones I can.&lt;/p&gt;
&lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;Edit&lt;/strong&gt;&lt;/span&gt;: I missed mentioning &amp;#8211; Launchpad can&amp;#8217;t take a patch until you&amp;#8217;ve signed the contributor agreement.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/6JM2LF8tPCU" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-05-20-fixing-launchpad-bugs.html</feedburner:origLink></entry>
 
 <entry>
   <title>Ubuntu Developer Day!</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/v7n9DyG5cf0/2011-01-31-ubuntu-developer-day.html" />
   <updated>2011-01-31T00:00:00+00:00</updated>
   <id>http://nigelb.me/ubuntu-developer-day</id>
   <content type="html">&lt;p&gt;A long awaited blog post about the Ubuntu Developer Day.  &lt;a title="Jorge Castro" href="http://castrojo.tumblr.com"&gt;Jorge&lt;/a&gt; has been saying &amp;#8216;&lt;span class="caps"&gt;PICS&lt;/span&gt; OR IT &lt;span class="caps"&gt;DIDNT&lt;/span&gt; &lt;span class="caps"&gt;HAPPEN&lt;/span&gt;!&amp;#8217; for a while now.  Anyway, I got all the pictures today morning finally.  I don&amp;#8217;t remember how I first heard of Ubuntu Developer Day, but I remember registering within minutes of it being announced.  I got  a text the previous night reminding me that the registrations would start at 8:15 am and the sessions would start at 9 am.  The area where the conference was happening was quite close to my place, but with the morning traffic, it took almost 30 minutes for me to get there.  I went along with 3 of my colleagues who&amp;#8217;d also signed up.&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;a href="http://www.flickr.com/photos/nigelbabu/5403781622/in/set-72157625818416551/"&gt;&lt;img class="aligncenter" title="At UDD" src="http://farm6.static.flickr.com/5176/5403781622_4fdfa83175.jpg" alt="" width="500" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;
Once we got our ID cards, we had a cup of coffee (the daily caffeine dose ;) ), and moved into the conference hall to get good seats.  I&amp;#8217;m guessing there were enough chairs for at least 450 people there.  I&amp;#8217;m guessing there were a few people backing out, because later we saw a ID cards that weren&amp;#8217;t claimed.  Still the crowd was &lt;span class="caps"&gt;BIG&lt;/span&gt;!&lt;/p&gt;
&lt;p&gt;John Bernard from Canonical acted as the MC for the event and we started with Prakash Advani welcoming us.  We learned that people had come from Sri Lanka and Himachal Pradesh (that&amp;#8217;s 2400 km away!) to be here.  After the welcome was John Bernard&amp;#8217;s where we are.  He started with the &lt;a href="http://www.youtube.com/watch?v=9SQoF24ozJw"&gt;Discover Ubuntu commercial&lt;/a&gt;.  I&amp;#8217;m guessing a lot of people have already seen it.  It set the mood for the rest of the day I guess.&lt;/p&gt;
&lt;p&gt;Then came Jon Melamut&amp;#8217;s keynote.  He talked about the chasm among other things.  The talk was mostly things I&amp;#8217;d heard of before and for my colleagues it was very interesting to hear about it.  I don&amp;#8217;t remember a lot of the talks.  I should perhaps have taken notes.  The talks were too interesting to take notes and I&amp;#8217;m hoping the slides will be up some time today.&lt;/p&gt;
&lt;p&gt;After Jon, Dipankar Sarma, from IBM&amp;#8217;s Linux Technology Center talked about the work &lt;span class="caps"&gt;IBM&lt;/span&gt; has been doing in the Linux space.  His talk was at the kernel level and perhaps went a bit over my head.  After his talk, I saw Ritesh, a Debian Developer I know, standing up and asking a few questions.  We broke for coffee and I chatted with Ritesh for a minute or two before getting back in.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/nigelbabu/5403779064/in/set-72157625818416551/"&gt;&lt;img class="aligncenter" title="Tweeting!" src="http://farm6.static.flickr.com/5219/5403779064_32aaf1e974.jpg" alt="" width="500" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After the break, Chase Douglas talked about the work on touch support in Ubuntu.  This was a talk I was looking forward to.  I had demo&amp;#8217;d the touch devices there and it was really cool to try it out.  Chase did a really nice session and kept things interesting.&lt;/p&gt;
&lt;p&gt;Nick Barcet took over for the next 2 sessions.  He took the pre-lunch and post-lunch session.  Now those are the traditionally more difficult sessions to keep people interested.  I have to say, he did a marvelous job of it.  It was great to see the work Canonical has been doing in the cloud and server and how things are going.&lt;/p&gt;
&lt;p&gt;After Nick, we had a talk from Freescale and then another talk by Chase about Launchpad and Bazaar.  I had fond memories of &lt;a href="http://doctormo.org/"&gt;Martin&lt;/a&gt; teaching me about Launchpad and bzr about 2 years back or so.  During lunch earlier, I&amp;#8217;d met Hardik and he showed me the multi touch demo.  That blew me away.  I have to say, it was really cool!  I got to see a number of computer manufacturer&amp;#8217;s in India selling with Ubuntu pre-installed.  Now, I know how which laptop to buy if I buy a new one.  We also got goodies! Everyone got a &lt;a href="http://shop.canonical.com/product_info.php?products_id=622"&gt;bag&lt;/a&gt; which had a &lt;a href="http://shop.canonical.com/product_info.php?products_id=736"&gt;T-shirt&lt;/a&gt; (don&amp;#8217;t think that&amp;#8217;s exact one), a &lt;a href="http://shop.canonical.com/product_info.php?products_id=706"&gt;pen&lt;/a&gt;, a CD, a &lt;a href="http://shop.canonical.com/product_info.php?products_id=718"&gt;sticker&lt;/a&gt;, a &lt;a href="http://shop.canonical.com/product_info.php?products_id=730"&gt;notebook&lt;/a&gt;, and a few of the handouts about Unity.&lt;/p&gt;
&lt;p&gt;Then came the Marvel Keynote.  It was mostly talking about products that Marvel has developed and how its used in a lot of places.  Then came the session perhaps everyone where looking forward to, &amp;#8216;Getting commercial applications to Ubuntu users&amp;#8217; by Randy Linnell.  Most of the talk wasn&amp;#8217;t something new to me, but the audience was quite interested in the talk.  I was tweeting quite a bit during a few of the talks.  We didn&amp;#8217;t have access to the hotel wifi, so I was using my colleague&amp;#8217;s internet connection to tweet.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/nigelbabu/5403780292/in/set-72157625818416551/"&gt;&lt;img class="aligncenter" title="Canonical Team (except for Chase)" src="http://farm6.static.flickr.com/5136/5403780292_5e7e962fd4.jpg" alt="" width="500" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, we had a wrap up from Prakash and the audience started trickling out.  I stayed back a bit and talked to the Canonical team who&amp;#8217;d come down.  Later, I grabbed a cup of coffee down at Barista and probably left the hotel at closer to 7 pm ;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/v7n9DyG5cf0" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-01-31-ubuntu-developer-day.html</feedburner:origLink></entry>
 
 <entry>
   <title>Noname.unconf Report</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/2DWom_ePJ6c/2011-01-09-noname-unconf-report.html" />
   <updated>2011-01-09T00:00:00+00:00</updated>
   <id>http://nigelb.me/noname-unconf-report</id>
   <content type="html">&lt;p&gt;This post has been long pending to be honest.  We had a &lt;a href="http://nonameconf.in/unconf/start"&gt;Noname.unconf&lt;/a&gt; planned in Bangalore on 18th and 19th December.  The venue we planned was Jaaga.  It was meant to be a fun place to meet a bunch of hackers with some talks planned.  I met lifeeth, neena, and Hobbes` the previous night when they were setting the place up.&lt;/p&gt;
&lt;p&gt;On Saturday when I walked in, I sat at the registrations table, signing up people who came.  We had about 40 people come in.  Interestingly, it was tazz&amp;#8217; and lut4rp&amp;#8217;s birthday.  There was cake and candles and a lot of &lt;a href="http://www.flickr.com/photos/pratulkalia/sets/72157625534928929/"&gt;fun ensued&lt;/a&gt;.  I met with a small subsection of the hacker scene that day and it was awesome.  Lot of geeks.  Geeks are different things.  Geeks at networking, web design, sys admin, mathematics, and more.  We were planning on a conf app that day and decided to write it general purpose so it could be adopted any day.  Later that night, we went for dinner together recounting the experience of the day.  Again, good fun.&lt;/p&gt;
&lt;p&gt;I went in to day 2 in the afternoon.  &lt;a href="http://www.flickr.com/photos/hiemanshu/sets/72157625637629940/"&gt;The talks&lt;/a&gt; were going on when I walked in.  They were quite interesting including the talk about &lt;span class="caps"&gt;UID&lt;/span&gt; in India, Debian and Ubuntu BoF, to name a few.   A few more new people to meet that day and then we packed up.  It was a fun weekend of hacking, meeting new friends, and talking to people about stuff.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/_DNGvEWOfw4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/2DWom_ePJ6c" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2011-01-09-noname-unconf-report.html</feedburner:origLink></entry>
 
 <entry>
   <title>Working with Google Maps</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/GCMIYqkf3iw/2010-09-05-working-with-google-maps.html" />
   <updated>2010-09-05T00:00:00+00:00</updated>
   <id>http://nigelb.me/working-with-google-maps</id>
   <content type="html">&lt;p&gt;There used to be a time when there was this huge maps craze, it has since passed, but Google Maps remains the most recognized map applications seen on the internet.  Recently, I worked on Google Maps &lt;span class="caps"&gt;API&lt;/span&gt; for a client.  This post is a retrospect look at how it went.  I&amp;#8217;ve not worked with other map systems, so I cannot compare my experience.&lt;/p&gt;
&lt;p&gt;My task at hand was to create a store locator that would take an address as input and plot all the points on a map that was within 100 miles of the given location.  A fairly simple map application, except I decided to innovate.  My first stop was the &lt;a href="http://code.google.com/apis/maps/documentation/javascript/articles.html"&gt;articles page&lt;/a&gt; on the Google Maps &lt;span class="caps"&gt;API&lt;/span&gt; Reference page.  I found a &lt;a href="http://code.google.com/apis/maps/articles/phpsqlsearch_v3.html"&gt;very handy tutorial&lt;/a&gt; which was exactly about creating a store, wow that made my work much easier.  What I found very helpful from that tutorial was the formula.  this formula.&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="caps"&gt;SELECT&lt;/span&gt; id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) &amp;#8211; radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance &lt;span class="caps"&gt;FROM&lt;/span&gt; markers &lt;span class="caps"&gt;HAVING&lt;/span&gt; distance &amp;lt; 25 &lt;span class="caps"&gt;ORDER&lt;/span&gt; BY distance &lt;span class="caps"&gt;LIMIT&lt;/span&gt; 0 , 20;&lt;/blockquote&gt;&lt;br /&gt;
That is the heart of the entire module.  That forumla returns coordinates that are within 25 miles of a point with coordinates (37, -122).  The complexity (if at all) of the application is to pass data from a database using &lt;span class="caps"&gt;PHP&lt;/span&gt; or other server-side language and passing into a javascript function.  The tutorial that I was looking at used xml to pass data to the javascript function.  This of course is nice, but I was a bit lazy and a bit innovative.&lt;/p&gt;
&lt;p&gt;In my quest for something better, I discovered &lt;a href="http://www.json.org/"&gt;&lt;span class="caps"&gt;JSON&lt;/span&gt;&lt;/a&gt;.  Now, this seemed simple enough since is 2010 and most languages have &lt;span class="caps"&gt;JSON&lt;/span&gt; support including &lt;span class="caps"&gt;PHP&lt;/span&gt;.  So, I put all the the results into a hidden textbox as &lt;span class="caps"&gt;JSON&lt;/span&gt; and wrote a javascript function that would execute on window load.  Using that information, I could then loop through it and mark points on the map from that.&lt;/p&gt;
&lt;p&gt;jQuery being an awesome library provided a means for me to do exactly that.  Icould loop through each of them and plot points on the map quite painlessly.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="javascript"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;markOnMap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;geocoder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Geocoder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="c1"&gt;//center the map to the coordinates of the searched address&lt;/span&gt;
    &lt;span class="nx"&gt;latlng&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;LatLng&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;myOptions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;center&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;latlng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;zoom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;mapTypeId&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MapTypeId&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ROADMAP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;mapTypeControl&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nx"&gt;map&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;quot&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;map_canvas&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;quot&lt;/span&gt;&lt;span class="p"&gt;;),&lt;/span&gt;
        &lt;span class="nx"&gt;myOptions&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;markers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;marker&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;mapPoints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parseJSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;markers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;marker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;$&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;each&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mapPoints&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;latlng&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;LatLng&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;marker&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Marker&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
                    &lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="nx"&gt;draggable&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="nx"&gt;position&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;latlng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;&amp;amp;lt;b&amp;amp;gt;Name : &amp;amp;lt;/b&amp;amp;gt;&amp;#39;&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
              &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;marker&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;click&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;infowind&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;google&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;maps&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;InfoWindow&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="nx"&gt;infowind&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;});&lt;/span&gt;
    &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When using infowindows, its very important that the content is stored inside the marker and then used to pop out the infowindow, that&amp;#8217;s the only way that works.  I spend about 5 hours trying to figure that one out.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/GCMIYqkf3iw" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-09-05-working-with-google-maps.html</feedburner:origLink></entry>
 
 <entry>
   <title>Ubuntu Hour in Bangalore</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/H-TaAWBlExQ/2010-07-31-ubuntu-hour-in-bangalore.html" />
   <updated>2010-07-31T00:00:00+00:00</updated>
   <id>http://nigelb.me/ubuntu-hour-in-bangalore</id>
   <content type="html">&lt;p&gt;Woo! After a while, the Ubuntu loco community is awakening in Bangalore again.  I had announced a meet up on the mailing list a while back.  I had my fingers crossed as to how many would turn up and how it would be.  Most people assured me &amp;#8220;&lt;em&gt;if there are 2 people and the other person isn&amp;#8217;t your imaginary friend, its a success!&lt;/em&gt;&amp;#8221;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m glad to report that we ended up with 7 people coming in.  It started out a bit slow with just me sitting alone in Cafe Coffee Day on Richmond Road.  To be a little more noticeable I opened up the laptop and sat in such a way I could see everyone who walked in.  Anyone who looked lost was definitely looking for the Ubuntu Hour (note to self:  Sticker on laptop sounds like a good idea now).&lt;/p&gt;
&lt;p&gt;&lt;a title="100_1599 by stackedagainst, on Flickr" href="http://www.flickr.com/photos/nigelbabu/4846635230/"&gt;&lt;img src="http://farm5.static.flickr.com/4124/4846635230_dd12dd4160_m.jpg" alt="100_1599" width="240" height="180" style="float:left; margin-right: 10px;" /&gt;&lt;/a&gt; Ganesh walked in first followed later by Harish and Arjun almost at the same time.  We sat chatting for some time until I saw noticed another guy looking lost and Manish joined the party.  Later on Venkatesh also joined us giving us more life!&lt;/p&gt;
&lt;p&gt;We talked for quite a bit about what we do for a living and what we do for the free software community.  All of the people seem to be contributing in one way or the other and it was fun to hear about what others do.  We packed up at around 5 and walked out to run into a DD, Ritesh, who was planning on making it but got late.&lt;/p&gt;
&lt;p&gt;&lt;a title="100_1601 by stackedagainst, on Flickr" href="http://www.flickr.com/photos/nigelbabu/4846015027"&gt;&lt;img src="http://farm5.static.flickr.com/4083/4846015027_d16992f4a5_m.jpg" alt="100_1601" width="240" height="180" style="float:right; margin-left: 10px;" /&gt;&lt;/a&gt;  And we ended up talking for some more time outside the coffe shop.  Meeting geeks is fun!  We&amp;#8217;ve plan to meet up every on the last Saturday of every month with announces sent to ubuntu-in and ilug bangalore list.  As soon as the venue for the next one&amp;#8217;s confirmed I&amp;#8217;ll blog and tweet about it!  Thank you all for coming :)  The pictures are all on my &lt;a href="http://www.flickr.com/photos/nigelbabu/sets/72157624497585599/with/4846015027/"&gt;flickr&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/H-TaAWBlExQ" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-07-31-ubuntu-hour-in-bangalore.html</feedburner:origLink></entry>
 
 <entry>
   <title>Web-based viewer for git</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/2dC7nlCxVHs/2010-07-21-web-based-viewer-for-git.html" />
   <updated>2010-07-21T00:00:00+00:00</updated>
   <id>http://nigelb.me/web-based-viewer-for-git</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve been looking for a simple to set up viewer for git that would list out all the git repositories that I have on my git server.  It took a bit of a search and I finally discovered &lt;a href="http://viewgit.sourceforge.net/"&gt;viewgit&lt;/a&gt;.  So far, I&amp;#8217;ve found it pretty nice.  Setting up viewgit is very simple.&lt;/p&gt;
&lt;p&gt;Download the tarball from &lt;a href="http://viewgit.sourceforge.net/download"&gt;sourceforge&lt;/a&gt;.  Extract it to your htdocs or www folder.  Make a copy of &lt;strong&gt;example-localconfig.php&lt;/strong&gt; and rename it as &lt;strong&gt;localconfig.php&lt;/strong&gt;.  Comment out the line &lt;code&gt;$conf['projects']&lt;/code&gt; and uncomment &lt;code&gt;$conf['projects_glob'] = array('/path/to/repo/); &lt;/code&gt;.  If like me, you store all your git repos in one folder, this is the best viewer for the amount of work I&amp;#8217;ve had to do.  Maybe I should write about how to store git repos in one folder.  A story for tomorrow!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/2dC7nlCxVHs" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-07-21-web-based-viewer-for-git.html</feedburner:origLink></entry>
 
 <entry>
   <title>Automatic database backup</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/otVtaf5Q810/2010-07-20-automatic-database.html" />
   <updated>2010-07-20T00:00:00+00:00</updated>
   <id>http://nigelb.me/automatic-database</id>
   <content type="html">&lt;p&gt;I use git extensively for version control.  Its nice to use git since it backs up the code, but the database still remains unversioned.  Well, thankfully, &lt;span class="caps"&gt;XAMPP&lt;/span&gt; has a script that does a database dump.  So, I wrote a script to do the dump and then commit it to git.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;br /&gt;
Create a directory in the home directory for the database dump&lt;br /&gt;
&lt;code&gt;
~$ mkdir projectname-database
~$ cd projectname-database
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;br /&gt;
Initialize git in the directory&lt;br /&gt;
&lt;code&gt;
~$ git init
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;br /&gt;
Do a database dump for the initial commit&lt;br /&gt;
&lt;code&gt;
~$ /./opt/lampp/bin/mysqldump -u root database-name &amp;amp;gt; database.sql
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;&lt;br /&gt;
Commit the database file&lt;br /&gt;
&lt;code&gt;
~$ git add .
~$ git commit -a -m "Initial database commit"
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;&lt;br /&gt;
Now we&amp;#8217;ll write a script to do the database dump and add commits.  Open your favorite text editor and write the following script.  Save the file as probably &amp;#8220;&lt;strong&gt;database-project&lt;/strong&gt;&amp;#8221; in your home folder&lt;br /&gt;
&lt;code&gt;
#!/bin/bash
/opt/lampp/bin/./mysqldump -u root database-name &amp;amp;gt; /home/username/projectname-database/database.sql
cd /home/username/projectname-database/
git commit -a -m "Database dump at `date`"
&lt;/code&gt;&lt;br /&gt;
Save the script so that you can run it via a cron.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt;&lt;br /&gt;
Open crontab with the following command&lt;br /&gt;
&lt;code&gt;
~$ crontab -e
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt;&lt;br /&gt;
Add the following line&lt;br /&gt;
&lt;code&gt;
00,30 * * * * /home/username/./database-project
&lt;/code&gt;&lt;br /&gt;
This cron will run the script every 30 minutes.&lt;/p&gt;
&lt;p&gt;Basically what happens here is the database dump will be taken every 30 minutes and the change will be committed to a git repository allowing you to keep track of the overwriting.  I&amp;#8217;ve found it quite useful and I hope you will too.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/otVtaf5Q810" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-07-20-automatic-database.html</feedburner:origLink></entry>
 
 <entry>
   <title>Baking on Ubuntu while using xampp</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/nyXwgWIIxJs/2010-07-19-baking-on-ubuntu-while-using-xampp.html" />
   <updated>2010-07-19T00:00:00+00:00</updated>
   <id>http://nigelb.me/baking-on-ubuntu-while-using-xampp</id>
   <content type="html">&lt;p&gt;So, I&amp;#8217;m a web developer working on Ubuntu.  Since I don&amp;#8217;t want to get into complications like pinning to have earlier versions of &lt;span class="caps"&gt;PHP&lt;/span&gt; (useful when developing on Drupal), I use &lt;span class="caps"&gt;XAMPP&lt;/span&gt;.  Its a bit of a work to get php ready to bake while using &lt;span class="caps"&gt;XAMPP&lt;/span&gt; on Ubuntu.  These instructions are probably generic to any bash shell, but tested and working on Ubuntu.  Also note, I assume you install &lt;span class="caps"&gt;XAMPP&lt;/span&gt; in the expected directory at /opt/lampp&lt;/p&gt;
&lt;p&gt;Step 1:  Add an alias for php in .bashrc.  Open the ~/.bashrc file and add the following line&lt;br /&gt;
&lt;code&gt;alias php='/opt/lampp/bin/php'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Step 2: When running the bake script, run it as follows&lt;br /&gt;
&lt;code&gt;php cake.php bake&lt;/code&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/nyXwgWIIxJs" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-07-19-baking-on-ubuntu-while-using-xampp.html</feedburner:origLink></entry>
 
 <entry>
   <title>jQueryObject</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/URDSjobkUa0/2010-07-18-jqueryobject.html" />
   <updated>2010-07-18T00:00:00+00:00</updated>
   <id>http://nigelb.me/jqueryobject</id>
   <content type="html">&lt;p&gt;CakePHP moved from Javascript helper to a Js helper and they decided to add support Prototype/Scriptaculous, Mootools/Mootools-more, and jQuery/jQuery UI.  Out of the 3, jQuery remains the one I like most so far.  I&amp;#8217;m not an expert in it (yet :p) but its pretty nifty to work with.  Sometimes when working with one or more libraries, the jQueryObject which is &lt;strong&gt;$&lt;/strong&gt; by default tends to clash with other libraries.  CakePHP of course has code to deal with this, only is not publicly mentioned how to do it.  I spent around 5 hours to discover how, and here it goes &lt;strong&gt;drum roll&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="php"&gt;&lt;span class="x"&gt;$js-&amp;gt;JqueryEngine-&amp;gt;jQueryObject = &amp;#39;$j&amp;#39;;&lt;/span&gt;
&lt;span class="x"&gt;print $html-&amp;gt;scriptBlock(&amp;#39;var $j = jQuery.noConflict();&amp;#39;,&lt;/span&gt;
&lt;span class="x"&gt;    array(&amp;#39;inline&amp;#39; =&amp;gt; false));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When you look at the code using firebug, you would now see the jQueryObject changed to &lt;strong&gt;$j&lt;/strong&gt;.  I&amp;#8217;ve suggested a section to the book for this and I&amp;#8217;ve also modified some of the documents for stuff that I found helpful.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/URDSjobkUa0" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-07-18-jqueryobject.html</feedburner:origLink></entry>
 
 <entry>
   <title>pageTitle gotcha</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/hwaSvSUEk7M/2010-07-11-pagetitle-gotcha.html" />
   <updated>2010-07-11T00:00:00+00:00</updated>
   <id>http://nigelb.me/pagetitle-gotcha</id>
   <content type="html">&lt;p&gt;When cake moved from 1.2 to 1.3, there were a few changes.  While the manual is up-to-date, the default manual that&amp;#8217;s shown tends to be 1.2 and there is a section in the 1.2 manual that talks about the migration.  I got stuck with one of the gotchas today.  I spent 1 hour trying to find out why the title I set in $pageTitle would not print with $title_for_layout until &lt;a href="http://www.frankdegraaf.net/"&gt;Phally&lt;/a&gt; pointed it out on &lt;span class="caps"&gt;IRC&lt;/span&gt; for me.  To set the title from the controller, I&amp;#8217;m supposed to this&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;code class="php"&gt;&lt;span class="x"&gt;    $this-&amp;gt;set(&amp;#39;title_for_layout&amp;#39;, &amp;#39;My title&amp;#39;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Doh!  Anyway, now I&amp;#8217;ve changed my bookmark to the 1.3 manual instead of 1.2&lt;/p&gt;
&lt;p&gt;For a full list of changes, take a look at the &lt;a href="http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3"&gt;transition guide&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/hwaSvSUEk7M" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-07-11-pagetitle-gotcha.html</feedburner:origLink></entry>
 
 <entry>
   <title>Cake is yummy!</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/0V9eyC5-Soc/2010-07-09-cake-is-yummy.html" />
   <updated>2010-07-09T00:00:00+00:00</updated>
   <id>http://nigelb.me/cake-is-yummy</id>
   <content type="html">&lt;p&gt;Its a few weeks since I formally started my career as a web developer and I feel I&amp;#8217;ve got lots to say.  I started working on a project writing &lt;span class="caps"&gt;PHP&lt;/span&gt; code that mixed with the view, basically a bunch of php files with lots of &lt;span class="caps"&gt;PHP&lt;/span&gt; code and html.  It was easy, but it wasn&amp;#8217;t great fun.  There was indeed a lot of copy and paste and find and replace, but it was hard work to get things done though it was easier to figure out how to do things.&lt;/p&gt;
&lt;p&gt;When I started working on a new project, I convinced my boss that we should try moving to a framework and I chose &lt;a href="http://cakephp.org/"&gt;CakePHP&lt;/a&gt; for some reason though there was &lt;a href="http://cakephp.org/"&gt;CakePHP&lt;/a&gt;, &lt;a href="http://www.symfony-project.org/"&gt;Codeigniter&lt;/a&gt;, and &lt;a href="http://codeigniter.com/"&gt;Symfony&lt;/a&gt; to chose from.  Something about CakePHP pulled me towards it.  It took a fair bit of experimentation before I was able to convince myself that I could do it (yeah, this was after I convinced my boss).&lt;/p&gt;
&lt;p&gt;After about a week into development, I can happily say that it is indeed awesome and yummy.  I like the inbuilt helpers and components that helps do a lot of common tasks like access control, pagination, data validation, and others quite easily.  But the best part, is &lt;a href="http://book.cakephp.org/view/113/Code-Generation-with-Bake"&gt;baking code&lt;/a&gt;.  It takes a lot of the boring part out of coding for a web application especially when your entire application is a &lt;span class="caps"&gt;CMS&lt;/span&gt; like system that is somewhat custom made to client requirements.  Being the first project I&amp;#8217;m doing in CakePHP, I think it might take around 2 weeks for this project, but I&amp;#8217;m pretty sure, I can cut down this time to probably a week or less once I get a feel for it.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve got stuck a fair number of times and I&amp;#8217;m really glad that most of my google searches lead me back to the Manual and its mostly what I wanted at that time too.  In some cases I got stuck and lost for hours at a time, and that was when &lt;span class="caps"&gt;IRC&lt;/span&gt; came to my rescue.  There was always someone online who had a good idea about cake, particularly &lt;a href="http://mark-story.com/"&gt;markstory&lt;/a&gt; and &lt;a href="http://josediazgonzalez.com/"&gt;savant&lt;/a&gt;, always willing to help us newbies.  I look forward to more adventures and perhaps more frequent posts.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/0V9eyC5-Soc" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-07-09-cake-is-yummy.html</feedburner:origLink></entry>
 
 <entry>
   <title>UDS-M Day 5</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/ROZaLJbOANU/2010-05-17-uds-m-day-5.html" />
   <updated>2010-05-17T00:00:00+00:00</updated>
   <id>http://nigelb.me/uds-m-day-5</id>
   <content type="html">&lt;p&gt;Phew, finally I get down to writing day 5 overview, a few days after &lt;span class="caps"&gt;UDS&lt;/span&gt;.  Generally, I write the previous day&amp;#8217;s blog post on the next day.  After day 5 though, I had to get work (yeah, on a Saturday).  On Friday, I decided to tackle my power trouble by going outside for the hours that I know in advance I won&amp;#8217;t have power.  Overall, good idea, but they decided to cut power at different times.  Sigh.&lt;/p&gt;
&lt;p&gt;First thing in the morning was a call with Daniel Holbach to discuss about the Cleansweep Project.  Skype kinda gave us trouble and we ended up using Facebook chat in the end to discuss stuff.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Roundtable&lt;/strong&gt;&lt;br /&gt;
A round up in the morning of all the community stuff including what we have to go ahead.  My memory is faint about what we talked, but I vaguely remember everyone summing up the week and the progress that was made.  Also, someone was playing music from Benjamin&amp;#8217;s laptop, which included the &lt;em&gt;Titanic&lt;/em&gt; song.  Fun times ;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ubuntu Women Session&lt;/strong&gt;&lt;br /&gt;
A session I didn&amp;#8217;t want to miss.  This session was very goal oriented from all the other sessions.  I liked the mentorship discussion and revival of the whole thing.  I&amp;#8217;ll probably sign up to be a mentor.  I&amp;#8217;ve already helped a few friends that I know through UW in other teams like Bug Squad.  The idea was not to replace the other mentorship options but to work with the others and to give a list of folks on the UW wiki who can be contacted for particular stuff.&lt;/p&gt;
&lt;p&gt;I decided to take a break from the nest session to plan for Operation Cleansweep, a project that I have volunteered to coordinate.  I put up wiki pages and came to the realization that we needed more time to get things together.  I&amp;#8217;d rather have a proper start with documentation everything ready rather than having to wait.  I pinged Daniel and we decided to postpone start date to May 24th, 2010.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Lightening Talks&lt;/strong&gt;&lt;br /&gt;
As usual James Tantum rocked us with pictures of slides since most of it were using slides.  I forgot a lot of them, but ones that rocked including one by Jonathan from Launchpad team about &amp;#8216;How to be an evil overlord&amp;#8217; or something to that extent, Popey&amp;#8217;s Momubuntu talk, James Westby&amp;#8217;s talk about launchpadlib (and yes, try try try until you succeed), a talk from Google Chrome guys about how speed matters, Chris Johnston talked about Classbot, Alan Bell about etherpad (we overloaded the pad ;) ), and more that I&amp;#8217;ve forgotten.  I&amp;#8217;ll wait for the videos.&lt;/p&gt;
&lt;p&gt;Travis Hartwell talked about how he wanted a way to pull the source for all the dependencies of a package with one command instead of typing out many different commands.  I was pretty sure sed or awk could do something coupled with apt-cache.  My sed foo is pretty low and I asked my good friend Mackenzie Morgan wrote something up for this.  Travis, this one&amp;#8217;s for you buddy&lt;br /&gt;
&lt;blockquote&gt;apt-get source $(apt-cache depends gwibber | awk &amp;#8216;/Depends/{ print  $2  }&amp;#8217;)&lt;/blockquote&gt;&lt;br /&gt;
That command would get you all of Gwibber&amp;#8217;s dependencies.  You can change that package name to get the source of dependencies for any package.  This source will be downloaded into the current folder when you&amp;#8217;re running it from a terminal.  Perhaps someone could make the whole thing more prettier, but hey, this is a start :)  Thanks again maco!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Advocate the use of daily builds&lt;br /&gt;
&lt;/strong&gt;One of the projects that Daniel Holbach has been assigned for this cycle.  Its been given a high importance and I realize the reason.  A daily build means every time you write new code, it will be built for you and a whole lot of folks can test it for you and give you bug reports.  Various improvements to LP were discussed including a rollback option among the others.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ubuntu News Team&lt;br /&gt;
&lt;/strong&gt;Amber is the chief editor of the Ubuntu Weekly Newsletter, so I attended this one hoping it would be interesting and it was!  A lot of discussion about unifying teams, etc.  There was a thought of doing away with Fridge which I stopped right away.  Reminding you folks again, We &lt;span class="caps"&gt;WANT&lt;/span&gt; the Fridge!  Well, it wasn&amp;#8217;t a serious consideration but a thought someone had.  All in all, they made some tough calls, which will happen internally.  Also, Fridge is going to be in Wordpress soon, so that should help make a lot of things easier.  I don&amp;#8217;t remember who, I think Joey, will be working with the Design Team for a new theme, etc for the Fridge.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Closing Session&lt;/strong&gt;&lt;br /&gt;
Finally, the &lt;span class="caps"&gt;UDS&lt;/span&gt; comes to a close.  Everyone had great fun for a week and did lots of work.  Most people were tired and close to burn out (yeah, from all the staying up late in the bar or out partying ;) ).  Seriously, it was tiring.  Even from remote, I was burned out.  Last 2 days I&amp;#8217;ve been so tired.  Hopefully I can recharge this week.  All the track leads summed up their tracks.  Important stuff include Robbie confirming that 10.10.10 could be a release date, pending TB approval.  He was talking about how much time each cycle has had and it seemed okay.  Jaunty cycle only had 25 weeks, so for 10.10.10, we&amp;#8217;ll have only 23 weeks and it seems possible.  Scott, talked about btrfs and how it may be the default option for Maverick.  Keyword there being &amp;#8216;may&amp;#8217;.  &lt;a href="http://www.netsplit.com/2010/05/14/btrfs-by-default-in-maverick/"&gt;Scott blogged&lt;/a&gt; about what needs to happen for that.  Leann summed up the kernel track decisions.  I didn&amp;#8217;t understand much of it, so skipping that.  Design track, Desktop track, and cloud track also had a small summary which I don&amp;#8217;t particular recall.  This why I should perhaps write blog posts then and there.  Oh yeah, now I remember one decision from desktop, Chromium will be the default browser for the netbook edition.  Finally Jono summed up the community track.  A huge list of summing up.  Most of which I think I&amp;#8217;ve already written in the previous posts.  He announced Project Cleansweep.  Well, he announced it as Project Babu and how it was renamed to Project Cleansweep.  Well, I wonder why I even bothered to oppose if he was going to call it Project Cleansweep a.k.a. Project Babu :D&lt;/p&gt;
&lt;p&gt;The final quote from Jono &amp;#8216;&lt;em&gt;Lets get seriously drunk people.&lt;/em&gt;&amp;#8217;  He did say he was kidding, but the tone he said it in, was awesome.  Marianna arranged for a treasure hunt and she was given a small token of appreciation from the community for all the hard work she did over the week.  Finally &lt;span class="caps"&gt;UDS&lt;/span&gt; is over!&lt;/p&gt;
&lt;p&gt;Now, time to get to work.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/ROZaLJbOANU" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-05-17-uds-m-day-5.html</feedburner:origLink></entry>
 
 <entry>
   <title>UDS-M Day 4</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/30NCDQ5J8IM/2010-05-14-uds-m-day-4.html" />
   <updated>2010-05-14T00:00:00+00:00</updated>
   <id>http://nigelb.me/uds-m-day-4</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m probably taking the blogging thing too far with 3 back-to-back posts, but whatever.  One big reason I missed out on going to this &lt;span class="caps"&gt;UDS&lt;/span&gt; was my passport had expired and I hadn&amp;#8217;t renewed.  I finally decided, it was time to re-apply and set out to the nearest Bangalore One to get a form.&lt;/p&gt;
&lt;p&gt;It took me 1 whole hour and around 20 km of roaming around to find the place.  Absolutely no one knew the place when I asked around.  Even a policeman I asked gave me wrong directions.  Eventually, I ended up doing everything else on my things to do and was on the verge of giving up when I located the place.  Turns out, its less than 4 km from my place.  Sigh.  I circled around for an extra 10 km.  Before you talk about Google Maps, yes I tried it out there and it didn&amp;#8217;t know what I was talking about.&lt;/p&gt;
&lt;p&gt;Overall, Thursday was frustrating in terms of power availability.  I kept on getting power cuts and missing sessions.  The first half of the day was pathetic.  I lost power halfway through the community roundtable and could get back online during the Maverick Governance Changes and Needs session.  I can&amp;#8217;t believe I missed the BugSquad Roadmap!  Again, I lost power halfway through Debian Healthcheck.  Sigh.  Today, I&amp;#8217;ll just go outside to some internet cafe for the first half.  I have a call scheduled and after that I&amp;#8217;ll just go some place for 4 hours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Roundtable&lt;/strong&gt;&lt;br /&gt;
Another general discussion at the roundtable, I lost a bit of that thanks to the power situation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Maverick Governance Changes And Needs&lt;/strong&gt;&lt;br /&gt;
This session was very interesting.  Though I&amp;#8217;m not any councils, we had a lot of folks from different councils and we were exploring the possibility of working the &lt;span class="caps"&gt;CIVS&lt;/span&gt; system into Launchpad.  Jono has a task for that and perhaps we&amp;#8217;ll have an awesome voting system by the end of the cycle.  Most of the council elections use the &lt;span class="caps"&gt;CIVS&lt;/span&gt; system.  We even used the same system for the Beginners Team Council voting.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Debian Healthcheck&lt;/strong&gt;&lt;br /&gt;
This session started with Jorge introducing the good parts and the bad parts.  Zack, the &lt;span class="caps"&gt;DPL&lt;/span&gt;, was in the session and he gave some good suggestions on how to go about uploading to Debian.  A lot of packages designed for Ubuntu don&amp;#8217;t go into Debian and Zack particularly said that they wanted them.  He explained how we could upload to experimental and sync from there.  We&amp;#8217;ve agreed to do this.  Personally, I agreed to work on Gwibber in Debian sometime back, I guess its time to actually start working on it.  In this case, I had spoken to Ken earlier and he specifically said he was happy to help me.  Any delays are my fault and my lack of time.  As I said earlier, I lost power halfway through this session.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#8220;Collaboration with Ubuntu&amp;#8221; Plenary&lt;/strong&gt;&lt;br /&gt;
Stefano Zacchiroli, or Zack, the current &lt;span class="caps"&gt;DPL&lt;/span&gt;, talked about Collaboration with Ubuntu from the Debian point of view for the first plenary.  This was the most awesome plenary.  Zack totally changed my vision of Debian Developers.  There are more than 1000 Debian Developers and he mentioned that though the option against Ubuntu exists, its a corner case.  His talk encouraged Ubuntu to collaborate with Debian all the time.  Yes, you heard me right.  Debian wants us.  Uploading to Debian would give all the other distros that fork from Debian a chance to get those packages.  He also mentioned that if we have a bug and patch, he wants Debian to get the patch too because DMs and DDs are the people who know the package best.  A growing trend that is being noticed is Ubuntu developers being Debian maintainers and Debian developers!  Wow, that&amp;#8217;s interesting.  All in all, it was a very impressive talk and I&amp;#8217;m waiting for the videos to be uploaded to watch them.  Again, special mention to James Tatum for the pictures.  We all love you James!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#8220;What does this bit do?&amp;#8221; Plenary&lt;/strong&gt;&lt;br /&gt;
James Scott a.k.a. Keybuk talked about the plumbing layer.  The past, the present, the future.  Yes, it was like sitting in &amp;#8216;A Christmas Carol&amp;#8217; about the plumbing layer.  Some of the stuff flew about my head since I didn&amp;#8217;t know much about it.  But it was nice listening to it all the same.  He explained about upstart and how its planned to be awesome in the coming releases.  Can&amp;#8217;t write more since I didn&amp;#8217;t understand much about it.&lt;/p&gt;
&lt;p&gt;In between this session, I was also in the Ubuntu Women Project meeting, so I was only listening in partly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Crystalizing Project Cleansweep&lt;/strong&gt;&lt;br /&gt;
I&amp;#8217;ve agreed to coordinate this project.  Project Cleansweep is about cleaning up all the bugs with patches by Maverick release.  It needs a lot of work and lot of identity to be successful.  Stephan and Daniel Holbach is going to be helping me along with Brian Murray and Jono and everyone else.  We want to get a lot of community attention to this project and use the &amp;#8216;buckets&amp;#8217; that we use in Reviewers Team into coordinating patch review for all the patches in Ubuntu.  I&amp;#8217;ve arranged for a call with Daniel to discuss the specific actions that we need to be taking.  I&amp;#8217;ll be posting more updates as time goes on.&lt;/p&gt;
&lt;p&gt;I gave up after this.  All the roaming around in the morning and the 4 days was too much for me.  I switched off &lt;span class="caps"&gt;IRC&lt;/span&gt;, got off the audio feed, and started planning for Project Cleansweep and what needs to be done.  I hope to have a productive call with Daniel today.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/30NCDQ5J8IM" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-05-14-uds-m-day-4.html</feedburner:origLink></entry>
 
 <entry>
   <title>UDS-M Day 3</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/i10WME7B4q0/2010-05-13-uds-m-day-3.html" />
   <updated>2010-05-13T00:00:00+00:00</updated>
   <id>http://nigelb.me/uds-m-day-3</id>
   <content type="html">&lt;p&gt;Day 3 and I&amp;#8217;m starting to feel the strain.  I wonder how the folks there are feeling.  More drained perhaps?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Roundtable&lt;/strong&gt;&lt;br /&gt;
This was the first session that I attended and we were just having a generic discussion mostly.  I was writing a blog post during the time, since it was mainly just voicing out the concerns that people have had to Jono.  I believe the issue of the Ubuntu mailing list vs launchpad mailing list was discussed, and who to contact for what. Jorge was like, &amp;#8220;Oh, I&amp;#8217;m supposed to deal with mailing list requests, ok.  Thanks for telling me.  Never knew.&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Improve Harvest Usability&lt;/strong&gt;&lt;br /&gt;
Daniel Holbach has been working on a new harvest based on a Django back-end.  Unfortunately, I lost power in between and missed the last half of this one and the first half of the next one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Packaging Docs update and initiative&lt;/strong&gt;&lt;br /&gt;
I got power only halfway between the session, but well, I joined in immediately.  The action plan from this list is just awesome!  Lots of great people volunteering to help revamp all the pages and information.  We would really have this awesome set of docs.  One actions decided was to put all the stuff into an LP project so that bugs can be filed against them &amp;#8211; this is way too cool!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Maverick Mootbot&lt;/strong&gt;&lt;br /&gt;
Alan Bell was presenting his Mootbot UK project.  I&amp;#8217;ve seen this bot being used in UW meetings and its pretty awesome.  Alan talked about the efforts he put in (and what part sucked).  He&amp;#8217;s got a good list of wishlist stuff for him to do.  Go Alan!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Plenaries&lt;/strong&gt;&lt;br /&gt;
We didn&amp;#8217;t have audio initially for the plenaries unfortunately.  Thank you IS Team for looking into it.  I only know Chris Jones (Ng) and James Troup (elmo) from &lt;span class="caps"&gt;IRC&lt;/span&gt;, and I&amp;#8217;d like to say, you guys rock!  We got the audio back after the first 2 plenaries.  Alan Bell and James Tatum rocked us with pictures and transcribed the text.  Thanks both of you for helping us out.  Bruno Maag talked about the new ubuntu font and its development.  It was waaay to cool.  He was an absolute font geek and I was totally impressed with the presentation he gave.  Even better, we had more font geeks asking some super cool questions (I didn&amp;#8217;t have a definite idea of what they were talking about in the Q&amp;amp;A time).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reorganizing and Reviving the Ubuntu Accessibility Team&lt;/strong&gt;&lt;br /&gt;
Penelope has been talking about this for quite some time and I took part in this session because I was guilty of not helping out then.  I&amp;#8217;ve agreed to redo their wiki pages, since its something I do how to do.  I&amp;#8217;ve done this from-the-scratch team wiki for the Reviewers Team before, so this should be easy.  Charlie has also volunteered to help me.  We first started by discussing what we have and then moving to what we want.  We&amp;#8217;ve agreed that this team can rock, but we just need to help people to find out about this and improve the documentation we have.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patch Review Process Review&lt;/strong&gt;&lt;br /&gt;
This session was something I&amp;#8217;ve been looking forward to.  I was pretty sure the docs had some holes and Stephan has volunteered to help me out with the &amp;#8220;timing&amp;#8221; issue that I&amp;#8217;ve been having making clear.  I needed an experienced Ubuntu Developer to help me out in this part.  Again a bunch of actions assigned to rock the team.  Benjamin is going to work on a script to apply the patch and push it onto a &lt;span class="caps"&gt;PPA&lt;/span&gt;, which would be rocking.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Patch Review Initiative&lt;/strong&gt;&lt;br /&gt;
We started by Sense talking about Mergimus and how it can help patch review.  Emet and Jono talked about how to bring more people to do this.  We eventually decided on a Project Cleansweep to clean up all the bugs with patches by the release of Maverick (they initially wanted to call it Project Babu, thankfully, they renamed.. phew). I look forward to this project.  We&amp;#8217;ve also decided to work the patch review into the Adopt an Upstream project.  I just discovered that I&amp;#8217;ve been assigned to lead the activity to clear the backlog and generate identity for team, wow!  My display crashed at the end of the session and I had to shutdown.  Phew, its getting more draining as the days pass.&lt;/p&gt;
&lt;p&gt;All in all, lots of things to do and lots of rocking stuff going to happen this cycle.  Remote participation has been awesome so far.  Wednesday night was the Ubuntu Women dinner and I&amp;#8217;m sad I missed that, but well, I get to participate without any jet lag ;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/i10WME7B4q0" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-05-13-uds-m-day-3.html</feedburner:origLink></entry>
 
 <entry>
   <title>UDS-M Day 2</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/vzTR8_Svm_s/2010-05-12-uds-m-day-2.html" />
   <updated>2010-05-12T00:00:00+00:00</updated>
   <id>http://nigelb.me/uds-m-day-2</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m posting updates later and later every day.  Right now, I&amp;#8217;m in community round table and I&amp;#8217;m writing a blog post, sigh, procrastination &amp;#8211; how I love thee&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Roundtable&lt;/strong&gt;&lt;br /&gt;
I ran into some audio issues and power went out half an our into the session, had to step out to an internet cafe and get back into the connection.  We also reminded ourselves that people who become Canonical employees don&amp;#8217;t automatically become ubuntu members or get upload rights.  They still have to go through the same process and don&amp;#8217;t have corners cut if they don&amp;#8217;t have a proper wiki page.&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ubuntu &lt;span class="caps"&gt;NGO&lt;/span&gt; Team&lt;/strong&gt;&lt;br /&gt;
I&amp;#8217;ve heard about this team and it was nice to join in to their sessions.  We made a bunch of decisions including having more regular meetings, perhaps once a month.  Jonathan came up with an idea about Manifest, he&amp;#8217;ll be writing to the mailing list about that stuff.  I had this idea about having documentation for &lt;span class="caps"&gt;NGO&lt;/span&gt; to set up Ubuntu on their infrastructure and how to migrate to them.  Eventually, Penny and I&amp;#8217;ve volunteer to do this action.  A bunch of more actions were created and assigned out including creating a Facebook group and exploring a planet for NGOs.&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ubuntu Support and Learning Center&lt;/strong&gt;&lt;br /&gt;
I feel that this idea is great.  The Ubuntu Manual team intend to put the information from a wiki into a website.  This site would also be translatable.  Now, the Ubuntu Manual Project is a direct competition to the doc team.  Martin (I think) brought up the point that the manual team should be collaborating with the doc team instead of competing because there would be a bunch of duplication that doesn&amp;#8217;t make sense.  So, the action plan is to give the feedback to doc team what made the manual team successful and perhaps integrate that into the ubuntu doc practices&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Development Workflow Overview&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The second session about the development workflow.  This was as productive as the first one.  Among the suggestions was a tool to make patch from a file on the system:&lt;br /&gt;
&lt;blockquote&gt;make-patch /usr/lib/python2.5/site-packages/foo.py&amp;quot;&lt;/blockquote&gt;&lt;br /&gt;
So, the proposed tool finds the package that  owns the file, grabs the deb, makes a diff of the files installed vs. in the package, and makes a bug/uploads patch against that package.  If we have something like it, that would be really cool.  Another point was advertising how to get fixes into Ubuntu in Launchpad, a small text showing &amp;#8220;Do you want to fix this bug?&amp;#8221; or something to that end.  A lot of the talk was focused on the persona of someone who knows a language and fixes a small bug and wants to get the fix out, but not necessarily interested in ubuntu development.&lt;br /&gt;
&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Diffamation &amp;#8211; Plenary&lt;/strong&gt;&lt;br /&gt;
This was a very interesting plenary which I could experience to any extent thanks to &lt;a href="https://launchpad.net/%7Ejtatum"&gt;James Tatum&lt;/a&gt; posting pictures of the slides onto &lt;span class="caps"&gt;IRC&lt;/span&gt; channel.  I hope the video team posts videos of this stuff!  A lot of the work that Dr. Chevalier presented was using slow animation to display revision changes to code or text.  The immediate application I could think of was scanning commits in bzr or git and also looking at wiki edits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open Week and Developer Week&lt;/strong&gt;&lt;br /&gt;
Most of the community sessions were very interesting and this was one of them.  I think having folks in the room that you know and know you changes a lot of things.  We started with discussing what didn&amp;#8217;t work and how we can improve stuff this cycle.  Most significant decision was to make Developer Week earlier in the cycle and rename Opportunistic Developer Week to Application Developer Week.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Software Center Roadmap&lt;/strong&gt;&lt;br /&gt;
I was having dinner during listening to this session.  It was nice to know what&amp;#8217;s coming in the next cycle.  The ability to write reviews and have sale of software is very promising.&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Review and Planning for Distributed Development&lt;/strong&gt;&lt;br /&gt;
This session was working into thinking what is going wrong with this and who has issues with this processes.  A lot corner cases were discussed and it was kind of nice.  The best part of &lt;span class="caps"&gt;UDD&lt;/span&gt; is that its easy to get the maverick (or any release) source code.&lt;/p&gt;
&lt;p&gt;So, this overview was very late, we&amp;#8217;re into half the day 3 and I&amp;#8217;m still doing this stuff.  If you haven&amp;#8217;t looked into the &lt;a href="http://ubuntudevelopers.blip.tv/"&gt;Ubuntu Developer channel&lt;/a&gt; on blip.tv, now is the time to do it.  New videos are being added daily.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/vzTR8_Svm_s" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-05-12-uds-m-day-2.html</feedburner:origLink></entry>
 
 <entry>
   <title>UDS-M Day 1 Overview</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/Jf4ESoyab8I/2010-05-11-uds-m-day-1-overview.html" />
   <updated>2010-05-11T00:00:00+00:00</updated>
   <id>http://nigelb.me/uds-m-day-1-overview</id>
   <content type="html">&lt;p&gt;No, I&amp;#8217;m not in Belgium.  I participated remotely and this is a summary of the sessions I participated before fatigue hit me.  Being a couple of hours east of Belgium, the sessions start at 12:30 PM for me, which is very comfortable.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
&lt;p&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/_75rGr5vENs" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br /&gt;
Yesterday, we started off with Jono Bacon giving the Introduction plenary.  We had some trouble with the audio until &lt;a href="http://www.grantbow.com/"&gt;Grant Bowmann&lt;/a&gt; figured out that the icecast was on the bois_dentelle link.  We folks missed out on seeing the slides initially, but some very nice folks in the room posted pictures from their phones or described what was happening out there.  Yes, &lt;a href="https://launchpad.net/~jtatum"&gt;James Tatum&lt;/a&gt;, I&amp;#8217;m talking about you.  Thank you posting those pictures and giving descriptions and helping us out!  It made me feel like I was really there.  There was this video being played and I really missed it because I could hear the background music and the snickering.  Someone was kind enough to &lt;a href="http://ubuntuone.com/p/34q/"&gt;post the video on their Ubuntu One account&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mark Shuttleworth Keynote&lt;/strong&gt;&lt;br /&gt;
He gave a nice talk and also introduced Unity to us.  There is a &lt;a href="https://launchpad.net/~canonical-dx-team/+archive/une"&gt;&lt;span class="caps"&gt;PPA&lt;/span&gt;&lt;/a&gt; for unit if you&amp;#8217;re interested.  Thank you &lt;a href="http://blip.tv/file/3601671"&gt;Alan Pope&lt;/a&gt; for posting the videos.  I think he&amp;#8217;s got all of them.  Also, Canonical video team posted Mark Shuttleworth&amp;#8217;s keynote, they are on the &lt;a href="http://blip.tv/file/3603061"&gt;blip.tv channel.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Community Roundtable&lt;/strong&gt;&lt;br /&gt;
Again, it took some trouble to get the sound working here, but eventually that got sorted out.  Turns out, its easier to go to http://icecast.ubuntu.com:8000/ and select the room you&amp;#8217;d want to listen to.  The bot which posts the links had a mistake in its link if I remember correctly.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Development Workflow Review&lt;/strong&gt;&lt;br /&gt;
A quick review of the places where we face problems in the development workflow.  We made quite a bit of progress.  I believe this discussion will be continued further on Tuesday&amp;#8217;s session.  I lost power in the middle of the session and had to walk to the nearest computer cafe to listen to the session.  They had bad headphones too.  (I think Ubuntu has a sound boost compared to windows? Untested but my instinct tells me so)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Design Team Plenary&lt;/strong&gt;&lt;br /&gt;
Ivanka Majic gave a great session.  &lt;a href="http://blip.tv/file/3602218"&gt;Popey has the videos for these too!&lt;/a&gt;.  &lt;a href="https://launchpad.net/~jtatum"&gt;James Tatum&lt;/a&gt; helped us on this plenary by posting pictures from his phone.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Qt Overview&lt;/strong&gt;&lt;br /&gt;
A guy from Nokia explained about Qt (pronounced &amp;#8216;cute&amp;#8217;) and their development workflow.  Interesting talk.  I think &lt;a href="https://launchpad.net/~jtatum"&gt;Jtatum&lt;/a&gt; posted all the slides from his phone for this one.  A big thank you from the remote guys.  We &lt;span class="caps"&gt;LOVED&lt;/span&gt; it!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quickly&lt;/strong&gt;&lt;br /&gt;
Rick Spencer got up there to talk about some of the improvements they have done to Quickly.  It was awesome! &lt;a href="http://popey.blip.tv/file/3602315/"&gt;Popey&amp;#8217;s video again save the day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LP Improvements for Patches&lt;/strong&gt;&lt;br /&gt;
Jorge took the lead on this session.  It was very productive session with a room full of some amazing people!  People who knew what was the trouble and what needs to be done.  I liked a lot of ideas that Pete had with regard to kernel patches and how they take care of it&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LP Improvements for Bugs&lt;/strong&gt;&lt;br /&gt;
Jorge had some crazy ideas at the beginning, which while being crazy was really innovative.  Hopefully, we&amp;#8217;ll get to see those features pop up. Bryce, you rock!  Bryce made a cgi script to post the bug to the upstream bug tracker somehow and I think it was was called &amp;#8220;Bryce has implemented Pedro&amp;#8221; ;)  Also, I think it was Pete, who expressed his concern about bug hijacking and what we could do to counter.  Some of the proposed ideas looks good like bug supervisors marking comments as useful and being able to see only the useful comments, especially when bugs have 400+ comments and most of them are not useful to the developers or triagers.  I feel this is a great step ahead indeed!&lt;/p&gt;
&lt;p&gt;In other news, Pitti and Bryce and moving out of Desktop and X Team respectively for a rotation.  I don&amp;#8217;t know where Pitti is rotating to, but Bryce is rotating to the launchpad team and having worked with Bryce once or twice, I know this is going to be the great cycle.&lt;/p&gt;
&lt;p&gt;By the time this session was over, I gave up and decided to take a break.  Overall, it was a very good day.&lt;/p&gt;
&lt;p&gt;Edit:  It was Jfo, not Pete.  My bad.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/Jf4ESoyab8I" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-05-11-uds-m-day-1-overview.html</feedburner:origLink></entry>
 
 <entry>
   <title>The Women in my Life</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/u2ewgS0v5-U/2010-03-24-the-women-in-my-life.html" />
   <updated>2010-03-24T00:00:00+00:00</updated>
   <id>http://nigelb.me/the-women-in-my-life</id>
   <content type="html">&lt;p&gt;No, this is not a post about my girlfriends or my love life.  Today is &lt;a href="http://findingada.com/"&gt;Ada Lovelace Day&lt;/a&gt; and planet should be filled with blog posts about it.  After starting to contribute to Ubuntu, there are are couple of women whom I&amp;#8217;d like to appreciate for their contributions to Ubuntu and for mentoring/helping me when I got stuck&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wiki.ubuntu.com/lyz"&gt;&lt;strong&gt;Elizabeth &amp;#8216;lyz&amp;#8217; Krumbach&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p style="text-align:left;"&gt;The first team that I was part of in Ubuntu was the Beginners Team and from there on I&amp;#8217;ve worked with pleia2 (as we all know her) as part of the &lt;span class="caps"&gt;UCLP&lt;/span&gt;, Classroom Team, and User Days Team.  Its wonderful how she gives critical input to help see all angles to an idea and make it rock solid.  I also wonder how she managed to spend so much time in between work and real life with us online creatures ;)&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://wiki.ubuntu.com/MacoMorgan"&gt;&lt;strong&gt;Mackenzie &amp;#8216;maco&amp;#8217; Morgan&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I would have never known that quilt is something other than a type of bedding if it wasn&amp;#8217;t for maco.  I just popped by #ubuntu-motu and was looking for some pointers to start motu work.  She guided me step by step through my first bug fix, understand the packaging process and quilt, and sponsored the package too.  I still use the logs from that conversation way back in October or November when I&amp;#8217;m working on quilt.&lt;/p&gt;
&lt;p&gt;Hugs to you &lt;a href="http://princessleia.com/"&gt;pleia2&lt;/a&gt; and &lt;a href="http://ubuntulinuxtipstricks.blogspot.com/"&gt;maco&lt;/a&gt; for being part of Ubuntu and being there to help.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/u2ewgS0v5-U" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-03-24-the-women-in-my-life.html</feedburner:origLink></entry>
 
 <entry>
   <title>Backing up with APTonCD</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/NjFausvkJoI/2010-01-04-backing-up-with-aptoncd.html" />
   <updated>2010-01-04T00:00:00+00:00</updated>
   <id>http://nigelb.me/backing-up-with-aptoncd</id>
   <content type="html">&lt;p&gt;In my &lt;a href="http://justanothertriager.wordpress.com/2010/01/02/installing-packages-without-an-internet/"&gt;previous post about Keryx&lt;/a&gt;, I had mentioned there are 3 different ways to bring .debs from another system to your own, but I skipped explaining APTonCD because (a) those packages need to be installed on another Ubuntu system, (b) that system must be running the same release of ubuntu as yours &amp;#169; it gives an output of an iso file or has to be written to CD. This makes it non-ideal for bringing specific packages from one system to another system.&lt;/p&gt;
&lt;p&gt;APTonCD though is the &lt;em&gt;&lt;strong&gt;perfect backup tool&lt;/strong&gt;&lt;/em&gt;. When you want to reinstall your OS for some reason (like playing with it too much that it does not work), APTonCD is the tool to use. It&amp;#8217;s fairly straightforward. Once installed just run it from &lt;em&gt;System &amp;gt; Administration &amp;gt; APTonCD&lt;/em&gt;. Click on &lt;em&gt;create&lt;/em&gt; and all the applications installed will be listed out. Then click on &lt;em&gt;Burn&lt;/em&gt;, and viola all the packages that you&amp;#8217;ve installed gets backed up onto a CD, &lt;span class="caps"&gt;DVD&lt;/span&gt;, or iso.&lt;/p&gt;
&lt;p&gt;After reinstalling the OS, pop the CD or &lt;span class="caps"&gt;DVD&lt;/span&gt; that was burned earlier into the CD drive, run APTonCD (install it first), and click restore. Now all the .debs will be copied to apt cache. Now go to &lt;em&gt;System &amp;gt; Administration &amp;gt; Synaptic Package Manager&lt;/em&gt; and go to &lt;em&gt;Edit &amp;gt; Add CD-&lt;span class="caps"&gt;ROM&lt;/span&gt;.&lt;/em&gt; Then click on &lt;em&gt;Origin&lt;/em&gt; in the bottom left and all those packages will be listed and can be added.&lt;/p&gt;
&lt;p&gt;All the applications installed will be restored. If like me, you have /home on a separate partition, not much configuration required either.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/NjFausvkJoI" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-01-04-backing-up-with-aptoncd.html</feedburner:origLink></entry>
 
 <entry>
   <title>Installing packages without Internet Access</title>
   <link href="http://feedproxy.google.com/~r/nigelbabu/~3/tXP8JHwD6aY/2010-01-02-installing-packages-without-an-internet.html" />
   <updated>2010-01-02T00:00:00+00:00</updated>
   <id>http://nigelb.me/installing-packages-without-an-internet</id>
   <content type="html">&lt;p&gt;On the Ubuntu desktop, it is difficult for a user stuck without Internet because all packages are directly downloaded by the package manager. In India, unfortunately, Internet is not available for everyone. If you&amp;#8217;re is lucky to have a laptop &lt;span class="caps"&gt;AND&lt;/span&gt; have a friendly local Internet Centre where you can connect your laptop, you&amp;#8217;re among the few who can browse on Ubuntu (apart from those who have Internet ;)). I&amp;#8217;ve been searching for a way to download the packages off-line and then install at home for people from my LoCo.&lt;/p&gt;
&lt;p&gt;The latest &lt;a href="http://fullcirclemagazine.org/issue-32/"&gt;Full Circle Magazine&lt;/a&gt; had an article giving a few workarounds for this, including a &lt;a href="https://help.ubuntu.com/community/Synaptic/PackageDownloadScript"&gt;script generated by Synaptic Package Manager&lt;/a&gt;, APTonCD, and Keryx. The 2 most attractive options are to generate a script from Synaptic Package Manager and &lt;a href="http://keryxproject.org"&gt;Keryx Project&lt;/a&gt;. They let you download on systems without Ubuntu and bring the &lt;a href="http://en.wikipedia.org/wiki/Deb_%28file_format%29"&gt;.deb&lt;/a&gt; files to Ubuntu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Generate a Script from Synaptic Package Manager&lt;/strong&gt;&lt;br /&gt;
Start Synaptic Package Manager and mark all the applications that you want to install/upgrade. Instead of clicking the “Apply” button from the toolbar as you would normally do, go to the File menu and select “Generate Package Download Script” menu option to generate the download script. Save the generated script file. Give it a name like ‘ubuntu.sh’ and click the “Save” button. This script file can now be carried to a machine which has a fast Internet connection and it needs to be executed there.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/nigelbabu/4236366387/"&gt;&lt;img alt="Synaptic Package Manager" src="http://farm3.static.flickr.com/2573/4236366387_9ff49b8cba.jpg" title="Synaptic Package Manager" class="aligncenter" height="293" width="500"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To download the softwares on a Windows machine, use &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/190"&gt;Linkification plugin&lt;/a&gt; to convert text links into genuine, clickable links. Then, use &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/201"&gt;DownThemAll plug-in&lt;/a&gt;. When the plugin in installed, go to Tools &amp;gt; DownThemAll and include *.deb in fast filtering. If downloading from another Ubuntu machine, just type &lt;em&gt;sh .sh&lt;/em&gt; in terminal after changing directory to the folder containing the script.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keryx Project&lt;/strong&gt;&lt;br /&gt;
The &lt;a href="http://keryxproject.org/"&gt;Keryx Project&lt;/a&gt; only needs to be installed on the system with Internet connection and it downloads the debs. The best about Keryx is that its compatible with Ubuntu/Debian, Mac, and Windows. Download the &lt;a href="http://keryxproject.org/download/"&gt;Keryx Project from their download page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://keryxproject.org"&gt;&lt;img alt="Keryx Project" src="http://keryxproject.org/wp-content/uploads/2009/05/keryx-colage.png" title="Keryx Project" class="aligncenter" width="500" height="405" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is an excellent tutorial on using Keryx by &lt;a href="http://crashsystems.net/2009/01/keryx-tutorial/"&gt;crashsystems on his website&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/nigelbabu/~4/tXP8JHwD6aY" height="1" width="1"/&gt;</content>
 <feedburner:origLink>http://nigelb.me/2010-01-02-installing-packages-without-an-internet.html</feedburner:origLink></entry>
 
 
</feed>
