Reference

Electronics

Quick and interesting read about surface mount resistors:

Standard Electronic Decade Value Table (AKA why would I want a 49.9k resistor vs a 50k?)

Must read if you are using KiCAD: https://forum.kicad.info/t/library-management-in-kicad-version-5/14636


https://www.repairfaq.org/sam/hvprobe.htm

Great video on magnetics from Applied Science: https://www.youtube.com/watch?v=4UFKl9fULkA

Communication

JPL has some really great resources about deep space communications. Really well written stuff. https://descanso.jpl.nasa.gov/monograph/mono.html

Computers

One of my favorite blog packed with tons of details by Ken Shirriff on topics including retro computing and the Beagle Bone: http://www.righto.com/

Julia Evans has a really nice series on debugging tools like strace for linux: https://jvns.ca/blog/2016/07/03/debugging-tools-i-love/ and some really cool infographics: https://drawings.jvns.ca/

Mechanical

Dan Gelbart has an amazing series on prototyping:
https://www.youtube.com/user/dgelbart/videos

South Bend made some excellent publications which can be found at
http://vintagemachinery.org. Below are publications showing the basics of how to run a lathe and also a book with lots of shop projects.

Physics

I love this experimental physics book! Lot of very old, but very interesting practical information!

Python

You should learn a bit of the OO interface to matplotlib, not just the state machine interface. Almost all of the plt.* function are thin wrappers that basically do gca().*.

plt.subplot (doc) return an axes (doc) object. Once you have a referance to the axes object you can plot directly to it, change it’s limits, etc.

import matplotlib.pyplot as plt

ax1 = plt.subplot(131)
ax1.scatter([1, 2], [3, 4])
ax1.set_xlim([0, 5])
ax1.set_ylim([0, 5])


ax2 = plt.subplot(132)
ax2.scatter([1, 2],[3, 4])
ax2.set_xlim([0, 5])
ax2.set_ylim([0, 5])

and so on for as many axes as you want.

or better, wrap it all up in a loop:

import matplotlib.pyplot as plt

DATA_x = ([1, 2],
          [2, 3],
          [3, 4])

DATA_y = DATA_x[::-1]

XLIMS = [[0, 10]] * 3
YLIMS = [[0, 10]] * 3

for j, (x, y, xlim, ylim) in enumerate(zip(DATA_x, DATA_y, XLIMS, YLIMS)):
    ax = plt.subplot(1, 3, j + 1)
    ax.scatter(x, y)
    ax.set_xlim(xlim)
    ax.set_ylim(ylim)

In fact, almost every function in plt is a very thin wrapper that first calls ax = plt.gca() and then calls what ever function on that object. You should not be using plt for anything but interactive work

tacaswell

http://stackoverflow.com/questions/15858192/how-to-set-xlim-and-ylim-for-a-subplot-in-matplotlib