personal blog of Jonathan Fretheim

Assignment 3 in my Mobile Application Development class was turned in last week. This assignment was to do something with a web service and use an IntentService/ResultReceiver combo to offload network tasks.

I made a cool little app that lets you pan and zoom around a map of your town, your state, or anywhere in the US, and get US Census Bureau ACS data for that area. A cool part is a list view of all the data you’ve accessed gets sorted by distance from your current GPS location (or the center of the last map you looked at, etc.).


Originally, I thought it would be cool to make custom transparent map overlays in the shape of each census tract. That way, you would end up with a neat visual patchwork of census tracts. That idea got shelved when I downloaded some shapefiles and realized “wow, I have no idea what this stuff means!”

Lots of fun. I’d love to spend more time on this one and get it polished to the point of publishing it on the Android Market. Census tract shapes, a refined user interface, maybe even scaled map annotations based on the value of a designated statistic? –I think this could be really nice.

I’m really loving this new universe of JSON-based web APIs. If you do this kind of stuff and you haven’t tried InfoChimps yet, you should–a very interesting company that serves as a kind of data API clearinghouse/bazaar where everything is nicely documented and clean. Some APIs are free and a lot of the ones I checked out are free for the first X requests per month, so you can play around prototyping without making a big investment.

Further implementation detail, code snippets, etc., are here: [UWEC CS491] Homework 3 –


The 2nd assignment for the Mobile Application Development class I’m taking was to do something cool with ListViews and an SQLite database.

I made a simple book-scanning application that uses ZXing (an open-source barcode image processing project) and the Google Books API to gather bibliographic information. I had a lot of fun putting this together.

For those who want more details and to read some code-snippets, check my post on the class blog: [UWEC CS491] Homework 2 – Zebrary book scanner







If you know me, you probably know I’m back in school getting a second bachelor’s degree in Computer Science at the University of Wisconsin, Eau Claire. I love being back in school and this term I’m in a Mobile Application Development class where we’re mostly doing Android development. The class is great so far, and we’re writing blog posts on the course website about each of our assignments. This way we get to share code snippets and tricks, see the outside-of-lecture things that classmates have discovered, get feedback, etc.

My first post is up for a simple quizzing application I wrote called FiftyStates. Check the writeup here if you like: [UWEC CS491]  Homework 1 – FiftyStates with MapView.


After some squinting, I was able to use JQuery UI sliders to update values in a Processing.js canvas. This is handy, but next time I may just implement my own class of sliders in Processing itself. There are some finicky things with mouse and keystroke events that would be simpler that way.

I made a simple sketch to help visualize equations of the form f(x) = a sin(bx + c) + t cos(ux + v), where you can adjust the values of all constants and coefficients using sliders. This is a quick way to get a sense of what each of the terms are adding to the function as a whole. I think some topics in high school algebra would be simpler for a student to understand using a tool like this.

Somewhere down the line I’ll either turn this into a more general equation grapher or just add a pull-down menu of common equation types to manipulate.

It doesn’t work in IE, but it does work in both WebKit and Mozilla browsers. This would be another reason to keep the UI elements in Processing itself. That way, I could easily fall back to a Java applet for IE users.

Processing logoPlay around with it here.


I bought a Colorcube for my nine-year-old niece last Christmas thinking it would be fun for her to put together. I’ve been working more and more with color lately, so I borrowed it when I visited family over the weekend.

The end result is really nice, but putting it together was frustrating and finicky. The individual cubes come in two pieces and need to be snapped together hard. Threading the rods through the model isn’t easy, either. I can see now why my niece never got around to assembling it. I’m more likely to recommend this as an office toy/reference for a graphic designer than as a gift for a child.

I’ve been trying to get more of a grasp on color composition for digital images and the three-dimensional representation this cube gives you (cyan in one dimension, magenta in another, and yellow for the third) is helping.

I also put together a quick two-dimensional Processing sketch to help visualize RGB components:

Processing logo -Color Explorer->

colorful dots

I finally started playing around with Processing, which has been a lot of fun. Now that I know some Java, sketching out visual things this way is really quick. Like here:

Processing logoRed Dots.

In this example, I’m using Processing.js, which translates the Java/Processing code into an HTML5 canvas element. Some of the more processor-intensive sketches I’ve worked on choke a little when running via Processing.js as opposed to being inside a Java applet, but this is still pretty impressive to me.

Here is a new web-based sound project I have been working on:

First, I recorded myself whistling the same two notes for about a minute, three times, in three different places (a cafeteria, a park bench, and a busy street). I then asked friends to submit recordings of themselves whistling these same two notes. Thus far, there have been 26 submissions from 15 people.

The site is arranged so that you can listen to more than one of these files at a time, and this is what I find most interesting. Here’s an example of what that sounds like:


If you’re interested in participating, please send a recording of yourself whistling those two notes. There is information on how to do that here.

The project is turning out to be about a few things. Ambient sounds, intention and non-intention, collaboration and unity, etc. There are different people in different places all doing the same thing. I think playing around with and listening to this has tuned up my ears to my own aural environment. Very interesting to me is that after playing with the files for a while, I start to hear those two tones everywhere: in the wind, in traffic sounds, in electronic and mechanical hums.

Here is another new website I’ve been working on over the last few weeks.

This site is for quick, gestural drawings I’ve made using Microsoft Excel. The results can be startling for those of us who have spent a lot of time mucking with numbers or lists of things using Excel.

I’m very interested in what happens when you take an emotionally cold thing like a spreadsheet software package and try to “warm it up” so to speak. I have mostly done these on busses and planes. I have no interest in using this as a pointalistic representational drawing tool.

I use something like this for the beginning of a work day. I set it to launch (for example) iTunes, Mail, iChat, and iCal, and then hide everything except Mail.

I think it’s handy. I trigger it to run and then go get coffee and when I get back everything is where I want it to be. If your computer’s slow, probably increase the value in that line that says “delay 5″.

Very easily adaptable as you’ll see if you open it in Script Editor.

launch basic work apps

Here are three new websites I put together this week: