One of the records that was regularly played in my childhood home was a collection of sketches by the wonderful Joyce Grenfell. This was a favourite, and though I only ever knew it as audio, the place to find such things nowadays is of course YouTube.
Possibly-related posts:
YouTube nostalgia My brother Simon pointed out a wonderful use for YouTube...
The love duet Larry Lessig, as always, gave a great keynote speech this...
It’s almost too easy to find inspiring TED talks, so I don’t often post them here now, but this one particularly attracted me.
Ernesto Sirolli manages to give some great advice on aid (which is also relevant in the developed world) and on high-tech entrepreneurship (which is also relevant in the developing world). To do both of these in such an amusing and impassioned way, in just 15 mins, is sheer brilliance.
(Very nicely filmed, too)
Possibly-related posts:
Today’s talk Highly recommended: Malcolm Gladwell’s TED2004 talk. In just 15 mins,...
How can you take a year and a half to make a 3-minute music video? Like this:
It’s even more amazing when you know how they made it. There are no green-screens here, and every frame is created by hand…
This has been out for a while, of course, but old people like me have just discovered it. (Old people like me might also be reminded of Peter Gabriel’s ‘Sledgehammer’ video, which was pretty amazing a quarter of a century ago…)
Here’s my latest Raspberry Pi-based experiment: the CloudSwitch.
I don’t discuss the software in the video, but the fun thing is that the Pi isn’t dependent on some intermediate server – it’s using the boto module for Python to manage the AWS resources directly.
I decided to build the app slightly differently from the way I would normally approach a little project like this. I knew that, even for this very simple system, I would have several inputs and outputs of various kinds, some of them with big delays, and I wanted to make sure that timing hiccups or race conditions didn’t ever leave the lights displaying something that didn’t represent reality.
So this is only a single python file, but it runs several threads – one that looks for button presses, one that monitors and controls the Amazon server, and one that handles the lights – including flashing them in various patterns. They interact with the main thread using ZeroMQ messages, which is a lovely way to do inter-thread communications without all that nasty messing about with semaphores and mutexes.
Update: Here’s the very simple circuit diagram. The illuminated buttons I used have LEDs which take a little more power than the Raspberry Pi can really drive, so I put a couple of NPN transistors in there. It really doesn’t matter too much what they are – I used the 2N3904.
I finally got a chance to play with my RaspberryPi, so I threw together a quick experiment.
Update: A few people have asked me for a little more information. I’m happy to make the source code available, but it’s not very tidy and a bit specific to my situation… however, to answer some of the questions:
The enclosure for the Raspberry Pi comes from SK Pang Electronics, and it’s perfect for my needs. You can buy just the perspex cover, but they do a nice Starter Kit which includes the breadboard, some LEDs, resistors and the pushswitch. Definitely recommended.
For the graphics, I used the PyGame library, which has the advantage of being cross-platform: you can use it with a variety of different graphics systems on a variety of different devices. On most Linux boxes, you’d normally run it under X Windows, but I discovered that it has various drivers that can use the console framebuffer device directly. This makes for a quicker startup and lighter-weight system, though I imagine it probably has less access to hardware acceleration, so it’s probably not the way to go if your graphics need high performance. You can read about how to get a PyGame display ‘surface’ (something you can draw on) from the framebuffer, in a handy post here.
To load an image from a file in PyGame is easy: you do something like this:
im_surf = pygame.image.load(f, "cam.jpg")
where ‘f’ is an open file, and the ‘cam.jpg’ is just an invented filename to give the library a hint about the type of file it’s loading.
Now, with a webcam, we need to get the image from a URL, not from a file. It’s easy to read the contents of a URL in Python. You just need something like:
but that will give you the bytes of the image as a string. If we want to convert it into a PyGame surface, we need to make it look more like a file. Fortunately, Python has a module called StringIO which does just that: allows you to treat strings as if they were files. So to load a JPEG from img_url and turn it into a PyGame surface which you can blit onto the screen, you can do something like:
f = StringIO.StringIO(urllib.urlopen(img_url).read())
im_surf = pygame.image.load(f, "cam.jpg")
I’ll leave the remaining bits as an exercise for the reader!
If you like this, you might also like my CloudSwitch…
Possibly-related posts:
[untitled] From “Import This: the Tenth International Python Conference”: "Tim [Berners-Lee]...
Caian coffee There’s a nice post about the coffee pot webcam on...
I’ve recently switched to using GnuCash to manage my accounts, and have been quite impressed with it. A friend recently asked about software for simple bookkeeping, and I wondered whether GnuCash might be appropriate, but I didn’t find an introduction that took someone unfamiliar with accounting software through the absolute basics. So here’s my attempt to do so. It’s 26 minutes long.
OpenCV is a wonderfully full-featured computer vision library. I’ve just written a very simple demo of the built-in face recogniser. It finds a face and scales it to a fixed size. If you watch my eyes in the viewfinder window, you’ll see they stay pretty much in the same place however I move around the room.
All sorts of things could be done to improve the frame-rate if needed, but this was just a quick test I put together over a couple of hours while learning about the library. Back in ancient history, when I did my PhD, this kind of thing would have taken weeks… The title of this post, if you’re not familiar with it, is from the famous closing scene of Sunset Boulevard, which you can see here. Of course, as soon as I thought of using this title, I realised that I could also grant Gloria Swanson’s greatest wish. So here’s my version…
Recent Comments