Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book

#187: Ready to find out if you're git famous?

Published Fri, Jun 26, 2020, recorded Wed, Jun 17, 2020

Sponsored by us! Support our work through:

Brian #1: LEGO Mindstorms Robot Inventor supports Python

  • Past
    • NXT 2006
    • NXT 2.0 2009
    • EV3 2013 (plus, weird post apocalypse thing going on)
  • Robot Inventor will be available Autumn 2020 (not sure what that means).
    • Controllable with both Scratch and Python
    • Great updates to help with STEM education
    • Instructions for 5 different robots
    • interesting:
      • 5x5 LED matrix
      • 6 input/output ports for connecting a variety of sensors and motors.
      • 6 axis gyro/accelerometer
      • color sensor
      • distance sensor
      • and Python!
      • Can be programmed with Windows & Mac, of course. But also iOS & Android tablets and phones and even some FireOS devices.
  • Related: MicroscoPy - IBM open source, motorized, modular microscope built using LEGO bricks, Arduino, Raspberry Pi and 3D printing.

Michael #2: Step-by-step guide to contributing on GitHub

  • by Kevin Markham
  • Want to contribute to an open source project? Follow this detailed visual guide to make your first contribution TODAY
  • Although there are other guides like it out there, mine is (1) up-to-date with the latest GitHub interface, (2) much more detailed, and (3) highly visual. Includes 16 annotated screenshots + 2 workflow diagrams.
  • The only prerequisite is that the reader has a tiny bit of Git knowledge. They don't even have to be a great coder, because what I suggest is that they start by fixing a typo or broken link in the documentation. That way they can focus on learning the contribution workflow!
  • Steps:
  • choose a project to contribute to
  • fork the project
  • clone your fork locally
  • load your local copy in an editor
  • make sure you have an "origin" remote
  • add the project repository as the "upstream" remote
  • pull the latest changes from upstream into your local repository
  • create a new branch
  • make changes in your local repository
  • commit your changes
  • push your changes to your fork
  • create the pull request
  • review the pull request
  • add more commits to your pull request
  • discuss the pull request
  • delete your branch from your fork
  • synchronize your fork with the project repository
  • Nice Tips for contributing code section too.

Brian #3: sneklang

  • Snek: A Python-inspired Language for Embedded Devices
  • An even smaller footprint than MicroPython or CircuitPython
  • Can’t wait for Robot Inventor? Snek supports Lego EV3.
  • “Snek is a tiny embeddable language targeting processors with only a few kB of flash and ram. … These processors are too small to run MicroPython.”
  • Can develop using Mu editor
  • Custom Snekboard runs either Snek or CircuitPython.
  • Or run Snek on Lego EV3.
  • Smaller language than Python, but intended to have all learning of Snek transferable to later development with Python.
  • “The goals of the Snek language are:
    • Text-based. A text-based language offers a richer environment for people comfortable with using a keyboard. It is more representative of real-world programming than building software using icons and a mouse.
    • Forward-looking. Skills developed while learning Snek should be transferable to other development environments.
    • Small. This is not just to fit in smaller devices: the Snek language should be small enough to teach in a few hours to people with limited exposure to software.
  • Snek is Python-inspired, but it is not Python. It is possible to write Snek programs that run under a full Python system, but most Python programs will not run under Snek.”

Michael #4: Oh sh*t git

  • via Andrew Simon, by Julia Evans
  • Does cost $10, no affiliations
  • This zine explains git fundamentals (what’s a SHA?)
  • How to fix a lot of common git mistakes (I committed to the wrong branch!!).
  • Fundamentals
  • Mistakes and how to fix them
  • Merge conflicts
  • Committed the wrong file
  • Going back in time

Brian #5: Why I don't like SemVer anymore

  • Brett Cannon
  • Interesting thoughts on SemVer
    • SemVer isn't as straightforward as it sounds; we don't all agree on what a major, minor, or micro change really is.
      • Is adding a depreciation warning a bug fix? or a major interface break?
      • What if projects depending on your project have CI with warnings as errors?
    • Your version number represents your branching strategy, so you choose a versioning scheme that's appropriate your branching and release strategy.
      • While maintaining multiple branches, x.y.z might make sense:
        • x - current release
        • x.y - current development
        • x.y.z - bug fixes
        • x+1 - crazy new stuff
    • If you aren’t maintaining 3+ branches at all times, that might be overkill
    • Maybe x.y is enough
    • Maybe just x is enough
    • Rely on CI, potentially on a cron job, to detect when a project breaks for you instead of leaving it up to the project to try and make that call based on their interpretation of SemVer; will inevitably disagree
    • Remember to pin your dependencies in your apps if you really don't want to have to worry about a dependency breaking you unexpectedly
    • Libraries/packages should be setting a floor, and if necessary excluding known buggy versions, but otherwise don't cap the maximum version as you can't predict future compatibility

Michael #6: git fame

  • via Björn Olsson
  • Pretty-print git repository collaborators sorted by contributions.
  • Install via pip: pip install --user git-fame
  • Register with git: git config --global alias.fame "!python -m gitfame``"
  • Run in a repo directory: git fame
  • Get a table of contributors including: Author, Lines of Code, Files, Distribution (stats), sorted by most contributions.


Patreon Shoutout:

  • We have 26 supporters at
  • Many donate $1 a month, and that’s awesome.
  • A few go above and beyond with more than that:
  • Special shout out to those above a buck:
    • Brent Kincer
    • Brian Cochrane
    • Bert Raeymaekers
    • Richard Stonehouse
    • Jeff Keifer
  • Thank you



Want to go deeper? Check our projects