Drinking from the Firehose

I’ve always enjoyed taking online classes, but this might be a little ridiculous. I’ve signed up for the following classes:

If and when all the courses get up and running at the same time, it will be a huge amount of work. Right now, only the first three have officially started, though the NLP course, the Algorithms course, and the Cryptography course have the first week of videos available.

Some of these classes I am taking to learn something new. As someone practicing software development without a formal degree in computer science, I’ve always felt suspect about my algorithms skills, and it would be interesting to learn something about probabilistic graphical models, cryptography, and natural language processing.

Others I am taking to see what is going on in online education at the university level. It’s certainly an area of study and work in which I have a strong interest.

It’s going to be interesting. Hopefully I’ll remember to write a trip report when it’s all over.


Clojure namespaces

On the leiningen google group, I came across a line to a post on Clojure namespaces by Colin Jones on the 8th light blog. Namespaces (or more specifically, the syntax of the ns macro) are one of the more confusing aspects of Clojure, and Colin’s post is perhaps the best explanation I’ve seen. Enjoy!

Overtone on Android?

I have been working on some Clojure on Android toy projects (inspired by and based on deepbluelambda.com and https://github.com/sattvik/neko. I’ve also been toying around with Overtone.

A couple of days ago, I found a port of SuperCollider for Android. I haven’t worked with it at all, but the prospect of getting Overtone on Android seems really interesting. I’ll have to play around with it over the holiday break.

Clojure idioms for threading operators

I heard a good tip from Stuart Halloway’s talk¬†at the London Clojure Users’ group for using the threading operators -> and ->>

Halloway says (paraphrased from the questions and answers at 1:35:30 ):

For functions that operate on objects, the object comes first so you can use the thread first operator. For functions that operate on collections, the collection comes last so you can use the thread last operator.

Improvements to ShapeMatch?

I am considering making some improvements to ShapeMatch. Here are the things I have in mind:

  • Changing the scoring system – I am not too sure I want to do this because the game targets toddlers, and I don’t know the value of keeping score for kids that age.
  • Adding sounds – Thinking about adding sounds to describe each shape. “Circle.” “You matched the circle!” Of course, I would include a Settings menu item to disable the sounds.
  • Adding different difficulty levels – Currently there is just one 4×4 grid. I don’t want to go any bigger because the buttons are just the right size on my Droid for my kid’s fingers. But I would consider smaller grids, maybe 2×2, 3×2, 4×2, 4×3 grids.
  • Making the matched cards disappear or become disabled – the matched cards serve a UI purpose: you can touch an matched card to get an unsuccessful match to turn over. If I added this, I’d probably add the next improvement
  • Adding a timer to turn cards over after an unsuccessful match – this would remove the need to touch a card to continue after an unsuccessful match, but it would consume extra battery life to run a timer, which is a side effect I don’t like.
  • Improving the graphics – I am not a designer, but I could play around in Inkscape some.

What improvements would you make to ShapeMatch?

Shape Match 1.01 released!

Shape Match v1.01 released to the Android Market today. It is a simple memory game that features 8 pairs of shapes that must be matched by exposing pairs.

Here’s a screenshot:

Shape Match keeps “score” by recording the number of pairs that have been exposed.

It’s a really simple game that is aimed at toddlers. I wrote a version for my personal use to keep my little girl entertained during a trip last December.

My goal is to keep the app very simple; I found that it worked best for my own child to keep the shapes large and the interface very simple. It was also very important that the program maintain state when the screen switched from portrait to landscape and back and when the home button is inadvertently pushed. I hope it works well for you.

I’d be happy to hear your feedback.

Follow your passion – it’s a dirty job and no one else will do it for you

Mike Rowe of the Discovery Channel’s Dirty Jobs recently gave a talk at the 2008 Entertainment Gathering in Monterey California. The talk focused on celebrating all kinds of jobs, especially jobs that are gruesome or – surprise – dirty.

Buried in the talk is this little nugget (at 11:21 in the video):

“Follow your dreams.” What could possibly be wrong with that? It’s probably the worst advice I ever got.

Mike then says that he could give 30 examples ostensibly refuting the adage. The first example he chose was about a pig farmer who collects the scraps from casinos to feed to his pigs, causing them to grow twice as fast as average pigs.

He smells like hell, but…he’s making a great living. You ask him “Did you follow your passion?” – he’d laugh at you.

Used in this way, “follow your passion” is a watered-down idea that is on a slippery slide towards “do whatever you want.”

I think that farmer is following his passion. But his passion isn’t collecting casino scraps. It might be growing pigs as fast as he can, or, more likely, running the most profitable farm possible. That passion is what drives him to collect the scraps, something few others would.

Find a person choosing to do what few others will, and you’ll find someone following his passion. The way I see it, a person following his passion will go to amazing lengths to keep following it, even when continuing is difficult or demoralizing. Some examples:

  • World-class athletes don’t train hour after hour, day after day, watching their diet, suffering through countless injuries because they are passionate about exhaustion, hunger, and pain. They are passionate about competing.
  • Chad Pregracke, featured on mikeroweworks.com, bought a barge to clean a stretch of the Mississippi River not because he is passionate about the task of dragging abandoned vehicles out of the river, but because he’s passionate about keeping the river clean.
  • Think entrepreneurs are passionate about the countless nagging tasks that they must do to keep their businesses living and growing? Of course not. Passion for their businesses is what drives them to spend the extra hours to attend to all the details, even while sacrificing the “sure thing” of a steady job.

Ironically, if you assume that most people that choose dirty jobs are following their passion, Mike has evidence strongly in its favor. He says:

People with dirty jobs are happier than you think. As a group, they’re the happiest people I know.

In the end, I think he’s really stumping for rebuilding respect for these jobs. Maybe that’s not problem; maybe the problem is matching the right people with the right dirty jobs. And passion must be a big part of that.