<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Srikanth Nori</title>
<description>Site.BlogIt-Admin</description>
<link>http://www.srikanthnv.net/index.php?n=Site.BlogIt-Admin?action=rss</link>
<lastBuildDate>Mon, 21 May 2012 00:14:28 GMT</lastBuildDate>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.Alternatives-to-the-Raspberry-Pi?when=2012-05-16T05:14:35Z</link>
<title>Blog / Alternatives to the Raspberry Pi</title>
<dc:date>2012-05-16T03:49:00Z</dc:date>
<pubDate>Wed, 16 May 2012 03:49:00 GMT</pubDate>
<description><![CDATA[<p>If you have been involved in amateur electronics in any way at all, or even just visited tech blogs/aggregators of late, you have probably heard of the <a class='urllink' href='http://www.raspberrypi.org/' rel='nofollow'>Raspberry Pi</a>. This amazing little device (now shipping for $35, eventually targeted to ship for $25) took the world by storm. Retailers were <a class='urllink' href='http://arstechnica.com/gadgets/2012/02/raspberry-pi-retailers-toppled-by-demand-as-35-linux-computer-launches/' rel='nofollow'>completely overwhelmed</a>, and The first <a class='urllink' href='http://arstechnica.com/gadgets/2012/04/delivery-begins-for-first-units-of-raspberry-pis-35-linux-computer/' rel='nofollow'>shipments finally went out</a> last month.
</p>
<p class='vspace'><a name='break' id='break'></a>
</p><hr />
<p class='vspace'><span style='font-size:120%'><strong>Money!</strong></span>
</p>
<p class='vspace'>Its popularity, of course, comes with good reason: The cost barrier for getting involved with embedded device programming has traditionally been pretty high. Getting involved with desktop development, web design, etc is pretty simple. All you need is motivation and time. Even getting involved with mobile app development is simple if you already have a smartphone. Plus, all these fields have a strong developer community so getting help and getting started is quite straightforward.
</p>
<p class='vspace'>The Raspberry Pi promises to change all that. The RPi foundation decided to price the boards at a ridiculously affordable rate. A USD 25/INR 1250 board is quite within the reach of people like me: i.e. It's something I could've afforded it back when I was in high school/college in India (if only it had been around back then!).  Opening up this industry to the entire world is going to be an absolute game changer. Developers the world over have already started coming up with really cool things, like a <a class='urllink' href='http://www.raspberrypi.org/archives/1185' rel='nofollow'>mind-controlled Lego NXT robot</a>! I, for one, can't wait to see what else people are going to think up.
</p>
<p class='vspace'><span style='font-size:120%'><strong>Community?</strong></span>
</p>
<p class='vspace'>That said, at the moment I am being cautious. What will really make a difference is going to be a strong developer community. Also, hopefully a lot of schools and colleges the world over are going to get students involved with development. I think the real growth of this device is going to kick off once the current demand for devices is met and enough people get involved in the entire field to create that community.
</p>
<div class='vspace'></div><hr />
<p class='vspace'>The Raspberry Pi is not the 'first' ever to do this kind of thing. Many organizations have tried to create such cheap devices and a lot of those exist in the market today. None of them are quite as cheap as the RPi of course but they do exist and can be very useful in their specific markets. 
</p>
<p class='vspace'>In fact, and now we get to the actual point of this article, I personally believe that having just "one device" for the whole world isn't really going to help. I'd love to see people start off with the RPi and then move on to other alternatives that are more suited to the application at hand. 
</p>
<p class='vspace'><span style='font-size:120%'><strong>Finally, the Alternatives</strong></span>
</p>
<p class='vspace'>Here are a few such alternatives to the Raspberry Pi. Most of these are targeted towards specific applications, which I've tried to describe. These are roughly in chronological order of when I heard of them, so the order is basically meaningless. 
</p>
<p class='vspace'>If you know of more, please email me (srikanthnv[at]gmail[dot]com) or leave a comment here and I'll add them to the list:
</p>
<p class='vspace'><span style='font-size:144%'><strong><a class='urllink' href='http://www.gumstix.org/' rel='nofollow'>Gumstix</a></strong></span>
</p>
<p class='vspace'>Not similar in terms of price, but very similar in terms of size. I first heard of this device way back in 2004 on <a class='urllink' href='http://developers.slashdot.org/story/04/01/28/1645213/a-linux-machine-for-your-collar' rel='nofollow'>slashdot</a>, when the editors really wanted to stick these device in your collar.  A tiny x86 device that could do all sorts of things that were almost unimaginable. 
</p>
<p class='vspace'>The Gumstix suite of devices is now huge and has all kinds of applications ranging from hobby stuff to education and infrastructure.
</p>
<p class='vspace'><span style='font-size:144%'><strong><a class='urllink' href='http://www.arduino.cc/' rel='nofollow'>Arduino</a></strong></span>
</p>
<p class='vspace'>Seemingly the favourite of people with artistic inclinations - this device has become very famous as the best way to interface the "real world" with computers.
</p>
<p class='vspace'><span style='font-size:144%'><strong><a class='urllink' href='http://beagleboard.org/' rel='nofollow'>Beagle Board</a></strong></span>
</p>
<p class='vspace'>The Beagle Board has a powerful OMAP 3 processor, making this ideal for multimedia applications - including entertainment, vision, robotics, etc. The Beagle Board did make a huge change in getting people involved with embedded. The $150 price was still high, but a far cry from the $500+ EVMs that were traditionally available. In a way this was the original Raspberry Pi.
</p>
<p class='vspace'>The <a class='urllink' href='http://beagleboard.org/bone' rel='nofollow'>BeagleBone</a> is a pared-down variant of the Beagleboard. At $90, this is definitely more approachable for beginners.
</p>
<p class='vspace'><span style='font-size:144%'><strong><a class='urllink' href='http://pandaboard.org/' rel='nofollow'>Panda Board</a></strong></span>
</p>
<p class='vspace'>Beagle board on steroids. Features the OMAP4 and the board of choice for HD entertainment, stereo/3d vision applications, etc.
</p>
]]></description></item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.Installing-TinyOS-from-the-TinyProd-repositories?when=2012-02-15T08:56:48Z</link>
<title>Blog / Installing TinyOS from the TinyProd repositories</title>
<dc:date>2012-02-14T23:56:00Z</dc:date>
<pubDate>Tue, 14 Feb 2012 23:56:00 GMT</pubDate>
<description><![CDATA[<p>Instructions for setting up the latest TinyOS from the tinyprod repositories on Ubuntu 11.10.
</p>
<p class='vspace'>These instructions are modified from the ones here to reflect what I actually did:
</p><ul><li><a class='urllink' href='http://tinyprod.net/repos/debian-dev/' rel='nofollow'>http://tinyprod.net/repos/debian-dev/</a>
</li><li><a class='urllink' href='http://code.google.com/p/tinyos-main/source/checkout' rel='nofollow'>http://code.google.com/p/tinyos-main/source/checkout</a>
</li><li><a class='urllink' href='http://docs.tinyos.net/tinywiki/index.php/Installing_TinyOS_from_Source_on_Fedora_13_64bit' rel='nofollow'>http://docs.tinyos.net/tinywiki/index.php/Installing_TinyOS_from_Source_on_Fedora_13_64bit</a>
</li></ul><p class='vspace'><strong>Environment</strong>
</p>
<p class='vspace'>I'm using this <a class='urllink' href='http://www.trendsigma.net/vmware/lubuntu1110t.html' rel='nofollow'>Lubuntu 11.10 virtual machine</a>, running under VMWare
</p><pre class='escaped'>user@lubuntu:/$ cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"@@

user@lubuntu:/$ uname -a

Linux lubuntu 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 
14:50:42 UTC 2011 i686 i686 i386 GNU/Linux</pre>
<p><strong>Prerequisites</strong>
</p>
<p class='vspace'>Make sure you have the following packages installed, if you don't, install them with:
</p><pre class='escaped'>
sudo apt-get install automake gcc g++ gcc-multilib g++-multilib python2.7-dev
</pre>
<p class='vspace'><strong>Setup instructions</strong>
</p>
<div class='vspace'></div><ul><li>Remove the previously installed tinyos packages:
</li></ul><div class='indent'><pre class='escaped'>
sudo dpkg -P `dpkg -l nesc '*tinyos*' | grep ^ii | awk '{ print $2 }' | xargs
</pre>
</div><ul><li>Add the following line to /etc/apt/sources.list:
</li></ul><div class='indent'><pre class='escaped'>
deb http://tinyprod.net/razvanm/debian squeeze main
</pre>
</div><ul><li>Install the new tinyos packages:
</li></ul><div class='indent'><pre class='escaped'>sudo apt-get update
sudo apt-get install nesc msp430-tinyos avr-tinyos tinyos-tools</pre>
</div><ul><li>Install subversion:
</li></ul><div class='indent'><pre class='escaped'>
sudo apt-get install subversion</pre>
</div><ul><li>Go to the directory where you want to get the TinyOS source
</li></ul><div class='indent'><pre class='escaped'>
cd /opt</pre>
</div><ul><li>Download the source and set dir name as you would like
</li></ul><div class='indent'><pre class='escaped'>svn checkout http://tinyos-main.googlecode.com/svn/trunk/ tinyos-main-read-only
mv tinyos-main-read-only tinyos-rev5889</pre>
</div><ul><li>Set up your environment - create a file called tinyos.sh with these commands adapted appropriately
</li></ul><div class='indent'><pre class='escaped'>#!/bin/sh
export TOSROOT=/opt/tinyos-rev5889
export TOSDIR=$TOSROOT/tos
export CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:.
export MAKERULES=$TOSROOT/support/make/Makerules</pre>
</div><ul><li>Source this file to setup your environment
</li></ul><div class='indent'><pre class='escaped'>
. tinyos.sh</pre>
</div><ul><li>Build the tinyos tools
</li></ul><div class='indent'><pre class='escaped'>
cd $TOSROOT/tools/
./Bootstrap
cd platforms/mica/uisp;./bootstrap; cd $TOSROOT/tools/
./configure
make
sudo make install</pre>
</div><p class='vspace'>..and that's it! You should be good to go.
</p>
<p class='vspace'><strong>Bugs?</strong>
</p>
<p class='vspace'>Found issues with this guide? Let me know and I'll fix it. srikanthnv[at]gmail[dot]com
</p>
]]></description></item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.Hacking-in-Cembedded-devices-tips-and-tricks?when=2012-02-10T22:03:23Z</link>
<title>Blog / Hacking in C/embedded devices - tips and tricks</title>
<dc:date>2012-02-10T21:37:00Z</dc:date>
<pubDate>Fri, 10 Feb 2012 21:37:00 GMT</pubDate>
<description><![CDATA[<p>This is a running collection of tips and tricks that I've picked up over time in C/C++ development on many devices. I expect this will be a live document that I will add to as I continue to work.
</p>
<div class='vspace'></div><h3>Who is this for?</h3>
<ul><li>General C developers
</li><li>Devs working in small (2-10) member teams
</li><li>Devs working with code that was handed down to them
</li><li>Devs working on embedded devices
</li></ul><div class='vspace'></div><h3>Who is this not for?</h3>
<ul><li>"Enterprise" scale software developers. Really - you probably need a lot more than this.
</li></ul><div class='vspace'></div><h3>The Info</h3>
<ul><li><strong>General C</strong>
<ul><li>C lets you obfuscate a lot of things - ranging from file names to variable names. Often times, code that is heavily optimized can be cryptic to read. As a rule of thumb, always prefer understandability over optimization. You are likely to rewrite/refactor code a million times - you will waste more time trying to figure out cryptic looking code than you will gain in efficiency.
</li><li>NEVER, EVER typecast. Every typecast is a disaster-during-development waiting to happen. 
</li></ul><div class='vspace'></div></li><li><strong>Software process/architecture</strong>
<ul><li>Always start with use cases. Understand your entire system later - first you need to understand how your users will interact with your system. Document them in detail.
</li><li>Whatever task you've set out to do, you probably don't know how to do it - yet. You will learn over time and any design you start out with will probably go wrong.  My advice: prototype. Always put together a quick-and-dirty demo before you sit down to iron out an architecture.
</li><li>Iron out an architecture. After you finish setting out the demo, step  back and create a design with a block diagram and clear APIs of each and every block. Double/triple-check your APIs for consistency. Use the use cases
</li><li>Create tests from your use cases first, and then add test cases from your architecture. Test for positive cases first. Maintain a regression test suite. If you think you don't have the time to do this - you will pay for it later.
</li><li>Schedule code reviews and stick to them. PLEASE.
</li><li>Maintain an issue tracker - preferably one that's integrated with your version control and e-mail system. Also ensure that reviews are part of your check-in process.
</li><li>Set aside time periodically to create a "getting started" guide - the guide should be good enough to get a complete newbie up to speed with development on your system.
</li></ul><div class='vspace'></div></li><li><strong>General Coding</strong>
<ul><li>Design, publish, and maintain a coding standard. If you don't want to roll your own then just steal the <a class='urllink' href='http://www.kernel.org/doc/Documentation/CodingStyle' rel='nofollow'>linux kernel coding guidelines</a>. 
</li></ul><div class='vspace'></div></li><li><strong>Dev/debug environments</strong>
<ul><li>Automate, automate, automate! C can become a very unmanageable beast if things are left to manual intervention. Make sure you can automate as many things as humanly possible. Everything from checkouts to builds to checkins to deployment to debugging - everything can be automated to some extent. Rule of thumb - if you do something more than 5 times, then you have a candidate for automation.
</li><li>Use an IDE! Do not attempt to use vim/emacs unless you have no other option. As a hardcore vim-junkie, I can tell you that you will save a huge amount of time if you figure out how to get an IDE to work with your code. Ideally, see if you can get Eclipse running for you, somehow.
</li><li>DO NOT start raw code development until you have a debugger. New platform? The first thing you should port (after porting your Linux Kernel onto it) is gdb!.
</li><li>Make sure your debug cycle is not overly complicated. You shouldn't have to take 20 minutes to test a single-line code change. Set up your environments such that you can deploy/test code in seconds. Do this EARLY in your development cycle.
</li></ul><div class='vspace'></div></li><li><strong>Hardware/setup</strong>
<ul><li>Make sure your entire team is either using the same hardware, or clearly knows the difference between their units. You may end up spending hours to figure out why only Raju Coder sees a bug and you don't if you don't do this. 
</li><li>Save the hardware! Use ESD protection and be careful with your devices. 
</li></ul></li></ul>
]]></description></item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.Scribe?when=2012-02-10T21:31:18Z</link>
<title>Blog / Scribe</title>
<dc:date>2012-02-10T21:28:00Z</dc:date>
<pubDate>Fri, 10 Feb 2012 21:28:00 GMT</pubDate>
<description><![CDATA[<p>Check this out - me and a few other people put together a cool service called <a class='urllink' href='http://bit.ly/webscribe' rel='nofollow'>Scribe</a>! Scribe adds real-time speech transcription to a web-based video conferencing system.
</p>
<div class='vspace'></div><div class='indent'>We designed Scribe to enhance the conferencing experience for users collaborating across the world. With speech transcription, Scribe opens up a huge world of possibilities ranging from automatic text mining to event tracking and "minutes of the meeting" generation.
</div><p class='vspace'>See more at the <a class='urllink' href='http://bit.ly/webscribe' rel='nofollow'>Scribe</a> website.
</p>
]]></description></item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.Engineering-and-programming-contests-list?when=2012-02-10T21:32:17Z</link>
<title>Blog / Engineering and programming contests list</title>
<dc:date>2012-01-05T06:50:00Z</dc:date>
<pubDate>Thu, 05 Jan 2012 06:50:00 GMT</pubDate>
<description><![CDATA[<p>A list of the engineering, design, etc contests that I know of here, for future reference.
</p>
<p class='vspace'>This focuses on contests that are among one or more of the following categories
</p><ul><li>Students/Corporates/non-students
</li><li>Allow international participation
</li><li>Have some kind of prize associated with them
</li></ul><p>
</p>
<p class='vspace'><span style='font-size:144%'>Engineering</span>
</p><ul><li><a class='urllink' href='http://www.ieeechangetheworld.org/' rel='nofollow'>IEEE Presidents Change the World competition</a>
</li><li><a class='urllink' href='http://www.systemseng.cornell.edu/intel/' rel='nofollow'>Intel/Cornell embedded design cup</a>
</li><li><a class='urllink' href='http://disneyimaginations.com/' rel='nofollow'>Disney Imagineering</a>
</li></ul><p class='vspace'><span style='font-size:144%'>Hack-a-thon style</span>
</p><ul><li><a class='urllink' href='http://trojanhack.co' rel='nofollow'>Trojan Hack</a>
</li></ul><p class='vspace'><span style='font-size:144%'>Programming</span>
</p><ul><li><a class='urllink' href='http://icpc.baylor.edu' rel='nofollow'>ACM ICPC</a> - The mother of all coding competitions and probably the single toughest and most prestigious in the world.
</li><li><a class='urllink' href='http://codesprint.interviewstreet.com' rel='nofollow'>CodeSprint</a>
</li><li><a class='urllink' href='https://www.facebook.com/hackercup' rel='nofollow'>Facebook Hacker Cup</a>
</li></ul><p class='vspace'><span style='font-size:120%'>Training/Practice for programming contests</span>
</p><ul><li><a class='urllink' href='http://acm.uva.es/problemset/' rel='nofollow'>UVA problem sets</a> 
</li><li><a class='urllink' href='http://projecteuler.net/' rel='nofollow'>Project Euler</a>
</li><li><a class='urllink' href='http://www.topcoder.com/' rel='nofollow'>TopCoder</a>
</li></ul><div class='vspace'></div>
]]></description></item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.Summaries-BCP?when=2011-11-09T01:37:28Z</link>
<title>Blog / Paper summaries - BCP</title>
<dc:date>2011-11-09T01:03:00Z</dc:date>
<pubDate>Wed, 09 Nov 2011 01:03:00 GMT</pubDate>
<description><![CDATA[<h3>Intro</h3>
<p>This is a brief summary of <a class='urllink' href='http://anrg.usc.edu/~scott/papers/ipsn10.pdf' rel='nofollow'>"Routing Without Routes: The Backpressure Collection Protocol"</a>. 
</p>
<div class='vspace'></div><h3>Background</h3>
<p>Traditional routing protocols, such as <a class='urllink' href='http://en.wikipedia.org/wiki/Link-state_routing_protocol' rel='nofollow'>link state</a> or <a class='urllink' href='http://en.wikipedia.org/wiki/Distance-vector_routing_protocol' rel='nofollow'>distance vector</a> routing protocols work by explicitly calculating a route in the network from one node to another. 
</p>
<p class='vspace'>While these protocols work very well (as proven by the fact that they are deeply established in today's networks), they are not the "ideal" protocols for all network topologies. Specifically, they do not necessarily provide a globally optimum distribution of congestion in many-to-one transmission topologies, often leading to possible bottlenecks. 
</p>
<p class='vspace'>BCP is an implementation of Backpressure Routing - a completely different routing mechanism - for wireless sensor networks. BCP implements backpressure routing on wireless sensors to try to achieve the globally optimum distribution of traffic across the sensor network.
</p><div> <img width='600px' src='http://www.srikanthnv.net/uploads/Blog/bcp.png' alt='' title='' /></div>
<p>
The core concept behind Backpressure routing is simple. Consider a network where all the nodes (sources) are trying to send data to one of the nodes (a sink). This is a typical data collection application. Assuming all nodes are transmitting data at roughly equal rates and are overall transmitting data "faster" than the sink can process, it will soon reach a state where data is backlogged at each of the nodes. Also, the farther away a node is from the sink the more data is likely backlogged at that node.
</p>
<p class='vspace'>Now, if a congested node tries to send more and more data along the same path, it might cause congestion bottlenecks - leading to dropped packets. 
</p>
<p class='vspace'>However, instead, if the node sends data to a less-congested neighbour, who in-turn passes it on to a less-congested neighbour, and so on - chances are that the load will get evenly distributed over the network, and then data will eventually reach the sink. Any node that gets too heavily backlogged will be applying a "backpressure", and will not accept more data to forward.
</p>
<p class='vspace'>This is a bit of an over-simplification of Backpressure. A more rigorous mathematical treatment of this stochastic network optimization can be found under the general class of "Utility Optimal Lyapunov Networking" algorithms.
</p>
<div class='vspace'></div><h3>Overview of operation</h3>
<p>The "business logic" of BCP is elegantly simple.
</p><ul><li>Each node that has data to send calculates a weightage to each of its neighbours. It then sends to the best neighbour based on that weightage
<ul><li>The weightage is calculated as a combination of the link quality between the two nodes, and the queue size of that node. This is a critical part of BCP's operation. Details are in the paper.
</li><li>Nodes learn their neighbours backlogs by "snooping". Nodes listen to all nearby packet transmissions that contain the backlog. Nodes also disseminate their backlog so that other nodes can pick them up.
</li></ul></li></ul><p class='vspace'><strong>Work in progress</strong>
</p>
]]></description><dc:contributor>srikanth</dc:contributor>
</item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.Summaries-RCRT?when=2011-11-09T00:55:59Z</link>
<title>Blog / Paper summaries - RCRT</title>
<dc:date>2011-11-09T00:20:00Z</dc:date>
<pubDate>Wed, 09 Nov 2011 00:20:00 GMT</pubDate>
<description><![CDATA[<h3>Intro</h3>
<p>This is a brief summary of <a class='urllink' href='http://enl.usc.edu/papers/cache/Paek07.pdf' rel='nofollow'>"RCRT: Rate-Controlled Reliable Transport for Wireless Sensor Networks"</a>. 
</p>
<div class='vspace'></div><h3>Background</h3>
<p><a class='createlinktext' rel='nofollow'
    href='http://www.srikanthnv.net/index.php?n=Blog.WirelessSensorNetworks?action=edit'>Wireless sensor networks</a><a rel='nofollow' 
    class='createlink' href='http://www.srikanthnv.net/index.php?n=Blog.WirelessSensorNetworks?action=edit'>?</a> are often used for carrying data that cannot tolerate losses. Such data typically needs a reliable transport mechanism. Also, since sensors might generate data in bursts, there is a need for ensuring that there is no congestion. WSNs can typically carry very low bit-rates, usually of the order of a few hundreds of bytes per second, congestion could cause a serious problem.
</p>
<p class='vspace'>RCRT is a protocol that tries to solve both problems. 
</p><h3>Overview of operation</h3>
<p>How does RCRT solve this problem? IT does a few things:
</p><ul><li>First off, the protocol is "centralized". The network's behaviour is controlled by the 'sink's. Sinks are nodes that collect data from all the sensors. It is assumed that the sinks are a lot smarter than the sources.
</li><li>Reliability  is achieved by making the sink explicitly request missing packets from sensors
</li><li>Congestion control is done by controlling data send rate. The rate control mechanism decides on rate increase/decrease based on congestion detection. 
</li><li>Sinks detect congestion in a very interesting way - they check the time needed to repair a lost packet and compare it to the typical Round Trip Time (RTT) between the sink and that sensor that sent the packet. If the time taken to repair is much higher than the RTT then the network is most likely congested.
</li><li>Rate control is done by rate adaptation.
</li><li>Rate adaptation done on a network-wide basis. 
<ul><li>RCRT uses additive-increase multiplicative decrease	, like TCP, However, this is done at the SINK, and not the source (unlike TCP)
</li><li>It is done on the “total” of all flows coming into the sink, and not on a per-flow basis (unlike TCP)
</li><li>The sink has a better picture if it uses the overall total!
</li><li>The increase factor is constant but Decrease is time-dependent!
</li></ul></li></ul><div class='vspace'></div><h3>Details and results</h3>
<p>There are a lot more details in this PDF of a presentation I made on RCRT for <a class='urllink' href='http://anrg.usc.edu/~ee652/index.html' rel='nofollow'>EE652</a> at USC. <a class='urllink' href='http://www.srikanthnv.net/uploads/Blog/rcrt-summary.pdf' rel='nofollow'>rcrt-summary.pdf</a>
</p>
]]></description><dc:contributor>srikanth</dc:contributor>
</item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.And-a-slight-change-of-plans?when=2011-08-19T22:25:52Z</link>
<title>Blog / And a slight change of plans</title>
<dc:date>2011-08-19T22:20:00Z</dc:date>
<pubDate>Fri, 19 Aug 2011 22:20:00 GMT</pubDate>
<description><![CDATA[<p>Those of you who've been in touch with me over the past few months probably knew this was coming. For those few of you who didn't, and are for some reason (probably accidentally) on my site, this is the news:
</p>
<p class='vspace'>I'm now a grad student. Yes. After the 5 amazing years at Ittiam I'd decided I want to find out if a research kind of world is better for me, so now here I am - doing my Masters in CS at USC.
</p>
<p class='vspace'>More updates will come soon of course, as I try to figure a life out here.
</p>
]]></description></item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.My-works-on-engadget?when=2011-04-18T15:55:12Z</link>
<title>Blog / My work's on engadget!</title>
<dc:date>2011-02-18T16:45:00Z</dc:date>
<pubDate>Fri, 18 Feb 2011 16:45:00 GMT</pubDate>
<description><![CDATA[<p>Engadget is carrying a story about something I'd worked on! Our recent work on HD conferencing on Android is getting some attention :)
</p>
<div class='vspace'></div><div><img src='http://www.srikanthnv.net/uploads/Blog/ittiam-omap4-video-conferencing-mwc-2011.jpg' alt='' title='' /></div>
<p class='vspace'><a class='urllink' href='http://www.engadget.com/2011/02/15/ittiam-shows-off-four-way-720p-hd-video-conferencing-using-andro/' rel='nofollow'>Check it out!</a>
</p>
<div class='vspace'></div>
]]></description></item>
<item>
<author>srikanth</author>
<link>http://www.srikanthnv.net/index.php?n=Blog.First-post?when=2011-04-22T15:44:51Z</link>
<title>Blog / First post!</title>
<dc:date>2008-04-17T19:09:00Z</dc:date>
<pubDate>Thu, 17 Apr 2008 19:09:00 GMT</pubDate>
<description><![CDATA[<p>This is a test post to test Blogging within PMWiki.
</p>
<p class='vspace'><em>Seems to work like a charm</em>
</p>
<p class='vspace'><strong>L</strong>orem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac leo massa, at tempor eros. Nam tincidunt porttitor purus non auctor. Integer elementum nulla at elit varius ultricies. Nulla tristique metus a dui rhoncus a tristique odio lacinia. Mauris sapien sem, molestie sed cursus quis, sodales quis neque. Donec auctor luctus justo eget dictum. Nullam quis varius sem. Proin in urna nisl. Suspendisse iaculis, lorem nec elementum dapibus, nisi odio convallis dolor, eu hendrerit ligula turpis non sapien. Curabitur vulputate imperdiet nisl, ut auctor lectus rutrum ac.
</p>
<p class='vspace'>
</p>
<p class='vspace'>Sed pretium ullamcorper diam sit amet luctus. Etiam sapien urna, facilisis dignissim consectetur sed, viverra sed enim. Nam at lorem id justo tincidunt vehicula dapibus at nisl. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam cursus tellus ac neque consequat quis cursus nisi iaculis. Nunc vitae quam nibh, vitae varius mi. Vestibulum elementum lacus lacinia erat consectetur eu interdum felis venenatis. Proin tincidunt justo ipsum, ac suscipit dui. Donec et neque non est imperdiet aliquet quis a odio. Nullam sed mauris turpis, nec dapibus mi.
</p>
<p class='vspace'>Fusce iaculis congue massa, in rhoncus eros bibendum at. Nulla hendrerit arcu at odio faucibus gravida. Duis at vehicula lectus. Aenean bibendum, enim vitae feugiat tristique, risus libero congue dui, sit amet facilisis nibh elit quis nisi. Aliquam scelerisque, eros quis rutrum sollicitudin, ipsum nisl bibendum dui, id porta ipsum ante ac est. Phasellus posuere ullamcorper augue, et lacinia nulla euismod et. Mauris tellus ligula, sodales id fringilla mollis, gravida eget neque. Sed ut ligula enim, non vestibulum ipsum. Pellentesque lobortis fermentum ornare. Suspendisse ac blandit massa. Suspendisse consectetur placerat elit at pharetra. Mauris dapibus dignissim sodales. Sed sit amet massa id nibh malesuada vulputate. Donec dui magna, eleifend vitae commodo in, scelerisque eget lorem. Phasellus porta vestibulum sem ullamcorper scelerisque.
</p>
<p class='vspace'>Proin ac nibh nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse purus mi, sodales id hendrerit at, interdum commodo mi. Morbi fermentum ipsum aliquam nulla dapibus sed scelerisque lorem semper. Nunc et nunc sed nisi iaculis eleifend. Ut ligula lectus, mattis id molestie nec, tincidunt nec mauris. Curabitur venenatis ante ut lorem scelerisque at bibendum eros luctus. Suspendisse scelerisque accumsan elit. Sed sagittis malesuada dui, ut adipiscing ipsum dapibus ut. Curabitur id eros nec risus molestie eleifend. Donec consequat, mi ut rutrum feugiat, massa est consequat arcu, nec consectetur lorem tellus eget lorem. Proin nisl neque, feugiat vestibulum semper a, ullamcorper sed felis. Suspendisse ac nunc dui. Phasellus sapien magna, rutrum sit amet feugiat rutrum, elementum eu diam. Donec ac feugiat quam. Nulla ac enim vel dolor pharetra iaculis. Donec ut lacus tellus, in varius enim. Sed purus massa, semper vel scelerisque ut, dapibus quis elit. Proin sed fringilla nisi. Nullam laoreet risus velit, sit amet congue lacus.
</p>
<p class='vspace'>Ut odio nisi, venenatis ac venenatis id, fringilla vitae arcu. Aenean fringilla neque at orci pretium dictum. Nulla laoreet, velit non rhoncus porta, purus arcu commodo lorem, vitae blandit turpis ligula quis est. Sed et leo ac arcu condimentum volutpat nec vitae augue. Etiam rutrum lorem eget felis laoreet pretium. Ut in accumsan mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec sodales nulla at magna posuere venenatis. Ut a ipsum urna. Aliquam eget arcu erat. 
</p>
]]></description></item>
</channel>
</rss>

