FlaskVoice – Part 1: UI Design

I came up with a simple name for my Google Voice alternative called FlaskVoice.  I’m going to work with the Flask framework to build this tool and have it interface with my Twilio account to build my own personal IVR and voicemail system.

With a project like this that I’ve never done before, the hardest part is figuring out where to start.  I thought the easiest place to start is with some use cases and a simple UI to capture the basic functionality.

I took a look at the Google Voice interface and mapped it out to see where things were placed and to get a general feel of the application workflow.  Here is a shot of the sketch I completed of the interface:

IMG_1062-0

To start I thought that I would basically need a table structure to show the list of calls, texts, and voicemails I have stored in my Twilio account.  At this stage I’m not trying to do all the things you can do with Google Voice but I do need to cover the basic functionality of listing all communications with my Twilio phone number.  Based on that requirement I came up with a simple UI design that provides a list of the interactions with their respective type, date, who made the call or sent the text, and the content of the message.  Here is the UI design I sketches out for the app:

IMG_1063-0

It includes a label for the logo and a list of transactions that will be displayed within the admin interface.  We may revisit this after we build and implement the basic application but for now this will work.

If you are wondering about the sketch pad I used I bought some great products from a company called UI Stencils (http://www.uistencils.com) that makes stencils for building web apps, mobile apps, and anything else you want to build.

In the next post, let’s look at the data model for the application and see how we can use Flask and the examples I have to build this out.

Building a Google Voice Replacement with Twilio and Python

twilio

I think I’ve found a project I want to work on to learn how to develop web applications with the Python language.

I have been a fan of the Twilio API for a year after completing the Ruby exercises on Codecademy.  I’ve enjoyed writing small snippets to do small things like send my wife an SMS to say I was coming upstairs from my home office.  Recently I started using my Google Voice number to facilitate calls with my students that I teach at various local schools.  The app is great when it works and I have not been getting calls passed through to me the way they should.

So I decided build a Google Voice alternative with Twilio and Python.  While I don’t know enough to simply start coding the app, I have enough of the basics with the language and my technical background to start putting together the app.  This will be a great way to create something useful while learning the nuances of the Python language and its ecosystem.

So the next series of posts will be my entire process for putting together what I call a “Personal IVR and Voicemail System” with Twilio and Python.  I’ll include the code I create or use from the help docs to build the solution.

This will be interesting, fun, and challenging at the same time.

Python – My New Toy

python.sh-600x600

I haven’t written anything in a while so I failed to live up to my once-per-week blogging commitment.  That’s okay since I’m only doing this for me but I will work on posting a little more frequently.

Anyway, I recently discovered the versatility and power of the Python programming language.  How did I come across this wonderful tool and never had an opportunity to work with it before is something I wondered.

I teach a statistics class for a local university in their MBA program.  One of the things I noticed was that the students had weak Microsoft Excel skills as a whole.  That observation led me to think about introducing something else to help with the computational part of the class that might also be fun to work with during the process.

I remembered one of my coworkers at my last job mentioned that she was working on a project that involved using Python for data analysis.  At the time I didn’t give it much thought.  Then I was on Codecademy and saw that there was a Python module.  I figured it was worth a try so I starting working with the lessons on Python.  5 days later I was through the entire course (between work and family commitments) and was totally stoked about the language.

I went out and bought a Raspberry Pi; which uses Python as its coding language of choice.  After hooking the unit up to my LCD and plugging in a wireless USB mouse and keyboard I was off and running.  I was able to write some scripts and do some neat things with this computer that was the size of a credit card and only cost me $35.

Now I’m really stoked.  I found some modules to help with my statistics class.  I started playing with the Numpy and Scipy modules and was able to do some of the analyses that my students complete in a short amount of time.  Where I fell off the boat totally was when I went back to Codecademy and learned how to use Python to interact with APIs.  I started researching APIs that had Python SDK or wrappers and found some that I use to make cool stuff.

When I was learning Ruby a few years ago I discovered a framework called Sinatra that made it really easy to write web apps and apis.  I found that Python has a similar framework called Flask that I’m experimenting with to build small apps.  The Rails equivalent is called Django so I’m thinking I will be spending some time with these two frameworks to understand when to use one versus the other.

In the end, I think I found a new toy that my help me do all the things I want to do with the same language.  That is in itself very cool.

The 6P Framework for New Job Onboarding

When I worked on my MBA I focused on marketing and learned about the 4Ps of marketing framework (price, promotion, product, and placement). I always thought this framework was fundamental to my understanding of the marketing function and how it adds value to the organization. It was also easy to remember to the exam.

I thought it would be a great exercise to come up with a similar framework for starting a new job at a new company. I started a new assignment with a large manufacturing company this week and I’m using the following 6P framework to get my feet wet:

  • Products, Positioning and Proposition. I think it is important for every new employee to learn as much as you can about the products and services the company creates and distributes to customers. This knowledge will help you connect the work you are doing to the end deliverable that is going to the people the organization was created to serve. This leads to the company’s value proposition and what makes it different from others in the industry. This is the “what” of the equation and it is important to know what you provide to the market.
  • Processes and Procedures. The company over time has developed its way of doing things and it is important to understand why certain processes and procedures are in place. This is the “how” that every employee should understand and the context for why the process was created. Everyone get oriented to the employee processes and procedures from the human resources department as a part of the onboarding process, but employees should also learn more about how the company operates its business in general.
  • Policies and Purpose. The policies are the boundaries of the organization. These rules and regulations help you put the organization and its work into perspective and help you understand the space where you can operate. Along with learning the policies you should learn the purpose of why those policies were put in place. No one wants to be told what to do and not do without understanding the purpose so take the time to ask questions about why the policies were created.
  • People and Personalities. It is always good to learn as much as you can about your team, your manager, your organizational structure, and the senior leadership of the company. It is also just as important to learn about their way of working, their interests, and their incentives. This knowledge is good to have so you can understand how decisions are made and the motivation around those decisions. You should spend time understanding the roles of the people you interact with and their work styles so you can prepare and be equipped to be effective in your role.
  • Perception and Perspective. The organization you work for has a reputation in the industry and it is good for you to know where the company stands in the market it competes. I think it is good to know what customers, collaborators, and competitors think about your organization and its impact on the industry. Do some research on the industry and its participants to find out how your company is viewed and what the industry perception is of your organization. Also look at the industry factors that may affect your company and begin to get familiar with the impact those factors have on the company’s performance.
  • Performance, Potential, and Possibilities. Last but not least, do all you can to understand how your performance is going to be evaluated and measured. You need to be clear on what you need to do to meet and exceed expectations of your performance while learning how to manage those expectations. I had a previous manager teach me that your performance informs your manager and the organization of your potential. When company leaders and persons of influence see your potential, then you will gain the exposure that leads to new possibilities for your career.

This is the framework I’m using to navigate my new organization. If you have suggestions please feel free to make comments.

I Hate Passive-Aggressive Behavior

Have you ever had a night where you had so much on your mind that you couldn’t sleep?

Every now and again I have one of those nights.  The last one I had made me think about something that I don’t like to deal with in personal interactions:  passive-aggressive behavior.

I’ve always been a person that likes to deal with issues directly yet respectfully.  Open, honest, transparent communication is always best when trying to get your point across to the other party.  However, I’m learning that people aren’t comfortable with direct communication and are more comfortable with communication by proxy.  This type of communication is preferred by individuals who don’t want to face the person they are having an issue with and resolve the issue amongst themselves.  My questions is what concerns you so much that you have to go to third party and get them to address your issues?

I’m learning how to navigate these types of interactions better but I still don’t like that they occur.  I’ve been told that it is a regional thing but I don’t want to subscribe to that.

He Looked Beyond My Faults – Organ Music For Nana and Mama

While I was getting ready for choir rehearsal tonight, I thought about a song my mama used to sing when I was growing up. She sang in the church and my dad played the piano in church. She had a way of singing “He Looked Beyond My Faults” that if you weren’t careful it would make the hair stand up on your neck. I tried to capture some of that with this attempt of playing the song on a Hammond B3 organ. The only issue I had is that the pedal board went out at the end of this video but we made up for it. It is great to reflect on great times in your life and music helps me encapsulate those moments.

Lunch Time Piano Break

I love to take my lunch break and go to the nearby music store. There are Yamaha and Steinway pianos there and I love the sound of the baby grand pianos.

I took a break the other day and played some John Legend on a $64,000 Steinway piano and it sounded like a million dollars to me. I have to get back there and play some more in the near future.

The Gift of Making Music When You Want

Colorful-Music-Wallpapers-55

I’ve been a musician for almost 40 years and it is one the best gifts I could have ever received.  My dad was church musician and he played the guitar and the piano for a small congregation when I was growing up.  He passed away when I was 7 but I was able to receive some of that talent from him.  My brother also is a musician who received some of that gift as well.

Over the years I’ve performed, written, and enjoyed music in different venues.  I’ve played in concert bands, marching bands, community bands, and small club groups.  I’ve recorded and produced music and continue to compose in the comfort of my own home.  All of this was possible by the wonderful gift of music I received at an early age.

I got my first paying ‘gig’ when I was 12 years old.  I started playing for my church for the children’s choir.  I remember getting $30 a month to play the piano (I was a rich in my mind).  I currently play the keyboard for a local church and continue to enjoy serving other through my music.

If you are interesting in hearing some of the music I’ve writing check out my Soundcloud account at https://soundcloud.com/david-edgerton-jr.  Let me know what you think.