Publication: SMARTLock hybrid system for MMF

Carlson AR et al. A technique for reduction of edentulous fractures using dentures and SMARTLock hybrid fixation system. PRS GO 2017.

We are pleased to announce the publication of a new peer-reviewed, open-access paper in Plastic and Reconstructive Surgery – Global Open. This paper discusses use of the SMARTLock hybrid fixation system for establishment of mandibulo-maxillary fixation (wiring jaws together) in the context of facial trauma. A specific case presented describes how the system can be used when the patient is edentulous (missing teeth).

A PDF of the full manuscript may be downloaded from PRS GO.

Publication: Social implications associated with cleft lip/palate

Clefts of the lip and/or palate (CL/P) carry a social stigma that often causes psychosocial stress. The purpose of this study was to consider the association of cleft phenotype and age with self-reported aspects of psychosocial stress.

I’m pleased to share an open-access, peer-reviewed publication from Plastic and Reconstructive Surgery (PRS) Global Open.

A Population-Based Exploration of the Social Implications Associated with Cleft Lip and/or Palate

Glener AD, Allori AC, Shammas RL, et al. Plast Reconstr Surg Glob Open. 2017 Jun; 5(6):e1373.

Clefts of the lip and/or palate (CL/P) carry a social stigma that often causes psychosocial stress. The purpose of this study was to consider the association of cleft phenotype and age with self-reported aspects of psychosocial stress.

Children with nonsyndromic CL/P and unaffected children born between 1997 and 2003 were identified through the North Carolina Birth Defects Monitoring Program and North Carolina birth records, respectively. The psychosocial concerns of children with CL/P were assessed via a 29-question subset of a larger survey. Responses were analyzed according to school age and cleft phenotype (cleft lip with/without cleft alveolus, CL ± A; cleft palate only, CP; or cleft lip with cleft palate, CL + P).

Surveys were returned for 176 children with CL/P and 333 unaffected children. When compared with unaffected children, responses differed for CL ± A in 4/29 questions, for CP in 7/29 questions, and for CL + P in 8/29 questions (P < 0.05). When stratified by school age, children with CL/P in elementary, middle, and high school differed from unaffected children by 1/29, 7/29, and 2/29 questions, respectively. Middle school–aged children with CL/P were more affected by aesthetic concerns, bullying, and difficulties with friendship, and social interaction. Children with CL + P reported more severe aesthetic-related concerns than children with CL ± A or CP but experienced similar speech-related distress as children with CP only.

Social implications associated with CL/P are most pronounced during middle school, and less so during elementary and high school. This information identifies areas of social improvement aimed at reducing the stigma of CL/P.

Full text is available for free.

Setting up PyCharm

I love Sublime Text, and I recently wrote how I optimized it for Python development. But I’ve also admired PyCharm as a full-featured IDE. The problem is that PyCharm is visually cluttered, with buttons, toolbars, and windows everywhere. Certainly, there is a very steep learning curve.

Recently, while I was watching one of Michael Kennedy’s video courses (where the coding examples are done in PyCharm), I was inspired to give PyCharm a closer look.

I was happy to discover that there is a video playlist on YouTube that provides an in-depth Getting Started guide. The JetBrains web site also features a Quick Start guide with really excellent documentation/tutorials.

For scientists especially, be sure to check out IPython/Jupyter Notebook integration in PyCharm.

I plan to spend a lot more time going through this material.

Review: “Write Pythonic code like a seasoned developer,” by Michael Kennedy

As many of you know, one of the best podcasts related to Python is Talk Python to Me, by Michael Kennedy. If you haven’t listened to the podcast, you definitely should give it a try. I’m pretty certain you’ll find it terrific and want to subscribe.

Well, in addition to hosting the podcast, Michael Kennedy also runs a Python training program. I recently purchased one of his offerings, “Write pythonic code like a seasoned developer.” The course is aimed at intermediate-level Pythonistas — i.e., familiarity with the basic language features is expected, as this course focuses on teaching the most “Pythonic” way of doing things. The term Pythonic implies writing code and performing tasks in ways that are congruent with Python’s guiding principles. Usually, this leads to maximum efficiency with minimum effort, while also improving safety and readability.

The course covers the following broad categories:

  • Foundational concepts and style guidance from PEP 8
  • Dictionaries
  • Generators and collections
  • Methods and functions
  • Modules and packages
  • Classes and objects
  • Loops
  • Tuples
  • Python for humans

The course consists of 63 videos totaling around 4.5 hours of consecutive viewing. If you pause to test out some of the things you’re learning, it’s probably closer to 12 or 24 hours of lecture/practice. The videos are very well produced, with plenty of code examples and excellent narration. Accompanying these videos is a source-code repository available on GitHub. All this for $39.

Overall, I found the course very worthwhile.

Sometimes, video is the gentlest and/or most expedient entryway to a new topic. For some time now, I have owned Luciano Ramalho’s impressive Fluent Python: Clear, Concise, and Effective Programming. I must have picked it up (and put it down) four times already — every time, I thought, “I’m not ready for this,” and would postpone the investment in developing my Python skills. Well, I think what I needed was this video course by Michael Kennedy. It was the perfect introduction to the advanced concepts in that book.

After having thoroughly enjoyed Michael Kennedy’s course, I think I may be ready to pick up Fluent Python again, for real this time.

Review: “Sublime Python” video course by Dan Bader

Many people learning Python will recognize the name Dan Bader. He’s not only an experienced Python developer, but also a Python enthusiast who is dedicated to helping us improve our Python skills. He created PythonistaCafe, an online forum similar to Stack Overflow but arguably more friendly and inviting for novices. He also has a YouTube channel with lots of educational videos.

Recently, he published a video course called, “Sublime Python: The Complete Guide to Sublime Text for Python Developers.” This course is really great.

While most of my exploratory data-science work is done using Jupyter Notebooks, there is always a need for a text editor and/or IDE for development of longer “operational” code. In the past, I had tried PyCharm — it’s powerful, but I find the visual layout to be cluttered and confusing; there’s definitely a learning curve. On the other end of the spectrum, I used BBEdit for all my text-editing needs. It has some great features, but I struggled when it came to optimizing BBEdit for Python development. Several colleagues told me to check out Sublime Text 3 in the past, but I got very confused by all the packages and themes, and even the way you have to edit text files to change some preferences.

Dan Bader’s new course really simplifies this process. In this ~6-hour course, he takes you from ground zero (a fresh install of Python and Sublime Text on macOS, Windows, and Linux) to a fully optimized setup with syntax highlighting, code linting, git integration, and streamlined code building/execution. He even shows how to optimize certain tasks from the command line in Terminal. The video course did not cover setting it up your Build environment for a specific conda environment, but he helped me do so via email, and he has added this as a possible future update for the course.

This course really saves a lot of time — To discover all these tweaks on my own would have required several days of frustrating trial and error. Now, I have a really slick text-editing (quasi-IDE) environment for my common Python-development needs.

I highly recommend this course to folks who are struggling with finding a better solution for Python development.

Favorite podcasts

My daily commute and the time I spend mowing the grass are perfect opportunities to learn something new. I like to take advantage of that time by listening to podcasts. Below are some of my favorites, organized by category.

Incidentally, let’s talk podcatchers and podcast players: I used to favor Marco Arment’s Overcast app for iOS (iPhone and iPad). It was a rather nice app, the best-selling feature of which was “smart speed” mode. But I got tired of the design tweaks and with the experimentation with financial models (ultimately gravitating toward a subscription model). Another negative was the lack of a macOS or tvOS counterpart. Since Overcast maintained its own podcast list, I couldn’t pick up where I left off using the native Apple Podcasts app on my iMac or Apple TV.

When Overcast transitioned to the subscription model, I decided to give Apple’s native Podcasts app another try. It’s actually a pretty reasonable app. It syncs across the entire ecosystem (iOS, macOS, and tvOS), so things are always in sync and I can resume playback anywhere. It lacks “smart speed,” but playback at 1.25x is close enough for most podcasts. It now has support for chapter lists, too, which was another good feature from Overcast. So overall, Podcasts fits the bill.

Another very good podcast player is Castro. What distinguishes this player is its triage-based approach toward listening: Only one playlist exists (the Queue). When new podcasts arrive, they are placed in an inbox-like triage zone, where you may view their description and decide either to (1) add it to the queue, or (2) archive it. Archived podcasts are out of sight and out of mind, so you can take a deep breath and stop worrying about how much you’re falling behind on listening to all those podcasts out there. The archive is also where podcasts from your queue go after you’ve finished listening to them. The archive is easy to search through, if you ever want to find one of those old episodes. Oh, Castro also has a lot of bells and whistles, including variable listening speeds, per-podcast settings, and a very clear overlay icon that lets you know when a podcast is downloaded locally or needs to be streamed (something that I wish Apple’s Podcasts app would learn from). Overall, Castro is a slam-dunk app: it gets so many things so very right. Where it falls short a bit is in an “easy” way to peruse through a specific podcast’s prior episodes. You can definitely do it, but it requires a lot of extra taps and swipes to find what you’re looking for. It does take some getting used to the one-listening-playlist-to-rule-them-all philosophy, so if you’re used to multiple topic-based playlists, perhaps Castro’s not for you. But it’s definitely worth testing out for a while.

And now, for the podcasts…

Tech enthusiasm

Computer science

Data science

  • Data Skeptic
  • Data Science at Home
  • Partially Derivative
  • Linear Digressions
  • TWiML&AI (This Week in Machine Learning & Artificial Intelligence)
  • Data Engineering Podcast
  • O’Reilly Data Show
  • Data Stories
  • Stats + Stories
  • Hadooponomics


  • Beyond the To Do List

General interest

  • HBR IdeaCast
  • TED Radio Hour
  • TEDTalks
  • The Allusionist