Talk Python Build 10 Apps Review

Michael Kennedy over at Talk Python had a sale on his courses over the holidays so I took the plunge and bought them all. I have been listening to the podcast for several months now so I knew that I wouldn’t mind listening to him talk during a course (which is important!).

The first course I watched was ‘Python Jumpstart by Building 10 Apps’. The apps were:

  • App 1: Hello (you Pythonic) world
  • App 2: Guess that number game
  • App 3: Birthday countdown app
  • App 4: Journal app and file I/O
  • App 5: Real-time weather client
  • App 6: LOLCat Factory
  • App 7: Wizard Battle App
  • App 8: File Searcher App
  • App 9: Real Estate Analysis App
  • App 10: Movie Search App

For each app you learn a specific set of skills related to either Python or writing ‘Pyhonic’ code. I think the best part was that since it was all self paced I was able to spend time where I wanted to exploring ideas and concepts that wouldn’t have been available in traditional classrooms.

Also, since I’m fully adulted it can be hard to find time to watch and interact with courses like this so being able to watch them when I wanted to was a bonus.

Hello (you Pythonic) world is what you would expect from any introductory course. You write the basic ‘Hello World’ script, but with a twist. For this app you interact with it so that it asks your name and then it will output ‘Hello username my name is HAL!’ … although because I am who I am HAL wasn’t the name in the course, it was jut the name I chose for the app.

My favorite app to build and use was the Wizard App (app 7). It is a text adventure influenced by dungeons and dragons and teaches about classes and inheritance an polymorphism. It ws pretty cool.

The version that you are taught to make only has 4 creatures and ends pretty quickly. I enhanced the game to have it randomly create up to 250 creatures (some of them poisonous) and you level up during the game so that you can feel like a real character in an RPG.

The journal application was interesting because I finally started to get my head wrapped around file I/o. I’m not sure why I’ve had such a difficult time internalizing the concept, but the course seemed to help me better understand what was going on in terms of file streaming and reading data to do a thing.

My overall experience with the course was super positive. I’m really glad that I watched it and have already started to try to use the things that I’ve learned to improve code I’ve previously written.

With all of the good, there is some not so good.

The course uses it’s own player, which is fine, but it’s missing some key features:

  1. Time reaming
  2. Speed controls (i.e. it only plays at one speed, 1x)

In addition, sometimes the player would need to be reloaded which could be frustrating.

Overall though it was a great course and I’m glad I was able to do it.

Next course: Mastering PyCharm!

Setting up ITFDB with a voice

In a previous post I wrote about my Raspberry Pi experiment to have the SenseHat display a scrolling message 10 minutes before game time.

One of the things I have wanted to do since then is have Vin Scully’s voice come from a speaker and say those five magical words, It's time for Dodger Baseball!

I found a clip of Vin on Youtube saying that (and a little more). I wasn’t sure how to get the audio from that YouTube clip though.

After a bit of googling1 I found a command line tool called youtube-dl. The tool allowed me to download the video as an mp4 with one simple command:


Once the mp4 was downloaded I needed to extract the audio from the mp4 file. Fortunately, ffmpeg is a tool for just this type of exercise!

I modified this answer from StackOverflow to meet my needs

ffmpeg -i dodger_baseball.mp4 -ss 00:00:10 -t 00:00:9.0 -q:a 0 -vn -acodec copy dodger_baseball.aac

This got me an aac file, but I was going to need an mp3 to use in my Python script.

Next, I used a modified version of this suggestion to create write my own command

ffmpeg -i dodger_baseball.aac -c:a libmp3lame -ac 2 -b:a 190k dodger_baseball.mp3

I could have probably combined these two steps, but … meh.

OK. Now I have the famous Vin Scully saying the best five words on the planet.

All that’s left to do is update the python script to play it. Using guidance from here I updated my file from this:

if month_diff == 0 and day_diff == 0 and hour_diff == 0 and 0 >= minute_diff >= -10:
   message = '#ITFDB!!! The Dodgers will be playing {} at {}'.format(game.game_opponent, game.game_time)
   sense.show_message(message, scroll_speed=0.05)

To this:

if month_diff == 0 and day_diff == 0 and hour_diff == 0 and 0 >= minute_diff >= -10:
   message = '#ITFDB!!! The Dodgers will be playing {} at {}'.format(game.game_opponent, game.game_time)
   sense.show_message(message, scroll_speed=0.05)
   os.system("omxplayer -b /home/pi/Documents/python_projects/itfdb/dodger_baseball.mp3")

However, what that does is play Vin’s silky smooth voice every minute for 10 minutes before game time. Music to my ears but my daughter was not a fan, and even my wife who LOVES Vin asked me to change it.

One final tweak, and now it only plays at 5 minutes before game time and 1 minute before game time:

if month_diff == 0 and day_diff == 0 and hour_diff == 0 and 0 >= minute_diff >= -10:
   message = '#ITFDB!!! The Dodgers will be playing {} at {}'.format(game.game_opponent, game.game_time)
   sense.show_message(message, scroll_speed=0.05)

if month_diff == 0 and day_diff == 0 and hour_diff == 0 and (minute_diff == -1 or minute_diff == -5):
   os.system("omxplayer -b /home/pi/Documents/python_projects/itfdb/dodger_baseball.mp3")

Now, for the rest of the season, even though Vin isn’t calling the games, I’ll get to hear his voice letting me know, “It’s Time for Dodger Baseball!!!”

  1. Actually, it was an embarrassing amount


One of the issues that any medium- to large-organization can encounter is how to deal with requests that place a requirement of work from one department to another. Specifically, requests for something shiny and new (especially technology).

In the first educational session of the day, Strategic Portfolio Management: “Governing the Ungoverned” I heard Effie Econompolous discuss UI Health’s transformation from an organization that had very little control over their IT projects to one that has transformed into a highly regulated Project Management Organization.

My key takeaways from this talk were:

  • segregation of Projects (with a capital P) from Incidents and Problems
  • The IT Roadmap was posted on the intranet for all to see
  • Projects that are ‘IT’ related don’t just include the time of resources from IT, but also time and resources from impacted departments throughout the organization

These are some amazing points. My only real question was, If you segregate Projects from Incidents and Problems, how do you ‘train’ users for Project submission. How are they do know the difference between the two (sometimes users aren’t even sure which system is broken when reporting problems in the first place). I’m not sure of the answer, but I’m sure it’s just thought more education and tighter controls over submission of requests.

There was a real time poll during the session which asked, ‘What is the most significant challenge in your organization?’. Fifty percent of attendees that responded indicated inconsistent priorities as the (which is what I answered as well). Turns out, we’re not alone.

A lot of the talk focused on the process that UI Health uses which had gone through 3 iterations in 2 years. It seemed like it would work for a large(ish) hospital or hospital system, but seemed too beauracratic for my organization.

Overall, a very good talk and I’m glad I went. I believe I have some real actionable ideas that I can take away.

My second educational session of the day Improving Patient Health Through Real-Time ADT Integration I heard about a Managed Medical Group from Minnesota and their journey to get ADT feeds into the Care Management system.

I was hoping to hear something a little more helpful, but while their situation was similar to the one we have at my organization, it was different enough that all I really heard was that, although my organization doesn’t have ADT feeds (yet) we seem to be a bit ahead of them in many other areas of managed care.

The tips that they offered up (getting user buy-in, working through issues with all of the various vendors) were things I had already known would need to be done.

One thing I did hear, that I hope I don’t have to go through, is a ‘Live’ testing process where we get all of the vendors, hospital IT and group IT on the phone to test the system in a ‘Live’ environment to identify deficiencies.

I also hope that any user manual we have to create isn’t 70 pages like the one they have (eeek!!!).

I think it will also be important to have metrics regarding efficiencies before and after any ADT implementations to make sure that we have actually done something helpful for the organization and the member.

My third talk Closed Loop Referral Communications was a bit of a disappointment. A group from North Carolina reviewed how they closed the loop on referral management.

I was hoping for some key insights, but it ended up being mostly about stuff that we had already done (identifying workflow issues, automating where possible) but they still have a fundamental issue with external provider referrals (just like us). I guess I was just hoping that someone would have solved that problem, but if they have, they aren’t sharing the information.

My forth session Breaking Down Barriers with Master Data Management and Data Governance was really interesting and in the same vein as the first talk of the day.

Several good points mentioned during the talk:

  • Limited access to data leads to duplication of efforts and numerous sources of the ‘truth’
  • If you have Tech and People then you get ‘automated chaos’ … this is why we NEED process
  • Difficult to turn data into actionable information
  • Significant barriers to accessing information
  • use reference data regarding report creation … instead of asking the report requester questions, you need domain experts to define various categories (Diabetes, sepsis).
  • Best Version of the Truth and Golden Record … need to review this and see how it applies to DOHC/AZPC

The most astounding thing I heard was that each report costs between $1k and $5k to create … 40% are used 5 times or less! What a source of potential waste that could perhaps be ‘solved’ by self service. We need to have metrics that show not many reports have we created, but instead how many are bing used!

The lessons learned by speaker :

  • Governance: keep information at forefront for all front line areas
  • Governance: not a one time effort, it’s on-going
  • KPI Standardization: requires resilience
  • KPI Standardization: processes that work around the system need to be identified and brought into the fold

The fifth talk of the day From Implementation to Optimization: Moving Beyond Operations. Much of what was presented resonated with me and was stuff that we have dealt with. It was nice to know that we’re not alone! The most interesting part of the talk were the 2 polls.

The first one asked, “Do you use an objective tool for prioritization of incoming work?” Most responses were for No, but would be interested (47%); next response was yes but we bypass (32%). Only about 20% have one, use it and it’s effective

The second poll asked, “Do you collaborate with Clinical Stakeholders?” Most responses were yes and split 2-1 between Yes and there’s tension to Yes and we’re equal partners (which is where I think we’re at).

My Last talk of the day, How Analytics Can Create a Culture of Continuous Improvement. It was an interesting talk that focused on using Analytics to drive continuous improvement. Some of the things that really caught my attention were the ideas of implementing continuous improvement is part of the job description. Part of that was something that is stated in the New Employee Orientation, “Do the job you were hired for and make it better.”

Another intersting point was that there is no one Big Bang solution for Emergency Department throughput (though the idea can be applied to any problem you’re facing). You need to look at improving each step a little bit along the way.

But, in order to do this effectively, you need data, team and a process. This reminded me of the Breaking Down Barriers with Master Data Management and Data Governance talk I was at earlier in the day!

It was a great final day at HIMSS.

I’ve learned a ton at this conference and writing about it (like this) has really helped to solidify some thoughts, and make me start asking questions.

I’ll need to remember to do this at my next conference.


Day 2 was a bit more draining than day 1, but that was mostly because I made my way into the exhibition hall for the first time. That many people and that much cacophony always leave me a bit … drained.

On the flip side I went to several good presentations (a couple on Block Chain).

Today’s sessions were:

  • Empowering Data Driven Health
  • Blockchain 4 Healthcare: Fit for Purpose
  • The Use of Blockchain to Improve Quality Outcomes

One of the more interesting things I heard today was that in Health Care, tech spending has gone up (over the last 20 years) but so has overall health spending. Usually we see Tech spending go up and other spending levels off (or goes down!).

Something else to consider (that I never had) was that “we need to think about doing what’s most cost effective for a person in their lifetime not just episodically!

The Blockchain sessions I went to were enlightening, but I’m still not sure I understand what it is and how it works (perhaps I’m just trying to make it more complicated than it is).

That being said, the consensus was that Blockchain is not a panacea for all the ails us. It is a tool that should be used in conjunction with current systems, not a replacement of those systems.

Something else of note, there isn’t a single implementation of Block Chain, there are almost 20 variations of it (although the IEEE is working on standardizing it). This leads me to believe that it is simply too new and too ‘wild’ to be implemented just yet.

That being said, I think that if/when Microsoft bundles or includes BlockChain (in some way) into SQL Server, then it might be the time to look at implementing it in my organization.

In my last session (another on eon BlockChain) the idea of using BlockChain to effect quality measures was discussed. The main point of the speaker was that Blockchain may allow us to give agency to patients over their health data.

Another interesting point was that Blockchain may be able to allow us to dynamically observe quality measurement instead of just at point of care. This could lead to higher quality and lower costs.

Overall, the BlockChain talks were good, and kind of helped point me in the right direction on what questions to start asking about it.

Well, day 2 is in the books. One more day of educational sessions and exhibits!

HIMSS Day 1 Impressions

I was able to make it to 5 educational sessions today. And the good thing is that I learned something at each one. I think the highlight of the day for me was actually my first session titled, Stacking Predictive Models to Reduce Readmissions.

A couple of key things from that presentation was the idea of focusing on a patient that readmits, not just from a clinical perspective, but from a human perspective. There were lots of technology that they used to help the care coordinators identify who was going to readmit, but the why of the readmission was always done via human interaction. I think that may be the single most important thing to remember.

Something else that was mentioned was that the grou got their tool out quickly instead of trying to be perfect. It went through a couple of iterations in order to get a tool that was usable by all their various clinics.

Some other key takeaways from today:

  • We need to focus on Augmented Human Intelligence instead of Artificial Intelligence (from How Machine Learning and AI Are Disrupting the Current Healthcare System)
  • Don’t treat Cloud Service Providers as Plug and Play vendors (from HIPAA and a Cloud Computing Shared Security Model)
  • Creation of a committee of ‘No’ to help flesh out ideas before they are implemented (from Intrapreneurship and the Approach to Innovation From Within)
  • Think about how to operationalize insights from data, and not just explore the data (from Beyond BI: Building Rapid-Response Advanced Analytics Unit)

That’s a wrap on day 1 at HIMSS. Day 2 looks to be just as exciting (meet with some vendors, attend some more educational sessions, go to a sponsored luncheon).

An Introvert’s guide to large conferences … or how I survived HIMSS 2018 (and 2017 and 2016)

The thing about HIMSS is that there are a lot of people. I mean … a lot of people. More than 43k people will attend as speakers, exhibitors or attendees.

Let that sink in for a second.

No. Really. Let. That. Sink. In.

That’s more than the average attendance of a MLB game of 29 teams. It’s ridiculous.

As an introvert you know what will drain you and what will invigorate you. For me I need to be cautious of conferencing too hard. That is, I need to be aware of myself, my surroundings and my energy levels.

My tips are:

  1. Have a great playlist on your smart phone. I use an iPhone and get a subscription to Apple Music just for the conference. This allows me to have a killer set of music that helps to drown out the cacophony of people.
  2. Know when you’ve reached your limit. Even with some sweet tunes it’s easy to get drained. When you’re done you’re done. Don’t be a hero.
  3. Try to make at least one meaningful connection. I know, it’s hard. But it’s totally worth it. Other introverts are easy to spot because they’re the people on their smart phones pretending to write a blog post while listening to their sweet playlist. But if you can start a conversation, not small talk, it will be worth it. Attend a networking function that’s applicable to you and you’ll be able to find at least one or two people to connect with.

The other tips for surviving HIMSS are the same for any other conference:

  1. Don’t worry about how you’re dressed … you will always be underdressed when compared to Hospital Administrators … you’re in ‘IT’ and you dress like it
  2. Wear good walking shoes (see number 2 about being under dressed)
  3. Drink plenty of water
  4. Wash your hands and/or have hand sanitizer
  5. Accept free food when it’s offered

Ok. One day down. 3+ more to go!