Skip navigation

Monthly Archives: June 2011

The F# language actually has support for the International System of Units…It could tell you at compile time, for instance, that you are trying to subtract a meter from a second.

That’s awesome.


but when I do it’s because the infamous Cornchip predicted the future, again.

When the XBox Kinect came out my best friend got one. It’s awesome…no way around that. Over a drink we talked about the pro’s and con’s of having a device under your TV that can map your living room into a 3D space and record motion, facial expressions, sound, etc…

As game technology, I’m kind of up in the air about it. It’s pretty cool…amazing technology, really…but I don’t play video games much. The thing that leapt into my mind was Winston Smith in Orwell’s 1984 crouching at a desk in the corner of his room writing his diary and hoping that ENGSOC wasn’t watching him through the ‘telescreen’ . In 1984 this was the device used for surveillance of party members while at home. You never knew if someone was watching, but you knew that you could never turn it off.

Well, what if no one had to watch? What if the ‘telescreen’ could watch all by itself?

I’m not saying that I think that MS is watching people through the TV. I was, however, reminded of the aforementioned conversation when I saw this:

Ignore the strange marketing video. This software uses an intelligent HD video camera (1080P) with an onboard DSP that can actually process the video at the edge of the network. The camera:

On the slim chance that a non-nerd reads this, that means that the camera can see you. (VERY slim chance. I know, you’re the only one that reads it. Believe me, I see the numbers.) I’m not sure how much the analytics software would cost, they say that the camera can be plugged into 3rd party custom analysis engines…but how much does an HD camera with on-board smarts cost? 1800 bucks.

This is from the data sheet:

Security Package

• Tripwire: Identifies user-defined objects that move in a specified direction as they cross over a line (tripwire) drawn within the camera’s field of view.
• Object classification: Differentiates between a person, vehicle, or other objects.
• Camera tampering detection: Identifies any event that significantly changes the field of view of the camera.
• Loitering: Detects when a person or vehicle remains in a user-defined area of interest for a configurable length of time.
• Take away events: Detects when an object has been removed from a user-defined area of interest.
• Leave-behind events: Detects when an object has been left behind or inserted in the full view of a camera.

Counting Package

• Enters/exits events: Detects when an object enters or exits a specified area of interest from any direction within the camera’s field of view.
• Occupancy: Provides information about the number of people in a user-defined area of interest.
• Dwell time: Provides data about the length of time each person spends in a user-defined area of interest.

I’m all for better security where it counts. The thing I’m having a little trouble with is that these things are IP-based. While they should not be installed on internet accessible networks, they will be. The camera has a built-in web interface…its web server probably has a unique signature…wanna start a betting pool on when they will be discoverable in Google? Most of the time I find “computer security” people kind of obnoxious, but after the last few weeks of high-profile hacks…There are scenarios that you have to consider possible even if they aren’t likely.

Hypothetical situation time:

You get arrested. The DA offers into evidence video footage of you at a gas station gassing up your car. The time stamp is used as proof that you were reasonably close to a crime scene…except that its been tampered with. Why not? The camera has “tampering protection.” See where I’m going with this?

The marketing materials claim that the cameras support access control lists, 802.1x, etc…for authentication and authorization…but that’s really nothing new. Most wi-fi access points support some type of secure setup. All routers and multi-layer ethernet switches have locked down configurations. Operating systems have many more options for security hardening that I could list here.

Everything can be configured securely, but most things never are.

All that being said…I really want one.

Building .Net based services is kind of old hat…but I didn’t know that a lot of it could be done declaratively.

This is too sweet. The Apache Directory Server supports triggers.

yet another entry for my todo list:

Stop laughing.

CTRL+T…read the title again. CTRL+SHFT+T transposes the word directly behind the cursor with the next word.


I have always wondered about Palantir…I see their ads every morning when I go through the Pentagon metro station.

This kind of parallel processing was popularized by search engines. It uses commodity clustered pc architectures instead of large shared-memory/shared storage systems. Apache has an open source project called hadoop that is really popular. I think that these “shared-nothing” clusters have started providing new types of large data-set computing experiences rather than displacing traditional supercomputer (vector processing) or mainframes (resiliency) workloads. It’s an interesting subject, though:

I end up writing at least one command line single purpose app just about every day. Every now and then I end up having to “product-ize” one and give it to another group. Handling arguments are a painful part of that process. You always forget something and the app blows up because of it. This library adds some intelligence to that process.


In Active Directory you could search using the ldap filter (ANR=JOSH) and it would return any object where the search string ‘JOSH’ is a part of the the givenName, SN, mail…basically any attibute that has ‘searchFlags=0’ in its schema entry.

In SQL you would use the keyword ‘LIKE’ for the same effect. Although, in SQL you would have to specify the column names to query.

I can’t tell you how much time this would have saved me in the past. I want to weep.