22 February, 2006
On my way home today, I was sitting in a "quiet zone" on a Virgin train.
I don't seek or avoid these carriages, but if I find myself in one I do make sure that my headphones are quiet, I'm not on the phone, etc.
I have noticed that there seems to be three kinds of quiet-zone user. Type one is most common, and I'm one of them. We sit quietly. we probably don't care that much about noise levels, but it doesn't hurt to be quiet.
Type two don't care and don't care that others might. They maybe even seek out the quiet zone so that they have less competition for the noisiest headphones or the most inane telephone conversations ("No, I'm not doing anything. Just sitting on the train. Oh, you're not doing anything either? Let's talk about that.").
Type three are my favourite. A type three quiet-zone user seeks the quiet-zone for its promise of tranquillity, and seethes at people who make noise in it. I've seen plenty of type threes telling off a type two for loud headphones. I've heard a type three ask someone to stop coughing.
I've personally been asked to stop using my mobile phone in the quiet-zone by a type three who pointed at the sign smugly while he did so. To be fair, the sign does have a phone pictured on it. What I couldn't understand was why it bothered him that I was writing a text message. My keys don't click or beep and receiving a text on my phone is a very low-key affair, announced by a single buzz that only I can feel.
Still, type threes are my favourites. Especially the ones that sit, tutting and huffing, obviously enraged at the volume of somebody's stereo, but unable to shout because the sign says "quiet".
11 February, 2006
A robot in disguise
07 February, 2006
I've been working with tabular data files all day. Some are comma-separated, others tabbed, yet others have an arbitrary amount of spaces between fields.
All because I'm using so many different applications: custom stuff for extracting features from images, R for principal components analysis, an on-line app for multiple regression (Have a look).
Thankfully, Emacs has some features that make translating and editing these files quite a lot easier:
- The obvious regexp-replace
- The less obvious kill-rectangle (C-x r k)
- And the matching yank-rectangle (C-x r y)
The last two aren't heard of very often, but they're really really useful: begin your region at the top-left of the rectangle you want, move to the bottom-right and use C-x r k - Emacs magically cuts just the rectangle.
Also useful today was Python's eval builtin. The on-line multiple regression software I mentioned outputs a function that looks like: 1.5 V1[t] + 7.2 V2[t] + 1.1 (V2[t])^2. I wrote a little script that takes the copy-pasted function, regexps in the implied multiplication and Pythonises the hat powers into ** and then calls eval() to calculate the result.
The trick is to make a list for each variable (V1 and V2 in this example) so that the subscripts work. Emacs comes in handy again here - cut the rectangles from the data file and then regexp-replace the carriage returns into commas.
03 February, 2006
This really started out as just a beat.
I've been listening a lot to all those classic breaks that have been sampled time and time again, and while I don't have a problem with sampling it just feels nice working from scratch.
While this is no Funky Drummer, I'm very pleased with it.