Wednesday, October 3, 2012

How To Respond to Negativity

Came across a good article that interested me and thought I'd reshare to others whom may derive some advice from it as well.

How to Respond to Negativity | Psychology Today

Saturday, September 15, 2012

Using the FitBit Ultra Activity Tracker with Ubuntu 12.04 Precise Pangolin

Just bought the FitBit Ultra Activity Tracker, needed to get it working with my Ubuntu 12.04 computers, and here is my tale:

 A google search yields an opensourced project started by Kyle @ and continued along by BenoĆ®t Allard that supports uploading data from the tracker to the FitBit personal website.

Steps I used to install:

  • Registration
    • If the device hasnt already been registered with FitBit website, unfortunately you will need to by using the windows software link provided by the device.  I have an emergency WinXP vm for just such purposes.   After registration you do not need it running anymore
  • Get the source from github (as superuser):
    • apt-get install git
    • mkdir /opt
    • cd /opt
    • git clone
    • cd libfitbit
  • Allow the device to be used by non-superusers
    • cp ./platform/linux/* /etc/udev/rules.d
  • Install python libraries needed:
    • pip install pyusb
    • apt-get install python-yaml
  • Run the service:
    • python /opt/libfitbit/python/
Done!  Now the device will be syncing with the website as long as the service is running.

Wednesday, August 29, 2012

Asterisk (VoIP PBX) on the cloud with Amazon EC2 (NAT)

In my continuing effort to eliminate the need for a server at my home, I took on moving my Asterisk installation (of just about 10 years) locally run on a Linux server to the cloud using an Amazon EC2 micro-instance.

Background:  Home automation has always been my hobby and a part of that has extended into my phones.  What started off as a simple task of announcing Caller ID over the home intercom, turned in to  an elaborate Session Initiation Protocol (SIP) based Private Branch eXchange (PBX) using Interactive Voice Response (IVR) menus.    (If anyone is interested in what is all automated let me know and Ill write up the use cases.)

My setup was using an x86 based Linux server running Asterisk with various SIP devices as extensions; Zyxel WiFi Handsets, Seimans Gigaset, Grandsteam, Obi100 FXS -> POTS Dect 5.0 phones, and Android Handsets.   I have a VoIP provider giving me Plain Old Telephone Service (POTS) access with standard phone numbers via a SIP trunk.     This was all running on residential internet with a Dynamic IP address, behind a standard Wireless firewall / router (Asus RTN-16), and running Network Address Translation (NAT) on a private internal network.

For the most part this was a typical personal installation of Asterisk with the trunk connection going through NAT and  all of the clients connecting directly on the local private network.

Protocols Involved: What helps is a general understanding of how the SIP / Real-time Transport Protocol (RTP) works.  SIP is a text based protocol that coordinates communications between devices using User Datagram Protocol (UDP) generally on port 5060.  This handles authentication, routing, registry, status, and more importantly the port numbers established for RTP to commence.

RTP sends the actual voice data between devices also using UDP but its ports need to be allocated at time of transmission and generally range between 10,000 and 20,000.

Due to both of these protocols technically being stateless, NAT alone does not sufficiently allow these to route correctly without help.

On the cloud:  The Asterisk server is now running on a Amazon EC2 Microinstance with the clients still on my private network locally (for obvious reasons of needed to use my handsets at my house ;) )   

Here is what I needed to make this happen:
  • EC2 Server: Asterisk config remains setup to talk with my VoIP provider through a NAT,  as Amazon EC2 instances do not get a real IP address mapped locally to an interface. 
    • (sip.conf) [provider] nat=yes
    • (sip.conf) [provider] canreinvite=no
  • EC2 Server: Because clients will be connecting through the Wide Area Network (WAN) interface now, I need to tell Asterisk what its IP address and local network is
    • (sip.conf) [general] externalip=
    • (sip.conf) [general] localnet=
  • EC2 Server: Clients need to be configured as NAT devices as well
    • (sip.conf) [kitchen phone] nat=yes | canreinvite=no [den phone] nat=yes | canreinvite=no, etc
  • EC2 Firewall:  Ports need to be opened for SIP / RTP:
    • Security Policy -> (Allow) UDP 5060-5083
    • Security Policy -> (Allow) UDP 10000-20000
  • Client Router: NAT needs to be "helped" and configured:
    • (Tomato Firmware) Advanced -> Tracking / NAT Helpers -> SIP (enable) / RTSP (enable)
  • Client Handsets: The internal private network will not be recognized (or useful) to the Asterisk server so they need to register under a common domain:
    • [Domain] (External IP of the server)
Woila, now we have a PBX system on the cloud.

***Trouble shooting tips:
  • Asterisk "set sip debug on" and "rtp set debug on" are your friends.
  • If your handsets register but you cannot hear / transmit sound, RTP is not routing to either the correct IP address or your firewall / nat is not allowing it to pass correctly.  Check domain and your router firmware for supporting SIP and RTP "helpers".
  • If your phones ring at 1:21am in the morning the following night, you may have forgotten to restrict the 5060 port to just your EC2 server / client IPs and you are being hacked.  Not a good night ;)

Wednesday, July 4, 2012

New Opensourced Home Automation Offering - Pytomation

After more than a decade of using and contributing to Misterhouse, I have decided to startup a new open-sourced Home Automation platform - Pytomation.    There is a ton of legacy design with MH that needs to be refactored and unfortunately there isnt any unit testing to help with that.  To assist with reliability / maintainability in the future I started from scratch with a Test-Driven Development  (TDD) approach.

Hit the link up above to get the Python library code (should be multiplatform: Linux, Windows, Mac)  to drive basic ON/OFF functionality for Insteon, UPB, and X10 interfaces.   Most of the hardware with threading / communication / binary wrangling has been complete and am looking for feedback / any contributions at this point.  There should be enough there for even novices to Python to be able to help out and welcome any questions / requests for assistance / comments you may have (jasonatsharpeedotcom)

My goal is to replace my Misterhouse Installations by the end of the year, so you can expect some of the same functionality to be added over the next few months (LOMP, Tiggers, Web, Floorplan, Notifications, etc)

The Slow Fall of RIM - Blackberry

David Miller wrote in his blog about why he thinks Thorsten Heins has the toughest job in tech.   I wanted to share my thoughts as well.

Postulation: All smartphones can accomplish the same general types of tasks, only vary by the feature set (thus complexity) of accomplishing them and the computer literacy of the marketplace.  Thus I believe there are TWO market segments of smartphones: Computer literates demanding features, and "Newbies" demanding simple limited experiences. 

Theory:  As computers permeate the world computer literacy is increasing, thus the market for phone features is increasing.  RIM has stayed focused too long on "Newbie" limited simple experiences of email and BlackBerry messaging thus losing customers in mass in todays world.

In order to understand what is happening currently you need to look back to the Pager where it all started.   Everyone that needed to be "connected" had a pager before anything else and Motorola was the original key player here.

Motorola (Pagers, StarTac , Razor): Created both hardware and software for their first devices.  They  were extremely featured limited and very simple to use for the "non-computer literate" crowd of the 80's and 90's and were successful.   

As the world passed and the cost of developing software declined they had the wherewithal to pull out of the software market, partner with other companies (J2ME, Android), and focus on their established hardware development segment.  While Motorola is no longer a giant in the connected device market, they do still stay relevant ("DROID!") and are still in a great position.

PalmOS (Kyocera, Visor, Treo):  Allowed a very small segment of people who were very computer literate in the late 90s, to access Web, Email, Calendar, Tasks list and sync them with their desktop computers.   If you were a Realtor you had one of these and loved it because _nothing_ gave you the same functionality in those days.   

Their devices were very intimidating to non computer literate people.   Palm saw their market as only limited to those comfortable with technology and drove features even further (Windows CE / Mobile hit the scene).   

IT did finally occur to them in 2007 the "newbie" market may be a big success (Hello iPhone) and tried to retool their devices and marketing (Centro / PalmPre) but was too late.

Microsoft (Windows CE / Mobile ): Like Palm drove for ever increasingly amount of features trying to appeal to the computer literate, all the while ignoring the "newbie" segment.   As with most, have realized that there is money in limited phone experiences and are pouring tons of cash into "dumbing down" their user experience.   Unfortunately for them trying to "catch down" to iPhone levels is the opposite of what the current market is starting to want.

RIM (Inter@ctive Pager, Blackberry):  Competitors initally to Motorola in the paging markets and they too created hardware and software for their devices.  They flourished in the "Newbie" market and rode that wave as long as they could.  Unfortunately for them people are driving for more features out of their smartphones and are realizing too late they need to go beyond BBM.  

They could make a comeback but only if they do it "Motorola Style" by giving up the Mobile OS market and partnering with Android to bring BES, BBM as an integrated experience with their awesome keyboard based hardware.

Saturday, June 30, 2012

Apple wakens the sleeping Android giant - Google

After years of Apple taking legal potshots at various Android device manufacturers for specific devices, they have finally landed a legal success against the mothership Google.  Google is now prevented from selling their very own Android phone (Galaxy Nexus) for the specific reason of having a unified search experience!  No less than a couple of days from their annual marketing blitz surrounding the device and the ecosystem.   Undoubtedly this is going to finally trigger a return fire.

What can Google return fire with?  Plenty.  For instance they acquired Motorolla Mobility which holds a bunch of very important mobile device patents that Apple has initially been found to be violating.   Google will be forced to become a legal expert now and Im sure this and many future filings from them will sting Apple at its core revenue stream this summer / fall. 

If Google cannot sell their Android appliances, it will hurt their ego but not dent their revenue.  If Apple cannot sell their iOS devices, they lose almost everything.

Tuesday, June 19, 2012

Microsoft Surface PC announced... A third time?

Yesterday Microsoft announced its new Tablet Surface PC!   Looks pretty nice  and has some interesting input / navigation opportunities.  Havent we seen this before?

So I have some trivia for you.   What do the following years have in common; 1992, 2002, 2012?   10years?  Not the answer I was looking for....   It is the years in which Microsoft tried pitching the Tablet PC!

Will the third round be successful this time?  It seems this concept is as tired as the look on Blamer's face introducing it.   If Microsoft pitches the productivity market again it will likely suffer the fate of its two predecessors.  I still firmly believe tablets are only ideal for consumption and Apple currently owns that domain, so this will be a tough market for them yet again.



Change any setting for Mouse / Touchpad / Pointstick / Keyboard in Ubuntu

For the last couple of years I have been using an IBM Ultranav Keyboard, Logitech Mouse with a laptop that itself has a touchpad / pointstick.  This poses quite a bit of a headache as Ubuntu's gnome settings doesnt quite handle settings for multiple input devices (2 keyboards, 2 pointsticks, 2 touchpads, 1 mouse)

Here is how to configure any input device in X windows from command line:
  • Get a list of input devices and their ID's:
    • $ xinput list
  • See all of the properties available to a particular device ID
    • $ xinput list-props 14
  • Set property of device by ID (disable input device entirely)
    • $ xinput set-prop 14 'Device Enabled' 0
And that is all!

Saturday, June 16, 2012

First Foray into Balloon Photography

With the help of my daughter, we managed to build and fly our first photography balloon! 

I got the idea from reading an blog post months ago about people using balloons to get aerial pictures to enhance maps.  My daughter and I put our heads together and came up with a simple prototype with the materials we had on hand.  I have since found this site that gives a really good overview of a design:

From the prototype we flew today we discovered the following issues and thus our next design changes:

  • Wind drag - Reduce to just one large balloon as the two were catching turbulence from each other as well as from the wind.   The balloon didnt make it all that high due to it being constantly pushed away from us.
  • Stability issues - Follow the design from the Public Laboratory link to add stability arms and a better center of gravity.
  • String Management - Using a simple spool made it difficult to deploy / retrieve.  Definition going to get a hold of a cable reel.
  • Height - Definitely need more than 200 ft of string to get a better angle on the ground

Friday, June 8, 2012

Is this the beginning of the end for the iPhone Fad?

When it comes to usability, generally everyone would agree Apple has always been the king ranging all the way back to the early 80's.  The iPod turned cellphone -- iPhone seemed to de-throne the Palm Treo as the new king of the smartphone world shortly after its introduction.

But does usability carry a product long-term for Apple?  The AppleII series, Lisa, Macintosh,  Newton, PowerBook, Quadra, QuickTime, AppleDesktopBus, all products that made a lot of noise when released, some were quite successful, most now hold a minority marketshare if any.

Now I read that Samsung has now shipped more smartphones than Apple this past quarter, evidence of a profound change in mobile computing again.  Human beings now choose Samsung over Apple smartphones.  Do people really prefer functionality over form long-term?

Using Apple's product history as a guide, once they lose top marketshare has any Apple products recovered dominance?

Saturday, June 2, 2012

Capturing Firewire 1394 camcorder MiniDV in Ubuntu 12.04

How to transfer MiniDV Camcorder footage digitally via Firewire 1394 to your Ubuntu 12.04 computer:

I have a bunch of old (>10 year) MiniDV tapes laying around that I wanted to transfer to my Smugmug account online.  Mainly because I am concerned about losing the content due to decaying magnetic tape and partly because I am organizing the last bit of imagery I have onto the cloud for easy access across all of my devices.

Once upon a time circa Ubuntu 8.04 I was able to plug in the firewire cable into the back of my PC and into my Panasonic MiniDV Camcorder, load Kino, and everything worked.   This time, it wasnt so obvious.

The problem:
  • Kino reports "WARNING: raw1394 kernel module not loaded or failure to read/write /dev/raw1394!"
  • The newest Firewire driver does not create the raw1394 device node
  • Permissions are not setup to allow for general user access on the /dev/fw0 node
  • Bug Report here:
The fix:
  • Create a link to the newer /dev/fw0 node
    • $ sudo ln /dev/fw0 /dev/raw1394
  • Run Kino as superuser
    • $ gksu kino
Hope this helps someone else out there as it took me a good 3-4 hours of searching the net and trying different drivers to come up with this simple solution.

Thursday, April 26, 2012

The end of personal data storage?

My house server's 1TB hard drive is giving me SMART drive warnings that the disk is about to fail.  I immediately started looking for its replacement and looking into SSD storage which of course costs substantially more.   It was then I realized what do I need this space for anymore?

Once upon a time my entire life revolved around data stored on my server:  Source Code, Documents, Movies, Music, Pictures, Software, etc.  That landscape for me has totally changed in the last couple of years mainly brought about by faster Internet connectivity (currently have 50 / 5 mbps).

I am (or *will be soon) using:
  • Google Docs - Documents
  • Amazon/Netflix/Vudu - Movies / TV
  • Smugmug - Pictures / Personal videos
  • Grooveshark / Slacker - Music
  • Linux - Every program I use is either online or comes from apt repositories
  • *Github - Personal projects / source code
  • *Google Drive - Miscellaneous?

Basically, I dont have any need for personal data storage anymore.  Quite frankly I am curious why anyone else has need of local storage anymore?  Trust?  Re-acquisition costs? Internet Speed?

How about you?

Wednesday, April 11, 2012

Three Best Paper Gliders

Just saw an article on Slashdot about what is the best paper airplane.   Piqued my curiosity as  I use the Paper Airplane Factory Game sometimes when I am presenting on Agile / Lean processes.

Of the designs presented in the post, I have narrowed it down to the following three that interest me the most.

1.) The "Harrier", built for stability and speed
2.) The "Bat", built for entertainment
3.) The "Ball", a crushed paper ball that will sometimes out-perform even the best plane designs ;)

Sunday, January 29, 2012

Producer / Consumer - The new personal computer paradigm ( Buying a Tablet PC )

Im sure you have all recently been to Coffee House or even business / professional meetings where you have seen a diverse group of computing devices in use; Laptops, Netbooks, Smartphones, Tablets, and Media Players.   Seeing all this variety I started thinking about a general paradigm for computing devices when trying to rationalize purchasing a Tablet PC recently.  I explain below...

Tablet computing devices (what I define as mobile computer with an interactive screen) have come and gone over the decades and so has my interest in purchasing one.   For me it all started with seeing someone use an Apple Newton Message Pad in 1994.  While they were very clever devices I never really saw someone effectively using them without a) Running out of battery power or b) fighting with the handwriting recognition.   Either way I didnt have an abundance of cash back then so I never got around to owning one.   

In the 96 I purchased a PalmPilot PDA which quite literally changed my life in a way that no other computing device had ever done before or since.   I was able to keep track of ToDos, Grocery lists, calendar appointments, read books, read / send synced email, and even play games all on one device.  Even the Graffiti interface was extremely intuitive and easy to use for writing text.    I would hazard a guess that most folks that had early PDA's have since migrated onto using the smartphone form factor (Visor / Treo, Kyocera 6035, etc) as did I.  

This left a little bit of a gap in the Tablet concept until Microsoft reintroduced the concept in the early 2000s which were essentially the first round of large screen / big CPU Tablets to be produced.  As "Cool" or  "Star-Trek like" these devices were I could never justify spending money on that platform and really didnt know why at the time.   Curiously adoption rates weren't that high and I wouldn't really consider the platform a success unless you talk about the "Hybrid" Tablet PCs that evolved out of that.    

The recognition of a new computing platform paradigm started with the Hybrid Table PC.  These devices married an interactive touch screen with either a folding or swivel based keyboard that could be hidden.   Compaq was the first notable manufacturer of this devices for Microsoft's new platform and I was quick to pick up an HP Compaq TC4200.  Finally a computer I could justify spending thousands of dollars on! Well I have examined that justification over-and-over-again ever since, as the more I used that computer the less I used the interactive screen and the less I understood why I bought it in the first place.

The iPad!  Apple's re-introduction of the same concept, however, this time with "je ne sais quoi" that enables mass amount of people to purchase them.  There doesnt seem to be many profound differences over the earlier Tablet PCs other than a slightly more intuitive touch interface, perhaps a bit better battery life, and less weight.

And last but not least, the Apple chasing OEMs with various Android / Rim / WebOS based devices promising the same experience but unable to make as huge of a dent in the marketplace.

For a long time Computing devices overall have been categorized as "Mainframe / Personal Computer", "Client / Server", "Desktop / Laptop", "Netbook", "Tablet / Phone", etc.    As technology increased in both computing capability, peer-to-peer protocols, and wireless digital networking I believe these categorizations need updating and is the key to understanding how a Tablet PC fits in.

Quite simply, in the Personal Computer world people are performing either two tasks; producing content or consuming it.   Therefore all PCs can be classified and weighted by their ability in these two areas of "Producer / Consumer".   This is obviously a very broad classification system that like all others has exceptions (Graphics Artist Producing Content who finds Tablets better than keyboards) so this categorization cannot be used without considering the user of the device.   But for the the general population I think device classification can applied and people should rationally consider how the device they are using fits into those two categories for them.

Now your thinking, well that is not very profound and quite obvious.  Well.. How obvious in the productive "producer" workplace?  How many times have you seen people in meetings are scrambling to enter data by hunting and pecking at a Tablet or Smartphone keyboard instead of their Laptop? ;)

Tuesday, January 17, 2012

SaaS (Cloud) Company Reliability

Recently our SaaS vendor, Rally Software, Project Management Software has been having issues today staying online and got me thinking about reliability of software offerings hosted on the cloud.

 Background: According to online resources Rally Software revenues are between 10M-20M USD and this company has been offering their software exclusively SaaS (Sofware as a Service) for at least 6 years. A decent sized company boasting a lot of Fortune 500 companies as clients.

 During today's outage I have to wonder; Where is their Disaster Recovery? What possible issue could they have that would prevent another set of server's with different internet connections from taking over the load and provide uninterrupted service? I can only sit and wonder while our team is losing time not able to co-ordinate effectively.