Skip to content

Instantly share code, notes, and snippets.

View jtmcdole's full-sized avatar

John "codefu" McDole jtmcdole

View GitHub Profile
@jtmcdole
jtmcdole / config.yaml
Created June 6, 2026 20:31
gitea + rootless podman + act_runner (ubuntu)
# Example configuration file, it's safe to copy this as the default config file without any modification.
# You don't have to copy this file to your instance,
# just run `./act_runner generate-config > config.yaml` to generate a config file.
log:
# The level of logging, can be trace, debug, info, warn, error, fatal
level: info
runner:
@jtmcdole
jtmcdole / Dockerfile
Created June 5, 2026 00:26
flutter + docker + antigravity
#
# Build:
# x86: docker build -t flutter_docker .
# Apple Silicon: docker build --platform linux/amd64 -t flutter_docker .
#
# Run:
# Apple Silicon: podman run --platform linux/amd64 --rm -it -v "${PWD}:/app" -v "dart_tool_cache:/app/.dart_tool" -v "dart_build_cache:/app/build" -v "/Users/codefu/.gemini:/home/codefu/.gemini" flutter_docker:latest
# x86: docker run --rm -it -v ".:/app" -v 'dart_tool_cache:/app/.dart_tool' -v "dart_build_cache:/app/build" -v "/Users/codefu/.gemini:/home/codefu/.gemini" flutter_docker:latest
#
# Doing something work worktrees?
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:flutter/material.dart';
import 'dart:math' as math;
void main() => runApp(MyApp());
class PieChart extends CustomPainter {
@jtmcdole
jtmcdole / console
Last active August 24, 2023 22:45
unicode fun in dart
===[🌈]===
length: 2
codeunits: 2
runes: 1
utf16: 0xd83c 0xdf08
utf8len: 4
utf8 bytes: 0xf0 0x9f 0x8c 0x88
===[Hello🌎]===
length: 7
codeunits: 7
@jtmcdole
jtmcdole / dolphin_decode.dart
Last active May 29, 2022 22:02
Flipper Zero Dolphin state decode
import 'dart:typed_data';
import 'dart:convert';
main() {
final foo = Uint8List.fromList(data);
final checksum = Uint8List(1);
for (int i = 8; i < foo.length; i++) {
checksum[0] += foo[i];
}
print('checksum: $checksum -> 0x${checksum[0].toRadixString(16)}');
@jtmcdole
jtmcdole / README.md
Last active March 15, 2021 00:10
Dartpad Bigπ

Dartpad for Bigπ

Fooling around with Dartpad sharing + Pi day fun.

How many digits of pi do you really need? Not that many it turns out. According to JPL1 you need ~40 to calculate the circumference of the universe to within the width of a hydrogen atom.

@jtmcdole
jtmcdole / KINESIS-Gaming-Freestyle-Edge-RGB-Split.kbd.json
Last active February 15, 2021 05:39
KINESIS Gaming Freestyle Edge RGB Split
[
{
"backcolor": "#000000",
"name": "KINESIS Gaming Freestyle Edge RGB Split",
"author": "codefu",
"switchMount": "cherry",
"switchBrand": "cherry",
"switchType": "MX1A-G1xx"
},
[
@jtmcdole
jtmcdole / capCarve.py
Last active September 16, 2024 22:59
Blender carving a keycap
# Carve legends into keycaps.
#
# This script uses Intersect (knife) to make accurate cuts. The downside is you need to convert
# a text object into a mesh and extrude by just the right amount. We can do this for caps since
# we know how tall the cap-well is.
#
# Unlike knife-project; this doesn't mess with context, view3d, projections, etc.
#
# TODO: save some custom data to layout the keyboard for renderin.
import bpy
@jtmcdole
jtmcdole / main.dart
Created August 5, 2020 17:02
flutter ClipRect + SlideTransition
// Flutter code sample for SlideTransition
// The following code implements the [SlideTransition] as seen in the video
// above:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
/// This Widget is the main application widget.