Archive for the ‘Software’ Category

First month of Internet telephony results

Tuesday, April 1st, 2014

My Internet telephony landline replacement system has been used for one complete month. Here are some financial results.

My last traditional landline month of service: $47.46
Internet telephony – Twillio and Callcentric – March 2014: $8.12
Savings: $39.34

I am very happy with these results. These results may not be typical as we (obviously) don’t use the home phone very much. The traditional home phone service wasn’t usage based which results in a large per minute cost. The Internet telephony system meets our needs better because of the pay-what-you-use model. It gives us a much lower monthly cost with no loss of features.

Cutting the landline phone

Sunday, March 30th, 2014

I know it is 2014 and many people have already dropped their landline phone. But I have two kids who aren’t yet old enough to have a mobile phone and I want to make sure that they can use a traditional phone in our house if the need should arise. This February 21, 2014, I fully activated my Internet based home phone system which replaced my traditional CenturyLink phone service. My Internet based phone service is composed of an OBi device to interface with my existing phone handset, Twilio for incoming calls, and Callcentric for outgoing calls.

Callcentric is a BYOD (Bring Your Own Device) Internet phone provider. They can provide incoming and outgoing phone service using your own telephone adapter. One of the things that I like about Callcentric is the ability to use a pay-per-minute phone plan. Since we typically use our mobile phones it currently doesn’t make financial sense to buy a lot of VOIP minutes. For outgoing calls, Callcentric charges $0.0198 per minutes to USA and Canada. Callcentric also provides 911 services at $1.50 per month.

I could use Callcentric for incoming calls as well. But I am using Twilio to create an incoming call voice application. I have had a little experience in automated telephone software. In my first job out of college I worked at MCI on 1-800-COLLECT. As part of that job I worked on a team the developed collect messaging and we patented the idea in US 5787150 A: Method and system for automated collect call messaging. Back then, the software was written on an AIX Unix system in C and interacted directly with the telco switch. Now with Twilio you can create a REST application that Twilio invokes when it has telephony events. The application that I developed allows the caller to choose to connect to my mobile phone directly, my wife’s mobile phone directly, or connect with my home phone. This application was written in Python and is hosted on Google App Engine. I have created a GitHub repository Mytelco to host an example of the application. When the incoming caller chooses to connect to one of our cell phones the outgoing connection is a voice call. When the incoming caller chooses to connect to our home phone the outgoing connection is a SIP call.

Here is the current cost breakdown of the system:

Old System

  • CenturyLink local phone service: $47.46 per month

New System

  • One time costs
  • Callcentric
    • 911 service: $1.50 per month
    • Outgoing calls: $0.0198 per minute
  • Twilio
    • Phone Number: 2 x $1.00 = $2.00 per month
    • Incoming call: $0.01 per minute
    • Outgoing connection voice: $0.02 per minute
    • Outgoing connection SIP: $0.005 per minute
  • Google App Engine
    • usage based, currently free


Logging steps via Google Docs

Thursday, September 15th, 2011

My employer, Pearson, provided the opportunity for its employees to participate in the 2011 Global Corporate Challenge. The GCC consisted of teams of 7 who tracked their daily steps counted with a pedometer for 16 weeks. The idea is to motivate people to become more active. The event started on May 19, 2011 and ended September 6, 2011. Being an engineering type of person, I liked the idea of gathering the daily step count as a metric for activity. The event suggested a goal of achieving 10,000 steps a day. I was pretty active recording my pedometer activity every morning via the SMS text message data entry technique: the GCC has an SMS short code and you entered the date and number of steps. Submitted text messages were recorded in your step log on the GCC web site. Being able to enter the data via my phone was very handy as it let me enter data while I was on vacation without missing a day. But, now that the event is over, I still wanted to keep track of my step counts. Here is the technique that I worked out using Google Docs to record my step counts.

I created a Google Docs Form to collect my daily step count. The collected data is stored in a Google Docs Spreadsheet. The form can be viewed in a web browser or in Google Docs for Android. Since I have an Android phone, the form lets me use my phone to still collect my daily step counts each morning. And since the data is stored in a spreadsheet, I can perform calculations on the data to get my total and average step counts and even graph my daily totals. Here is the process that I use.


Adding the handy separator to Cygwin

Thursday, September 15th, 2011

Separator Screen Shot

Lifehacker had a pretty neat post yesterday which added “a Handy Separator Between Commands in Your Terminal on Mac OS X and Linux.” I use a Cygwin terminal on my Windows machine, and the Linux script almost worked: the dashes didn’t print. I tracked down my particular problem to the COLUMNS variable used to calculate how many dashes to print in the separator. In my Cygwin terminal prompt, running “export $COLUMNS” showed the variable was blank; meaning that no dashes were used for the separator. Looking at the Mac modification, I noticed that it used the command “shopt -s checkwinsize” to check the window size and if necessary update the LINES and COLUMNS variables. So after adding these two lines to the beginning of the Linux “.bash_ps1” script, here, the separator worked for my Cygwin terminal.

shopt -s checkwinsize
export COLUMNS

Quote from “Authentication is Secondary” by Bob Cringely

Thursday, February 4th, 2010

From “Authentication is Secondary” by Bob Cringely:

“Remember that all the authentication in the world will not protect against a privileged user doing the wrong thing. It’s just that logging may help to determine what happened after the fact.”

First post using WordPress for Android

Wednesday, February 3rd, 2010

This post was created on Droid phone using WordPress for Android. You can find more details about the app at

Using a Maven profile to run a test program

Tuesday, August 25th, 2009

This is a new (to me) trick for my programming toolbox. I discovered (copied) it from the Apache CXF project. (I don’t know if they originated it or not.) Basically, you can use a Maven profile configuration in your pom.xml to easily run a test program in your project that has a public static void main(String[] args) method. I discovered this technique reading the README.txt of the Apache CXF sample “java_first_jaxws“. Here is what the Maven command looks like:

mvn -Pserver

Here is what the profile configuration in the pom.xml looks like:


When the “mvn -Pserver” command is executed, the exec-maven-plugin will run the demo.hw.server.Server class. The id identifies the profile id used in the mvn command after the “-p“. The mainClass element defines the class with the main method to execute. The exec-maven-plugin does all of the hard work. One of the benefits of this technique is the standard Maven classpath for the project defined in the pom to build and unit test your software is used to run the mainClass. This comes in quite handy if your program uses many jar files. I used to use a Windows batch file (copied from the Tomcat startup script catalina.bat) to run little test programs. This Maven profile technique is much easier to use for me, since I use Maven for most all of my Java development.

Successfully accessed Facebook with OpenID

Saturday, May 23rd, 2009

I have successfully accessed Facebook with my OpenID. I learned that Facebook was acting as an OpenID relying party, meaning Facebook will accept some other credentials than ones provided by Facebook to access your Facebook account. I discovered this capability when reading the post OpenID’s Tipping Point. It was very easy to set up. Here are the steps I went through in Facebook to link an account via OpenID:

Settings -> Linked Accounts -> Add a new linked account: -> OpenID…

I then entered my OpenID URL and clicked “Link New Account”.

Using OpenID to access Facebook is a little bit different than other apps that I have used to authenticate with OpenID. To use OpenID to authenticate to Facebook, you actually authenticate with your OpenID provider first before accessing Facebook. Then when you access Facebook, it recognizes the existing OpenID authenticated session and proceeds to take you to your Facebook “Home”.

This is a great enhancement to Facebook. It makes it much more convenient for me to access the application.

Authenticate via OpenID

Wednesday, March 18th, 2009

You can now use OpenID to authenticate at this blog! w00t!

I have just installed the WordPress plugin OpenID (version 3.2.1). Installation was very simple: just upload the “openid” directory to the “plugin” directory and then active the plugin. The plugin allows you to assign multiple OpenIDs to your account to log in to your blog account.

Remote desktop connection tip

Wednesday, March 18th, 2009

Today I am working from home because Sydney is sick. I therefore connect via the VPN to my work computer. I use Microsoft Remote Desktop Connection to connect to my work computer. But periodically I have problems typing into the remote computer: whenever I type a ‘u’ character, the Microsoft Utility Manager pops up.

After doing a bit of searching on Google, I came upon this post “Windows key “stuck” in Remote Desktop…“. This seemed to accurately describe my problem. But, the first comment in the post was able to work around my particular problem:

The best workaround that always works for me is:

1. Close the RD window
2. Open new RD but make sure the “Apply Windows key Combinations” is set to “On the remote computer”
3. Now press the Ctrl+Alt+End and lock the computer
4. Log in again and it should work.


I put this here so that I can remember it for the next time. (Yeah, I pretty much expect that this condition will happen again.)