Skip to content

Instantly share code, notes, and snippets.

View sowbug's full-sized avatar

Mike Tsao sowbug

View GitHub Profile
$ rm -rf build
miket@snack-pipe:~/src/stm32f103-keyboard-bootloader$ mkdir build
miket@snack-pipe:~/src/stm32f103-keyboard-bootloader$ cd build
miket@snack-pipe:~/src/stm32f103-keyboard-bootloader/build$ cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain/clang.cmake ..
-- The C compiler identification is Clang 6.0.0
-- The ASM compiler identification is Clang
-- Found assembler: /usr/bin/clang
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Detecting C compile features
[
{
"name": "68keys.io",
"author": "http://www.keyboard-layout-editor.com/#/gists/8542d095e53598ad03505703374c78e6"
},
[
"~\n`",
"!\n1",
"@\n2",
"#\n3",
@sowbug
sowbug / 538.py
Last active November 4, 2020 06:40
Make it easier for Python programmers to create FiveThirtyEight simulations on November 3, 2020
#!/bin/env python3
TOSSUP = [
'GA', # Georgia, 16
'NC', # North Carolina, 15
]
DEM_NARROW = [
'AZ', # Arizona, 11
'ME', # Maine Popular Vote, 2
@sowbug
sowbug / tracker.ino
Created May 29, 2021 22:42
Bitcoin tracker on ESP8266-based OLED
// For Heltec Wifi Kit 8
// Code stolen/adapted from many sources
#include <U8g2lib.h>
#include <ArduinoJson.h>
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#include <ESP8266HTTPClient.h>
U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ 16, /* clock=*/ 5, /* data=*/ 4);
@sowbug
sowbug / make-dfplayer-mp3-tree.py
Last active May 22, 2022 17:31
Given a bunch of MP3 files in directories, copies them into a file tree that is compatible with DFPlayer.
#!/usr/bin/env python3
# Given a bunch of MP3 files in directories,
# copies them into a file tree that is
# compatible with DFPlayer.
import os
import shutil
src_dir = './sfx'
@sowbug
sowbug / prompt-generator.py
Last active September 2, 2022 20:17
Stable Diffusion random prompt generator
#!/usr/bin/env python
import random
CONCEPTS = [
'baby',
'bacon',
'cabbage',
'cat',
'cauldron',
use iced::Sandbox;
use iced::{button, Alignment, Button, Column, Container, Element, Settings, Text};
use std::cell::RefCell;
use std::rc::Rc;
pub fn main() -> iced::Result {
Counter::run(Settings::default())
}
#[derive(Debug, Default)]
$ diff ../iced/examples/counter/src/main.rs src/main.rs
1,3c1,4
< use iced::{
< button, Alignment, Button, Column, Element, Sandbox, Settings, Text,
< };
---
> use iced::Sandbox;
> use iced::{button, Alignment, Button, Column, Container, Element, Settings, Text};
> use std::cell::RefCell;
> use std::rc::Rc;
@sowbug
sowbug / viewer-factory.rs
Created October 20, 2022 16:56
One way to keep iced view()/update() close to the model code that it uses
use iced::Sandbox;
use iced::{button, Alignment, Button, Column, Container, Element, Settings, Text};
use std::cell::RefCell;
use std::rc::{Rc, Weak};
pub fn main() -> iced::Result {
Counter::run(Settings::default())
}
#[derive(Debug, Clone, Copy)]