A NEW SITE

I’m not a huge fan of meta posts, but this seemed like a fairly major change so I’m making one. I’ve updated my site to use Hugo rather than Wordpress. Wordpress is nice and all, but it’s fairly complex for this site and with horror stories of rouge plugins, I didn’t feel it was the best choice. Also, the new static site is a lot faster and a lot easier to work with, so those are also added bonuses.

Read more

CONDENSED PHPMYADMIN CONFIGURATION

This is something that bothered me when adding more than one server to PHPMyAdmin. The default configuration is very verbose, and largely isn’t needed for simple use cases. In my case, I boiled down the config options I use most frequently, and changed the format to be more inline. The format doesn’t look too good on the site, but it is pretty clean once in a wider editor. $cfg['Servers'] = [ 1 => [ 'host' => 'xxx', // MySQL hostname or IP address 'port' => '', // MySQL port - leave blank for default port 'socket' => '', // Path to the socket - leave blank for default socket 'ssl' => true, // Use SSL for connecting to MySQL server?

Read more

SECURING APACHE SITES WITH SAML

So I recently have fallen in love with single sign on. I really like centralized user management, and being able to adapt it into many different application is really sweet. Plus, it makes compliance people happy! One feature I like is the ability to secure arbitrary Apache websites with it using a plugin called Mellon. Basically this acts like the native apache authentication, but rather than present a window for a username and password, it redirects you to your SSO provider to login.

Read more

USING FOUNDATION FOR EMAILS (INKY) IN A PHP APPLICATION

One framework that I instantly fell in love with was Inky. Having built a number of emails using pure HTML, having the shorthand syntax was amazing. Coupling it with the inliner and CSS in Foundation for Emails, it’s dead simple to write a good looking email. Just one problem: Foundation for Emails assumes you’re either writing emails as standalone units, or integrated into a Node.JS application. What are you to do if you’re, say, running a PHP Symfony application?

Read more

ABOUT MY MIGRATION TO AWS

After a long a deep think, I’ve decided to retire my physical hardware and migrate all of my machines to Amazon Web Services. It wasn’t an easy choice, and I feel like I need to spend some time explaining why, just get some things off my chest. Reason #1 - Our Hardware is End Of Life Most of the reasons we’re moving are related to our hardware approaching the end of its useful life.

Read more

GNUCASH TEMPLATE FOR HARLAND CLARKE LASER 417 CHECKS

So this is kinda random, but I needed a template to make these checks work with GnuCash. So if some other lazy soul wants to use it, here it is :) [Top] Guid = c226b43c-1e06-417d-a191-e3e78a789341 Title = Harland Clarke Laser 417 Checks [Check Positions] Height = 250.0 Names = Top;Middle;Bottom [Check Items] Type_1 = PAYEE Coords_1 = 75.0;95.0 Type_2 = AMOUNT_NUMBER Coords_2 = 500.0;102.0 Type_3 = AMOUNT_WORDS Coords_3 = 75.0;120.0; Type_4 = ADDRESS Coords_4 = 75.

Read more

SMART FAILOVER WITH REDIS SENTINEL AND KEEPALIVED

Through some Google-fu and some other great tutorials, I’ve successfully setup a groups of Redis machines with automatic failover detection via keepalived and sentinel. This sounds mundane, but lets you setup another layer of protection for your Redis cluster without lots of extra configuration. Background – Redis Sentinel and Keepalived Redis Sentinel makes it pretty easy to setup a group of replicated Redis machines and elect new master nodes when others are offline.

Read more

ADDING A FIREWALL RULE TO DEBIAN 9

Not too long ago in the Linux world, firewall rules were complex. iptables did its job very well, but managing rules was daunting for a newcomer. Debian 9 introduces some changes that make it pretty simple to add a firewall rule. Usually firewall rules are taken care of automatically, when you install a program it takes care of opening up the required ports for itself. In some cases, software can conflict and that is what happened in my case.

Read more

AUTOWIRED TRAITS IN SYMFONY

This is something that I think is pretty slick in Symfony. With 3.3, Symfony introduced the idea of autowired services. Basically, you just put a type hint for what you need and the container injects the correct service as if by magic. You can take advantage of this in some more unusual places that aren’t immediately apparent after reading the documentation. In my case, I had a controller trait that provides some common functions but it needs to interface with some services to do this.

Read more

OUTAGE SEPTEMBER 15 2017

Today, The Storehouse experienced an outage that lasted approximately 12 hours. This was caused due to updates performed late the night before and services restarting during that process. Last night I ran upgrades of the servers that run The Storehouse, including our three ProxmoxVE nodes. When the upgrades on these nodes were complete, the nodes had an updated kernel version and needed to restart to use the new kernel Restarting is usually a painless process in our environment.

Read more