Skip to content

Instantly share code, notes, and snippets.

@craig552uk
craig552uk / fuck_you.php
Created June 22, 2016 12:42
Fuck You PHP
/**
* fUCK yOU php
*
* @craig552uk
*/
<?php
You echo to the browser, not to std out.
So I hunt for bugs in XHRs or (here or (there about))
@craig552uk
craig552uk / cache.py
Created August 8, 2014 11:03
A Simple Python Memory Cache Library
# -*- coding: utf-8 -*-
#
# A simple memory cache library
# Author: Craig Russell <craig@craig-russell.co.uk>
#
import time
class Cache(object):
@craig552uk
craig552uk / basics_of_unix_philosophy
Last active May 10, 2021 09:42
Basics of the Unix Philosophy
Basics of the Unix Philosophy
=============================
Rule of Modularity: Write simple parts connected by clean interfaces
Rule of Clarity: Clarity is better than cleverness
Rule of Composition: Design programs to be connected with other programs
Rule of Separation: Separate policy from mechanism; separate interfaces from engines
@craig552uk
craig552uk / mysql.service.ts
Last active June 18, 2020 09:21
MySQL Wrapper for NodeJS
import { Connection, createPool, createConnection, Pool } from 'mysql';
import { MYSQL_DATABASE, MYSQL_HOST, MYSQL_PASSWORD, MYSQL_PORT, MYSQL_USER } from './config.service';
import { InternalServerError } from 'http-errors';
import { LoggerService } from './logger.service';
import { isEmpty } from '../lib/utilities';
const logger = LoggerService.getInstance();
export class MySQLService {
@craig552uk
craig552uk / Chart.html
Created September 28, 2012 13:40
Blog: Google Spreadsheet Powered Interactive
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Chart</title>
<meta charset="utf-8">
</head>
<body>
<p class="my-chart" style="text-align:center"></p>
@craig552uk
craig552uk / promise_chains.js
Last active February 16, 2016 10:16
Options for passing multiple data down a promise chain
// Promises can only resolve (return) a single value
// Sometimes, you want to collect multiple values as you progress through a promise chain
// e.g. Customer, Product, Basket, Payment Details
//
// I can only think of three options for handling this type of scenario (below)
// NB: Assume that FOO, BAR & BAZ are the result of some complex action (DB query etc.)
//
// What are the Pro's & Cons?
// Are there others?
@craig552uk
craig552uk / test_errors.js
Created February 15, 2016 15:23
The Right and Wrong way to use Errors in Promises
//
// Wrong ways to use Errors in Promises
//
// Passes Error constructor to next step in Promise chain
Promise.resolve('foo').then(val => {
return Error('Bad Thing 1');
}).then(val => {
console.log('LOG 1', val);
@craig552uk
craig552uk / python-file-encoding.txt
Created September 24, 2013 09:04
Python File Encoding
# -*- coding: utf-8 -*-
@craig552uk
craig552uk / mit-license.txt
Created September 23, 2013 15:41
MIT License
The MIT License (MIT)
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
@craig552uk
craig552uk / .bashrc
Last active December 23, 2015 17:59
My Bashrc
# Colours
txtgrn='\[\e[0;32m\]' # Green
txtylw='\[\e[0;33m\]' # Yellow
txtblu='\[\e[0;34m\]' # Blue
txtpur='\[\e[0;35m\]' # Purple
txtcyn='\[\e[0;36m\]' # Cyan
txtwht='\[\e[0;37m\]' # White
bldblk='\[\e[1;30m\]' # Black - Bold
bldred='\[\e[1;31m\]' # Red - Bold
bldgrn='\[\e[1;32m\]' # Green - Bold