Here's the weekend story, with it's sad ending, too:
"How cool would it be if I could capture visitor IPs for a certain
url and plot them on a map, like Google maps?," I thought to
myself. "Very cool," myself responded. Grab the IP from,
say, the IIS logs or whatever and do a lookup. No problem,
right? Wrong. Innumerable ips to look up, lots of DNS,
stupid IIS permissions. "How about a javascript that calls a
simple page to record the host ip and the datetime?," I said to
myself. Slightly concerned that I was going crazy, I replied
tentatively, "Sure, that sounds good."
I grabbed the raw delegation ranges text file that ARIN
has mirrored for RIPE, LACNIC, and APNIC (RIPE has AFRINIC's mirrored)
and stuck them in a db (there're only about 70,000, a lot less than the
max amount of ipv4 ips), made an IP address to IP number conversion
utility, a quick lookup utility to get the IP block of a particular IP
number and, finally, a little whois'er that queries the block
registries (not domain registrars) and grabbed city and country
name. The last little bit was manually adding geocoords (lat,lon)
to each city in the city table, but that's easy. (I'm thinking
about how to automate that bit, too.) Phew! Technical
mumbo-jumbo aside, I get the visitor's city and plot on map.

The final result looks sweet. (Petah Tiqwa, Israel?) For example, this blog's hits come from all over, see here.
This morning, as I'm perusing some news I see that Google's releasing their analytics product for free (Free Web site therapy, Reuters, 11/14/2005; Google Press Release).
Yay! I like Google. Then it hits me: I've just been
housed! Granted, they've probably had the idea for a lot longer,
more resources than just one guy and a weekend, and much, much more
data, but check out the neat picture from their main page:

It's (of course) got a map to track visitors! (Their map
is Flash, though. Odd, I thought, when they have a map tool.
Seems like this analytics suite was bought/enhanced from some company
called 'Urchin5'? May have to look into it, may not care so
much, either). It uses a simple little javascript to ping their
servers. It has pie charts. Everyone knows that pie charts are
the end-all-be all of cool. Google:1, Me: 0.
Of course, I'm not competing with their product or even into
"analytics," I'm just experimenting. I learned a whole bunch,
too. For instance, NET 1.1 (which I used instead of Java, for
kicks, or 2.0, which looks pretty neat, too) is pretty straightforward,
once you get used to its quirks. I dislike how it reformats HTML
and how it doesn't compile in the background like Eclipse.
Parsing registry data into a db's easy, lookup reconciliation's not too
bad, and generating javascript for the Google maps is a snap.
I'll keep playing around with my app, trying to make it more
efficient and automated, but I'm going to stick on the Google
Analytics' javascript on a few urls. Since they're (Google,
collectively) smarter than I am (and have a patent on address geocoding), I'll be interested to see how well my data tracks.
[Edit: here's a story about how Google's liberation of the Urchin product effects analytics firms: WebSideStory Stock Falls on Google Plans, AP, 11/14/2005.
Urchin,
also a San Deigo company, was acquired by Google in March 2005 and was,
apparently, big news in the SEO community. Urchin's
service was a $199/mo.]
[Edit: replaced the link to the Google patent on USPTO with a link to Google's patent search on the patent. Neat!]
One of the most annoying things to do is upgradinging this blog. .Text to CS1.1 using Kevin Harder's converter read like it was straighforward, but it turned out it wasn't. It's possible I missed some option to create a single stand-alone blog, because Community Server is geared towards one site, many blogs (photo albums and forums, too). I wanted to replicate my single blog on my main url, not under some depth. Seems like there's a lot of good in CS, but last night all I could do was get frustrated with it.
My goal was to migrate my base-url blog from .Text to CS. I eventually found Dan Bartel's article on how to do a single blog configuration for 1.1, but not after completely messing up my directory structure. Yeah, I know, I can just back out (which I plan to do) and redo it, since all of the changes are config files and not code at this point, but what's a blog for if not for kvetch? Oh, right, as you might be able to tell, my css's hosed.
The Ideal Goal would be to get the multiple installs of .Text blog sites that I have on the server under one CS installation, yet still retain the individual URLs of these sites. With the cursory look into the CS structure, it looks like I'll still have to have multiple CS installations, but possibly a single CS database. I've a bit of trepidation in losing the authors of the comments when converting some of the more heavily commented blogs, though. C'est la .net blogs.
sage is pretty neat. I've just installed it at work to cut down on the endless yet numbered tabs I have open with blogs in them. I'm hoping there's a way to populate it via some bloggregation so that the problem with distributed bookmarks doesn't rear it's head for blogs.
Edit: There is an import/export, using
OPML (Outline Processing Markup Language).
It appears that
CommunityServer 1.0 is out, which is a very big upgrade to .Text. Here's a
converter that I may use.
I screwed up
Jack's password while trying to reset
Amanda's. The .Text blog software stores passwords as hashes, which we all know is smart. In order to fix it, I wrote a
password hasher, which was silly and annoying.
In doing so, I ran across some urls which were fun to read:
So, after me telling them on 11/16 that it (connection cycling, dropping at the DSLAM or somesuch) was their problem (after calling FRII, of course), they said they found something on their end and were going to fix it. This morning, I call because DSL's still not training up and, yep, that's right, a coil's unplugged at the CO or somesuch. Thanks guys. I'm lobbying for a credit.
I currently use the LuxInterior Dark skin, which i've slightly modified. I'm planning on doing some modification to this skin and .Text in general, so I'll be keeping a running set of info here.
DotText Skin Directory
How To Create Custom Skins For DotText
tdhLuxLight - a variant on LuxInterior
simple dts scriptoid pushed all my shappy blog entries into the .text db schema. operation successful.
Where're the other entries you ask, dear reader? Well, I'm working on a dts to move over my previous notes from my handcrafted and poorly maintained blog, .shappy, to .Text's database schema. Shouldn't take more than a few days, so fear not!
So, the directory issue that I couldn't figure out wrt Ian's blog was because I have trouble reading the .Text wiki details about the ConfigProvider. All fixed (for me). Will have to look into fixing for Ian, and maybe Jack.
Setting up .Text was rather easy, relatively, mostly because this is the 5th time I've done it. Preloading screwing up fase and cocking nek does help.
changed this look to be more subtle/conformist than the
original, pushing more display control into css, rethinking a query or two,
rss, more and less modules (allowing for per-date grouping, generic text box for sidebar, rss reader)
new view, in prep for using this more.
test of entry form.
Yep, worked. I decided to start this mental dribble by creating mgmt functions first.
This is only a test.