Skip to content

Instantly share code, notes, and snippets.

Avatar
🦀

Robert Quattlebaum darconeous

🦀
View GitHub Profile
@darconeous
darconeous / 3d-printing-trimmer-line.md
Last active January 3, 2023 02:35
3D Printing with Nylon Trimmer Line
View 3d-printing-trimmer-line.md

3D Printing with Nylon Trimmer Line

Disclaimer

All of this information is provided AS IS, with no warranty or guarantee of accuracy. A good-faith effort has been made to ensure this document was accurate at the time it was written, but YOU ASSUME ALL RISK BY FOLLOWING ANY ADVICE BELOW.

Introduction

Nylon is a strong and impact-resistant thermoplastic that is used

@darconeous
darconeous / chamfer.scad
Last active December 14, 2022 21:57
Chamfering OpenSCAD Example
View chamfer.scad
/// Chamfering OpenSCAD Example
/// Written by Robert Quattlebaum, 2022-12-14
///
/// This example shows a method for adding a chamfer to a certain
/// class of 3D objects where the profile in the Z dimension doesn't
/// change significantly.
///
/// You must specify the size of the chamfer, the height of the child
/// and the Z-offset for the bottom of the object. You can also specify
/// the shape of the chamfer, which can be either "cone", "curve", "curve-in",
@darconeous
darconeous / tcprepl.py
Created September 21, 2022 00:23
Micropython TCP/telnet REPL
View tcprepl.py
# REPL Prompt over TCP socket.
# Use `$ telnet <ip-addr>` to connect.
import network
import os
import socket
import sys
listen_s = None
client_s = None
@darconeous
darconeous / fm-discriminator.md
Last active April 24, 2022 20:07
Extracting the fundamental frequency from a time-domain signal
View fm-discriminator.md

Extracting the fundamental frequency from a time-domain signal

"Extracting the fundamental frequency from a time-domain signal" is basically a long-winded way of saying "demodulating the baseband signal from FM-encoded signal". Well, that's still long winded, but I digress.

In an FM radio, the contraption that accomplishes this task is referred to as a "discriminator". So the task here is to implement a software-based frequency discriminator. There are a few different ways

@darconeous
darconeous / rect-starlink-cable-hack.md
Last active March 29, 2023 16:30
Hacking the Rectangular Starlink Dishy Cable
View rect-starlink-cable-hack.md
@darconeous
darconeous / quick_install.sh
Created March 17, 2020 21:46
Installer script for ledger-u2f-javacard
View quick_install.sh
#!/bin/sh
GP=${GP-java -jar gp.jar}
set -v
set -e
# This is for the ACR122U to put it into
# a nice state where it won't time out on us.
$GP -d -v -a ff0041ff00 -a ff00520000 || true
@darconeous
darconeous / Curve25519-Curve448-Terminology.md
Last active February 9, 2020 00:41
Curve25519/Curve448 Terminology
View Curve25519-Curve448-Terminology.md

Curve25519/Curve448 Terminology

Curve25519: A well-known Montgomery curve designed for ECC at a 128-bit security level.

X25519: The name of the scalar-point multiplication function for points on Curve25519 when performing ECDH. It is also commonly used as a shorthand for ECDH-using-Curve25519.

EdDSA:

@darconeous
darconeous / tesla-key-card-protocol.md
Last active March 8, 2023 05:56
Tesla Key Card Protocol
View tesla-key-card-protocol.md

Tesla Key Card Protocol

Researched by Robert Quattlebaum darco@deepdarc.com.

Last updated 2020-02-03.

Image of Tesla Key Card Image of Tesla Model 3 Key Fob

@darconeous
darconeous / playground.rs
Last active July 2, 2019 01:55 — forked from rust-play/playground.rs
Code shared from the Rust Playground
View playground.rs
use futures::prelude::*;
use pin_utils::unsafe_pinned;
use std::ops::Deref;
use std::pin::Pin;
use std::sync::Arc;
/// A container for a single object with lifetime that is bound to that of an `Arc`.
/// This is useful for passing around boxed futures that have a lifetime that is limited
/// to that of the object that created it.
///
@darconeous
darconeous / playground.rs
Last active May 29, 2019 17:56 — forked from rust-play/playground.rs
Code shared from the Rust Playground
View playground.rs
/// Demonstration of compile-time key-value type safety.
///
/// This program demonstrates how you use Rust generics to encode type
/// information into the keys for a key-value store. This allows for
/// type-safe access to data in the store, preventing things like writing
/// strings to keys that should only contain integers. Attempting to
/// do so results in a compile-time error.
///
/// The example code is at the top of this file, the implementation details
/// are below the example.