Skip to content

Instantly share code, notes, and snippets.

View jtmcdole's full-sized avatar

John McDole jtmcdole

View GitHub Profile
// 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.
@jtmcdole
jtmcdole / ntz.dart
Last active March 27, 2023 04:52
Number of Trailing Zeros - Dart Edition
/// Returns the number of trailing zeros in a 32bit unsigned integer.
///
/// Hacker's Delight, Reiser's algorithm.
/// "Three ops including a "remainder, plus an indexed load."
///
/// Works because each bit in the 32 bit integer hash uniquely to the
/// prime number 37. The lowest set bit is returned via (x & -x).
ntz32(int x) {
assert(x < 0x100000000, "only 32bit numbers supported");
return _ntzLut32[(x & -x) % 37];
@jtmcdole
jtmcdole / nbonacci.dart
Created May 12, 2018 23:46
p = p-2 + n*p-1
nBonacci(num n, {num a = 0, num b = 1, int max = 10}) {
var seq = <num>[a, b];
for (int i = 0; i < max; i++) {
seq.add(a + b*n);
a = b;
b = seq.last;
}
return seq;
}
@jtmcdole
jtmcdole / canvas_font_texture.dart
Created May 1, 2016 02:14
simple canvas font texture atlas
import 'dart:async';
import 'dart:html';
import 'dart:convert';
// add <link href='https://fonts.googleapis.com/css?family=Roboto+Condensed' rel='stylesheet' type='text/css'> to html
// Draw red top, green ascent, and blue height
bool drawBounds = true || window.location.href.contains('drawBounds');
bool drawBox = true || window.location.href.contains('drawBox');