Archive for the 'Computing' Category

Building a personal favicon collection, or Running 16×16 locally, or an AppEngine Tutorial

Sunday, May 18th, 2008

The favicoop (my site running 16×16) has completely exceeded my expectations. With only ~75 add-on users, we are quickly approaching 10,000 hashably unique favicons in the collection. I think this is the largest favicon collection on the internet.

While this project has a lot to do with collecting favicons, I was mainly motivated to build it to learn about various technologies. It’s built with many Google services (AppEngine, code hosting, groups, hosted apps, analytics, etc). I’m pretty sure it is the only tool on AppEngine app that integrates with a Firefox add-on — even serving add-on updates. It is a great tool if you want to learn about AppEngine, Firefox add-on integration, and all the free Google services. To top things off, it can all be ran locally with the AppEngine SDK — so you can learn about these tools too!

With that, if you’re interested in collecting favicons you browse AND learning about how to run an AppEngine app — continue reading!

Step 0: Background

I assume you know how to install things on your computer, including add-ons, handle a few basic shell commands, and use SVN.

Step 1: Download stuff

You will need to grab three things, the Google AppEngine SDK, the 16×16 sources, and the packaged add-on. To grab the SDK, visit http://code.google.com/p/googleappengine/. Note: it requires python2.5. On OSX 10.4, I had to install that manually.

After you download/install the SDK, grab my sources from here:

svn checkout http://16x16.googlecode.com/svn/trunk/ 16x16-read-only

Last, you need to install the add-on. Do this by dragging this link to the URL bar (Firefox 3 only).

If you did all that, you should have everything you need to get started.

Step 2: Local environment tweaks

You will need to do some house-keeping to get things working on localhost. First, lets update the add-on upload-uri pref. This will cause the add-on to send your favicons to localhost. Hit about:config and modify the extensions.favicon.upload-uri pref. The pref should be changed to:

http://localhost:8080/send/

Next, cd into the app/ directory (of the svn repo) and copy the settings.py.dist to settings.py.

cd app/
cp settings.py.dist settings.py

Now we need to modify the app slightly to display images off of localhost — and not the production favicoop. In templates/index.html, find the line that reads:

// for running locally
// var domains = ['localhost:8080'];

Uncomment the var domains line, so it reads:

// for running locally
var domains = ['localhost:8080'];

This will cause the javascript to load the images locally.

Step 3: Launch the development environment

To launch the development environment, run the following command from the app/ directory.

python2.5 /usr/local/bin/dev_appserver.py ../app/ # you may have to modify this a bit for your SDK install

Now try hitting http://localhost:8080/. If you see “(error)”, browse to a few different websites (non-https) to load up some favicons into the collection. A good way to test is to bounce back and forth between tabs with favicons, as the add-on will send the favicon every time.

dev_appserver.py should spit out some debugging information. For instance, when a favicon is sent from the add-on to the server, you should see a request like this:

INFO 2008-05-19 04:05:48,967 dev_appserver.py] "POST /send/ HTTP/1.1" 200 -

Note the 200 status code, that means it worked! If it is returning 500, that means something is messed up. The dev_appserver.py should spit out the errors to help with debugging.

That’s it!

Refresh localhost a few times to see the new favicons being added to the collection as you browse. If you’re able to get it up and running locally, please let me know!

If you have any questions/comments, feel free to mail the shiny new discussion list. If you encounter any bugs, please let me know here, and if you are really interested — commits are here, and bugmail is here.

Side Project Conference?

Wednesday, May 14th, 2008

Wouldn’t it be neat if there was a conference dedicated to everyone’s side projects? Bring in speakers to talk about the stuff they work on in their free time. There would definitely be some interesting projects… hmm…

Favicon Collective breaks 500 favicons!

Monday, April 14th, 2008

Woohoo! After my last post, and a few additional users, we now have over 500 unique favicons in the favicon collection. I think if we can push through 1000 favicons, we will have the largest favicon collection on the internet.

If you would like to help add to the collection, install the Firefox 3 add-on.

This project has been a good skill-set tester… as it has required me to hack in Javascript/XUL, Firefox 3 apis (devmo++), google app engine, python, and django. If you find any bugs while interacting with this sausage factory, please be sure to file a bug on my google code project.

Help me create a huge favicon collection

Wednesday, April 9th, 2008

I really like favicons. So, I created a Firefox 3 add-on that sends all my favicons to a web service. Then, the stars aligned, and google released app engine. Now we’re enabled to collect all the favicons in the world. But I cannot do it alone, I need your help.

You can see the progress here. If you want to add favicons that you encounter (in Firefox 3), please see this page.

The add-on is alpha alpha alpha, so please let me know if you run into any issues.

Explaining Creative Commons

Tuesday, September 18th, 2007

On my way to Japan I was trying to explain creative commons to the person sitting next to me. My approach involved explaining the notion of “all rights reserved”, and then the licenses that CC offers. I think he got the idea, but it was convoluted and confusing.

Today, I was reading an editorial by Joi Ito (coincidently about recent events in Japan), and noticed how they explain CC: Creative Commons, a nonprofit group that develops flexible copyright arrangements.

That works too!

OLPC fun

Monday, March 19th, 2007

I recently got my hands on two XO laptops (One Laptop Per Child), so I can help develop the XS (School server).

[img]
I got a kick out of the packaging, “DO NOT use in cribs, beds, or playpens.”

I’ve started to play with the laptops. So far, I have been able to get a proof-of-concept server build up. This involved learning a tool called pilgrim, tweaking my stream, and producing some builds. The build doesn’t do anything helpful at the moment (except git rid of all that sugar stuff… :).

[img]

Woo for progress!

I gave up

Monday, February 5th, 2007

I don’t read digg anymore (gave up on slashdot awhile ago). It was awesome … but it just got too foolish.

Here are some of my new’ish favorite news feeds:

Some other great feeds….

I’m looking for a good non-treehugger’ish environmental issues website. Anyone know of a good one? Any other good feeds people would recommend?

BTW: current feed reader of choice: Google Reader — it rules!

Thanks Firefox

Saturday, February 3rd, 2007

blocked 12000+ pop-ups

At the movie rental place

Saturday, October 14th, 2006

Why the heck isn’t there a “if you liked this movie, you’ll like this movie too” console at rental places? It is waaaay to hard to pick out a movie.

Computer Science Education in the 21st Century

Thursday, March 9th, 2006

In this edition of “blog about an peer reviewed journal” we take a look at the latest Communications of the ACM. The “President’s Letter” by David A. Patterson regarding Computer Science educations, “Computer Science Education in the 21st Century” will be the focus. I am an Oregon State University (OSU) Computer Science (CS) major, in the 21st century, so this article was extremely relevant. As I read this paper in the Library, I could not keep myself from raising my arms and shouting. The essay touched on topics that have been advocating for years, theories that I have been discussing with my friends, and classes that I am actively considering purposing to my CS department. Even writing this post I am amazed by the pertinence of this paper.

The letter starts with the bold phrase, “To draw students to CS, we must first look to create a curriculum that reflects the exciting opportunities and challenges of IT today versus the 1970s. Future students and faculty would greatly benefit from an reinvigorating CS curriculum. (pg 1)” I could stop reading right there. Those two sentences sum up the problem with computer science in its entirety. To put it in my own words, CS is a field that changes so rapidly it would be foolish if the education did not shift with it. The first raised point in the article is that we should be using more current tools and software libraries. I could not agree more. The paper uses an example in which schools that use the Java programming language should use current development tools like Eclipse and JUnit. My computer science peer circle has been doing just this (even using those tools) and it has contributed directly to our success. We could go even further by encouraging OSU undergrads to use the contemporary languages to complete homework assignments or offer a “Trends in Computer Science” class highlighting current movements in our field. It would be so easy to supplement the piles of traditional CS curriculum with a few relevant hot topics.

Dr. Patterson goes on to talk about “Course I would Love to Take #1, Join the Open Source Movement“. At this point my exclamation in the library was audible enough to turn heads. I have a reason to be excited, the President of the ACM is advocating the exact cause I have been talking about for the past two years. This shows that I am not completely off the rocker. He elaborates on the example of using open source software to help learn large systems. The pitch to incoming undergrads would be that you could work on something relevant. Why do I love open source software? I can contribute to something relevant. With relevance comes practicality, and we are put in a situation where students are learning their discipline by doing. This is a feature of Computer Science. A civil engineer is going to have a hard time building a bridge in class, but a CS major can write a patch and contribute to a real system, even while they are learning.

The Oregon State Computer Science program is in a unique position to adopt open source software into education and successfully become leaders. This paper is further evidence that this is a practice worth pursuing.

Find the full letter here.