Instantly share code, notes, and snippets.

# Jeff Preshing preshing

Last active March 2, 2020 18:46
Manifold Garden AutoSplit script
View ManifoldGarden.asl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 // AutoSplit script for Manifold Garden 1.0.30.13294 // // Automatically starts the timer ~2.4 seconds after starting a new game, and splits the timer // when transitioning between game levels. You must still reset the timer manually between runs. // If you accidentally backtrack through a portal, causing an unwanted split, you'll have // to undo it manually (default NumPad8 in LiveSplit). // // To compensate for the late start, you should delay your start timer by 2.4 seconds in LiveSplit. // (Right-click -> Edit Splits -> Start timer at:) //
Created April 27, 2019 03:56
Testing range-based for loop over explicitly created std::initializer_list
View gist:561dca75964f284b376b1610b11735fd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 Results of a few quick tests performed in response to: https://twitter.com/Steven_Pigeon/status/1121900020746338305 // This is the original version that HAS the bug (garbage value encountered during iteration): for (const AxisRay& faceRelVedge : std::initializer_list{ {{0, 0, -1}, Axis3::YNeg}, {{0, 1, 0}, Axis3::ZPos}, {{-2, -1, 0}, Axis3::ZPos}, {{-1, -1, -1}, Axis3::XPos}}) {
Created January 3, 2018 21:54
Use SFINAE to call member function if present
View main.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 #include class Foo { public: void bar() { std::cout << "Foo::bar() called" << std::endl; } }; class Foo2 {
Created August 28, 2017 16:44
View fixsvn.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 import datetime import re import os badTimeStamp = datetime.datetime.strptime("2010-03-08 15:02:59 -0500", "%Y-%m-%d %H:%M:%S %z") desiredTimeStamp = datetime.datetime.strptime("2017-08-28 11:15:59 -0400", "%Y-%m-%d %H:%M:%S %z") delta = desiredTimeStamp - badTimeStamp for line in open("../backup.log", "r"): m = re.match("r(\\d+) \\| jeff \\| (.*) \(", line)
Created June 13, 2017 02:02
View spinlock-example.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 #include class SpinLock { std::atomic m_flag = 0; public: void lock() { int expected = 0; while (!m_flag.compare_exchange_weak(expected, 1, std::memory_order_acquire)) { expected = 0;
Last active January 30, 2023 20:27
A shell script to download packages for, configure, build and install a GCC cross-compiler.
View build_cross_gcc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 #! /bin/bash set -e trap 'previous_command=$this_command; this_command=$BASH_COMMAND' DEBUG trap 'echo FAILED COMMAND: \$previous_command' EXIT #------------------------------------------------------------------------------------------- # This script will download packages for, configure, build and install a GCC cross-compiler. # Customize the variables (INSTALL_PATH, TARGET, etc.) to your liking before running. # If you get an error and need to resume the script from some point in the middle, # just delete/comment the preceding lines before running it again.
Created October 23, 2014 00:13
Generate benchmarks for three implementations of a wait-free queue using C++11 atomics
View capped_spsc_queue.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 // // Generate benchmarks for the three queue implementations shown in // Jeff Preshing's CppCon 2014 talk, "How Ubisoft Montreal Develops Games for // Multicore - Before and After C++11". // // Slides: https://github.com/CppCon/CppCon2014/blob/master/Presentations/How%20Ubisoft%20Montreal%20Develops%20Games%20for%20Multicore/How%20Ubisoft%20Montreal%20Develops%20Games%20for%20Multicore%20-%20Before%20and%20After%20C++11%20-%20Jeff%20Preshing%20-%20CppCon%202014.pdf?raw=true // #include #include
Created October 27, 2013 15:04
MathJax tags for Octopress
View math.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 #-------------------------------------------------------------- # MathJax tags for Octopress # # Put this in the plugins folder. # Use a single "inlinemath" tag for inline math. # Use a pair of "math/endmath" tags for math as a standalone paragraph. # The "math" tag takes an optional size argument. # You also need to include MathJax in the page header, for example by adding # # to source/_includes/custom/head.html
Created September 22, 2013 19:43
The example from http://preshing.com/20130922/acquire-and-release-fences, rewritten using Mintomic.
View gist:6663087
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 #include #include struct Message { clock_t tick; const char* str; void* param; };
Last active January 21, 2016 04:44
List the contents of folders recursively, sorted by modification time.
View list_modifications.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
 #! /usr/bin/env python # License: http://creativecommons.org/publicdomain/zero/1.0/ # See http://preshing.com/20130115/view-your-filesystem-history-using-python import optparse import os import fnmatch import time # Parse options parser = optparse.OptionParser(usage='Usage: %prog [options] path [path2 ...]')