Archive for the ‘Project’ 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


webLightSwitch Project Announcement

Wednesday, January 25th, 2012
Screen shot of webLightSwitch running in the Android browser

Screen shot of webLightSwitch running in the Android browser

I have developed a new project called webLightSwitch. You can find details about the project on the webLightSwitch project page. The project is a simple but useful program to allow me to control some of the lights in my home via a web interface. This allows me to use my mobile phone to turn on and off the lamp or the outdoor lights at my house. The control software is written in JavaScript and runs on a BeagleBone using node.js. The user interface, as seen in the screen shot, is implemented with jQuery Mobile to make the interface touch friendly. The lights are controlled by Smarthome INSTEON controllers. The BeagleBone communicates with the lighting controllers via a Smarthome PowerLinc Modem.

I have been running the software for over a week now. With it being winter right now in Iowa, it gets dark well before I arrive home from work around 6PM. Using my mobile phone to be able to turn on the outdoor lights is very convenient. The experience is similar to my automatic garage door opener: drive up to drive way, press button to open garage door, and press button to turn on outside lights.

I plan to develop a more advanced home automation system, but this simple system has proven itself to be useful. In addition to the webLightSwitch project page, you can find the source code on GitHub and a video demonstration on YouTube.

Roadmap: PocketMod for MouseCal

Wednesday, July 23rd, 2008

I have been a fan of the Hipster PDA for years now. I carry it everywhere I go. So when I created MouseCal, I had a desire to “integrate” it with the Hipster. I have been trying to figure out the best way to do this. One idea that I have is to implement a PocketMod with a calendar/agenda of events. I have some incentive to try and develop something soon, as I will be going to Disney World at the beginning of August. This will be a good oportunity to “field test” a PocketMod with MouseCal data.


Friday, July 18th, 2008

I have just launched MouseCal. MouseCal is a web application that publishes the operating hours of the Walt Disney World parks in iCalendar format. The iCalendar data can be displayed in online calendars, like Google Calendar. This can be very useful when planning your next trip to Walt Disney World. For instance, after adding a park calendar to Google Calendar, you can visually see when it opens and closes. It will also include any Extra Magic Hours that the park has for the particular day. This information can be useful not only for determining when you plan to visit the parks, but also in planning where you will eat. Dining at Disney has become quite popular. It has become common that you need to make advanced dining reservations for many of the popular locations. For instance, I just made an ADR on Wednesday, July 16, 2008 for January 12, 2009, 180 days away, for breakfast at Cinderella’s Royal Table. This is a “character meal”, where the Disney princesses visit you while you eat, inside Cinderella’s castle. (The icon for the Magic Kingdom.) The calendar information from MouseCal can help you decide when to make your ADR. For instance, you may see that a park is open later with an Extra Magic Hour evening so you plan on a later dinner. Or you see that the Magic Kingdom will be open until 2 am; so don’t make an ADR for breakfast the day after–you’ll probably want to sleep in a bit. (Yeah right! How can anyone sleep at Walt Disney World. I mean, it is too exciting to sleep. :-) )

Akount “revision 12″ released

Sunday, April 27th, 2008

This update fixes some security issues related to cross site scripting. User entered data is now escaped with the PHP “htmlspecialchars” function.

My first Butterfly program… success!

Monday, April 7th, 2008

My first program, Blinky, from the “C Programming for Microcontrollers” book has been downloaded to my Butterfly ATMega169 and works. The program cycles through 8 LEDs, turning one LED on at a time. It looks like the Cylon robots (old school – or the newer Cylon Centurions from the new series) robots. (Or the original KITT from “Knight Rider”.)

I had a problem initially with downloading the “hex” file to the Butterfly. It appeared to be the serial port… ahhhh, serial ports. So, if you get the Butterfly++ Mini-Kit, you get a DB-9 female connector and some wire. The “Butterfly++ Mini-Kit Assembly Instructions”, and the book, instruct that you are to wire the DB-9 connector to certain holes on the Butterfly. The instructions indicate that you cross the transmit and receive lines from the Butterfly to the connector. Okay, all is good… so far.

It is very hard to find a serial cable now: USB rules. But I did find a USB-Serial adapter at Best Buy. One end is a USB connector and the other end is a DB-9 male connector. I installed the driver, for Windows XP, and installed the cable. It installed like a charm as “COM5″. I was able to use the terminal program provided on the CD with the book and use “COM5″ and communicate with the built-in Butterfly program to set my name for the “name tag” function of the factory-programmed Butterfly.

But then when I used the provided AVR Studio to try and download the Blinky program to the Butterfly, AVR Studio couldn’t find a suitable device. Hmm. It appeared the AVR Studio provided on the book’s CD wasn’t working with the USB serial device. I even tried upgrading to the latest AVR Studio downloaded from the Atmel site. It still wouldn’t program.

I did have a “real” serial port on my computer, which is a DB-9 male connector. But I couldn’t find a DB-9 M-F connector in my collection of cables. I had null modem DB-9 F-F and DB-9 M-M (null modem cables have the transmit and receive links cross-linked). Then I thought, wait! The Butterfly has a DB-9 female connection and the computer has a DB-9 male connector; just hook them together. The problem is the Butterly DB-9 female connector is connected to the Butterfly with about 2.5 inches of wire. So it took a bunch of rearranging to get the Butterfly close enough to the serial port on the computer, which is in the back of the computer. But I was able to get the Butterfly, the power supply, and the breadboard with the LEDs for the Blinky project close enough. Now, with the Butterfly directly connected to “COM1″, the AVR Studio found the device. I was able to download and program the Blinky.hex file. After successfully downloading to the Butterfly and cycling the power to the Butterfly (and moving the joystick “up”), Blinky started up and blinked the LEDs, sweeping back and forth.

So it appears that I need a DB-9 M-F “straight through” serial cable. (I have seen this type of cable referred to as an “extension” serial cable too. No wonder everyone likes USB better-it just seems to work, but it is more complex at the signal and component level.) I was able to find at Cables for Less a six foot DB-9 male to female cable for $1.89. I ordered it. With shipping the total came to $8.48. Hopefully it will come soon so that I can get the Butterfly out from behind my computer. But at least I have successfully tested the ability to program the Butterfly.

(I think that there is some way to download the hex file using avrdude instead of the AVR Studio. This may allow the USB-Serial adapter cable to work on “COM5″. But I haven’t had a chance to try that yet.)

Butterfly++ WORKS!

Saturday, April 5th, 2008

AVR ButterflyI had purchased a “Book + Butterfly + Projects Kit” from Smiley Micros some time ago. The AVR Butterfly is a demonstration board for a Atmel AVR ATmega169PV microcontroller. The package that I purchased included, in addition to the Butterfly, a book and some components in the “project kit” to execute the samples from the book. The first thing that you have to do is add a connector it the board so that you can add a serial port connection. The serial port connection is used to download code to the microcontroller. The kit includes some wires and a female DB-9 connector which you get to solder together. I did it (successfully). The kit also includes a battery pack that you get to mod to add an LED as a power indicator and some headers to solder to the Butterfly to make it easier to attach and reconfigure wires to the device.

After performing this preliminary soldering, I followed the test procedures to make sure that it works. I was able to power the Butterfly from the external battery source and download my name via the serial port to the Butterfly. (The Butterfly has a sample program that will display your name on its LCD display.)

Now that the preliminary work is done, I can try the samples from the book… (I am finally putting my EE degree to use!) and maybe write my own code. (Yeah, I do write code, like web applications, for a living. Not usually something as cool as making blinking LEDs!)

Akount “revision 11″ released

Saturday, March 29th, 2008

This update fixes the cookie used to track the type of authentication last used. Akount currently supports username/password and OpenID authentication. When you successfully authenticate, a cookie is used to track the type of authentication used so that the same authentication can be used by default the next time you need to authenticate.

Akount “revision 10″ released

Saturday, March 22nd, 2008

I released “revision 10″ of my personal finance web application moments ago. This release provides a visible indication if a transaction is a future transaction. Future transactions have a gray background and are in italics. I also added a confirm dialog before deleting a transaction. (I accidentally deleted a transaction the other day. This wasn’t a problem before, but with the recent feature enhancement to allow transaction to be duplicated, there is now a link to duplicate a transaction right next to the link to delete a transaction. I accidentally clicked the delete instead of the duplicate link. Oops. This is now fixed.)