Serverless on LocalStack
I’ve recently had occasion to start writing a series of services on the AWS stack using the Serverless Framework. Serverless is a great framework, but I really don’t like having to deploy stuff to AWS to test DynamoboDB streams, SQS queues, etc. That’s where LocalStack comes in. LocalStack lets you host an entire AWS ecosystem locally so you can test “all the things” without actually deploying anything. LocalStack works great, but I discovered there are a few undocumented things that you’ll need to know to get your stuff working correctly locally. Read more...
Z Shell One-Year Update
I’ve been using Z Shell for over a year now and I’ve been very pleased with it. Honestly, I should have moved off macOS’s antiquated default Bash ages ago. Below is an update on where my .zshrc is sitting a while down the road. Oh My ZSH Plug-ins I keep the Oh My ZSH plug-ins pretty light. Partially because I want to keep startup times low and partially because I can’t remember the commands anyways. Read more...
Simple Keyboard KVM Switch
I recently replaced my iMac with an M1 Mac mini and did an entire rework of my desk setup. With the iMac gone, I was finally able to buy a proper 4k montior to share between my work laptop and my personal workstation. I was also able to upgrade my keyboard to a Varmilo Miya Pro and get a new mouse. Since I would be switching between my work and personal machines several times a day, I wanted a simple and reliable system to share external devices between my systems. Read more...
Drafts 5 Sermon Prep with LectServe
Drafts 5 for Mac recently introduced the ability to do some basic scripting in JavaScript as an action in the application. Each time I prepare a sermon, the first step for me is to lookup the readings for the week on LectServe and then paste the readings into Drafts where I can start doing sermon preparation and, eventually, write my sermon. As soon as I saw actions and scripting introduced for Drafts, I knew I’d have to automate my sermon prep process. Read more...
Use Localtime in Debian Slim
Sometimes you need to run cron or other applications in your Debian container that rely on the system running in localtime. In Debian 9, switching to localtime wasn’t the easiest thing in the world. With Debian 10, however, you can switch your container to another timezone with just a few commands. First you need to install tzdata. RUN apt-get install tzdata -y Then you need to make a link between the timezone you want to move to in /usr/share/zoneinfo and /etc/localtime. Read more...
Migrate from Bash to Z Shell (On macOS)
In macOS Catalina, Apple is switching the default shell to Z Shell from Bash. Even if you haven’t upgraded to Catalina yet, getting used to Zsh is a good idea and pretty simple to do. 1. Install Latest Z Shell First, install the latest verison of Z Shell from Hombrew. Since you’re going down the path of learning an alternate shell, you might as well keep on the newest version instead of just taking whatever Apple gives you. Read more...
XML::Compile with an Extension Namespace
Starting this May, mortgage folk are going to be required to send Freddie and Fannie data including additional data points in ULDD phase 3 extension. At face value, adding these additional data points shouldn’t be a big deal at all. However, the legacy code I’m maintaining used XML::Compile to generate code. For various and sondry reasons — which I will not go into here — XML::Compile in the code I’m maintaining was in a place where it was extremely difficult to add XML elements that weren’t included in the original base Mismo 3. Read more...
Cron in Docker with Debian Slim
Recently, I needed to get cron working inside a Docker container running Debian Slim. It’s not difficult once you figure it out, but it did take a bit of research and learning to get everything to work. First off, Debian Slim is real slim. There’s no cron nor is there a syslog when you want to debug things. Add apt-get install cron and rsyslog in your Dockerfile before you start anything else. Read more...
Automated Weekly Sermon Podcast
Each Sunday at Church of the Epiphany we record our sermon using someone’s mobile phone. We started doing this back in September and, for the last three months, editing and uploading these sermons to our website has been a fairly manual process. Starting this month, however, with a combination of JustCast, Dropbox, Hazel, Squarespace, and Auphonic I’ve been able to mosty automate the process. 1. Download & Rename Each week shortly after worship, Fr. Read more...
Word to Markdown Conversion with Footnotes
Many of the essays on this site start their life in Microsoft Word or Scrivener. Early on, I would have to convert essays to Markdown for posting manually. This generally worked okay, but I lost my footnotes. I tried Word to Markdown for a brief while, but it didn’t work entirely as I’d like it to. Enter Pandoc. I’ve been using Pandoc to convert all of my Word documents — including footnotes — for the last two years. Read more...
Sea Walls: haud responsalis sed peccator
Recently I saw a call for more people in enterprise IT to start blogging. Following that call, I’ll offer some reflections. The foundation of a healthy IT culture in the enterprise starts with IT leadership and, especially, front-line IT management focusing on building a great working environment for developers. If developers are overextended, overworked, are not able to innovate, and are not given the dedicated time needed to solve problems, there is no hope for the transformation of corporate IT. Read more...
Perfect Perl Kwalitee
In the time since Date::Lectionary was added to CPAN, I’ve been working hard to get a perfect Kwalitee score and make a really solid distribution. Documentation on how to make a module are all over the place and I’ve yet to see a good, single article or post to explain how to do it. This is my attempt, I hope you find it useful. Required Files README I like keeping my POD within the code of the module I’m developing and having the README file(s) automatically generated from that. Read more...
My WSL Perl Development Environment
Recently I bought a little Windows tablet on sale for $60 as a device to play around with Windows 10 on and for — hopefully — testing a future UWP or PWA Windows version of LectServe. I’ll give a review of the NuVision tablet at some point in the future, but after I spent two! days getting Windows updated to the newest release, I quickly enabled the Windows subsystem for Linux and installed Debian. Read more...
Full-Text Search using Hugo & Lunr
Adding full-text search to a statically generated Hugo site is a fairly easy process. As I’ve mentioned before, I’m already using Gulp to compile and minify my site. Using that Gulp file as my starting point, adding full-text search is a simple three-part process. To enable search, I decided to use the Lunr.js library. Lunr is simple to use and has just the right amount of features for adding some simple search capabilities to your site. Read more...
Build, Minify, and Upload Hugo to S3
Though I’m not a huge fan of JavaScript, I include a small bit of it in this site to track page views and to generate the tag cloud on my search page. Since my project had already been polluted with JavaScript, I decided a while back to go all in and use WebPack and Gulp to bundle my JavaScript code, build my Hugo site, minify everything, and then upload the whole thing to S3. Read more...