Physical Security Book Published

Physical security is video surveillance, entryway access, and sensors. In other words, it’s a network of things to protect and secure physical areas. Traditionally this network was analog and serial, but today it’s converging through the use of the Internet Protocol (IP). IP allows you to build a physical security network using one network and probably the very same network that you already have in place. Transitioning over to IP also gives rise to a lot more features and software based analytics. Physical security is just as important as network security.

Tim Dodge and I wrote a book last year about transitioning from analog to IP-based security systems called, “Introduction to IP-based Physical Security”, published by TESSCO Publishing. The book is meant to be a jump start for those heading over to IP-based physical security and video surveillance.

Today I had the thrill of opening up a box with a few publication samples. I know we are in a digital age, but I have to admit that it was cool holding a book with an ISBN and a barcode on it…

IP-based Physical Security

I look forward to running into this book in a used bookstore and/or being the reason for a book burning.

I am LOST

All of this snow caused me to get trapped between two airports recently. And when I say, “trapped,” I mean I had a cell phone, food supply, laptop, and stable wireless Internet connection. I had some time on my hands. Between runs to Panda Express and the restroom, I was able to watch the first season of LOST.

Over a period of 3 months, hints were dropped which lead me to want to start watching LOST – I finally “listened to the island.” I saw a speech by J. J.“ Abrams, 3o Rock made a LOST reference, my friends were talking about the show, the answer is 42, and I heard a faint radio transmission on my XM. I finally broke down and watched the pilot episodes of LOST on Hulu. I was hooked.

Over the next 24 hours, I watched the entire first season – all 24 mind-bending, awe-inspiring, jaw-dropping, uber-frustrating episodes. I see why this show is popular, it has all of the elements that I love – great mystery, tied with philosophical nuances and solid characters who I love to learn about. I want to figure it all out, but I am being messed with. Numbers and non-linear flashbacks spliced in the real-time storyline all make for a fantastic mind trip.

The final season starts tomorrow. I am so glad to hear there is a final season. It will make my LOST time seem worth it, since I know it will have to have an ending and soon. I look forward to the rest of the seasons and catching up to the new episodes. I will be DVR’ing the new ones and maybe I will be able to finish this series with everyone else.

4-8-15-16-23-42

A New Set of Downs

A lot has changed for me in the past 10 years. I have watched the Internet go mobile. The web has come a long way since the 90’s – my Geocities website is a faded memory. I have owned domains that are over 16 years old. If they were children, they would be graduating high school, voting, and starting their credit ratings. I can’t start to imagine what will happen in the next decade. I hope to be a part of the story though. I wish you well as we venture together.

Stay thirsty, my friends.

Steam Pumpkin – My Steampunk Pumpkin

Halloween is one of my favorite times a year being ShadowLord and all. I was BatMan three times in my life and only once as a kid. Pumpkin carving is something I also get into. My first pumpkin at age 9 was an old farmer smoking a pipe. It even had a twinkling red LED in the corncob pipe. After burning up a handful of LEDs my dad taught me about current limiting resistors.

Fast forward 20 years and I am still shoving LEDs into pumpkins. This year my inspiration comes from steampunk, a growing subculture fascinated with steam-aged garb and future technology fusion. Steampunk was born of the H. G. Wells and Jules Verne visions of futuristic technology and style. Call it what you want, Steampunk is an inspiring movement of makers and re-users of technology and materials.

Here is my steampunk inspired pumpkin.

Where do you start?
I cobbled together whatever I could find that resonated steampunk. I found my Mom’s old purse that had some faux leather, brass loops, and a gold chain. I also grabbed an old candle holder, a lamp shade, a door hinge, a metal coffee filter, and some brass brads. My Dremel was used to drill, cut metal, and and cause sparks (insert grunt).
Full of hot air
I knew that I was going to add some technology to the design and I settled on an automated fog machine that would blow smoke from the ears of the pumpkin. Okay, I know it’s a little literal, but it is a steam pumpkin.
How do you do that?
Using the ioBridge IO-204, I rigged up the fog machine to trigger when someone walked in front of the pumpkin. I used a passive infrared sensor from Adafruit to detect motion. The IO-204 has an upcoming feature that allows for on board logic, meaning you can break off of the Internet and have local controls take over. To integrate it with the fog machine, I tapped into the wireless remote control that came with the fog machine. This made it easy to control using a single relay. To light the pumpkin, I bought a BlinkM RGB LED Blaster from Sparkfun. The LEDs are high intensity lights that you can mix colors together. It turned out to be a neat touch. When someone gets close, I set the color with the IO-204 to an evil red to accompany the smoke.

For more information and more “How-to” detail, check out Instructables.com.

Introducing The Steam Pumpkin
Here is a YouTube video of “Steamy Wonder” in action:


Will Windows 7 be better than Vista?

“Will Windows 7 be better than Vista?” is the wrong question to be asking. We should be asking, “Will Windows 7 be better than XP?”

Chris Hernandez of Microsoft posted on his blog, “One of the main goals with Windows 7 in general has been to be better than Vista.” Chris’ quote scares me. Being better than Vista is not what I am looking for. I want an OS that makes me want to upgrade from XP. XP has served me well and I want a clear upgrade path. What are the killer new features? What makes Win7 an “upgrade”?

I have been using Windows 7 on my laptop for a few months. I do like some UI improvements, but compared to XP it misses the mark. Compared to Vista, Win7 is better. Although, Win7 requires pretty good hardware to install where XP is able to install on my pieced together machines with parts 8-10 years old in some cases. I hope by the time Windows 7 is on the shelf, someone figures out that we are not looking for an upgrade from Vista, we are looking for a real upgrade to XP.

Wireshark 1.2.0 – New Version

Wireshark is a tool that performs packet and protocol analysis on a network. Packets are the virtual transport mechanism that moves are data from sender to receiver. Each packet has a header and payload – the header contains information about where the packet came from and where it’s going, as well as the protocols being used. The payload has our actual digitized data – parts of website, text, a section of photo, or a clip of audio from an MP3 or a phone call. If you don’t get all of the packets then a phone call may sound choppy or it may take a while to download a complete file. Wireshark allows you to take a look at the packets you are sending and receiving and learn a lot more about what it happening and what’s breaking down. Wireshark is not for the lighthearted, as the tool requires knowledge of protocols and a deep understanding of OSI, IP, and TCP/UDP at the very least. But, with time, Wireshark becomes invaluable to the troubleshooting process. I have relied on the tool for my work supporting Voice-over-IP (VoIP) and system and application connectivity. The only side-effect to Wireshark is that you will soon realize why it’s not a good idea to surf the web in a public spot (without a VPN or encryption).

The new version of Wireshark includes more protocols that it will decode, supports 64-bit Windows, and has GeoIP integrated support. Also, Wireshark works perfectly with my passive network cable. Visit www.wireshark.org to download the latest version and learn more about it.

Internet-enabled Message Center

What are you up to now?

I took the leap and bought an Arduino from LiquidWare. An arduino is an open-source microcontroller that has a processor, some digital I/O pins, and analog inputs. You can create little standalone programs that monitor inputs, control LEDs, and pretty much anything that you dream up. My favorite projects are ones that involve the Internet. A microcontroller is rather simple by itself, but what if it could use the web to get answers, send email, maybe update my Twitter status? That means there is a unlimited number of projects ahead – Microcontrollers collaboarating in cyberspace. The missing link for the web part is the ioBridge IO-204. I know you are no stranger to the the IO-204, but for those of you who have not heard. The IO-204 sits on my network and relays data from its channels to ioBridge.com servers and back into my network. It allows for remote control and monitoring without network configuration and programming. One of the expansion boards is a two-way serial board that accepts serial strings and connects them to APIs of web services that ioBridge interfaces to and sends back responses. For instance, I can send the commands, “[[[calc|9*9]]]” and this returns 81. OK, maybe not impressive on the surface, but that result came from Google Calculator. Anything Google Calculator can solve, your microcontroller has access to those results. For more examples, visit the Serial Web Services API on the wiki.

Message Center Project

I wanted to combine these two worlds with a sample project – maybe it will inspire you to come up with something better, spark some ideas that you have. I have my arduino measuring my outside temperature here in Pittsburgh, which is an analog input scaled to Fahrenheit. At any moment I can press a button and get the temperature on the LCD screen – no Internet required. Since I have been planning a work trip to Atlanta, I also wanted to compare my temperature with hot-lanta’s. So, my project solves that. Using the “weather command”, I am able to get the weather anywhere in the world by zip code or city name.

I added a few more things to the message center. With another button I can get the stock quote of Google. My strike price was $405, so I have been watching it close. If it gets below $405, I get an automatic email from my message center. The stock quote comes from the Yahoo Financials API.

I have one more button that emails me a secret message when it’s pressed. I put this in here for when my mom comes into my room from when I am on the road. It’s aptly label, do not press. Next time, I will hook it to a light sensor in the basement to catch her when she turns on my lights. I am sure you all have the same issues with your mom.


Source Code

The arduino requires some c-like programming and I wanted to include the sketch for you to steal and use for your projects. You will see how I send the serial commands from the arduino to the IO-204 using the UART serial connection (pins 0/1) and recieve and parse the incoming results. I use a SoftwareSerial port for the LCD results. The push buttons are software debounced and use pull-up resistors for solid digital connections. The LED’s linked to each button use a 330 ohm resistor to protect them. I was aided by the Arduino Inputs tutorial on Ladyada.net, Debounce Tutorial, and the iobridge Wiki / Forum. Please let me know if you have any questions, maybe I can help. I have learned a lot about handling strings on the arduino.

//
// Message Center using Arduino and the ioBridge IO-204
//
// An open-souce Shadowlord Project
// www.IamShadowlord.com


#include SoftwareSerial.h>

// SoftwareSerial Pins
#define rxPin 2
#define txPin 3

// Setup Software Serial
SoftwareSerial
softSerial = SoftwareSerial(rxPin, txPin);

// Global Setup
int middleLED = 11;
int rightLED = 10;
int leftLED = 12;

int leftButton = 5;
int
leftButtonCurrent = LOW;
int leftButtonReading;
int leftButtonPrevious = HIGH;
long leftButtonTime = 0;
long
leftButtonDebounce = 200;

int middleButton = 4;
int middleButtonCurrent = LOW;
int middleButtonReading;
int
middleButtonPrevious = HIGH;
long middleButtonTime = 0;
long
middleButtonDebounce = 200;

int rightButton = 6;
int
rightButtonCurrent = LOW;
int rightButtonReading;
int
rightButtonPrevious = HIGH;
long
rightButtonTime = 0;
long
rightButtonDebounce = 200;

int tempPin = 5;
int tempAnalog = 0;
int
tempF = 0;

char* currentRequest = "";

// Start up program
void
setup() {

pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);

pinMode(leftLED, OUTPUT);
pinMode
(middleLED, OUTPUT);
pinMode(rightLED, OUTPUT);

pinMode(leftButton, INPUT);
pinMode(middleButton, INPUT);
pinMode(rightButton, INPUT);

softSerial.begin(9600);
delay(100);

Serial.begin(9600);
delay
(100);

Serial.flush();
delay(100);

// Setup LCD
clearLCD();
setBacklightBrightness(9);
delay
(1000);

// Test LEDs
digitalWrite
(leftLED, HIGH);
digitalWrite(middleLED, HIGH);
digitalWrite(rightLED, HIGH);

delay(1500);

digitalWrite(leftLED, LOW);
digitalWrite
(middleLED, LOW);
digitalWrite
(rightLED, LOW);

}

// Start main program loop
void
loop(){

// Get Analog Input and scale as temperature for ioBridge temperature sensor on arduino
tempAnalog = analogRead(tempPin);
tempF = tempAnalog / 6.875;

// Monitor left button status and debounce
leftButtonReading = digitalRead(leftButton);

if (leftButtonReading == HIGH && leftButtonPrevious == LOW &&
millis
() - leftButtonTime > leftButtonDebounce) {
if (leftButtonCurrent == HIGH) leftButtonCurrent = LOW;
else
{digitalWrite(leftLED, HIGH);
clearLCD();
delay
(100);
softSerial.print("Outside: ");
delay
(100);
softSerial.print(tempF);
delay
(100);
moveCursor("02", "01");
delay(100);
softSerial.print("Atlanta: ");
leftButtonCurrent = LOW;
//Request temperature in Atlanta via ioBridge
Serial.print("[[[weather|Atlanta]]]");
digitalWrite
(leftLED, LOW);
}
leftButtonTime = millis();
}

leftButtonPrevious = leftButtonReading;

// Monitor middle button status and debounce
middleButtonReading = digitalRead(middleButton);

if (middleButtonReading == HIGH && middleButtonPrevious == LOW &&
millis() - middleButtonTime > middleButtonDebounce) {
if (middleButtonCurrent == HIGH) middleButtonCurrent = LOW;
else
{currentRequest = "Google";
digitalWrite
(middleLED, HIGH);
clearLCD();delay(100);
softSerial.print("GOOG: $");
delay
(100);
middleButtonCurrent = LOW;
//Request Google Stock Price via ioBridge

Serial
.print("[[[stock|GOOG]]]");
digitalWrite
(middleLED, LOW);
}
middleButtonTime = millis();
}

middleButtonPrevious = middleButtonReading;

// Monitor right button status and debounce
rightButtonReading = digitalRead(rightButton);

if (rightButtonReading == HIGH && rightButtonPrevious == LOW &&
millis() - rightButtonTime > rightButtonDebounce) {
if
(rightButtonCurrent == HIGH) rightButtonCurrent = LOW;
else
{
digitalWrite
(rightLED, HIGH);
clearLCD();
delay(100);
softSerial.print("Alert: ");
delay
(100);
rightButtonCurrent = LOW;
//Send email via ioBridge

Serial
.print("[[[email|hans@nothans.com|Alert|Mom, is pressing your buttons]]]");
digitalWrite(rightLED, LOW);
}
rightButtonTime = millis();
}

rightButtonPrevious = rightButtonReading;

// Display serial messages
if(Serial.available() > 0){

delay(100);

char charIn = 0;
byte i = 0;
char
stringIn[32] = "";

while(Serial.available()) {
charIn = Serial.read();
stringIn[i] = charIn;
i += 1;
}

if (currentRequest == "Google") {

softSerial.print(stringIn);
int stockPrice = atoi(stringIn);
delay(100);
moveCursor("02", "01");
delay(100);
stockPrice = stockPrice - 405;
softSerial.print("Change: $");
delay
(100);
softSerial.print(stockPrice);
currentRequest = "";

}
else
softSerial.print(stringIn);
}

// End program loop
}

//
// ioBridge Serial LCD Functions and Parameters (for SoftwareSerial)
//

void displayMessage(char* message){
softSerial.print(message);
}

void clearLCD(){
softSerial.print(0xFE, BYTE);
softSerial.print("Z");
}

void setBacklightBrightness(int level){
// level
// 0=Off -> 9=Brightest

softSerial.print(0xFE, BYTE);
softSerial.print("B");
softSerial.print(level);
}

void setBacklightTime(int level, byte seconds){
// level
// 0=Off -> 9=Brightest

// seconds
// 01 = 1 seconds => 06 = 60 seconds


softSerial.print(0xFE, BYTE);
softSerial.print("T");
softSerial.print(level);
softSerial.print(seconds, BYTE);
}

void moveCursorHome(){
softSerial.print(0xFE, BYTE);
softSerial.print("H");
}

void turnCursorOn(){
softSerial.print(0xFE, BYTE);
softSerial.print("J");
}

void turnCursorOff(){
softSerial.print(0xFE, BYTE);
softSerial.print("K");
}

void turnBlinkingCursorOn(){
softSerial.print(0xFE, BYTE);
softSerial.print("P");
}

void turnBlinkingCursorOff(){
softSerial.print(0xFE, BYTE);
softSerial.print("Q");
}

void scrollMessage(int row, int speed, char* message){
// row
// 1=First Line -> 2=Second Line


// speed
// 0=Slowest -> 9=Fastest


softSerial.print(0xFE, BYTE);
softSerial.print("S");
softSerial.print(row);
softSerial.print(speed);
softSerial.print(message);
softSerial.print(0xFE, BYTE);
}

void moveCursor(char* row, char* column){
// row
// 01=First Line -> 02=Second Line

// column
// 01=First Position -> 16=Last Position


softSerial.print(0xFE, BYTE);
softSerial.print("L");
softSerial.print(row);
softSerial.print(column);
}

void drawHorizontalGauge(int row, char* leftLabel, char* rightLabel, char* length){
// row
// 1=First Line -> 2=Second Line

// leftLabel and rightLabel
// 2 character labels

// length
// a=Empty -> k=Full (filled in from left to right)


softSerial.print(0xFE, BYTE);
softSerial.print("G");
softSerial.print(row);
softSerial.print(leftLabel);
softSerial.print(rightLabel);
softSerial.print(length);
}

void drawVerticalGauge(int height){
// height
// 0=Bottom -> 8=Top (filled in from bottom to top)

softSerial.print(0xFE, BYTE);
softSerial.print("V");
softSerial.print(height);

}

Bonus Project

It’s simple, but I hacked together a power supply for the Arduino, which gets power from USB or a coaxial input from a transformer. I wanted to only run one brick, wall wart, so I hacked a USB cable. There are 4 wires in the USB cable (from pinouts.ru):

1 VCC Red +5 VDC
2 D- White Data –
3 D+ Green Data +
4 GND Black Ground

The IO-204 has a regulated 5VDC and ground (up to 1A – 4A total draw depending on supply) on each channel, so using a terminal strip, I connected the VCC and GND to a cut in half USB cable.

It’s magic – look ma, only one power source.

Clearblue Screen of Death

Everything is going digital. I know, a profound statement, but the consequences of “digital” are a future riddled with software bugs, failures, and EMP induced outages (the EPT EMP to be exact). We rely on technology to get us through our days and we will be faced with crashes when we need technology the most.

“Clearblue” has released a digital version of their pregnancy tester. My girlfriend, completely fictional to make a point, and I were discussing the ramifications of a digital pregnancy test. One day the test will be dependent on an Operating System to drive the user interface. It might even have Windows on it.

In your critical moment, of whether you will be with child or have more time to yourself – unshackled by a disappointing version of yourself, the pregnancy tester will crash giving you an ambiguous result.

Take a glimpse of the future. You have been warned.

Making the Perfect Cup of Coffee

The only reason to make the perfect cup of coffee is to enjoy the perfect cup of coffee. My life is filled with moments connected to coffee. Nothing was better than being in New Orleans and having a coffee at Cafe Du Monde. Or blitz chess at Seatle’s Best (while they were the best). And performing at a coffee shop on an Open Mic night with bad poets, mediocre musicians, and wannabe comedians.

These sentiments might not mean much to a to a person that doesn’t drink coffee (or tea), but I am sure you can find a parallel substance in your life. I am not talking about drinking coffee for the sake of drinking coffee, not the times you need it to wake up, but rather the experience of coffee. When you couple a perfect moment with the perfect cup, you create a truly great experience.

“It was a pleasant cafe, warm and clean and friendly, and I hung up my old water-proof on the coat rack to dry and put my worn and weathered felt hat on the rack above the bench and ordered a cafe au lait. The waiter brought it and I took out a notebook from the pocket of the coat and a pencil and started to write.” – Ernest Hemingway

I would rather have a brewed coffee or espresso vs. a latte or cappuccino. Certain large scaled coffee vendors have serialized the coffee drink to the point to where coffee is second to sugar. A Cafe Americano (espresso plus hot water) is about the best value (but I noticed Starbucks raises the price $.35 every quarter). I am not a purist but I am in it for the coffee taste. I am so much not a purist that sometimes I say “Expresso” when I am in the company of those who take it too far. I like to miss use words and see the retractions, most just simply ignore me.

What are the ingredients of the perfect cup of coffee? I am going to conclude that the situation is just as significant as the actual cup of coffee. Take away the experience and it probably would taste like it tastes from a truck stop in North Dakota. When I am home I meticulously attempt to make the perfect cup of coffee using apparatuses from all over the world.

Here is my approach to the pursuit of the perfect cup:

  • Invite a friend (or better yet have the friend make you coffee)
  • Have a notebook handy for those best ideas
  • Mute the mobile
  • Grind a whole bean roast (French is one of the best coffee tastes)
  • Use a fine grind for the Aeropress
  • Use a course grind for the French Press
  • Use medium for the drip
  • Use filtered filtered water and ceramic mugs
  • Boil the water and then let it cool off for 2 minutes
  • Use a little of the hot water to warm up the carafe and cups
  • Brew in your preferred fashion (I prefer the Aeropress for dark roasts and the French press for lighter roasts)
  • Don’t over do the steeping – bitterness is what most people don’t enjoy (bitterness is caused by over heating and over brewing)
  • Pour into mugs
  • Add warm milk if necessary (a Cafe Au Lait is equal parts coffee and warmed milk)
  • Create your moment and enjoy

It’s a lot of work that needs continual attention and improvement. A lot can go wrong, but the overwhelming ingredient is timing.

People Watching at the Airport

I travel a lot and find myself watching people at the airport to pass the time waiting for flights to depart. I watch them as they walk by Cinnabon and pretend not to want one. I am fascinated by how people behave – whether it’s good behavior or bad, I still find it interesting. After a canceled flight and Chicago weather, I finally made it back to Pittsburgh International Airport. If you have never been, it’s like a mall that opened up an airport. I was waiting for my luggage to come from the airplane. We are all standing around a belt that turns in one direction and carries our luggage from a down ramp. The first thing I noticed is that half of the crowd was on one side of the ramp and the other half was on the other side. So, half of these people are going to be waiting the entire trip around for their luggage and the other half are going to get their luggage first. A lady in her late forties and a scarf had an entirely different agenda. She was going to stand clear and wait for it to start turning and sidle up and grab her bag. I could see the anticipation well up as the horn and spinning light announced our bags were coming. She got up and cut right to the side the belt was turning ignoring the people who were there first. My page came out soon, but I wanted to see how it played out. The lady grew impatient and sighed with the exaggeration of a stage actor. I waited 10 minutes and nearly all of the bags were taken minus a few stragglers – a taped up duffel and flower print roller were the only ones left spinning. She stormed into the bag claim office. I took my flower print roller and headed to the parking shuttle. On the ride to my car, I thought about the events of the lady and her missing bag. She probably asked for it and had it coming.