RSSAmplifier

Blog

Will Warren

Recent content on Will Warren

willwarren.comRSS feed ↗58 posts

Latest posts

Snapship Dev Log #1

Building My Own CPU - Part 3: Just Like the Simulations (It Was Not Just Like The Simulations)

Building My Own CPU - Part 2: Simulation

Building My Own CPU - Part 1

I Made a Little USB-C Power Supply for Breadboards

GARAGINATOR: a HomeKit Compatible Smart Garage Door Opener

Breakout Board for the ESP32-C3-WROOM-02 Wifi Module

Install and Use Multiple JDKs with jenv and Homebrew on macOS

A short post for anyone who needs to have many different versions of Java installed on their macOS machine. It goes over installation of jenv and various temurin JDKs as well as how to switch between them super easily. Install jenv # Installation via Homebrew is easy brew install jenv

CURIO: an ESP-12F Based Dev Board

Custom breakout board for the ESP-12E WiFi Module

The ESP-12E is an awesome low-power WiFi-capable module with an ESP8266 inside. it also supports deep sleep and so can run on batteries for a super long time. I grabbed some of these modules from DigiKey and was sad to learn that I couldn’t just solder some legs on it and get to testing it out. Unfortunately for prototypers and tinkerers alike, the footprint of the module doesn’t lend…

Removing a disk from a RAIDZ

You can’t remove a disk from a RAIDZ zpool. But if you’re removing a disk such that you can migrate the data away from the zpool into that disk and then plan on destroying the zpool anyway, then read on. In my case. I wanted to switch this particular zpool over to be a simple mergerfs volume, and copy the data from the zpool into it. But I didn’t have any additional (big enough)…

Upgrading a k3s cluster to Traefik 2

Up until 1.20, k3s shipped with Traefik 1.7.x built in. Since 1.21, Traefik 2.4.x has been the bundled version. If you upgraded your k3s deployment from <=1.20 to >=1.21 k3s will do nothing if it detects Traefik 1 installed. So it&rsquo;s up to the adminstrator to upgrade it. Here&rsquo;s how I did it in my cluster with some basic examples.

Kubernetes at Home

I recently converted my Docker Swarm-based homelab to one powered by Kubernetes. My original goals with setting up Swarm were to fully leverage all the compute and memory available on my two-node setup. Ultimately though, because of shared storage and other complications with hardware devices, I ended up manually scheduling containers onto specific nodes, which totally defeated the purpose. Plus…

Remote Working: The New Normal?

With the recent surge of companies &ldquo;going remote&rdquo; due to the COVID-19 outbreak I thought it might be nice to share some of the things I&rsquo;ve learned about remote work over the years as well as my current setup. I&rsquo;m doing this in the hope that maybe it can help someone be more productive in these uncertain times. I&rsquo;ve been fortunate enough to be able to work from home…

2020 Website Refresh: More Automation Edition

It&rsquo;s been over 10 months since my last blog post on here, and I decided it was high time for a fresh look at the site. Not to mention I&rsquo;m on lockdown because of COVID-19 . It seemed like as good a time as any to do some spring cleaning both in real life, and online.

Running Kubernetes on Ubuntu 18.04

The Endless Quest to Find the Perfect Note Taking Platform (2018 Edition)

As I have written before , I’ve used just about every note solution around. Unfortunately I haven’t found a magic bullet (yet). This post is really an exploration into the pros and cons for my own personal workflow and this the things I find important when managing notes. Hopefully after doing this exploration I can actually settle on one platform for the long haul and stop procrastinating by…

Upgrading a Hugo Website from 0.27 to 0.44

This website is powered by Hugo - a static site generator written in Go. I&rsquo;ve written about it before and really enjoy using it. Using Hugo, I&rsquo;ve removed all the obstacles from getting content out there - now it&rsquo;s just my own laziness in the way&hellip; For years, I&rsquo;ve had a Jenkins job that builds the site, uploads it to S3 and creates a CloudFront cache invalidation every…

Handy shell alias for taking notes

I keep my personal nodes in a bunch of Markdown files inside a Dropbox folder. I&rsquo;ve used just about every note-taking app there is and ended up settling on this system. It&rsquo;s served me really well so far. I have one note at the top level called scratch.md that I use for quickly writing things down when I&rsquo;m in a hurry. I decided to speed this up even more with this little shell…

Redis Cluster Cheatsheet

Redis is very, very good at running as a Highly Available service. It has supported clustering since 3.0.0 was released back in April of 2015. Clustering many redis servers together allows for higher throughput (spreading the load), as well as redundancy (for when servers die unexpectedly). Here I have assembled some notes about common things you might want to do to your Redis cluster, and how to…

Enable SSL on Your Website in (Almost) One Click with Amazon ACM

Amazon just launched a new service called AWS Certificate Manager (ACM) as part of their ever growing suite of services. The new service allows for more or less one-click creation and deployment of free SSL certificates (yes, free). I used ACM to enable SSL on this very website and it didn&rsquo;t cost me a dime. Anyone can set up SSL for their own custom domain name in no time at all with this…

SQL Server: Enabling Read Committed Snapshot Isolation

When using Microsoft SQL Server, enabling Read Committed Snapshot Isolation (RCSI) is one way to prevent reads ( SELECT statements) from escalating into full table locks. Depending on your application this can either be a good or a bad thing. I&rsquo;m not going to get into the why&rsquo;s and why-nots of each strategy - this is a good article to read if you&rsquo;re having a hard time deciding…

Creating Sublime Documentation with Markdown and Pandoc

Documentation is one of those things that&rsquo;s easy to down-prioritize to the very bottom of your todo list, even though it could be one of the most important tasks that you undertake in your day to day job. The amount of times I&rsquo;ve gone back to old code, or some old system and cursed Past Will for not creating any sort of documentation is beyond measure.

Goodbye WordPress; Hello Hugo

As part of my regular annual website refresh, I decided to take a pretty drastic step and move from WordPress to a static site generator called Hugo . I&rsquo;ve kept my WordPress install continually up to date since early 2009 and it served me well, but I needed a change. I also went back through the archives and culled all my old blog posts - I only kept the most trafficked and the ones that…

Set a Static IP Address in VMware Fusion 7

Update: This technique also works in VMware Fusion 8! I am an OSX user, and I run a lot of VMs using VMware Fusion 7 which I have been very happy with since I purchased it. One thing that always bugged me is that Fusion allocated a different IP address to each VM every time it started up, or resumed from a suspend. Applications that I use that have references to those IP addresses always had to be…

Resize your EC2 instances with minimal downtime

Amazon Web Services (AWS) provides a really great service-oriented way of creating virtual machines in the cloud with their Elastic Cloud Compute (EC2) system. There&rsquo;s many reasons you&rsquo;d want to increase or decrease the size of an EC2 instance on AWS. Maybe you misjudged how much traffic you&rsquo;d be getting, or maybe you need more horsepower to finish a certain workload in a shorter…

Roll your own dynamic DNS service using Amazon Route53

I used the free Dynamic DNS (DDNS) service from Dyn since about 2006 and never had a single issue with it. That all changed when they phased out their free accounts . I was forced to find an alternative, so I went with No-IP.com which was easy to set up and provided a great service. Recently, No-IP has been having some legal troubles that seem to be revolving around Microsoft&rsquo;s crusade to…

Notes on switching to OSX from Windows

I recently got a new MacBook Pro as my new work machine. As someone who&rsquo;s never used a Mac for any serious length of time, it was quite a culture shock.

Setting up SPF records for Google Apps and Amazon SES

Update: AWS now sends email using a Mail-From domain that they own and control (see here ). This means you don&rsquo;t really need to configure your own SPF records at all. I&rsquo;m leaving this post here for posterity and all the links that already point at it. The Sender Policy Framework (SPF) is an attempt to mitigate certain types of spam - specifically spam where the sender masquerades as a…

What is Heartbleed and why do I care?

Heartbleed is a bug in the OpenSSL library that was publicly disclosed on April 7th, 2014 by an internet security firm called Codenomicon. With OpenSSL being the defacto SSL library in both the Apache and nginx webservers, that potentially exposes about two thirds of the internet . If we exclude the websites that don&rsquo;t use SSL at all, we are left with a nice round number: half a million .

Adding firewall rules for Oracle Database using iptables

To connect to a box on your network that is running Oracle Database, you will first need to allow connections to Oracle through your firewall.

Apache Tomcat with SSL behind Amazon ELB

If you&rsquo;re running a high-availability system of some kind, chances are you are into some sort of Load Balancing. If you happen to be writing a Java app, and happen to be using Apache Tomcat as your servlet container, then this tip is for you.

Redacting accidental password entries from your BASH history

From time to time, I have been known to accidentally type my password into a &ldquo;username&rdquo; prompt in a bash shell. In that situation, the password you entered is now a part of your ~/.bash_history file forever, unless you truncate or redact it.

Timing PHP code using a simple stopwatch class

If you&rsquo;re writing a performance-focused app, it&rsquo;s nice to be able to time how long various pieces of code take to execute. Below is the class I use (called StopWatch ) and a really simple example of how I use it.

Transition from glossy to matte UI elements

Something I noticed as a general trend with modern technology (especially in mobile development) is a trend away from shiny, glossy UI elements like icons and buttons to a more flat, conservative style. Here&rsquo;s a really interesting discussion I found about the subject on the UX stackexchange site…

A working day's worth of mouse movement

I recently came across a neat piece of software that maps out your mouse movements and creates artwork out of them. Check out the image below - it&rsquo;s a graph of my mouse movements on my left monitor over a 9 - 5 working day. Click to see full resolution. The black circles represent times when the mouse did not move - the huge black circle was when I went for a 2 hour meeting.

My latest hobby

Golfing!

Reverting a git commit after pushing to remote

Imagine a scenario where you have a git repo with 2 branches; master , the production-ready branch and dev , the branch where all the development occurs. Now imagine that you accidentally made a commit on master , when really it should have been on dev . If you have not yet pushed to a remote repository (like Github), you can undo that commit using git reset like so:

Stop Oracle bundling the Ask toolbar with the Java installer

Sign this petition to get Oracle to stop bundling the Ask toolbar in with the Java installer. It&rsquo;s basically AdWare that hijacks your home page and default search engine. It&rsquo;s got to stop! http://www.change.org/petitions/oracle-corporation-stop-bundling-ask-toolbar-with-the-java-installer

Are programmers actually bilingual?

[There is] Evidence suggesting that young computer programmers have &ldquo;bilingual brains&rdquo;

The craft of code

Came across this great quote from the book The Pragmatic Programmer (which I whole heartedly intend to read after seeing this quote)

Awesome Database Design Tool: wwwsqldesigner

I stumbled across this software while trawling the internet looking for good design tools. It&rsquo;s super simple to use and looks great. Because it&rsquo;s web based (written almost entirely in Javascript), you can design without having to have any gigantic software packages installed. Also it&rsquo;s free and open-source which I&rsquo;m always a fan of! Example of WWW SQL Designer

SQL Script for Provinces and Territories of Canada

I made this simple SQL script to insert all the provinces of Canada. I&rsquo;m posting it on here in case I need it in the future, and so anyone else that might find it useful can download it.

Creating a public API with Apache Thrift

I recently came across a new client-server technology that really fascinated me. Through my meddlings with CirrusNote, I know that 49% of the effort of writing a good API is coming up with standards (XML formats, rules, schemas etc.), 49% is writing boilerplate code (XML parsing, schema validation etc. etc.) and the other 2% is spent actually writing interesting code like database interaction and…

Password protecting folders with .htaccess

I always forget how to do this, so I&rsquo;m posting it on here for posterity. Sometimes it&rsquo;s useful to password protect a folder or files on your web server. If the web server is Apache, then you can use a couple of files - .htaccess and .htpasswd - to achieve this.

Indianapolis Skyline

View from my hotel of the Indianapolis skyline

Asynchronous Programming in .NET - The quick and easy way

When working on a program that has a GUI, it&rsquo;s very important to make sure that the UI is fast and responsive. If your program is performing a lot of long-running actions (writing to a database, making network calls etc.) you should always make sure that the code that is performing those actions is not being executed by the same thread that the GUI is on.

An ASCII needle in an Extended ASCII haystack

I was tasked with writing some code to pull all the research project data that we&rsquo;d collected over the past 10-15 years into our new J2EE-based product, Kuali Coeus. The legacy system ran off SQL Server which is a lot more forgiving of character encodings and string data in general than the new system (which runs off MySQL). It had taken me a while to figure out a way to map all the old data…

Earthquake!

So there was a 5.9 earthquake outside Richmond, VA yesterday and we felt the tremors all the way up here in Ontario, Canada. I didn&rsquo;t personally feel it, but Facebook was instantly saturated with people talking about it. Reactions varied from OMFG AN EARTHQUAKE to Did anyone else feel that? to Oh no, I hope noone was hurt :( to my personal favourite Sweet, an earthquake!

Pair Programming - Does it work?

tl;dr - It depends. Pair programming is defined as the act of two programmers working at one workstation on one task at a time. One programmer enters the code (the driver), leaving the other programmer free to audit the code in real time as it&rsquo;s being written (the observer). The idea behind it is simple: two heads are better than one. When someone else is watching you, your proclivity for…