Skip to content

Instantly share code, notes, and snippets.

Avatar
🔧
Updating Radar.Chat

Thomas Hunter II tlhunter

🔧
Updating Radar.Chat
View GitHub Profile
@tlhunter
tlhunter / node-cluster.js
Created Jul 19, 2019
Just the basic node cluster example
View node-cluster.js
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
@tlhunter
tlhunter / embed.js
Last active Nov 3, 2018
Replace GitHub Gist's, YouTube, Vimeo URLs with their embed equivalent
View embed.js
/**
* This function accepts text which is to be transformed into HTML. When
* it encounteres a line which simply contains a single URL it will replace
* that URL with an HTML tag to embed the corresponding resource.
*
* Supported services:
* - GitHub Gists
* - YouTube Videos
* - Vimeo Videos
*/
@tlhunter
tlhunter / linux-desktop-install.sh
Created Apr 10, 2018
For my Openbox setup. Needs manual intervention everywhere
View linux-desktop-install.sh
sudo apt install leafpad htop \
openbox menu openbox-menu tint2 \
obconf lxappearance scrot \
terminator git stterm arandr \
build-essential curl dia dmenu etherape \
filezilla gimp gparted hexcurse \
inkscape nmap tig tmux transmission-gtk \
vim-gtk vlc wireshark zsh keepassx snapd \
feh galculator kazam xbacklight
View child_process.js
// parent.js
const fork = require('child_process').fork;
const CHILDREN = require('os').cpus().length;
const pool = [];
const OPTS = {
stdio: [0, 1, 2, 'ipc']
};
@tlhunter
tlhunter / challenge.eml
Last active Nov 30, 2017
Resignation Email Engineering Challenge
View challenge.eml
I included the following block of text, disguised to resemble a PGP sig, at
the end of my goodbye work email. It also included information about which
internal chat room to post the solution in. The first engineer to reply won
the recognition of our coworkers. Can you come up with the answer?
-----BEGIN SUPER FUN ENGINEERING CHALLENGE-----
IyBTdXBlciBGdW4gRW5naW5lZXJpbmcgQ2hhbGxlbmdlCgpDb25jYXRlbmF0ZSB0aGUgc29sdXRp
b24gdG8gZWFjaCBwcm9ibGVtIChzaW1wbGUgQVNDSUkpIGZvciB0aGUgZmluYWwgYW5zd2VyLgpF
YWNoIGFuc3dlciB3aWxsIGNvbnNpc3Qgb2YgbnVtYmVycyBhbmQgY2FwaXRhbCBsZXR0ZXJzLgpZ
b3Ugd2lsbCBrbm93IGlmIHlvdSBoYXZlIHRoZSBjb3JyZWN0IHN0cmluZyBpZiB0aGUgU0hBMSBz
View realm-install.sh
# Setup Realm's PackageCloud repository
curl -s https://packagecloud.io/install/repositories/realm/realm/script.deb.sh | sudo bash
# Update the repositories
sudo apt-get update
# Install the Realm Object Server
sudo apt-get install realm-object-server-developer
# Enable and start the service
@tlhunter
tlhunter / simple-cache.js
Last active Oct 6, 2017
In-Memory Namespaced Key Expiration Cache
View simple-cache.js
/**
* In-Memory Namespaced Key Expiration Cache
*
* Assumptions: There's a finite amount of namespaces
* Data is frequently read
* Expirations don't happen frequently
* Self-cleaning, doesn't use setTimeout / setImmediate
*/
class SimpleCache {
constructor() {
View no-unused-vars-error.js
/**
* Proposing a new rule for no-unused-vars.args
* See http://eslint.org/docs/rules/no-unused-vars#args
* It would behave similar to after-used, except arguments with `error` sounding names should cause errors if ignored
* Configuring this manually with an array would be great
*/
/*eslint no-unused-vars: ["error", { "args": "after-used-and-errors", "errors": ["e", "err", "error"] }]*/
asyncWork((err, data) => { // e.g. args: all
@tlhunter
tlhunter / distance-geolocation.js
Created May 18, 2017
Get the distance between two points in meters
View distance-geolocation.js
function getDistance(p1, p2) {
var radlat1 = Math.PI * p1.lat/180;
var radlat2 = Math.PI * p2.lat/180;
var theta = p1.lng - p2.lng;
var radtheta = Math.PI * theta/180;
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
dist = Math.acos(dist);
dist = dist * 180 / Math.PI;
dist = dist * 60 * 1.1515 * 1.609344 * 1000;
return dist;
@tlhunter
tlhunter / average-geolocation.js
Created May 17, 2017
Calculate the center/average of multiple GeoLocation coordinates
View average-geolocation.js
/**
* Calculate the center/average of multiple GeoLocation coordinates
* Expects an array of objects with .latitude and .longitude properties
*
* @url http://stackoverflow.com/a/14231286/538646
*/
function averageGeolocation(coords) {
if (coords.length === 1) {
return coords[0];
}