Skip to Content

Monthly Archives: April 2005

The Perfect Summer Internship

Permalink
NASA Logo

What is the recipe to my ideal summer internship?

  • 1x Robotics
  • 1x Image and Voice Processing/Recognition
  • 1x Embedded Linux
  • 1x Internet Technologies

Now of course it should be in a really neat location. I have always wanted to live on the east coast and visit the MIT AI lab and the NASA centers; so lets put it in Maryland. To finish it off I want to be working for some very talented people and most important of all making a difference in peoples lives.

In January Kim told me about a new NASA robotics internship program, I applied and patiently waited as the date of notification for interns was pushed back several times, settling on April 1st 2005. The 2nd and 3rd came and went with no phone call and I began considering my other options.

At 10:30am today my phone rang, it was from an area code that I didn’t recognize and I almost elected not to answer. I am glad I didn’t make that mistake.

It was Lubna Rana of the Goddard Space Flight Centers Office of University Programs and she had some good news. I got my first choice project for the Robotics Internship Program and I should be in Maryland on June 6th 2005. Wow! It was the last thing I expected today.

The project I will be working on is called “CosmoBot,” a robot used to help educators and therapists give better care to children with special needs. And it will be my job, along with 2-3 other students, to figure out how to integrate image processing, voice recognition and wireless sensors in to the product over a 10 week period.

It is going to be a great summer!

Other Cool Internships
Fellow LUG members Alex and Jeremy are taking off on some cool internships too:

Open Source Business Models

Permalink

Jive LogoWhy did you open source your Jabber library and server?
I asked this question to the great guys over at Jive Software during their open house last month. To my suprise I learned that their flag ship product Jive Forums began life as an open source application but was re-written as a closed source application when Sun showed an interest in using it to power the Sun developer forums.

Today Jive runs jivesoftware.org on which they host a number of projects based around Jabber. Although I am sure they all feel a need to give back to the OSS community given their own beginnings it also makes business sense for them. Their Live Assistant product is based on the XMPP (Jabber) standard and as such if they are able to help that community grow and get corporations to deploy IM systems using Jabber, then when the time comes to pick a Live Assistant product Jives Live Assistant will be the first choice.

It makes business sense: it helps generate revenue, grows a community around a technology that have developers familiar with, and they have also hired a few developers over the years who have been significant contributers to their open source products.

Now this is by no means the only way in which a company can make money off of open source.

Atlassian and BitMover both have give/gave their product gratis to open source projects as a way of gaining good will in the community. This works in a few different ways:

  1. Most open source developers also work for a company that has a budget and their own closed source products. If an employee is pleased with the product, he will want to use it at work too
  2. Good ol’ grass roots advertisement, these tools are going to get alot of press. Before BKBits.net, no one had heard of BitKeeper, and without the help of Linus’ star power I can’t imagine that would have changed
  3. Testing and bug reports. There is no distributed software development project bigger than the Kernel, if BitKeeper could handle it, it could handle anything. Not only that but open source developers have a tendency to tell it how it is and report truthful and helpful bug reports that are not sensitive to any political or organizational choices. At the end of the day the company is going to get an improved product.

And of course their is always pay for support model. This is what I think of as the classic open source business model that has been adopted by Red Hat, Mandriva, Progeny and the rest.

Why am I so interested?
Last week I visited a “Pitch Night” with a few of the people at Oregon Venture Partners and they said that one of the areas that they have been investing in is open source software. But, they aren’t a philanthropic group, and some sort of business model needs to exist to run a company.

When I was asked to put down my career goals for my scholarship application I stated my wish to create a company around open source software:

It is the blending of both the open source application work with the customer specific consulting that will help me succeed both in my experiences here and once I have graduated from Oregon State University.

New Useful Tools

Permalink

Last week I found two tools that make my life better and make me look cool in front of my friends (j/k). So I thought I would share them.

Zebra Tele-scopic

Keeping bookmarks sync’d and accessible
Back in the day I used to use a shareware tool to dump my IE bookmarks to html, then upload them via FTP, and then download them again and re-sync. But times have changed and del.icio.us is the new way to bookmark.

For those not in the know del.icio.us is a “social bookmarking” website. The first consequence is that your bookmarks are stored on a globally accessible webserver with an easy to remember URL like http://del.icio.us/philips. The second and more fun aspect is that when you make a bookmark (with one of the great del.icio.us bookmarklets) you can see who else has bookmarked the same page and what other sites may be related and of interest. From this feature I have found some great websites, including my new favorite techno radio station Radio ABF France.

But the coolest part is a plugin for Firefox called Foxlicious that allows you to sync your bookmarks from del.icio.us into a folder, organized by tags. It is great I can bookmark at home, and sync at work, then bookmark at work and sync at home, then; well you get the idea.

Zebra Tele-scopic

As you may already know I carry with me at most times an analog notebook (you know the paper kind). But I have never been able to find an inexpensive pen that is compact enough to keep in my pocket. Until my faithful run to the store last week where I found it! “It” being the Zebra Tele-scopic pen which is small enough to put in a jean pocket but telescopes into a regular sized and balanced ball point pen. Not only that but they are far cheaper than the Fisher Space Pen. At ~$5.49 US for two tiny telescoping pens with two refills these pens are a great deal!

Ajax and Ruby on Rails (Until 5am)

Permalink

UPDATE: Demo offline permanently

UPDATE: I moved my development site to a workstation here at home. It is a slow old box so be gentle, it is serving a little under 10req/s, but it works.

LiveSearch

Over the last few weeks I have been seeing what I can do with Ruby on Rails. My conclusion? In the future I want to use RoR for web applications: PHP just isn’t as fun after you have worked with RoR.

At the Open Source Lab I work on a project written in PHP/MySQL called Maintain (demo), it is a DHCP/DNS management tool that is used by Oregon State, the Open Source Lab, math.ku.edu, and several others. It is a really great package, and one that many people are getting joy out of using. And given its size and complexity and my familiarity with its code, it made a great canidate for me testing out RoR.

Last night I decided to add LiveSearch support into my little pet project that is exploring how I would implement some of Maintains features in RoR. The first thing that needed to be done was add search methods to my models. Browsing around Tobias’ typo source tree I figured out how I wanted to implement searching for one of my domain class and came up with this:


# This search defaults to searching for all strings that match with no
# restriction on beginning or end. Also it will OR together statements in
# the query with a space in them.
def self.search(query)
if query
tokens = query.split.collect {|c| "%#{c.downcase}%"}
r = find_by_sql(["SELECT * from domains WHERE #{ (["LOWER(name) like ?"] * tokens.size).join(” OR “) }”, *tokens])
s = Array.new
r.each {|domain| domain.children.each{|child| r.push child}}
return r.uniq # No need for duplicate entries
end
end

The line with r = find_by_sql( is something that is just amazing to me, and would have required a whole looping structure and some if statements to implement in PHP, but in Ruby I was able to use prepared statements, Array#join, and the * operator on the array to quickly build a restraint on the domains; all in one line.

After implementing the search methods, and looking at the Typo code the rest was a breeze, I created a couple of partials for live search results, and now with two lines of code I can add new objects to the LiveSearch sidebar. Very cool.

If you want to take a look at it in action click here (site down permanently, code available here). The handshake starts with a testguy and ends with a testt. Oh, and this is a limited time offer, the site is running on my laptop.

And speaking of the OSL Scott Kveton has made a great post about OSU’s College of EECS strategy to take on the big research schools and focus less on undergraduate education. Its pretty clear that they should be focusing on open source software and education especially given the current climate around the state but I guess they would rather Go Big than think smart.