I’ve done quite a bit to improve my Raspberry Pi-based timelapser. I have a pretty good system together now, thanks in part to recent firmware updates to the Pi which allow me to directly control the shutter speed and ISO of the camera sensor instead of relying on auto-exposure settings. The auto-exposure is pretty unreliable from one shot to the next: the camera makes a different decision each time it snaps a picture, which leads to quite a lot of flicker. Previously, I was dealing with this flicker by manipulating the images in post-production, but I’ve now written some code to get the camera to try to maintain a constant image brightness across a long shoot.
The code now consists of a ‘timelapser’ class, which keeps track of its current shutterspeed and ISO (SS/ISO henceforth), and the brightness of the last few images taken. It then adjusts SS/ISO to try to get the image brightness to 100. By keeping track of the last few images, it is a bit less susceptible to being upset by one strange image (like, say, if I put my hand over the lens for one shot, producing a black image), or more standard movement within the frame. On the other hand, it takes a while longer to settle down to the ‘right’ SS/ISO. So it’s currently set up with an initialization step, where it finds a good SS/ISO pretty quickly, and then transitions to actually taking pictures. The result is very little flicker as the timelapse goes on, and a pretty constant level of image brightness when light levels gradually change: like when we watch dawn or dusk. (If you’re interested in playing around with the code, I’ve set up a github repository here.)
As an example, this is a video that we shot over about three days on my friends Ketan and Ananya’s balcony. They have a great view over Toronto, from the CN Tower to Honest Ed’s.
Almost immediately after my first foray with the Raspberry Pi timelapse I was contacted by Cookie Roscoe, who coordinates a weekly farmer’s market for The Stop. The Stop is a community food center here in Toronto, providing lots of programming and emergency food access for lower-income people. My partner, Elizabeth, worked with them for about three years, so I was super happy to try doing a time-lapse of their market.
Here’s the results! Lots of technical stuff about what went into the video after the break!
My recent DIY electronics project has been putting together a Raspberry Pi-based camera. The Pi foundation sells a camera board which plugs into the Pi; it’s sold as ‘a bit better than the average camera in a mobile phone.’ But the Pi’s default Raspbian Linux installation comes with a couple programs for controlling the camera, and lets you take still pictures and videos easily.
In the interest of using the camera for something you can’t usually do with a store-bought digital camera, I wrote a short python script which takes a photo assigns it a file name based on the date and time taken. It then does some sampling of the picture, and only keeps pictures which aren’t ‘too dark.’ And then cron runs the photo script once every five minutes. In other words, the Pi is set up for long-form time-lapse photography. The resulting pictures are then easy to compile into a movie.
On Tuesday evening I finally made it to the Toronto Hacklab, after meaning to make it over for weeks!
It’s a really interesting space. There are currently five 3D printers, lots of tools for playing with electronics, and a giant computer-driven laser in the bathroom for etching and cutting plastic or acrylic. (Actually, I should try to make an acrylic LakeHub logo to send back to Kenya….) According to Eric, who gave me a tour of the space, about a two thirds of the members come through to work on these sorts of projects, and a third are mainly software people who use it as a common work space.
A couple of my favorite toys that I saw on the tour were a giant LED pixel board and a ‘flip dot board’, both of which had been salvaged from the Toronto Transit Commission, which runs all the buses and subways. Members of the Hacklab built electronic interfaces to both of the devices: the LED board is run by an arduion and can be sent messages to display, and otherwise acts a clock. The flip-dot board looks like it’s run by some custom microcontrollers, and is hooked up to a joystick for playing ‘snake.’
During my early involvement in Kenya, I had the pleasure to chat with Prof. Haynes Miller, an MIT mathematician, about the potential for e-learning in Africa. He related the story of a relative who had gone to work in a small developing country, creating an interesting technological component in a library. After working for a year to get everything set up, the project leader went back to North America. Two years later, the leader went back to visit and found the library in terrible disrepair. Computers busted, the e-library unusable. The lesson here is that a successful project needs to have a good mix of leadership and capacity on the ground to continue after the mzungu founders have departed. A good project needs to have long-term participants involved in the design and deployment, and respond directly to the needs and capacities of the local community. And as one unravels these ideas, the whole notion of the ‘mzungu founders’ is itself quite problematic; our success is really measured by our ability to promote quality leadership, build capacity, and facilitate the vision of people who are committed to live and work in Africa for the long term.
All of which is to say that I think LakeHub hits a number of the right boxes. The leadership is almost entirely Kenyan, and the project is about harnessing and amplifying the abilities of the tech community in Western Kenya. I’m extremely excited to see it continue and thrive now that I’ve wandered back to North America. The Kenyans who are taking the lead on the project so fa are fantastic, and have the skills and vision to help take it forward. These are people like James Odede, Google’s student ambassador to Maseno University and head of the Maseno ICT guild, and Simeon Obwego, who works for Innovations in Poverty Action, and is a truly fantastic self-starter. Evan Green-Lowe, also from IPA, has also been a great contributor, and is largely responsible for the current push to get a full-time employee.
But we’ve run into the limits of volunteer organizing: there’s a lot of vital-but-time-consuming work that needs to get done. Like scouting for potential spaces, building partnerships with local businesses and community organizations, and, yeah, locking in funding sources. The plan is to search the budding Kenyan tech community for someone with a great combination of drive and vision to help build LakeHub up to meet its fantastic potential.
I’ve never been a hang-out-at-the-mall kind of person. The prices are higher than things I can find in the internets or strange alleys, the food courts unappealing, and the general level of “shiny” doesn’t really match my self-concept.
And yet, during my year in Kenya, I spent a lot of time at various malls. When staying in Nairobi, I would find myself in a mall every other day, it seemed. And it makes sense in retrospect: The specialist shops and on-line stores where I usually use to get my obscure electronics aren’t available in Kenya, and food safety seems a bit more reliable in the malls. The biggest factor, though, are the coffee shops. I spend a lot of time in coffee shops wherever I travel, unwinding thoughts and sketching proofs and sipping on a simple black Americano. And most of the coffee shops in Kenya are in malls.
The mall I spent the most time at in Nairobi was The Junction, and most of that time was spent at Art Caffe. It’s a space with a great slice of the mix of modern Nairobi. Yeah, there are a lot of jackass travellers like myself plugged into their laptops, but just as many people stopping through for a business lunch, mommas chatting about their kids, young people hanging out with friends, and men from unidentifiable Eastern European countries discussing possibly shady business in an unidentifiable language. It’s a great cross-section.
And I’m back in Canada now and still somewhat jet-lagged, which means going to sleep and waking up at hours that would be normal for anyone else. I’m doing the second year of a postdoc with Nantel Bergeron and Mike Zabrocki, keeping up the research while looking for the next big thing, or at least a job. I have a great big pile of projects to work on this year, too, which have been on back-burners during the end of my time in Kenya. I decided to do more people-oriented things while in Africa, and come back to some things (like programming projects) once back in a place where the location matters a little less to the project.
I’m really looking forward to a lot of these projects: thinking more about getting Sage into an online homework system, q-counting simultaneous core partitions, inventing a new type-free definition of the k-Schur functions, experimenting with the Raspberry Pi camera board, building a Pi-based Beowulf cluster, and moving my website to a new domain. Oh wait, I guess that last one’s done now…. I also need to catch up on my writing! There’s a recap of the third Maseno math camp waiting to be written, and an article for the Notices of the AMS.
So off to work!
Speaking of writing… I’ve finally decided to buck up and get my own domain; partly so people can find the site more easily, and partly because I think the African Maths Initiative site where I’ve been writing is probably going to undergo some big changes over the next few months: the site should be much more focused on showing what AMI does, and there’s a separate plan to build a kind of registry/network for math initiatives across Africa. This is also my 50th post on the blog, so we can think of it as a nice upgrade to commemorate the occasion.
This week I’ve been giving lectures at an algebraic geometry workshop in Mombasa. I know what some of you are thinking: ‘But Tom, you’re nothing like an algebraic geometer!’ And that’s true. But often the best way to learn something is by putting yourself in a position where you have to know it, like standing in front of fifty people expecting a clear explanation. In this case, I’ve learned some basics of Grobner bases (mostly from an excellent book by Cox, Little, and Shea) and have been augmenting the lectures and exercise sessions with Sage. I’ve written up some notes on the talks, and I’ll probably convert them into a web-based format with Sage cells and stuff sometime next week…
The workshop has participants attending from Kenya, Tanzania, Uganda, Rwanda, and Zambia. The participants have been super motivated; we’re just finishing up the third and final week of the workshop, and the participants have been staying up late working on final projects. Attendance has stayed high throughout the workshop, to a degree you wouldn’t expect in (say) North America. The chance for exposure to math going on at the international level is a big draw, since it’s still so rare for international mathematicians to come through East Africa. I imagine it’s like if you only got to eat ice cream once every year or three: you’re not going to let anything go to waste.
Lately I’ve been spending a lot of time in matatus – the stupidly overpacked minibuses that travel between cities in Kenya – visiting students I’m working with in a few far-flung communities. I’m trying out ideas around teaching students to become self-motivated learners, through the medium of teaching computer programming. (Hypothesis: People who know how to learn independently can go further than those who need teachers. Evidence: Pretty much every effective tech person I’ve met in Kenya.) Programming, of course, is a very hands-on skill, one that you mainly learn by doing it, a lot. So in these three locations, I’ve been giving some basic overviews and leaving the students with resources to work on, and coming back after a week or two to see what kind of progress they’ve made.
The question is how to transform students into self-guided learners, given the cultural expectations of lecture-based, teacher-driven classrooms. With the math camps, we’ve been attacking the ‘lecture-based’ part of the formula, by introducing fairly radical beyond-curriculum activity-based methods. But the camps are still ultimately teacher-designed and teacher-driven. In the math camp context, we’re seeking to change attitudes around math education, so that’s fine. But there’s a real question of what happens after the camp ends, and the students go back to the same-old same-old. How can we best foster and facilitate independent learning amongst our students?
Over the last few weeks I’ve been helping out a group of technologists in Kisumu who are interested in starting a new tech-hub. There are a number of such hubs in Nairobi; the most famous is the iHub, which provides a space for developers to work and connect with businesses that need their skills. Kisumu is actually a pretty sizable place, and when one considers the universities in the area – like Maseno and Masinde Muliro – it’s a bit surprising that there isn’t more happening on the technological front.
Thus comes the LakeHub concept.
The plan is to create spaces to encourage the technological sector in Western Kenya by helping local techies build up relevant skills, encouraging local businesses to make better use of technology, and connect those same businesses with the tech people for envisioning and implementing new business ideas. It’s been a really great opportunity to put my community organizing skills to good use in the local context; the on-the-ground work has felt eerily similar to work on building (and saving!) cooperative housing spaces back in Davis, California.
As an educator, I’m hopeful that such a space will help change university students’ expectations as to what they are learning in their degree programs, and to provide better opportunities and outcomes for those that passionately engage in the sciences.