Brian Jacques passes away
He was my favorite children's book author. When I was young(er) I met him at a book signing. He smelled like cigars and alcohol and swore up a storm about the evils of those Mighty Morphin Power Rangers on stage. Also, told a woman to shutup when she questioned the ability of the Liverpool team. That guy was literary cool.
ic-failover: A new way to manage important phone calls
You have an important call to take but the quality of your phone connection is in dispute. You may have a cellphone or a voip line that is prone to randomly dropping calls. Your call might drop and the other person will continue to talk unaware that the other side has disconnected. The way ic-failover works is that it allows the other party to call in to a conference. If you aren't logged into the conference, it dials you and prompts the other party that you are on your way. If either party disconnects the app tries to call them back and plays some classical music for the other user to listen to while they wait. The main strategy of this app is to keep users connected and talking.
I will be releasing a copy of this on github soon. The app will use Twilio's API and Python/Django for the backend. It should be compatible with Google's app engine.
Redis caching for WordPress
I have been working on a Redis object cache plug-in for WordPress. There are quite a few plug-ins that address interfacing with Memcached and APC so I thought it only natural that there should be a plug-in that interfaces with Redis. I used the Predis client library to handle all that client server communication jazz.
Check it out at github.
Hunting with your feet and first reactions to Born to Run
I asked my grandmother for Born to Run this Christmas. The book mixes the accounts of anthropologists and the authors personal expedition to the Barrancas to study the Tarahumara. This tribe located in Mexico hunts by chasing their prey for extended periods of time. This intrigued me and I found this paper by Sheryl D. Battles titled The Running Man:
Bennett and Zingg (1935) provide several examples of Tarahumara physical stamina. Tarahumara hunters, for instance, were witnessed to hunt by literally running their prey into the ground. Once on the track of a deer or other game, a hunter would continue to jog after it for hours, sometimes running relentlessly for two days, until the animal dropped from exhaustion. By the second day, even the most fleet of game animals usually dropped, exhausted, and was then killed by the hunter with a knife or rock. Of course, the running down method of hunting is not limited to the Tarahumara. Uses of this method have been recorded among other groups in the Americas, and groups in Africa (Marshall, 1958; Washburn, 1960; Watanabe, 1971).
This could become the new Michael Pollan track it, gut it, and eat it -- bring you closer to food experience -- that is the prize in the sport of ultrarunning. A deer can run upwards of 40 mph so it would be hard to keep the deer in line of sight. And then there are the property issues of chasing a deer across another person's land.
Another interesting part in the book is an account by two young Tarahumara boys of what appears to be a homonid. That's the stuff of anthropologist dreams and the plot line in one of my favorite books Almost Adam.
A product that came from an interview: Speedquant
I had interviews this past summer for programming jobs and for one of the interviews I was assigned the task of writing an internet speed test that would ideally measure download, upload, and ping speed. The task came out of the blue as the ad was for a Python/Perl-ish position and I had not played around with Flash for about a year.
Yet thoughts of how I would accomplish this task were dominating most of my free time mainly because everyone has Flash and yet Flash seemed horribly inadequate. Performing a download test is relatively straight forward, but when uploading data Flash has no implementation for measuring how much data has been transmitted.
This introduces complexity because we have to find out how much data is actually in the buffer -- or make a really good guess to prevent huge allocations of memory. We also have to find out how much data has been sent so we can display that number to the user.
Initially I solved this problem by uploading a file to the server with multiple threads and averaging the speed between them by tracking the time when the upload finished. A major caveat of this design is that the upload speed isn't available immediately on slower connections.
After I turned in the project, and subsequently found out that the job was not to be mine, my mind still wondered about how I could approach this problem in a different way. In the fall I rewrote the backend in Twisted Python. The download portion of the client generally remained the same but the upload functionality changed. The upload speed calculations are now computed server side and returned to the client.
Now I was looking at the likely competitors and what they were offering. I decided the killer feature would be the Javascript interface. It allows the developer to save data to a local database with an AJAX call and makes the integration of the test into the site design seamless. Both of these customizations could cost over $1000 from other companies.
Check out Speedquant.
The product is in beta and it's not perfect, but we'll get there...
Christmas Tree
We went to a Christmas tree farm today and brought home a Canaan fir. Such fun to go out and cut down your own tree. I only wish the adventure was longer and perilous.
Killed it on the erg today
The rowing machine is such a good workout. Destroyed my abs several times over in the course of a half an hour.
Fizzbuzz’in
A simple Fizzbuzz script I wrote in Python. It's hard to believe that someone with a basic understanding of a language couldn't implement this in a few minutes. But people say otherwise.
Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".(source)
from sys import stdout
for i in range(1,101):
if i % 3 == 0 or i % 5 == 0:
if i % 3 == 0:
stdout.write('Fizz')
if i % 5 == 0:
stdout.write('Buzz')
stdout.write("\n")
else:
print i
Great Jquery Site
Check out jqfundamentals. Great site that gets you rapidly up to speed with Jquery.
Developers don’t do cover letters
I spend a few days a week scouring tech sites for job opportunities. Many job seekers spend hours a day writing cover letters and polishing off resumes. The reason I don't do this is in part because there are more productive ways to spend my time. Build a portfolio of work, strike out and do something interesting and thought provoking, learn something valuable to the industry where you wish to work. These are all tasks that require serious time commitments.
But the bigger reason is that it is a waste of time to spend a lot of time writing copy without any feedback. It's a shot in the dark at best to think you know what an employer wants. Most of the cover letter sites suggest such language as, "independent but works well in a team atmosphere." Boring. Those are words on paper and only serve as a test to weed out candidates who haven't used spell check.
I have a bit of an unusual background for the tech industry and I know it. I usually include at least one reason why it is unorthodox for me to work in this profession, but how I am skilled enough to be employed in it. How many web programmers have a degree in anthropology, taught in Korea, and grew up on a farm? At the very least it shows them you are unique and at best it cuts them off at the pass and gives them pause when they don't see certification X,Y, and Z listed in the resume.
Focus on things you have done in your spare time, books you have read and how they moved you, and how your skills are commensurate with some of their requirements.
Eventually if you are polite and come across as a person and someone who isn't a bullshit-apply-everywhere candidate you will get feedback. A few days ago I received an e-mail from an individual who makes hiring decisions at a startup. He said it was refreshing that someone took the time to write a cover letter because 99% of developers don't bother. Wow!
Who knew? So focus on the cover letter but make it interesting and show that you are someone who is well read, creative, and interesting.