Skip to content

Instantly share code, notes, and snippets.

@nbrombal
nbrombal / attempt.js
Last active Sep 8, 2021
Repeatedly attempts to execute a function based on provided criteria that are reevaluated on each attempt. A dumb function for dumb situations that shouldn't exist.
View attempt.js
/**
* Repeatedly attempts to execute a function based on provided criteria that are
* reevaluated on each attempt.
*
* @param {Function} criteria The criteria to evaluate on each attempt to determine if the
* success handler should be invoked. Note that the result of this
* function will be coerced to a boolean value.
* @param {Function} onSuccess A function to invoke if an attempt evaluates the criteria as true.
* @param {Function} onFailure A function to invoke if all attempts evaluate the criteria as false.
* @param {Number} intervalMs How frequently (in milliseconds) to reevaluate the criteria.
@nbrombal
nbrombal / debug_log.php
Created Mar 31, 2020
Readable logging for PHP
View debug_log.php
/**
* Writes a formatted line to the current environment's error log.
*
* @param mixed... $items_to_log One or more items to output to the log.
*
* @since 2020.2.0
* @author Nick Brombal <nick.brombal@publicishawkeye.com>
*/
function debug_log(...$items_to_log): void
{
@nbrombal
nbrombal / css-selector-regex.php
Last active Feb 21, 2020
Regular expression to capture a selector within a stylesheet
View css-selector-regex.php
<?php
/**
* Creates a regular expression string for properly capturing a specific CSS
* selector within a stylesheet. This regular expression ensures that the
* captured selector isn't actually a substring of another selector.
*
* As always, regular expressions should be considered a last resort for most
* string manipulation due to their high probablity of human error. Think hard
* about whether or not this solution is truly the last or best one available to
@nbrombal
nbrombal / .gitconfig
Created Apr 5, 2019
Nick's git Aliases
View .gitconfig
[alias]
st = status
graph = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(auto)%d%C(reset)'
# I use tug and weld to simplify my branch management. I often want to
# keep a branch distinct even when it could be fast-forwarded, so weld
# saves me a second there. I use tug to update a branch without
# automatically initiating a merge when I don't mean to.
tug = pull --ff-only
@nbrombal
nbrombal / countdown.js
Last active Aug 29, 2015
Javascript countdown timer with page redirect
View countdown.js
$(function() {
// If target date is specific to one timezone, set to true and specify it
var absoluteTarget = true;
var targetTimeZone = -5;
var targetDateUTC = new Date(Date.UTC(2015,05,22)).getTime();
var currentDate = new Date();
var timeZoneOffset = (absoluteTarget ? targetTimeZone * -60 : currentDate.getTimezoneOffset()) * 60 * 1000;
var targetDate = targetDateUTC + timeZoneOffset;