![MacroFab Engineering Podcast artwork](https://is1-ssl.mzstatic.com/image/thumb/Podcasts113/v4/ff/98/b7/ff98b785-457a-c1b5-1bab-9af91dc3e21d/mza_9012418204845026833.jpg/100x100bb.jpg)
MEP EP#350: Estimating Effort
MacroFab Engineering Podcast
English - October 28, 2022 22:30 - 1 hour - 83.4 MB - ★★★★★ - 34 ratingsTechnology Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed
Python Demo for Extra Life API
Stream Date: November 5th, 2022
Functionality so far
Check Extralife API for donations
This is done with the requests module
This endpoint seems to return old and new donations
There isn't a “new donation” end point it seems
Get the donation IDs and compare them to a local file
Local file is made with the pickle module
Pickle allows you to take any data structure in python and “package it” into a binary file for storage.
If there is a new donation ID that isn’t in the local file
Queue up a random audio clip
Record the donation ID to the local file
Audio is placed through the playsound module
Weird “bug” that short audio clips get cut off
Add a little sleep after the call to get around it
Auto parses the audio folder for the files
Looks into audio file
Gets all the file names
Adding a new audio clip is as simple as dropping it into the folder
Preventing truly random files
Made a rotating buffer
Used the collections module to implement a bi-directional “stack”
Think like a bitwise shift but with an array of strings
Multithreading!
Threading module used to setup the API and Audio player queues
API runs every 20 seconds
Audio player runs every 30 seconds
If a new donation, global mailbox variable increases one for each new donation.
Audio player runs and looks at that global variable.
Threading has a “lock” function to prevent race conditions on that global variable.
What is next?
Play graphics in Open Broadcast Software
OBS has some python hooks that I am just starting to learn
Chip Fab Jobs
Need practically every engineering discipline
Mechanical to design and maintain equipment
Chemical for designing the masking / chemical bath processes
Electrical for testing and validation
Estimating project time
PCB layout
New project revision
About 1600 parts
Lots of duplicates
Things that impact timing
Components
Parts with pours and complex ground
Specific trace routs like differential or snake traces
Layers
Duplication
Rest day
Cleanup day