Skip to content

Instantly share code, notes, and snippets.

View lrsbt's full-sized avatar

Lars lrsbt

  • LarsAttacks
  • London
View GitHub Profile
@lrsbt
lrsbt / digitalbuzzer.py
Last active October 22, 2026 13:58
Gravity: Digital Buzzer × 1 Hello World
// Raspberry Pi Zero
// Use pins like this
// - GND (9) -> black
// - 3v3 Power (1) -> red
// - GPIO 23 (16) -> green
from gpiozero import Buzzer
from time import sleep
buzzer = Buzzer(23)
@lrsbt
lrsbt / piezo.py
Last active October 22, 2026 13:28
Piezo Transducer - Mini 5V Buzzer (4000Hz) Hello World
// Raspberry Pi Zero
// Use pins like this
// - 3v3 Power (1) -> +
// - GPIO 23 (16) -> -
from gpiozero import PWMOutputDevice
from time import sleep
buzzer = PWMOutputDevice(23, frequency=1000)
@lrsbt
lrsbt / rgb.py
Last active October 22, 2026 13:30
Squid RGB Raspberry Pi Hello World
// Raspberry Pi Zero
// Use pins like this
// - black -> Ground (6)
// - R -> GPIO14 (11)
// - G -> GPIO15 (13)
// - B -> GPIO18 (15)
from gpiozero import RGBLED
from time import sleep
@lrsbt
lrsbt / netflix-subtitles.js
Last active October 3, 2026 22:40
Hide Netflix subtitles by pressing c
const style = document.createElement("style");
document.head.appendChild(style);
let hidden = false;
window.addEventListener("keydown", (e) => {
if (e.key.toLowerCase() === "c") {
hidden = !hidden;
style.textContent = hidden
@lrsbt
lrsbt / pattern.js
Created May 19, 2025 12:38
Object Literal Module Pattern in Javascript
const TEMPLATE = {
init() {
this.cacheDom();
this.bindEvents();
this.render();
},
cacheDom() {
// cache selectors
@lrsbt
lrsbt / bouncyBall.tsx
Created January 26, 2024 01:25
ReactNative Reanimated Ball Bouncing of Walls
import React, { useEffect } from "react";
import { StyleSheet, View } from "react-native";
import Animated, {
useAnimatedStyle,
useSharedValue
} from "react-native-reanimated";
import { viewPort } from "@project/utils";
const BALL_SIZE = 20;
import React, { useRef, useEffect } from 'react';
import { Animated, Easing } from 'react-native';
import { useIsMounted } from '@t/utils/hooks/useIsMounted';
export const useEyesAnimation = () => {
const offsetX = useRef(new Animated.Value(0)).current;
const isMounted = useIsMounted();
useEffect(() => {
animate();
@lrsbt
lrsbt / unicodeSubstring.ts
Created September 4, 2023 09:29
Shorten a string that contains emoticons.
function insertAt(string, subString, position) {
const before = string.substr(0, position);
const after = string.substr(position);
return `${before}${subString}${after}`;
}
/**
* Crude, but reliable way to do a substring with unicode chars. We tried other
* solutions but they don't work with the flags which are 4 code points!
*/
@lrsbt
lrsbt / MelonEmitter.tsx
Created September 4, 2023 09:24
Ticket MelonEmitter Code ( React Native )
import React, { useRef, useEffect, useCallback } from 'react';
import { Animated, Easing } from 'react-native';
import { pickOne } from '@t/utils/pickOne';
import { MelonHalf, MelonQuarter } from '@t/components/Icons';
const MelonEmitter = ({ runAnimation }) => {
const numberOfMelons = 20;
const driver = useRef(new Animated.Value(0)).current;
const colors = useRef(['#FFA0B4', '#F1DBDF', '#FFE4E9', '#BCFF4F']).current;
const svgs = [MelonQuarter, MelonHalf];
@lrsbt
lrsbt / onViewableItemsChanged.ts
Created April 23, 2023 13:10
React-Native, flatlist onViewableItemsChanged get Index of page
// Quicker bi-directional onViewableItemsChanged
const [activeIndex, setActiveIndex] = useState(0);
const onViewableItemsChanged = useRef(({ viewableItems, changed }) => {
if (viewableItems?.length >= 2 && changed?.[0]?.isViewable) {
setActiveIndex(changed?.[0].index);
} else {
if (viewableItems?.[0]) setActiveIndex(viewableItems[0].index);
}