Skip to content

Instantly share code, notes, and snippets.

View hypothete's full-sized avatar
🏳️‍⚧️

Erin Alexander hypothete

🏳️‍⚧️
View GitHub Profile
@hypothete
hypothete / bandwidth-austerity-usa-2022.md
Last active June 4, 2022 21:15
Bandwidth Austerity

Bandwidth Austerity

For years now, we’ve been taught by Internet Service Providers (ISPs) to think of bandwidth as a limited resource to be carefully consumed. We purchase Internet speed plans with bandwidth caps - upload/download caps on transferrable data per month. It wasn't always this way, though - up until the 2010s most users paid for simple Internet access, and physical limitations on bandwidth like copper/phone line throughput sometimes functioned as a cap, but ultimately there was no meter on individual use because it wasn't necessary.

In the 2000s the US government gave a number of telecommunications companies billions of dollars and access to infrastructure in order to connect larger portions of the population to the Internet. Rather than execute the full rollout envisioned by the government, ISPs instead pocketed most of the subsidies and captured federal regulation. The infrastructure access and subsidies guaranteed monopolies in most urban markets, and ISPs simply ignored most rural rollout

@hypothete
hypothete / webgpu-gotchas.md
Created March 26, 2022 01:36
WebGPU gotchas and pain points

Here are a few areas in WebGPU and WGSL that tripped me up or I've found can be difficult to reason about. If you're starting out with WebGPU, I hope this document can save you some time.

Thanks to folks in the matrix.org WebGPU channel for explaining some of these concepts to me!

Struct alignment

Different data types prefer different offsets in their memory positioning, so you need to be smart about how the data is laid out for the struct. Consider the following WGSL:

struct Sphere {
  radius: f32;
  position: vec3<f32>;
@hypothete
hypothete / soft-skills.txt
Created January 27, 2022 21:29
Soft skills bookmarks, Jan 2022
https://h3h.github.io/leveling-matrix/
https://keavy.com/work/building-bridges/
https://jdxcode.com/posts/2020-09-16-10-tips-ramping-up-as-a-senior-engineer
https://larahogan.me/blog/first-one-on-one-questions/
https://www.15five.com/blog/advice-for-one-on-one-meetings/
https://dev.to/alainakafkes/what-do-you-talk-about-during-your-one-on-one-meetings-with-your-engineering-or-other-manager-e7d
https://www.youtube.com/watch?v=oxgfehnJ7GE
https://humanwhocodes.com/blog/2014/01/07/how-to-be-a-mentor/
https://scorpil.com/post/the-problem-of-overfitting-in-tech-hiring/
http://brooker.co.za/blog/2020/10/19/big-changes.html
@hypothete
hypothete / simple-cam.ino
Last active November 5, 2019 21:12
TTGO T-Camera buffer problems EDIT: fixed!
#include "esp_camera.h"
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 32
#define SIOD_GPIO_NUM 13
#define SIOC_GPIO_NUM 12
#define Y9_GPIO_NUM 39
#define Y8_GPIO_NUM 36
@hypothete
hypothete / channel-example.js
Last active September 23, 2019 17:43
RSocket example of a channel implementation
// On the server side, imagine we have a MySimpleServiceServer generated from a protofile
// This is the handler object you would pass to your new MySimpleServiceServer
// The trick to the server-side setup for channels is to use the QueuingFlowableProcessor
// as an intermediate between the incoming requestFlowable subscription and the outgoing Flowable
const {QueuingFlowableProcessor} = require('rsocket-rpc-core');
// ignoring other imports...
const mySimpleServiceServerHandler = {
myChannel(requestFlowable) {
@hypothete
hypothete / wifi-test.ino
Created August 14, 2019 14:32
ESP32 WiFi test
#include <WiFi.h>
#include "SSD1306Wire.h"
#include "secrets.h"
int counter = 0;
SSD1306Wire display(0x3c, 5, 4);
void setupDisplay() {
display.init();
display.setContrast(255);
canvas{
background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAYAAADbcAZoAAAgAElEQVR4Xuy9WbNlR3Yelme6Y80DCgU0hm6gG41GT6Sag0hJLZGtoGg7HJ5eHOFw2PKrH/Qz/OQnhx/0YtnhoKyQKEdIsiJsOoKkZJEtzs0ewG6gB8xDATXduuOZvL6VuTJX5sm91z733FsDUBtRuPees4fcOa4vv/Wt1XvhS0/MXTh6vR7/1uv7nzjG+2Mnn+Pv+XzuptOZm+Ef/d5X1+A8/N0f9PnaPt1nNou352v5HuqzXn+YfYZ7yoHz5VyUSe4ff0c5BzNfZnouPh/Qs/Hcfr/Pf4/p9rjHbObPk0O+n06m/NF0Qt9P53y7Pv7heXiHdbon7jscuKGbuzX6sk8/+ZrZ1E2Ho+y+C39Mje+zMvl6R9nkkHJLPc7m6T3w2TSUBeeX5+Kz8di/H7cL3on+DelduM7o97N9/y66zVFfc6ov3H+45tun6RgMW77v0XvMw/dUbrqrfxZqFt+hXL4ojUff5e3Wfvby31KttF40S0Ohet6gZ7zA8kVqvEKXtRfqz7q9Hru1c2VMWvc5re/nqj/XntE3OsiMxqAcUifWO+vn9Hrt/dt67/l80n5KmOvi3KraDe3ZswaAOp9mMX6WbjOr//VXfD/r/Xv9o9ZTJkb1WPfHrNF2dO0/us7ya9rHb1/WJ9VP9fXzeep/1rvUx1/7/GaNc+v9aYY16q+9gazn9/vd17du7x9shFjfqfzyrjIOcD+MIf03DY4wRhbrNZ6nbIzZbByLFe0TtebQiu+/D+WJ58g9gl2h7Rxta+yrYsQ1XNk/pV1S1hFsLRxYu/l9g72lbYS2Bh5P8/4p9lQsr6qL6n1o/sA76/eT8rA9RlYRDrHbYGf0yH6R8o5G7fOr3DeWq1gP0vfe3tTnsV1HFlDbMSL7RduUXHZVRlh1fZpjYf9ImWELTqjepvQP58
canvas{
background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAYAAADbcAZoAAAgAElEQVR4Xuy9WbNlR3Yelme6Y80DCgU0hm6gG41GT6Sag0hJLZGtoGg7HJ5eHOFw2PKrH/Qz/OQnhx/0YtnhoKyQKEdIsiJsOoKkZJEtzs0ewG6gB8xDATXduuOZvL6VuTJX5sm91z733FsDUBtRuPees4fcOa4vv/Wt1XvhS0/MXTh6vR7/1uv7nzjG+2Mnn+Pv+XzuptOZm+Ef/d5X1+A8/N0f9PnaPt1nNou352v5HuqzXn+YfYZ7yoHz5VyUSe4ff0c5BzNfZnouPh/Qs/Hcfr/Pf4/p9rjHbObPk0O+n06m/NF0Qt9P53y7Pv7heXiHdbon7jscuKGbuzX6sk8/+ZrZ1E2Ho+y+C39Mje+zMvl6R9nkkHJLPc7m6T3w2TSUBeeX5+Kz8di/H7cL3on+DelduM7o97N9/y66zVFfc6ov3H+45tun6RgMW77v0XvMw/dUbrqrfxZqFt+hXL4ojUff5e3Wfvby31KttF40S0Ohet6gZ7zA8kVqvEKXtRfqz7q9Hru1c2VMWvc5re/nqj/XntE3OsiMxqAcUifWO+vn9Hrt/dt67/l80n5KmOvi3KraDe3ZswaAOp9mMX6WbjOr//VXfD/r/Xv9o9ZTJkb1WPfHrNF2dO0/us7ya9rHb1/WJ9VP9fXzeep/1rvUx1/7/GaNc+v9aYY16q+9gazn9/vd17du7x9shFjfqfzyrjIOcD+MIf03DY4wRhbrNZ6nbIzZbByLFe0TtebQiu+/D+WJ58g9gl2h7Rxta+yrYsQ1XNk/pV1S1hFsLRxYu/l9g72lbYS2Bh5P8/4p9lQsr6qL6n1o/sA76/eT8rA9RlYRDrHbYGf0yH6R8o5G7fOr3DeWq1gP0vfe3tTnsV1HFlDbMSL7RduUXHZVRlh1fZpjYf9ImWELTqjepvQP58
@font-face{
font-family:"Billings";
src:url(BILLINGS.woff);
}
.shadowApplied{
-webkit-filter: url(#drop-shadow);
-moz-filter: url(#drop-shadow);
filter: url(#drop-shadow);
}