Nationalism

I wanted to learn more about this story [via] about a school resource officer having her computer impounded by the police because her screen saver was a promo for some show called 'The L Word' which has lesbians on it, which I guess is a little too much for the folks in Camden, Ohio. Anyway, I wanted to know what the show was about so I thought I'd visit Showtime's website… but being in Mexico, they've banned me (and all other non-US visitors):

Luckily Showcase Canada has no such blocking. But Canada's always been open to immigration and tries to maintain friendly relations with the rest of the world. In all seriousness though, doing full geolocation-based blocking of a website is in extremely poor taste and goes against the “spirit of the internet”. The Net should have no borders.

New video animation of IAM usage

The video below shows user activity over a twenty-four hour period on the members-only iam.bmezine.com site. This site has about 10,000 active members around the world, about half of which have entered their geographical location, and about two or three hundred of which are online and active at any given moment. This video has a time-resolution of about one minute and plots their activity over one day of usage (starting at about noon EST on March 15, 2005).


4.5 meg WMV file

The blue dots represent an active user, with yellow glows of different sizes representing multiple users in the same location. The timecode displayed at the bottom is the server time, EST (GMT-5:00). The only rendering error that I know of are a few users that are showing up on a boat off the west coast of Africa in the South Atlantic… that's a database error, not a dream vacation). Oh, and the music is “Land of the One Percenters” by The Bomboras (off the Head Shrinkin' Fun album — if you like this track, it's representative of this album… pick it up).

I thought some people reading this might be interested in knowing how this was done so they could implement it on their own sites (it's not hard — easy in fact!). So here's how, start to finish…

How it's done: Rendering the map

While my complete dynamic-scaling mapping system (which this is based on) is actually over 1,600 pre-rendered image files to do fast zooms of the planet down to about a 1km resolution in both daytime and nighttime modes, the version that renders with rolling night and day regions on the same map is actually much simpler. Three main image files are needed. Below are smaller versions of the ones I use (I render initially at 2,700×1,350 pixels and then resize before outputting).


Daytime Nighttime Alpha Channel

First I load all three images into memory. The first two images are the separate night and day maps, with the third image being an alpha map that I use to combine them. You'll note that it is double width, covering two full days of the Earth's rotation. This is a little lazy and wasteful of resources, but it's very easy. I select a region of this alpha channel that's the same width as the main images that matches the day/night ratio of the current server time and crop it down. Metacode…


/calculate number of minutes since midnight (0-1439)
current.minute = (time.hour * 60) + time.minute
/scale this to match the main image width (2700 pixels)
slider = (current.minute * 2700) / 1440
/move it over a bit so that it matches EST, wrapping if need be
slider = slider + 550
if slider >= 2700, then slider = slider 2700
/crop it
crop alpha.jpg at (slider,0) to size (2700,1350)

The alpha map now matches the main images in size, and represents a day/night picture of the current time as well. The daytime image is used as a base, and then the nighttime image is pasted on top of it using this alpha map to set the transparency, and voila, a pretty image containing both day and night scenery — and not just a dimming, but a real nighttime view.

After that, I just add the current IAM usage information, adding all users who are online and have provided their location to the system. If more than one user is online in the same location, a “glow” representing the number of users is drawn around them. I'm using an equidistant cylindrical projection map, so it's very easy to plot points via latitude and longitude to it without having to do any complicated math. Anyway, then I write the time onto the map and output it as a JPG image and I'm done.

An older version (2.2) of Smaller Animals' ImgSource graphics library is used for most of the image handling internally, inside a PB/CC wrapper.

How it's done: Creating the video

To capture the frames, I use my old “camthief” utility which I wrote years ago to download sequential images from my now-wife's webcam. It allows you to specify a URL and a time interval (among other minor settings) and then grabs every new image it sees. It occasionally runs into communications errors (and sometimes the server stalls) so I put it into a batch file that executes the command over and over and over to ensure it would survive almost any contingency.

If you'd like to have a copy of this program, you can download it here:
https://zentastic.me/viabme//camthief.exe — it's 33k and runs from a Win32 command prompt.

When a day had passed, I had a numbered sequence of about 1,500 images representing the frames. They were a non-standard size, so I wrote a Photoshop action to resize them and add a header and footer. After that, using the free RAD Converter I turned these into an uncompressed AVI file, which I then compressed to a WMV file using the (also free) Microsoft Movie Maker. All very easy!

A girl I never met…

.

I don't know if this is a really nice, sweet story, or if it's got somewhat creepy undertones (or both)… either way, I thought it was interesting and worth mentioning here.


"RS" stands for "Rachel Sheena", which are the initials of a girl I've never met.

Rachel is her real name and Sheena is the name she used online. We had plans to meet each other in Phoenix — due to the fact that she lives in the Midwest, this was the one and only shot without an expensive bus ticket... but because of a fuck up on my part I missed our rendezvous! For the next three hours we were walking the same four blocks, never running into each other.

Needless to say she was very upset, thinking I had stood her up, and after that she never really talked to me. I think of this tattoo as a memorial to a friend I never met.

Eye of the beholder, right?

Seriously, what in the world motivates people to send me photos like this of themslves? Sometimes I think there's some kind of secret contest people run about who can get the most messed up picture of themselves posted to BME, and that they're laughing their asses off every time one of their pictures slips into an update.


Post/View Comments or Captions

BME Updated

.

As I promised I would do, I have just posted another thousand images to BME. This scene will repeat tomorrow (and then again). Thanks to all the image contributors, and to Moritura for being on the cover. While the update was loading, I wrote this code:

My implementation isn't optimized yet so it's a bit of a memory hog, but I'm pretty proud of myself that I got it written inside of half an hour. L33T. I'm going to use this code to re-render a much nicer version of the animation in the entry below.