Skip to content

Instantly share code, notes, and snippets.

@paulirish
paulirish / what-forces-layout.md
Last active December 8, 2025 09:19
What forces layout/reflow. The comprehensive list.

What forces layout / reflow

All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.

Generally, all APIs that synchronously provide layout metrics will trigger forced reflow / layout. Read on for additional cases and details.

Element APIs

Getting box metrics
  • elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParent
@savetheclocktower
savetheclocktower / README.md
Last active December 5, 2025 03:10
Using a rotary encoder as a volume control for the Raspberry Pi

Update on Nov 30, 2025: This Gist is nearly eight years old! These instructions worked back in 2018 for the Pi 3, but recent comments suggest that they may not be sufficient on more recent Pi models and newer versions of Raspberry Pi OS. Be advised.


Using a rotary encoder as a volume control

On my RetroPie machine I wanted a hardware volume knob — the games I play use a handful of emulators, and there's no unified software interface for controlling the volume. The speakers I got for my cabinet are great, but don't have their own hardware volume knob. So with a bunch of googling and trial and error, I figured out what I need to pull this off: a rotary encoder and a daemon that listens for the signals it sends.

Rotary encoder

@avoidik
avoidik / README.md
Last active December 3, 2025 18:16
Migrate Raspberry Pi from SD to USB

Raspberry Pi from SD to USB

How to switch over from SD-card to USB-attached device (USB thumbstick, USB enclosed SSD or HDD, etc.) to have more durable storage option.

Steps

  1. Connect USB device to your RPI

  2. Make sure USB device visible by the system

@DeanDavis
DeanDavis / glowclock.ino
Last active November 22, 2025 21:00 — forked from goebish/glowclock.ino
//#define CALIBRATE
//#define GRID // After Calibration this mode should plot a pretty good dot grid on the screen
// See additional calibration comments in the code down by the "#ifdef CALIBRATE"
// Adjust these values for servo arms in position for state 1 _|
const double SERVO_LEFT_ZERO = 1600;
const double SERVO_RIGHT_SCALE = 690; // + makes rotate further left
// Adjust these values for servo arms in position for state 2 |_
const double SERVO_RIGHT_ZERO = 650;
@fredrikasberg
fredrikasberg / btt canbus setup.md
Last active November 7, 2025 01:51
BTT Manta M8P v1.1 + BTT EBB 2209 Canbus setup
@application2000
application2000 / how-to-install-latest-gcc-on-ubuntu-lts.txt
Last active October 29, 2025 19:24
How to install latest gcc on Ubuntu LTS (12.04, 14.04, 16.04)
These commands are based on a askubuntu answer http://askubuntu.com/a/581497
To install gcc-6 (gcc-6.1.1), I had to do more stuff as shown below.
USE THOSE COMMANDS AT YOUR OWN RISK. I SHALL NOT BE RESPONSIBLE FOR ANYTHING.
ABSOLUTELY NO WARRANTY.
If you are still reading let's carry on with the code.
sudo apt-get update && \
sudo apt-get install build-essential software-properties-common -y && \
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
@klaasnicolaas
klaasnicolaas / hourly_price_charts.yaml
Last active October 15, 2025 06:33
Collecting the hourly energy prices via a service in the EnergyZero or easyEnergy integration and using them in an ApexCharts card in your dashboard.
- type: custom:apexcharts-card
graph_span: 1d
header:
show: true
title: Electriciteitsprijzen Vandaag (€/kwh)
span:
start: day
now:
show: true
label: Now
@projetsdiy
projetsdiy / micropython i2c scanner
Last active October 10, 2025 17:46
Micropython i2c scanner
# Scanner i2c en MicroPython | MicroPython i2c scanner
# Renvoi l'adresse en decimal et hexa de chaque device connecte sur le bus i2c
# Return decimal and hexa adress of each i2c device
# https://projetsdiy.fr - https://diyprojects.io (dec. 2017)
import machine
i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))
print('Scan i2c bus...')
devices = i2c.scan()
@jauderho
jauderho / gist:6b7d42030e264a135450ecc0ba521bd8
Last active October 1, 2025 10:56
HOWTO: Upgrade Raspberry Pi OS from Bullseye to Bookworm
### WARNING: READ CAREFULLY BEFORE ATTEMPTING ###
#
# Officially, this is not recommended. YMMV
# https://www.raspberrypi.com/news/bookworm-the-new-version-of-raspberry-pi-os/
#
# This mostly works if you are on 64bit. You are on your own if you are on 32bit or mixed 64/32bit
#
# Credit to anfractuosity and fgimenezm for figuring out additional details for kernels
#
@crysxd
crysxd / README.md
Last active August 3, 2025 15:14
Syncing Cura Settings & Profiles Accross multiple devices

Syncing Cura Settings & Profiles Accross multiple devices

I use multiple devices to control my 3D printer and it's alwys a hassle to move changes on profiles etc. between those machines leading to situations where I use an old version of my profiles to print a part because I just forgot to update it.

Here is how you can sync Cura settings between multiple devices:

  1. Setup Google Drive / OneDrive / Dropbox on every machine you want to sync the Cura settings on
  2. Go to the following location and copy the folder called cura to any convinient location inside your Google Drive / OneDrive / Dropbox folder. You can also rename the folder form cura to somthing else, I called mine Cura Settings.
  • Windows: %userprofile%\AppData\Roaming\cura