All Articles by Year

Below is the full list of articles that I have written over the years.

  • 2020

    • Automated, Encrypted, Remote Backups using Open Source Tools

      When designing a backup scheme, it's important to start with your high-level requirements. In my case, they are as follows: Is fully automated and non-interactive Does not expose decryption key by writing it to disk in an unprotected state ...

  • 2018

    • Double-Spend Attacks

      Double-spend attacks are often thought of as a theoretical possibility, but an uncommon occurrence. In my opinion, it's reckless to assume that this will always be the case. For the sake of this article, I will separate double-spend attacks ...

    • Workshop: Shared Private Lightning Network

      Introduction What is the Lightning Network? Our Own Private Bitcoin Network Sharing Information During the Workshop For participants: Install and Configure Your Lightning Network Node Create and Fund Your Wallet Sending and Receiving Payme ...

    • Streaming transactions from bitcoind via ZeroMQ

      There are many potential applications that need a reliable, fast stream of bitcoin transactions: payment processing, gathering transaction data for statistics and network analysis, fee estimation, and many more that I can't think of at the ...

    • Secure Cloud Services via SSH Tunneling

      For most web-based business applications these days, it is necessary to run secondary services such as databases, search indexes, shared caches, and so on. Typically these services will be running on their own dedicated box (VPS or dedicate ...

  • 2017

    • SSH Tunnel on Windows Using PuTTY

      This guide will walk you through the steps needed to setup an SSH tunnel from a Windows machine using PuTTY. You can download PuTTY here. An SSH tunnel is useful for port-forwarding, in the case of connecting securely to a remote database s ...

    • Habits of a Careful Internet Citizen

      The internet can be a hostile place, not just because of trolls and soul-crushing comments on youtube videos. Websites and internet-based services are being attacked and their users' personal information stolen by the millions. But we don't ...

    • Migrating to a new password hashing algorithm

      This article assumes that your current password storage mechanism involves some irreversible hashing function. In this case we are forced to migrate each user to the new storage algorithm when they login successfully, because we need the or ...

    • Sweeping bitcoin from an account in Mycelium

      There are a couple reasons I've needed to do this recently: Safely moving BCH (bitcoin cash) from Mycelium accounts Consolidate many small inputs ("dust") to a single address without overpaying on the miner fee If you've used bitcoin any ti ...

    • Safely moving bitcoin cash (BCH) from Electrum

      Before continuing you might want to read the guidance and follow-up from the Electrum team. This is a step-by-step guide for how to safely move BCH (bitcoin cash) from an Electrum wallet. High-level steps are as follows: Empty the Electrum ...

    • Lessons Learned from a Year of Meetups

      Almost every Monday for the past year, I've been organizing a programming meetup in Prague. I tried multiple different formats and teaching styles. I bumbled through some poorly thought-out presentations and had some great sessions where I ...

  • 2014

    • Creating a Secure Bitcoin Wallet

      So you want to create a "secure" bitcoin wallet, but aren't sure of how to do that. Not a problem! This tutorial will guide you through the process of creating a secure wallet with which you can send, receive, and safely store your bitcoins ...

    • How to Install Multiple Versions of Node.js

      There are a number of reasons you would need to install multiple versions of node.js on one machine. Perhaps you need to test your node applications with different versions of node. Or maybe you just want to try out the latest, bleeding-edg ...

    • HTML5 Audio Sprites

      Since you're reading this, you probably have a pile of sound files in a web application wondering if there's a better way. And since you already know how image sprites work, you got to thinking that maybe you could do the same thing for aud ...

    • Manage Remote MySQL Servers with Local phpMyAdmin

      Have you ever needed to manage your remote MySQL databases, and ended up settling on the less-than-ideal setup of having an instance of phpMyAdmin on the same server as the MySQL server? Well, I am about to make your day. I am going to show ...

    • Automated Testing in Node

      Just like with any new skill, learning how to test takes time. For the longest time, I didn't do any automated testing. And, after trying my hand at test-driven development the last few months, I don't know what took me so long to get into ...

  • 2013

    • Quick Start Guide to Web Development

      This is a short, to the point guide for anyone trying to get started with web development. This is not meant to be an exhaustive resource or to cover any particular topics in depth. Instead this is meant as a quick explanation of a few thin ...

    • Inside Out

      To think that humanity is here by some divine intervention; that the Universe was so devoid of purpose that it decided to create us to occupy it. Think of the hubris it takes to believe this mass-delusion. That's religion. And, that's natio ...

    • Scheduled, Automatic Remote Database Backups on Linux

      In this post I will walk you through the process of setting up a scheduled, automatic remote database backup on Linux.If you haven't already done so, you'll need to set up passwordless SSH from the Server with the database(s) to the Server ...

    • Passwordless SSH on Linux

      There are a number of use cases where by logging in via SSH (without a password) is the best (or maybe only) option. For example, if you wanted to run an automated backup on a remote server that would upload files to another remote server v ...

    • How non-developers can look like rock stars to their devs

      This post goes out to all the non-developer people out there. Are you still a little uncomfortable around your developers? Is it because you don't feel like you know enough about the web / websites / code? I may be able to help you with th ...

    • Civilization 2 for the web

      This was my attempt at reverse engineering the epic turn-based strategy game, Civilization 2. It was my first attempt at creating a game, and the first time I've used BackBoneJS. Local Storage is used to store settings and saved games. You ...

    • Giant CSS Files and IE make me something, something..

      Go crazy? Well, maybe not.. I had another fun encounter with Internet Explorer this week. Apparently IE (6-9) enforces a hard limit for the number of CSS rules that it will accept in a single style sheet. Yup, you read that correctly. Just ...

    • Controllers in Sub-Sub Folders in CodeIgniter

      I recently I needed to organize the controllers of a CodeIgniter instance into sub-sub folders. By default, CodeIgniter only allows routing to sub folders in the controller directory: application -- controllers ---- api ------ users.php --- ...

    • Multiple Host Names in One Instance of CodeIgniter

      I recently had the need to manage multiple host names within a single instance of CodeIgniter. Setting the virtual hosts to all point to the same directory in the web root was the easy part. Intelligently routing the requests, once they got ...

    • Handy Terminal Tips and Tricks

      This article contains a few useful things that can be done in terminal; with explanations of what they do and why. I'll continually add to this list as I learn more. Exclude SVN and GIT Files While Backing Up a Directory If you're like me, ...

    • Fixing the Expiring Session Problem in CodeIgniter

      For the most recent stable release of CodeIgniter (2.1.3), there is a rather annoying simultaneous request problem that will kill active sessions. You might have experienced this yourself if you had a website or application with lots of AJA ...

  • 2012

    • Making GIMP A Bit More Usable

      If you have already installed GIMP 2.8+, then you're off to a good start. Now we're going to change a couple things from the default configuration to make GIMP a little bit more useful and intuitive; or at the very least, more like the imag ...

    • Why does my JavaScript break in Internet Explorer?

      Do you use console.log() to debug your JavaScript? Well, I've got news for you.. console.log() breaks Internet Explorer; even if all instances of it are commented out! A quick check you can do to see if console.log() is indeed the source of ...

    • Missing Intermediate SSL Certificate Error

      Update Since this article was written, there is a new initiative in broadening the adoption of HTTPS/SSL across the web: LetsEncrypt. They provide free, automated SSL certificates that actually work. Defining the Problem I encountered a pec ...

    • "I Don't Know" is the Beginning, not the End

      The greatest thing you can realize in life, is that saying you don't know is the beginning of learning something new. Programmers who never admit they don't know are holding themselves back. Besides, who wants to know everything anyways? Se ...

    • How to Export, Import MySQL Databases from Terminal

      In this tutorial I will walk you through the process of creating and restoring a database backup from Terminal in Ubuntu. Create a Database BackupWe're going to use mysqldump to create a backup of the database, and we're going to compress t ...

    • How to Secure phpMyAdmin

      In this article I will explain some steps you can take to add some additional levels of security to your phpMyAdmin. This article assumes you already have phpMyAdmin installed on a LAMP server stack.There are two key things you'll want to d ...

    • Windows 7 + IE9 on Ubuntu

      Cross browser testing with Internet Explorer and Windows just got a whole lot easier. In this article I'll walk you through the full process of downloading, installing, and configuring a Windows Virtual Machine. Get the Virtual Machine Sinc ...

    • Prisoner's Dilemma

      If you're not familiar with the The Prisoner's Dilemma, it's the go-to example for describing game theory. Here's a quick explanation of how it works:Two individuals are each presented with a choice between two options: to Defect or to Coop ...

    • Create, Self-Sign SSL Certificates and Configure Apache for SSL

      In this tutorial I will guide you through the process of creating and self-signing a SSL certificate, installing that certificate in Apache, and configuring Apache for SSL. This tutorial assumes that you have already installed Apache. Insta ...

    • Debugging API Calls: The Less Irritating Way

      Frustrated by PayPal's all-over-the-map API documentation? Can't find the answers on the interwebz? Not to worry! Getting to the root of why your API calls aren't working isn't as difficult as you might think. The Tool for the JobFirst you' ...

    • Get Comfortable with the Idea of Being Completely Lost

      No clue. No clear direction. No end in sight. Yet, you press on. This is what it is to be a developer at times. What separates the mediocre from the great, is the will to continue. Things aren't always going to be easy, or fun. You're going ...

    • How to Configure Apache Solr to run with Multiple Cores

      In this tutorial, I will guide you through the process of configuring your Apache Solr to run with multiple cores. This can be useful if you are using Apache Solr with multiple different projects, and need complete separation between the tw ...

    • How to Be: A Manifesto for Being a Decent Human Being

      We are all human beings. We are in this together. We should never forget that.This is a short list of things we value to help us remember:Accepting responsibility over Passing blame onto othersVoicing your opinion over Staying silentSharing ...

    • Be the Gate Keeper of Your Personal Data

      Creeped out by just how much companies know about you? Maybe you heard about how Target figured out a teenage girl was pregnant before her own father. Or maybe you've found the ads on the websites you visit to be a little too specific. Or m ...

Last updated on