Edd Mann's Archive

2025

Building a Audio Hugo Shortcode for Local and Remote Content

Building a Audio Hugo Shortcode for Local and Remote Content

Building a Video Hugo Shortcode for Local and Remote Content

Building a Video Hugo Shortcode for Local and Remote Content

How I Used ChatGPT to Fix My Old Blog Posts (And What I Learned)

How I Used ChatGPT to Fix My Old Blog Posts (And What I Learned)

2024

Building an F1 Picks Game in 4 Hours: It's Lights Out and Away We Go!

Building an F1 Picks Game in 4 Hours: It's Lights Out and Away We Go!

Notes: Monolith to Microservices by Sam Newman

Notes: Monolith to Microservices by Sam Newman

Solving the Advent of Code 2023 calendar in Kotlin and Swift

Solving the Advent of Code 2023 calendar in Kotlin and Swift

2023

Building a Secret Santa Draw PWA in React and TypeScript

Building a Secret Santa Draw PWA in React and TypeScript

Building a Running Calculator PWA in React and TypeScript

Building a Running Calculator PWA in React and TypeScript

Rewriting the santa-lang Interpreter in Rust, Part 4 - Distribution

Rewriting the santa-lang Interpreter in Rust, Part 4 - Distribution

Rewriting the santa-lang Interpreter in Rust, Part 3 - Performance

Rewriting the santa-lang Interpreter in Rust, Part 3 - Performance

Rewriting the santa-lang Interpreter in Rust, Part 2 - Runtimes

Rewriting the santa-lang Interpreter in Rust, Part 2 - Runtimes

Rewriting the santa-lang Interpreter in Rust, Part 1 - Implementing the Core

Rewriting the santa-lang Interpreter in Rust, Part 1 - Implementing the Core

Determining your closest Parkrun Alphabet Challenge using Python and pandas

Determining your closest Parkrun Alphabet Challenge using Python and pandas

Using LangChain Agents and Tools to answer questions on the NBA with OpenAI

Using LangChain Agents and Tools to answer questions on the NBA with OpenAI

Q&A Retrieval Augmented Generation (RAG) with LangChain and Postgres

Q&A Retrieval Augmented Generation (RAG) with LangChain and Postgres

Q&A Retrieval Augmented Generation (RAG) with LangChain and Chroma

Q&A Retrieval Augmented Generation (RAG) with LangChain and Chroma

Solving the Advent of Code 2022 calendar using my own programming language, santa-lang

Solving the Advent of Code 2022 calendar using my own programming language, santa-lang

2022

Designing santa-lang, a language for solving Advent of Code puzzles

Designing santa-lang, a language for solving Advent of Code puzzles

Allocating Secret Santas using an AWS Step Function workflow and every available Lambda runtime

Allocating Secret Santas using an AWS Step Function workflow and every available Lambda runtime

Building a Serverless Wedding Photo Gallery using AWS Lambda, S3 and DynamoDB

Building a Serverless Wedding Photo Gallery using AWS Lambda, S3 and DynamoDB

Solving the Advent of Code 2021 calendar on a Raspberry Pi Pico

Solving the Advent of Code 2021 calendar on a Raspberry Pi Pico

Solving the Advent of Code 2021 calendar using C in under half-a-second

Solving the Advent of Code 2021 calendar using C in under half-a-second

Deploying our Wedding Website onto a Raspberry Pi Kubernetes Cluster using K3s and Helm

Deploying our Wedding Website onto a Raspberry Pi Kubernetes Cluster using K3s and Helm

Containerising the DataDog Agent for HTTP health-checks using DigitalOcean App Platform and Terraform

Containerising the DataDog Agent for HTTP health-checks using DigitalOcean App Platform and Terraform

Can you name that AWS service?

Can you name that AWS service?

Managing long-running AWS Fargate ECS tasks within your Serverless project

Managing long-running AWS Fargate ECS tasks within your Serverless project

Separating out the Lambda Bref runtime from your project's Composer dependencies

Separating out the Lambda Bref runtime from your project's Composer dependencies

Using GitHub Actions to send Gone Live release notes via Email and Slack

Using GitHub Actions to send Gone Live release notes via Email and Slack

Our Wedding Website, Three Years in the Making...

Our Wedding Website, Three Years in the Making...

2021

Building a Secret Santa allocator and SMS sender using a Raspberry Pi Pico/MicroPython and SIM800L module

Building a Secret Santa allocator and SMS sender using a Raspberry Pi Pico/MicroPython and SIM800L module

Building a 2FA TOTP generator using a Raspberry Pi Pico and MicroPython

Building a 2FA TOTP generator using a Raspberry Pi Pico and MicroPython

Building a Rubik's Cube Solver using Rust/WASM and Three.js/React

Building a Rubik's Cube Solver using Rust/WASM and Three.js/React

Building an optimal Pocket Cube (2x2x2) Solver using Rust/WASM and Three.js/React

Building an optimal Pocket Cube (2x2x2) Solver using Rust/WASM and Three.js/React

Advent of Code 2016 - Day 11 - Radioisotope Thermoelectric Generators

Advent of Code 2016 - Day 11 - Radioisotope Thermoelectric Generators

Advent of Code 2016 - Day 10 - Balance Bots

Advent of Code 2016 - Day 10 - Balance Bots

Advent of Code 2016 - Day 9 - Explosives in Cyberspace

Advent of Code 2016 - Day 9 - Explosives in Cyberspace

Advent of Code 2016 - Day 8 - Two-Factor Authentication

Advent of Code 2016 - Day 8 - Two-Factor Authentication

Advent of Code 2016 - Day 7 - Internet Protocol Version 7

Advent of Code 2016 - Day 7 - Internet Protocol Version 7

Advent of Code 2016 - Day 6 - Signals and Noise

Advent of Code 2016 - Day 6 - Signals and Noise

Advent of Code 2016 - Day 5 - How About a Nice Game of Chess?

Advent of Code 2016 - Day 5 - How About a Nice Game of Chess?

Advent of Code 2016 - Day 4 - Security Through Obscurity

Advent of Code 2016 - Day 4 - Security Through Obscurity

Advent of Code 2016 - Day 3 - Squares With Three Sides

Advent of Code 2016 - Day 3 - Squares With Three Sides

Advent of Code 2016 - Day 2 - Bathroom Security

Advent of Code 2016 - Day 2 - Bathroom Security

Advent of Code 2016 - Day 1 - No Time for a Taxicab

Advent of Code 2016 - Day 1 - No Time for a Taxicab

Advent of Code 2015 - Day 25 - Let It Snow

Advent of Code 2015 - Day 25 - Let It Snow

Advent of Code 2015 - Day 24 - It Hangs in the Balance

Advent of Code 2015 - Day 24 - It Hangs in the Balance

Advent of Code 2015 - Day 23 - Opening the Turing Lock

Advent of Code 2015 - Day 23 - Opening the Turing Lock

Advent of Code 2015 - Day 22 - Wizard Simulator 20XX

Advent of Code 2015 - Day 22 - Wizard Simulator 20XX

Advent of Code 2015 - Day 21 - RPG Simulator 20XX

Advent of Code 2015 - Day 21 - RPG Simulator 20XX

Advent of Code 2015 - Day 20 - Infinite Elves and Infinite Houses

Advent of Code 2015 - Day 20 - Infinite Elves and Infinite Houses

Advent of Code 2015 - Day 19 - Medicine for Rudolph

Advent of Code 2015 - Day 19 - Medicine for Rudolph

Advent of Code 2015 - Day 18 - Like a GIF For Your Yard

Advent of Code 2015 - Day 18 - Like a GIF For Your Yard

Advent of Code 2015 - Day 17 - No Such Thing as Too Much

Advent of Code 2015 - Day 17 - No Such Thing as Too Much

Advent of Code 2015 - Day 16 - Aunt Sue

Advent of Code 2015 - Day 16 - Aunt Sue

Advent of Code 2015 - Day 15 - Science for Hungry People

Advent of Code 2015 - Day 15 - Science for Hungry People

Advent of Code 2015 - Day 14 - Reindeer Olympics

Advent of Code 2015 - Day 14 - Reindeer Olympics

Advent of Code 2015 - Day 13 - Knights of the Dinner Table

Advent of Code 2015 - Day 13 - Knights of the Dinner Table

Advent of Code 2015 - Day 12 - JSAbacusFramework.io

Advent of Code 2015 - Day 12 - JSAbacusFramework.io

Advent of Code 2015 - Day 11 - Corporate Policy

Advent of Code 2015 - Day 11 - Corporate Policy

Advent of Code 2015 - Day 10 - Elves Look, Elves Say

Advent of Code 2015 - Day 10 - Elves Look, Elves Say

Advent of Code 2015 - Day 9 - All in a Single Night

Advent of Code 2015 - Day 9 - All in a Single Night

Advent of Code 2015 - Day 8 - Matchsticks

Advent of Code 2015 - Day 8 - Matchsticks

Advent of Code 2015 - Day 7 - Some Assembly Required

Advent of Code 2015 - Day 7 - Some Assembly Required

Advent of Code 2015 - Day 6 - Probably a Fire Hazard

Advent of Code 2015 - Day 6 - Probably a Fire Hazard

Advent of Code 2015 - Day 5 - Doesn't He Have Intern-Elves For This?

Advent of Code 2015 - Day 5 - Doesn't He Have Intern-Elves For This?

Advent of Code 2015 - Day 4 - The Ideal Stocking Stuffer

Advent of Code 2015 - Day 4 - The Ideal Stocking Stuffer

Implementing a Compound Set in TypeScript

Implementing a Compound Set in TypeScript

Advent of Code 2015 - Day 3 - Perfectly Spherical Houses in a Vacuum

Advent of Code 2015 - Day 3 - Perfectly Spherical Houses in a Vacuum

Advent of Code 2015 - Day 2 - I Was Told There Would Be No Math

Advent of Code 2015 - Day 2 - I Was Told There Would Be No Math

Advent of Code 2015 - Day 1 - Not Quite Lisp

Advent of Code 2015 - Day 1 - Not Quite Lisp

2020

Building an Enigma Machine in Haskell

Building an Enigma Machine in Haskell

Building an Enigma Machine in ClojureScript

Building an Enigma Machine in ClojureScript

Creating a React-based Chess Game with WASM Bots in TypeScript

Creating a React-based Chess Game with WASM Bots in TypeScript

Binary Addition using Half and Full Adders within TypeScript

Binary Addition using Half and Full Adders within TypeScript

The Mystery Calculator in ClojureScript and Reagent

The Mystery Calculator in ClojureScript and Reagent

Building a Nokia Composer (RTTTL) Player and WAV-file Generator in the Browser

Building a Nokia Composer (RTTTL) Player and WAV-file Generator in the Browser

Allocating and Notifying Secret Santas via Email using Clojure

Allocating and Notifying Secret Santas via Email using Clojure

Creating a Contact Tracing Scanner using Swift for macOS

Creating a Contact Tracing Scanner using Swift for macOS

Creating a Contact Tracing Scanner using Web Bluetooth

Creating a Contact Tracing Scanner using Web Bluetooth

2019

Building a Flag Guessing Game using React Hooks

Building a Flag Guessing Game using React Hooks

Adding Running Shoes (aka Speeding up walking) in Pokémon Red (pokered)

Adding Running Shoes (aka Speeding up walking) in Pokémon Red (pokered)

Changing the Starter Pokémon within Pokémon Red (pokered)

Changing the Starter Pokémon within Pokémon Red (pokered)

Creating a Time-lapse Camera with HypriotOS/Docker using a Raspberry Pi 3B+ and Raspberry Pi Zero W

Creating a Time-lapse Camera with HypriotOS/Docker using a Raspberry Pi 3B+ and Raspberry Pi Zero W

Allocating Secret Santas with a Substitution Cipher using Clojure

Allocating Secret Santas with a Substitution Cipher using Clojure

Unlocking Tsunekazu Ishihara's team in Pokémon Red (pokered)

Unlocking Tsunekazu Ishihara's team in Pokémon Red (pokered)

Compiling Pokémon Red (pokered) using Docker and adding 'Super B' button behaviour

Compiling Pokémon Red (pokered) using Docker and adding 'Super B' button behaviour

2018

Mince Pie Challenge: Viewing and Removing Mince Pies with Amazon DynamoDB

Mince Pie Challenge: Viewing and Removing Mince Pies with Amazon DynamoDB

Creating a Command Line Application to Fetch URL Titles in Go

Creating a Command Line Application to Fetch URL Titles in Go

Mince Pie Challenge: Adding and Listing Mince Pies with Amazon DynamoDB

Mince Pie Challenge: Adding and Listing Mince Pies with Amazon DynamoDB

How to Expand a Linux AWS EBS Root/Partition Volume without Rebooting

How to Expand a Linux AWS EBS Root/Partition Volume without Rebooting

Setting up Caddy Server within AWS using Packer and Terraform

Setting up Caddy Server within AWS using Packer and Terraform

Mince Pie Challenge: Adding the Bootstrap Endpoint and Serverless Offline

Mince Pie Challenge: Adding the Bootstrap Endpoint and Serverless Offline

Building a Babel Plugin: Adding a Function Composition Operator and Auto-Curried Functions to JavaScript

Building a Babel Plugin: Adding a Function Composition Operator and Auto-Curried Functions to JavaScript

Mince Pie Challenge: Adding Test Coverage using Jest and Travis CI

Mince Pie Challenge: Adding Test Coverage using Jest and Travis CI

Mince Pie Challenge: Setting up Flow with Babel and Webpack

Mince Pie Challenge: Setting up Flow with Babel and Webpack

Mince Pie Challenge: Authentication with Amazon Cognito and JSON Web Tokens

Mince Pie Challenge: Authentication with Amazon Cognito and JSON Web Tokens

Mince Pie Challenge: Setting up the Serverless Framework with Docker, Webpack and Babel

Mince Pie Challenge: Setting up the Serverless Framework with Docker, Webpack and Babel

Mince Pie Challenge: Designing the RESTful API with RAML

Mince Pie Challenge: Designing the RESTful API with RAML

Mince Pie Challenge: Building a Serverless RESTful API and React Client

Mince Pie Challenge: Building a Serverless RESTful API and React Client

Determining if an IPv4 address is within a CIDR range in JavaScript

Determining if an IPv4 address is within a CIDR range in JavaScript

Insight into Site Reliability Engineering with Niall Murphy

Insight into Site Reliability Engineering with Niall Murphy

Setting up GitHub Pages HTTPS Custom Domains using CloudFront and Lambda@Edge

Setting up GitHub Pages HTTPS Custom Domains using CloudFront and Lambda@Edge

Unlocking the AWS WAF Logs

Unlocking the AWS WAF Logs

2017

Creating a 'Winning' Audio Lambda Service using Serverless, Polly and compiled SOX

Creating a 'Winning' Audio Lambda Service using Serverless, Polly and compiled SOX

'Memes as a Service' using Lambda, Serverless and ImageMagick

'Memes as a Service' using Lambda, Serverless and ImageMagick

Scheduling EC2 Instances using Lambda and CloudWatch Events

Scheduling EC2 Instances using Lambda and CloudWatch Events

Bitcoin Internals: Verifying Merkle Roots using Merkle Proofs in JavaScript

Bitcoin Internals: Verifying Merkle Roots using Merkle Proofs in JavaScript

Bitcoin Internals: How Blocks use Merkle Trees in JavaScript

Bitcoin Internals: How Blocks use Merkle Trees in JavaScript

Using Homebrew to Manage Project Development Scripts

Using Homebrew to Manage Project Development Scripts

Handling Retries and Back-off Attempts with JavaScript Promises

Handling Retries and Back-off Attempts with JavaScript Promises

2016

Managing Newlines and Unicode within JavaScript and PHP

Managing Newlines and Unicode within JavaScript and PHP

Designing Immutable Concepts with Transient Mutation in PHP

Designing Immutable Concepts with Transient Mutation in PHP

Managing Background Processes within Symfony

Managing Background Processes within Symfony

Using Constraint-based Ordering in PHP

Using Constraint-based Ordering in PHP

Throttling and Debouncing Function Invocation in JavaScript

Throttling and Debouncing Function Invocation in JavaScript

AVL Trees in Clojure

AVL Trees in Clojure

Anagram Solver in Clojure

Anagram Solver in Clojure

Maybe in JavaScript

Maybe in JavaScript

An 'array_column' re-indexing trick in PHP

An 'array_column' re-indexing trick in PHP

Generating Podcast Stats in PHP

Generating Podcast Stats in PHP

Understanding De Morgan's Laws to Simplify Propositions

Understanding De Morgan's Laws to Simplify Propositions

You Should Switch to PostgreSQL: My Conversation with Adam Wathan on Full Stack Radio

You Should Switch to PostgreSQL: My Conversation with Adam Wathan on Full Stack Radio

Validating 32-bit Integers using PHP

Validating 32-bit Integers using PHP

Binary/Octal/Hexadecimal to Decimal using Collection Pipelines in JavaScript

Binary/Octal/Hexadecimal to Decimal using Collection Pipelines in JavaScript

Operations on a Deck of Cards in PostgreSQL

Operations on a Deck of Cards in PostgreSQL

Implementing Transpose and Zip in JavaScript

Implementing Transpose and Zip in JavaScript

Using the 'IS (NOT) DISTINCT FROM' SQL Comparators

Using the 'IS (NOT) DISTINCT FROM' SQL Comparators

Map-Filter Combination in PHP

Map-Filter Combination in PHP

Maintaining Invariant Constraints in PostgreSQL using Trigger Functions

Maintaining Invariant Constraints in PostgreSQL using Trigger Functions

Mapping, Filtering and Reducing in PHP

Mapping, Filtering and Reducing in PHP

Bringing Back the Blink Tag using JavaScript

Bringing Back the Blink Tag using JavaScript

Handling Time-Dependent State Recording using React

Handling Time-Dependent State Recording using React

Insertion Sort in Clojure

Insertion Sort in Clojure

Bubble Sort in Clojure... again

Bubble Sort in Clojure... again

Handling Array Equality in PHP

Handling Array Equality in PHP

Bubble Sort in Clojure

Bubble Sort in Clojure

Promisifying Error-First Asynchronous Callbacks in JavaScript

Promisifying Error-First Asynchronous Callbacks in JavaScript

Using Generators for Promise Coroutines in JavaScript

Using Generators for Promise Coroutines in JavaScript

Fetching Link Titles using Promises and Async/Await in JavaScript

Fetching Link Titles using Promises and Async/Await in JavaScript

Arrow Functions Lexical 'this' Scoping in JavaScript

Arrow Functions Lexical 'this' Scoping in JavaScript

Mimicking Named Parameters in JavaScript

Mimicking Named Parameters in JavaScript

Undefined Variable Checks in JavaScript

Undefined Variable Checks in JavaScript

Using Multiple Arrays with array_map in PHP

Using Multiple Arrays with array_map in PHP

Implementing a Cancellable Promise in JavaScript

Implementing a Cancellable Promise in JavaScript

Creating a IPersistentSet compatible Binary Tree in Clojure

Creating a IPersistentSet compatible Binary Tree in Clojure

Implementing Promise.all and Promise.race in JavaScript

Implementing Promise.all and Promise.race in JavaScript

Exploring Multi-Methods in Clojure

Exploring Multi-Methods in Clojure

Binary Search Trees in Clojure

Binary Search Trees in Clojure

Recreating 'Let' using a Macro in Clojure

Recreating 'Let' using a Macro in Clojure

Checking for Balanced Parentheses in Clojure

Checking for Balanced Parentheses in Clojure

Conditional Expressions in PostgreSQL

Conditional Expressions in PostgreSQL

QuickSort in Clojure

QuickSort in Clojure

Even Higher Trampolining in JavaScript

Even Higher Trampolining in JavaScript

Recursive Functions using a Trampoline in Clojure

Recursive Functions using a Trampoline in Clojure

Recursive Functions using a Trampoline in JavaScript

Recursive Functions using a Trampoline in JavaScript

Mergesort in Clojure using Post Conditionals

Mergesort in Clojure using Post Conditionals

Infix Calculator in Clojure

Infix Calculator in Clojure

2015

FizzBuzz in Clojure

FizzBuzz in Clojure

Asynchronous Calls within Flux

Asynchronous Calls within Flux

Arabic to Roman Numerals Converter in JavaScript

Arabic to Roman Numerals Converter in JavaScript

Cartesian Product in JavaScript

Cartesian Product in JavaScript

Peano Numbers and Arithmetic in JavaScript

Peano Numbers and Arithmetic in JavaScript

Implementing Classical Inheritance in JavaScript

Implementing Classical Inheritance in JavaScript

How the 'new' keyword works in JavaScript

How the 'new' keyword works in JavaScript

Implementing the Shunting Yard algorithm in JavaScript

Implementing the Shunting Yard algorithm in JavaScript

Developing a Resizable-Indexed Array as a PHP Extension with Joe Watkins

Developing a Resizable-Indexed Array as a PHP Extension with Joe Watkins

Small RPN Implementation in JavaScript

Small RPN Implementation in JavaScript

Lifting JavaScript Operators into First-class Functions

Lifting JavaScript Operators into First-class Functions

PHP Extension Development for Beginners with Joe Watkins

PHP Extension Development for Beginners with Joe Watkins

Insertion, Removal and Inversion Operations on Binary (Search) Trees in PHP

Insertion, Removal and Inversion Operations on Binary (Search) Trees in PHP

Managing Jenkins Project Builds and Configuration using PHP

Managing Jenkins Project Builds and Configuration using PHP

Optional Value Control-flows in PHP using Traits and Magic-methods

Optional Value Control-flows in PHP using Traits and Magic-methods

Partial Application (Currying) and Composition using JavaScript ES6

Partial Application (Currying) and Composition using JavaScript ES6

Simplify Git commit fixes using fixup and auto-squash

Simplify Git commit fixes using fixup and auto-squash

Implementing Streams in PHP

Implementing Streams in PHP

Cons Lists and Folds in PHP

Cons Lists and Folds in PHP

2014

The Internals of Git

The Internals of Git

Reversing a Unicode String in PHP using UTF-16BE/LE

Reversing a Unicode String in PHP using UTF-16BE/LE

Reversing a String in PHP

Reversing a String in PHP

Tuples in PHP

Tuples in PHP

Storing PHP Sessions/File Caches in Memory using TMPFS

Storing PHP Sessions/File Caches in Memory using TMPFS

Implementing ROT13 and ROT(n) Caesar Ciphers in Python

Implementing ROT13 and ROT(n) Caesar Ciphers in Python

Securing Sessions in PHP

Securing Sessions in PHP

Functional Quick sort in Scala and JavaScript

Functional Quick sort in Scala and JavaScript

Self-Signed SSL Certificates with Nginx and Apache

Self-Signed SSL Certificates with Nginx and Apache

The Y (Fixed-Point) Combinator in PHP

The Y (Fixed-Point) Combinator in PHP

Arch Linux and Awesome WM Installation Notes

Arch Linux and Awesome WM Installation Notes

Using Anonymous Functions (Lambdas) and Closures in PHP

Using Anonymous Functions (Lambdas) and Closures in PHP

Parallel Summation in Java

Parallel Summation in Java

Introduction to Creating a Basic PHP Extension

Introduction to Creating a Basic PHP Extension

Using Iterative deepening depth-first search in Python

Using Iterative deepening depth-first search in Python

Depth-First Search and Breadth-First Search in Python

Depth-First Search and Breadth-First Search in Python

Processing a List of Links using Python and BeautifulSoup

Processing a List of Links using Python and BeautifulSoup

Creating a Basic Auth. WSGI Middleware in Python

Creating a Basic Auth. WSGI Middleware in Python

Understanding Python WSGI with Examples

Understanding Python WSGI with Examples

Mounting an OSX SSH Volume using FUSE and SSHFS

Mounting an OSX SSH Volume using FUSE and SSHFS

Using Basic Auth. and Decorators in Python's Flask

Using Basic Auth. and Decorators in Python's Flask

Implementing Basic Python Decorators in PHP

Implementing Basic Python Decorators in PHP

Basic Shell Job Control in Unix

Basic Shell Job Control in Unix

Compiling PHP 5.5 with ZTS and pthreads Support

Compiling PHP 5.5 with ZTS and pthreads Support

Shell Functions to Recursively Delete/Suspend all Vagrant Instances

Shell Functions to Recursively Delete/Suspend all Vagrant Instances

Providing Local JS and CSS Resources for CDN Fallbacks

Providing Local JS and CSS Resources for CDN Fallbacks

Accessors (Getter/Setter) and Singleton Traits in PHP

Accessors (Getter/Setter) and Singleton Traits in PHP

Move Last Git Commit to New or Existing Branch

Move Last Git Commit to New or Existing Branch

Implementing a Dynamic Vector (Array) in C

Implementing a Dynamic Vector (Array) in C

Creating a Mac Microphone Mute Keyboard Shortcut

Creating a Mac Microphone Mute Keyboard Shortcut

Transferring Files using SSH and SCP

Transferring Files using SSH and SCP

Using Graphviz with SVG Output in PHP

Using Graphviz with SVG Output in PHP

Implementing and Using Memoization in PHP

Implementing and Using Memoization in PHP

How Static Facades and IoC are used in Laravel

How Static Facades and IoC are used in Laravel

Using Python's Pygments Syntax Highlighter in PHP

Using Python's Pygments Syntax Highlighter in PHP

Implementing Heapsort in Java and C

Implementing Heapsort in Java and C

Implementing a XOR Doubly Linked-List in C

Implementing a XOR Doubly Linked-List in C

Implementing a Doubly Linked List in C

Implementing a Doubly Linked List in C

2013

Implementing a Singly Linked-List in C

Implementing a Singly Linked-List in C

Experimenting with the XOR Swap Method in Java

Experimenting with the XOR Swap Method in Java

Least Significant Digit (LSD) Radix Sort in Java

Least Significant Digit (LSD) Radix Sort in Java

Using Partial Application in PHP

Using Partial Application in PHP

Implementing a Queue in Java using Arrays and Linked Lists

Implementing a Queue in Java using Arrays and Linked Lists

Shunting Yard Implementation in Java

Shunting Yard Implementation in Java

Uploading Podcast Audio to YouTube

Uploading Podcast Audio to YouTube

Implementing a Stack in Java using Arrays and Linked Lists

Implementing a Stack in Java using Arrays and Linked Lists

Processing Apache and Nginx Access Logs

Processing Apache and Nginx Access Logs

Using Bit Flags and EnumSets in Java

Using Bit Flags and EnumSets in Java

Decimal to Hexadecimal using Bitwise, Bit Shift Operations in Java

Decimal to Hexadecimal using Bitwise, Bit Shift Operations in Java

Reverse Polish Notation (RPN) in Scala

Reverse Polish Notation (RPN) in Scala

Changing the Timestamp of a Previous Git Commit

Changing the Timestamp of a Previous Git Commit

Configuring SSH Public Key Authentication on CentOS 6.4

Configuring SSH Public Key Authentication on CentOS 6.4

Using For-Comprehensions in Scala

Using For-Comprehensions in Scala

Simple Function Driven-Development

Simple Function Driven-Development

Open external links in a new window using JavaScript

Open external links in a new window using JavaScript

Twitter API v1.1 User Timeline JavaScript Solution

Twitter API v1.1 User Timeline JavaScript Solution

Solving the k-combinations problem in Scala

Solving the k-combinations problem in Scala

Merge sort in Scala using Tail-recursion and Streams

Merge sort in Scala using Tail-recursion and Streams

Installing Nginx/Apache, MySQL, PHP 5.5 (LAMP) stack on CentOS 6.4

Installing Nginx/Apache, MySQL, PHP 5.5 (LAMP) stack on CentOS 6.4

Coalescing Operation in PHP (for Default Values)

Coalescing Operation in PHP (for Default Values)

Merge sort comparison in Java and Scala

Merge sort comparison in Java and Scala

Personal Git Server with Gitolite

Personal Git Server with Gitolite

2012

Accessing PHP documentation using 'pman'

Accessing PHP documentation using 'pman'

An alternative to 'var_dump' in PHP

An alternative to 'var_dump' in PHP

Making Gitflow the way you want it to

Making Gitflow the way you want it to

Complete MAMP Setup with PHP 5.5

Complete MAMP Setup with PHP 5.5

PHPass, the go-to password hashing library

PHPass, the go-to password hashing library

Database Migrations with CodeIgniter

Database Migrations with CodeIgniter

DNSMasq, your local development DNS

DNSMasq, your local development DNS

IE6, IE7 & IE8, meet VMWare Fusion

IE6, IE7 & IE8, meet VMWare Fusion

Sphinx, up and running

Sphinx, up and running

2011

Ten ways to reverse a string in JavaScript

Ten ways to reverse a string in JavaScript

LaTeX, an Introduction

LaTeX, an Introduction