Hugin

Between Andrew’s amazing panorama created with Hugin, and Garrett almost simultaneously sending me a link to a Lifehacker* post about Hugin, I figured it was only fitting that I try it out. It’s essentially a software app (OpenSource no less) to stitch together a series of shots and create a panorama.

Since I don’t like reading instructions, I downloaded the software and worked on setting ‘control points’ for a set of five photos I recently took, thinking they’d be good for creating a panorama.

title=”Hugin without reading the directions”>Hugin without reading the directions

I think I need to read the directions.

  • It’s interesting that Garrett sent me a link to Lifehacker. Kyle’s recently become a big fan, too. I discovered the site at least a year ago, and always considered it a niche website that no one I knew would have heard about. I’m glad to be proven wrong!

Stats

For the longest time, I’ve wanted a background process that would just increment a counter with each keystroke. A friend here (who has the exact same laptop I do) commented on how it was kind of scary that all of my keys had become really shiny and worn down from use. I couldn’t even give you an order-of-magnitude guess of how many keys I’ve pressed since the life of the laptop.

But that’s all changing. A friend had sent me a link to a site called WhatPulse before. It’s essentially… a background process that counts keystrokes and also measures how far your mouse has moved. Concerned about possible privacy implications, I immediately installed it.

Here’s my profile. It’s probably quite inaccurate right now, as I didn’t install it until recently, when I did some Wikipedia cleanup, which is probably 90% clicking, and of the remaining 10% typing, about 95% of that is copying-and-pasting templates and such. So clicks are artificially high, while keystrokes are artificially low.

After a few days’ time to normalize, I want to try to extrapolate this out over the lifetime of my laptop and see where I’m at. (I have a feeling I’ll be somewhat embarassed. Speaking of which, about 5,000 pageviews on Wikipedia for me now, since whenever I last reset my Firefox profile, which was not long ago. And I’m coming on 900 edits on Wikipedia, too.)

Uhhh

I’ve been working a lot on cleaning up Wikipedia in my free time the past few days. I think I might stick with it and eventually go for admin, which seems like a fun goal. (Although as they point out, it’s no big deal really… But it’d help me a lot.) A lot of my work comes from watching the Recent Changes page, following through to suspect changes, undoing their change, and going back.

Anyway, entirely out of the blue I started to wonder if Wikipedia uses mod_gzip. So I pulled up Firefox 3’s “Page Information,” and saw the following. I felt slightly pathetic at the result. (Note that I’m sometimes on a page for less than a second, so it’s really not as bad as it seems, but still…)

title=”How many page views?!”>How many page views?!

UCWords

Every now and then I find that I need to do something that seems remarkably obscure, and am surprised to learn that PHP has a function to do it. I found myself cleaning up a really sub-par Wikipedia article, where someone had entered a massive list of things in ALL CAPS.

It’s easy enough to upper-case everything, or to lower-case everything. But what I really wanted to was to capitalize the first letter of each word, because they’re all proper nouns. It turns out that PHP has a ucwords function to do precisely this.

And thus this page, which I suspect will never be useful to anyone, was born. Enter text, and it’ll covert it to lowercase, but upper-case the first letter of each word. And in this case, the time required to write the script was less than the time it’d have taken me to change it all by hand.

Counter-Vandalism

Today most of my tasks are in the “wait” phase, so I had some free time. Of course it’s a Sunday, so there wasn’t a lot to do. So I fell back on an old hobby: patrolling Wikipedia for vandalism. I’d say that 80% of edits are constructive, 10% are well-intentioned but misguided, and 10% are egregious vandalism. (Replacing a whole article with the word “poop,” for example.)

I’d like to point out that the deck is really stacked against vandals, though.

One of the most useful things is the Recent Changes page. Unsurprisingly, it shows the most recent changes to articles. Tweak the settings a bit, and I can view only changes by users who aren’t logged in, which probably accounts for 95% of vandalism. I can quickly click “diff” to view a summary of changes between the edit and the version before it, which makes vandalism quite evident. “hist” takes me to a history of all the changes, which is also useful. After that comes the change in length: (+1) indicates that the page was made one byte longer, for example. Huge differences are in bold; lengthy tirades inserted into the middle of an article, or outright “deletion” of articles, are super-easy to spot. (It’s worth remembering that all it shows is the net change of the edit: if you replace good text with obscene text of the exact same length, it’ll show a net change of “0,” so the size of the change shouldn’t be anything other than an occasional red flag that something’s up.) I get the user’s name (only IPs in the view I keep), followed by a link to their Talk page.

For example, I noticed a significant addition to the article on Jean Carne. Some guy kept inserting some sort of ramblings about her. Here’s a diff (obscene text). On the left is the “before,” and on the right is the “after.” The section in green is what got added, which clearly doesn’t belong.

Wikipedia allows logged-in users to include their own JavaScript, etc. into the pages they see, so I’ve got some mods to insert an “undo” option for me.

So it’s worth noticing that all of this took me maybe five seconds. That’s probably too high a number. I spotted a huge number of added content, saw the diff, noticed it was nonsense, and undid it.

But that’s only half the job. The next stage is to leave a note on the user’s talk page, explaining that you undid their edits. There’s a Wikipedia policy page on how to proceed, with a handful of useful templates. The basic premise is that they escalate from, “Your test worked and we undid it for you; next time please experiment in the Sandbox,” gradually growing in sternness until it gives a last warning: vandalize again and you’ll be banned. (Here’s an example, showing a guy who, frankly, got more warnings than he deserved.) You’ll note that, aside from vandalism earlier this month, it all happened in a short period–20:21 and he got his first warning, and by 20:39 he had been banned. What’s most awesome about this is that most of the time was him: we can’t warn someone again before they vandalize again.

However, I’m not an admin on Wikipedia, which means that I can’t actually ban anyone. But I don’t need to. There’s a handy page called Administrator Intervention against Vandalism, often referred to as WP:AIV for short. The use of a quick template allows me to identify a user or IP that’s actively vandalizing. My contributions rarely stay on the list for more than 30 seconds, after which time they’ve been acted on. I’ve never encountered a backlog, because there’s always an admin or twelve processing the list.

Another useful tool in our arsenal is the ability to view contributions by user. A fun bit of JavaScript allows me to simply hover over an IP / username and view their changes. So if I catch you vandalizing once, I’m going to go through your past edits. Most of the time your past vandalism was caught already, but periodically I’ll catch something.

There are two things worth noting:

  • It’s often under 30 seconds to go from a user vandalizing a page to their edits having been reverted and a warning left.
  • People patrol new edits pretty closely. I caught a guy today changing dates. They were subtle changes, but that doesn’t mean that no one caught it. Just as with people trying to trash pages, I had his edits undone in a matter of seconds.

There’s really something pretty satisfying with someone working up some sort of elaborate vandalism, only to undo it with a single click.

Computing

It looks as if we’re actually being charged $500 to take our school laptops with us (after paying $1,200 for the “Technology Fee,”) which has me scouting out prices: can $500 buy something better than this?

In the process, I came across this: a tri-core computer.

If you’re confused…. Me too!

Group Collaboration

A huge amount of the stuff I do here involves working, online, with other people. I’m surprised at how technology really isn’t where I expect it. Here are some things I do often, and how technology helps me–or fails me.

  • Communicating with persistent groups. I’ve got a board of people who are taking over the club I run here. It’s one group of people, and it’s a “persistent group” — it’s always the same people. I created a mailing list on my server allowing group discussions: we e-mail one address and it goes to everyone. It works great, but we all go to the same school, and thus use the same e-mail service. Why can’t I create a mailing list for all of us? I really shouldn’t be reliant on us e-mailing a “special” address on a server in Texas so that nine of us in Massachusetts each get a copy. A good mailserver for big groups, e.g. schools or companies, ought to let its users create these groups on the fly.
  • Collaborative document editing. This one has two solutions I use:
    • MS Word + Track Changes: Two problems with this one… The first is that most people don’t know how to use it, and trying to communicate how to do it just adds one more thing to go wrong. The second is that “Track changes” doesn’t deal with concurrent edits: if I take a document and work on it, and you take it at the same time and work on it, there’s nothing to even try to merge our changes.
    • MediaWiki: I use the same software that powers Wikipedia to keep notes and lists for myself, as well as to enable better groupwork. We can each track who’s changing what, and it kind of supports concurrent editing, although if we edit the same section, one of us will still get an edit conflict.
    The thing is, the concept of, “You work on Part A, I’ll do Part B, and then we’ll integrate them and make it flow” is very common. It’s kind of disappointing that it takes quirky web apps to do this effectively. I’m not sure this one is a failure of solutions: I can think of numerous things that do it. The problem is just that no one uses them, no one knows how to use them, and none of them have very good name recognition.
  • Calendaring. Exchange supports this in theory, but no one uses it, and I’m still quite disappointed that no one has made a competitor. Google Calendar integrates with GMail nicely, but that doesn’t help for people who don’t use GMail… I want to be able to say, “I want to meet with these 5 people” and have the computer find times that work for each of us within certain constraints. I’ve invented what I call “shotgun scheduling,” which seems to work fairly well. I identify about five times that work well for me and sound like they would be good for other people, and then list them and ask each person to tell me which of them they can do. It eliminates the, “Well I have soccer practice from 2 to 3 on Wednesdays…” headaches. But this is something that technology could solve very easily, and one of the things I want most.
  • Group voting. Again, this is something that Exchange supports but that isn’t used too much. I think we should change the time on one of our events, but I don’t want to do it without running it by the rest of the group. But it’s a pain to send out an e-mail to all of them and then wade through all the responses. (With nine people it’s not a big deal. Imagine if there were 200.) Some things aren’t meant to be discussed, so much as given a quick thumbs-up or thumbs-down. A good e-mail service should support this, and make the results a web-based thing hosted on the server, not an e-mail based thing.
  • Group document repository. SharePoint (?) does this, but it hasn’t been rolled out to students. For an arbitrary “group” of people, I want to be able to upload, edit, and collaborate on documents.
  • Task/project management. Not a to-do list, but a system that supports tiers (i.e., subtasks), deadlines, priorities, statuses, “next steps,” and assignment of tasks. The ability to link a given entry on it to an e-mail thread or whatnot would rock, as would integration with the calendar solution. Out of 50 million task management solutions, I have a big list on my whiteboard. Nothing I’ve found works quite as well. Everything is either too complicated (I don’t want a Gantt chart of my homework) or too simplistic (I don’t want a single-level checklist for managing my more involved projects).
  • Contact sharing. This one has the technology there 100%, but the usage has fallen short. I’d love to be able to automatically retrieve contact information from various contacts and send it to my phone. vCard and such does this, and Outlook will sync right to my Treo. But not many people use this.

I think there are two conclusions to draw from all of this. One is that, in some places, technology is still lacking for some reason. Nothing I do is anything that millions of groups and teams across the planet don’t do, so it’s shocking in a way that technology is still absent in some places.

But at the same time, in some cases, technology is ahead of people. I think organizations essentially need to require that people use the tools. When a manager tries to schedule a meeting and finds that people don’t keep a calendar on the computer, he needs to address the issue with them. When I try to pull down contact information for my coworker and can’t find it, that should be an issue I bring up with him with a, “I can’t believe you’re neglecting your duties” tone. Some of these features have great importance, but we get stuck in a sort of catch 22: no one uses them because, well, no one uses them. It’s the classic network effect: as long as people don’t maintain a group calendar, no one has reason to use a group calendar.

Digital Radio

There are a few different technologies commonly used in two-way radio. One is digital voice, a la Motorola ASTRO / Project 25’s CAI (IMBE), which is a 9600bps (9.6kbps) digital stream. Another interesting technology is trunking: a city might have 12 talkgroups (think “virtual channels”), but only 4 frequencies. One frequency is designated as a “control channel,” which is a digital stream announcing system status. When you want to transmit, your radio will go out to the controller and get assigned one of the frequencies, and the system will then announce that you’re transmitting on one of them, and all radios in your group will switch over and listen. This allows much greater spectrum utilization: rather than needing a new frequency for every group that might want their own channel, you just need to license enough frequencies for however many simultaneous conversations you expect.

I’ve been thinking that it’d be interesting to merge the two technologies. Technologies like Speex will let you process audio at exceptionally low bitrates, seemingly as low as 3.4kbps. (And they have some neat technology, like variable bit-rate encoding and even further drops in data transfer in between words, dropping quite low for when it’s just background noise.) So I think it’d be neat to start a “data network” at 32 kbps, which could be done with relatively low bandwidth. You could keep one frequency, and yet fit as many as 7 or 8 simultaneous conversations on it. (And you can take its VBR support one step further, and have it scale to fit system capacity: on a system with minimal activity, allow 8-16 kbps, but when the system is starting to fill up, drop down to 4 kbps.) HE-AAC (also known as AACPlus) looks promising too, although it’s a proprietary technology.

And since it’s now a 100% data network, you can do what I’ve always thought mobile radio systems, especially those used by public safety agencies, ought to do: put a GPS unit in each radio, and have them embed GPS coordinates in each transmission, as well as periodically announcing their coordinates in the background.

The net result is insanely efficient (radio) bandwidth usage. For example, Boston PD has 16 frequencies licensed, but it’s rare for more than 2 or 3 to be in use at any given moment. They could get more efficient by switching to a trunking system, maybe with 5 frequencies (plus a control channel). Of course with an established system, there’s really no incentive to, but I digress. But if they could get entirely usable digital audio at 3-8 kbps, they could actually move to a single frequency and support multiple, simultaneous conversations.

Another neat side-effect is that linking the systems would get quite easy: the entire system, with multiple conversations, could even fit over a single dial-up modem link. And you can have better “emergency” support, although most trunking systems seem to do it anyway: public safety radios carry an “orange button,” which will signal an emergency to the radio system. Analog systems do this by basically making the radios “obnoxious”–they’ll just keep transmitting a distress signal over and over, increasing the odds that they get through. With an all-digital system, they can just send packets indicating an emergency, and have the network make way for them, going so far as to terminate existing conversations if needed.

Oh, and another novel benefit is power management. If I’m on a handheld radio and I’m standing twenty feet away from the tower, I can dial my power down as low as it goes and still make it in fine. But if I’m a few miles away, I need to be using the highest power I can to make sure I’m making it. Of course, no one in the field fiddles with power settings. (In fact, most radios don’t make this something the user can do.) But if you just exchange a bit of signal strength info in the data flowing between radios, you can make this automatic. As I talk to the tower, it’ll be periodically confirming that it’s hearing me. But when it does that, rather than just using a boolean, “Yup, got it,” it can send me signal strength data, and my radio can dial down power until it’s at a, “I’m still getting 100% of your packets but I wouldn’t go any lower in power…” point. The net result is longer battery life. (And potentially, less interference to distant users of the same frequency.) As a really obscure benefit, if you’re transmitting this information, and also embedding GPS coordinates in your transmissions, the system could silently log all of this and generate coverage maps, which would get more and more detailed over time.

Oh my!

It seems that the strong wind today, April 1st, has caused this server to serve posts with some of the letters upside down! We are aware of the problem and looking into it. Expect it to be resolved around the conclusion of April Fools Day. In the interim, you can click through to the actual post, which isn’t affected by this strange bug.