Start Reading

#61 On Being a Senior Engineer

0 page


Sponsored by DigitalOcean:

Brian #1: PEP 412's dict key sharing for classes

"memory use is reduced by 10% to 20% for object-oriented programs with no significant change in memory use for other programs."
To benefit from this, make sure all attributes used in life of class instances are initialized within __init__().
Video from PyCon 2017

Brandon Rhodes The Dictionary Even Mightier PyCon 2017
Look at description at about 14 minutes on in the video

Suggested by Ned Letcher

Michael #2: Python Hunter

via Ivan Pejić
Hunter is a flexible code tracing toolkit, not for measuring coverage, but for debugging, logging, inspection and other nefarious purposes. It has a Python API, terminal activation (see Environment variable activation). and supports tracing other processes (see Tracing processes).
The default action is to just print the code being executed
Based on cython

Brian #3: Ten Things I Wish I’d Known About bash

I started with ksh on Solaris/HP-UX, used zsh for few years.
Mostly now, I use bash, because it’s everywhere. Mac/Windows/Linux
For windows: git for windows

Even if you don't need git, git for windows comes with fully integrated unix tools and bash and it just works as you expect.
you can launch windows applications
most of the frequent bash commands are there
If you really don’t want bash, consider cmder

Michael #4: Snakefooding Python Code For Complexity Visualization

Snakefood is a tool written by Martin Blais to create Python dependency graphs.
Combined with GraphViz, snakefood can create beautiful visualizations of Python codebases.
Python Web Frameworks: The different development philosophies of Bottle, Django, Flask, and Pyramid are apparent by looking at their snakefood graphs.
Bottle: A fast and simple micro framework for Python web applications.
Django: A batteries-included web framework for perfectionists with deadlines.
Flask: A microframework for Python.
Pyramid: A small, fast, down-to-earth, open source Python web framework. It makes real-world web application development and deployment more fun, more predictable, and more productive.
Also Queueing Implementations

Brian #5: On Being a Senior Engineer

2012 article that's still very valid
Obligatory Pithy Characteristics of Mature Engineers
Mature engineers ...

seek out constructive criticism of their designs.
understand the non-technical areas of how they are perceived.
do not shy away from making estimates, and are always trying to get better at it.
have an innate sense of anticipation, even if they don’t know they do.
understand that not all of their projects are filled with rockstar-on-stage work.
lift the skills and expertise of those around them.
make their trade-offs explicit when making judgements and decisions.
don’t practice CYAE (“Cover Your Ass Engineering”)
are empathetic.
don’t make empty complaints.
are aware of cognitive biases:

Self-Serving Bias
Fundamental Attribution Error
Hindsight Bias
Outcome Bias
Planning Fallacy

The Ten Commandments of Egoless Programming

Understand and accept that you will make mistakes.
You are not your code.
No matter how much “karate” you know, someone else will always know more.
Don’t rewrite code without consultation.
Treat people who know less than you with respect, deference, and patience.
The only constant in the world is change.
The only true authority stems from knowledge, not from position.
Fight for what you believe, but gracefully accept defeat.
Don’t be “the coder in the corner.”
Critique code instead of people – be kind to the coder, not to the code.


Novices versus Experts
Dirty secret: mature engineers know the importance of (sometimes irrational) feelings people have. (gasp!)
“It is amazing what you can accomplish if you do not care who gets credit.”

Michael #6: Python UI frameworks

TkInter (tutorial) - not amazing, not at all (example).
PySide and Qt - hard to install, weird licensing and versioning, but has a nice designer
Kivy and PyGame/

Read on the Scribd mobile app

Download the free Scribd mobile app to read anytime, anywhere.