Skip to content

Instantly share code, notes, and snippets.

ppelleti / TestSpookyV2.cpp
Created Apr 23, 2022
version of Bob Jenkins' TestSpookyV2.cpp which works on UNIX as well as Windows
View TestSpookyV2.cpp
#include "SpookyV2.h"
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#ifdef _WIN32
#include <windows.h>
ppelleti /
Created May 4, 2016
Convert SVG files to DXF files on Mac OS X
#!/usr/bin/perl -w
# - convert SVG files to DXF files on Mac OS X
# by Patrick Pelletier, public domain (or cc0)
# based on the commands suggested here:
# assumes is installed in /Applications
# and pstoedit is installed in PATH, such as via "brew install pstoedit"
use Cwd qw(abs_path);
ppelleti /
Created Aug 19, 2013
A simple program which will detect the maximum Diffie-Hellman size supported by the JRE.
public class Diffie {
public static void main (String[] args) throws Exception {
AlgorithmParameterGenerator apg = AlgorithmParameterGenerator . getInstance ("DiffieHellman");
int good = 0;
for (int i = 512 ; i <= 16384 ; i += 64) {
try {
apg . init (i);
ppelleti / feather.txt
Created Aug 31, 2018
Feather pinout ASCII art
View feather.txt
This is an unofficial pinout diagram of the Adafruit Feather
For more information about this diagram, see:
ppelleti /
Created Jul 24, 2017
script to generate KiCad footprint for Panasonic JW2 relay
#!/usr/bin/env python3
import sys
from KicadModTree import *
footprint_name = "Relay_DPDT_Panasonic_JW2"
f = Footprint(footprint_name)
ppelleti / alitove_with_button.ino
Last active Dec 24, 2016
Arduino sketch for displaying several different patterns of lights on WS2811/WS2812 LEDs, controlled by a pushbutton.
View alitove_with_button.ino
/* This Arduino sketch is for controlling a string of Alitove lights
* from an Adafruit Trinket. The lights are connected to the
* Trinket's pin 1 through a resistor. A pushbutton is connected from
* pin 0 to ground. You can use the pushbutton to cycle through the
* following modes:
* 1. Solid purple
* 2. Blue with white twinkles
* 3. Rainbow
* 4. Multicolored blinking
ppelleti / Setup.hs
Last active Aug 12, 2016
copy photos from my phone using Android Debug Bridge
View Setup.hs
import Distribution.Simple
main = defaultMain
ppelleti / rand-trouble.c
Created Aug 21, 2013
This is a simple program which demonstrates that OpenSSL's default random number generator is not fork-safe if the pids wrap.
View rand-trouble.c
/* Patrick Pelletier, public domain / cc0
* OpenSSL's default random number generator (RAND_SSLeay) is not
* fork-safe in the case where the child pids wrap around without the
* parent having used or reseeded the RNG in the interim. Which makes
* this a rare problem, but one which recently cropped up on Android:
* and Nikolay Elenkov wrote a program to demonstrate the bug on Android:
ppelleti / strings returned by FormatMessage
Created Feb 8, 2013
A comparison of the error strings returned by evutil_socket_error_to_string, versus the error strings returned by the Windows function FormatMessage.
View strings returned by FormatMessage
WSAEINTR -> "A blocking operation was interrupted by a call to WSACancelBlockingCall."
WSAEACCES -> "An attempt was made to access a socket in a way forbidden by its access permissions."
WSAEFAULT -> "The system detected an invalid pointer address in attempting to use a pointer argument in a call."
WSAEINVAL -> "An invalid argument was supplied."
WSAEMFILE -> "Too many open sockets."
WSAEWOULDBLOCK -> "A non-blocking socket operation could not be completed immediately."
WSAEINPROGRESS -> "A blocking operation is currently executing."
WSAEALREADY -> "An operation was attempted on a non-blocking socket that already had an operation in progress."
WSAENOTSOCK -> "An operation was attempted on something that is not a socket."
WSAEDESTADDRREQ -> "A required address was omitted from an operation on a socket."
ppelleti /
Created Aug 12, 2012
list of hokey hash functions in rustc
/* list of hokey hash functions in rustc as of August 12, 2012
* in response to */
// libsyntax/
pure fn hash_ty(t: &@ty) -> uint {
let res = (t.span.lo << 16u) + t.span.hi;
return res;