RSSAmplifier

Blog

Brian Wigginton

Recent content on Brian Wigginton

/RSS feed ↗156 posts

Latest posts

spacetraders.io client

spacetraders.io has been an on-and-off obsession of mine for years. Every time I return, it pulls me into a months-long spiral of automation and systems tinkering. It’s one of the most satisfying playgrounds for exploration, creativity, and code-driven strategy I’ve found. Through this game I’ve gotten to play with good coding design API rate limiting mitigation object oriented-like modeling…

reMarkable 2 Tablet

For about a year now I’ve had a reMarkable 2 e-ink tablet, and I have to say I love it! For me, it’s the perfect replacement for paper notebooks and bullet journals. I wanted to share my thoughts and pro-tips on how I use it. From Analog to Digital I’m a big fan of taking analog notes on paper. The tactile experience of pen on paper helps me to remember things better than if I…

OS Business Models

Notes from Open Source does not win by being cheaper by Anh-Tho Chuong. profit is important even for open source projects to grow: it enabled hiring, running services and sustaining product development. don’t cater to the people looking for the cheapest option. They typically will just run your free/self hosted version. big companies don’t have an issue with SaaS as another line item,…

Building a Second Brain

Summary Notes from “Building a Second Brain” by Tiago Forte. Lean towards creating through expressing knowledge rather than collecting information which isn’t put to use. By creating (expressing through distillment) content you will gain a better understanding of it. Use a currators perspective. This is similar to the cultivation mentality for Zettelkastens. Favorite Quotes…

Gestalt Visual Principles

Gestalt Psychology from germany in 1912, researched how we perceive pattern, form and organization. We can use these patterns in our designs, layout, and visualizations to guide the brain to make immediate inferences about data. proximity similarity enclosure closure continuity connection

Hacking in Color

Lately, I’ve been reading about information design and one area that I think is especially interesting is how best to use color to convey information. Which reminded me of a time when adding a little color to a problem made all the difference. At DEFCON 30 I participated in the Mayhem Industries CTF. One of the challenges was to find a flag given a file full of seemingly random bytes. file…

Information Dashboard Design

A dashboard is a visual display of the most important information needed to achieve one or more objectives, consolidated and arranged on a single screen so the information can be monitored at a glance. – Few, Stephen (2013) Information Dashboard Design (pp 26) Analytics Press Purpose Visual display Important information To achieve objective(s) On a single screen At a glance What they are not…

Colormaps

A poorly chosen colormap between values and colors can fool the human eyes to, e.g., pick out non-existing features, or to hide important features. https://github.com/liamedeiros/ehtplot/blob/docs/docs/COLORMAPS.ipynb Considerations Accessibility/CVD Perceptual Uniformity Printing in B/W 3d surfaces and light shading Accessibility/CVD Some colormaps (rainbow colormaps in particular) do not scale…

Procedural Terrain Generation

Noise Let’s start out with noise. You’ve probably seen noise on your tv, when you’ve tuned to a channel that doesn’t have a signal. This sort of noise isn’t great for creating organic visuals. We need something that’s random in its vectors over time, but not random from data point to data point. Sort of like the gentle rise and fall of a stock price over many…

Robot Personality

ANKI Cozmo/Vector I personally think that Anki’s Cozmo was an absolutely incredible feat in both mechanical engineering and creative design. Specifically, I found it amazing the lengths the company went through to build out Cozmo’s personality. First, they hired some amazingly talented designers and animators from the likes of Pixar to help bring life to Cozmo’s personality. Then,…

Homelab: Hot Aisle Temp Sensor and Dashboard

Today I decided to blow the dust off an unused WeMos D1 Mini (ESP8266 ESP-12F) and BMP280 tmep sensor to build a Hot Aisle Temperature Grafana Dashboard for my Homelab closet. In a Data Center, racks alternate between hot and cold aisles for better ventilation. In our house, it’s also known as “the back of the closet”. Turns out, this closet actually runs pretty hot. With the…

Tailscale: Homelab VPN Access

This is how I setup a remote access VPN to my Homelab via Tailscale. This uses Tailscale’s Subnet routers and traffic relay nodes, so you don’t have to install the Tailscale Client on each and every machine in your lab in order to connect to it. Route Advertising I have a Linux VM in my Homelab that’s running the Tailscale client as an Exit Node. I also want this machine to…

Antisiphon Flash CTF #3 2022 Writeup

Unfortunately I didn’t make it through all these challenges, but I did want to share my answers to the one’s I did complete, share my thought process, and initial thoughts on the challenges I didn’t get. Dauntless Defacement (Forensics) We are given a PCAP file. Open this in wireshark and start tracing TCP messages. Eventually you’ll find the message where the attacker was…

Tailscale: Homelab Exit Node

While at DEFCON 30 this year, I used my PIA vpn subscription. A lot. But it would have been great to be able to click a button and connect back to my house to gain access to some services, and also use that as a secure tunnel to the open internet. Well I think I’ve finally got a great solution going using Tailscale. Tailscale is a VPN service that makes the devices and applications you own…

DEFCON 30

I was finally able to make it out to DEFCON, which has been on my bucket list for a loooong time. Thank you runZero for covering travel and badge fees for this trip, it was a blast! Highlights The Badge Social Engineering Village Incredible what some people are able to do with a phone and some pre-compiled research. Mayhem Industries - Oil Rig CTF A group of us from runZero decided to take a stab…

Stock Market Dashboard with Vue.js

Overview I built this to both help visualize market data and play with the vue3 composition api and deployment using Docker on AWS’s App Runner and Container Registry services. Unfortunately, in May 2023, Yahoo Finance disabled anonymous usage of most of their useful api endpoints which broke this app. Gallery A green day on wallstreet showing the top 100 stocks by market sectors A mixed day…

HTB: Pandora Writeup

Overview Writeup for the Pandora machine on hackthebox.com. I tried to format this document as a journal of sorts, documenting progress, thoughts and discoveries as I uncovered them. This challenge took me a few days, and I got stuck more than a few times along the way. I cheated by reading some other writeups to get unstuck. Don’t get discouraged, this was fun and challenging. The goal is…

Kitty Terminal

My good friend Ryan Gibbons introduced me to Kitty, an alternative terminal application. As a long time iterm2 user, I’ve come to love some of the features it provides, specifically, vertical split panes, quake like dropdown access, and other customizations. Here’s how I moved to Kitty and hacked those same features. Config TLDR: Here’s my config file, with comments removed for…

CliftonStrengths

My personal results from the CliftonStrengths test I took back in 2014. That’s nearly 8 years ago! (I wonder how my results would match if I took the test today.) In some cases I think the results were pretty accrate and in some others I think it was way off. 1. Relator People who are especially talented in the Relator theme enjoy close relationships with others. They find deep satisfaction…

Cocktail Genius

I thought it would be cool to have a Cocktail app that would recommend me cocktails based on my flavor preferences. So I built it. Uses vue.js, working on making it an installabled PWA or maybe a mobile app if people like it. Here it is! ==> http://bar.bwiggs.com Goals ✔ Pretty Cocktail List Cocktail database that I can filter based on what I have in my bar. Would love some categories such as…

Generating Random Unique IDs

While looking at the Aftership API, I noticed their public tracking IDs looked interesting. Example h4qys6mtkkhnkkjvco35a017 This led me down a path of trying to understand what those values could be and how to make them on my own. Considerations Do these IDs need to be sortable by time? roughly time sortable? Firebase uses a modified base64 alphabet so that sorting still works lexigraphically.…

Plotting Big-O with gnuplot

Use gnuplot command to run a plt file and ouput a png file. gnuplot bigo.plt # File: bigo.plt set title 'Big-O Complexity Chart' set output 'bigo.png' # output file name set term png # output as PNG set grid # show a grid set xlabel 'Elements' set ylabel 'Operations' set format xy '' # hide axis ranges set xrange [1:1000000000] set yrange [0:1000000000] set logscale xy # logarithmic scale for x…

Hugo Chroma Syntax Highlighting Dark/Light Mode

I love a good dark mode theme, but in bright light settings sometimes I want something lighter. For my blog I strive to support both dark and light mode themes depending on the user’s settings. Hugo uses Chroma for syntax highlighting. Since it renders the highlighted syntax at build time, it’s not immediately able to provide a dynamic dark/light style based on the user’s system…

My Journey into Computing

First PC The first family computer we had was a 50MHz Gateway 2000. I remember waiting for it every day after school hoping the huge cow shipping boxes had arrived. I copied the Lion King album and nearly filled the harddisk! This was around the time when Napster came out, which I was a fan of, but didn’t really know how to use it. I would play around on AOL, and download punters to see what…

Linux Login with your face using Howdy

I’ve been using fingerprint authentication ever since I started using my X1 Carbon 6 laptop as my daily driver. However, when I’m hooked up to my external monitor/hub, reaching across my desk to login is annoying! Fortunately, there’s a great project called Howdy that providess “Windows Hello™ style facial authentication for Linux”. This is how I setup Howdy on my X1…

Custom X1 Carbon 6 BIOS Logo Image

Proceed at your own risk. There be dragons. This article requires you to mess with your bios, which could lead to you having a bricked machine. Be careful! I’ve spent a stupid amount of time trying to replace the default lenovo bios splash image on my x1 Carbon 6, and I still can’t get it to work! It does seem like there are at least a few others out there also struggling with this on…

Cyberdefenders Hacked Challenge EWF Mounts

CyberDefenders is a training platform focused on the defensive side of cybersecurity, aiming to provide a place for blue teams to practice, validate the skills they have, and acquire the ones they need. CyberDefenders provides a bunch of hands on practice challenges for people to test out their forensics chops. Each challenge has a downloadable disk image that you’ll need to mount locally in…

Linux GTK Stock Screener

Earlier this year, I was playing around with stock trading. I wanted a way to quickly pick stocks that were performing according to some Technical Analysis signal. During the great Texas Freeze and Power Crisis I began building my first linux desktop app using GJS, GTK3, Gnome Builder. Over the following weeks I kept adding features and it became a great little tool to monitor what was going on in…

Linux Mint on Thinkpad x1 Carbon Gen 6

After futzing around with the x230 over the years, I finally decided it was time for an upgrade. I found a great deal on this X1C6 on reddit and decided to pull the trigger. Everything went smooth, but shipping took forever as the world was in the middle of a pandemic and the machine had to be shipped out of Canada. So far I’m really happy with this machine! I’ll update this page as I…

Ubiquiti UDM Pro bypass 5268ac

I started experiencing issues after configuring my Pace 5268ac modem from ATT for DMZ+ mode to my Ubiquiti UDM Pro router. Git Checkouts and pulls would hang at times Blocks NTP packets! Docker container downloads would hang. There are a few ways to bypass the ATT RG: Plug in the RG and let it handle the cert negotiation. Spoof the RG mac address on the UDMP, unplug the RG and plug in the UDMP.

OpenBSD 6.7 on a Thinkpad x230

Overview Since setting up my homelab, I’ve been able to reclaim my now idle Thinkpad x230. One thing that I have never done, is run BSD. So this page is all about my experience running OpenBSD 6.7 on the x230, and lesson I learned along the way. Lessons Installation is FAST Like, real fast. I went from booting the installer to a login screen in around 10 minutes. OpenBSD docs are awesome.

Subnet Calculator with vue.js

A simple subnet calculator I built to gain familiarity with vue.js and IPv4 CIDR calculations. https://bwiggs.github.io/subnet-calculator/

Message Authentication Codes

If I send you a message, how can you be sure that the message is from me and the that message’s contents haven’t been altered? Phrased another way, how can you be sure that the message is authentic? A message that is authentic guarantees: Data Integrity: The message is unaltered. Someone didn’t tamper with the message as it was on its way to you. Sender Authenticity: The message…

WTFreon

Did you know “Freon” is being phased out? I didn’t, I found out from my HVAC service technician. By January 1, 2020, it will be illegal for companies to produce or import Freon in the United States. Not believeing it at first, I decided to do some research. TLDR: The refigerant (R-22) used in AC systems before 2010, will no longer be produced or imported starting on January 1,…

cat without comments

Here’s how to print a file to stdout and remove all the comments vie the cli: awk '!/^ *#/ && NF' ~/.datadog-agent/datadog.yaml

Golang 2 Draft Designs

Some exciting news came out of GopherCon 2018 this week, Go 2 Draft Designs! These draft designs are the first steps in defining how these new features might work in the future version of GoLang. The main purpose is to generate discussion within the community so the best possible solution to the problem is implemented. Here are the 3 drafted features: Error Handling Error Values Generics! Error…

We don't rise to the level of our expectations, we fall to the level of our training.

Far better is it to dare mighty things, to win glorious triumphs, even though checkered by failure... than to rank with those poor spirits who neither enjoy nor suffer much, because they live in a gray twilight that knows not victory nor defeat.

Humility is a knowledge of our weaknesses, confidence is a knowledge of our strengths, and ego is something dangerous with none of the former and a skewed sense of the latter.

Images Fast & Cheap - Generating Low Quality Images with Imagemagick

I needed a way to generate low quality blurry images for use with progressively.js on this blog. The images need to be only a few 10k max. These images are just placeholders to be used until the larger one can be pulled in. Imagemagick to the rescue! You can use the following commands to convert images into low quality ones. # resive image.png to 800px wide and jpg format convert image.

iptables Cheatsheet

Here’s a quick reference for configuring iptables firewall rules. I don’t use this enough to have it all memorized, so this post will hopefully come in useful for the next time I need to configure a firewall. # show basic filters iptables -L # show filters with rules numbers an packet counts, using ips. iptables -nvL --line-numbers # zero out bytes in verbose listing iptables -Z # dump…

go-nexrad

August 25, 2017, the weekend Hurricane Harvey hit Texas I was up all hours monitoring the storm and relevant news feeds. One tool I found was Radarscope, a superb radar app that has both desktop and mobile applications. Curious as to how weather radar imaging worked, I decided to try and figure out how to render my own weather radar images. Here’s a sample screenshot from Radarscope of…

Quadtree Pixel Art

Quadtrees Quadtrees are a tree like data structure where each node has 0 or 4 children. Quads have a few use cases including collision detection, spatial indexing, and image processing. Wikipedia’s Quadtree entry has a decent overview. If you’re looking for a more interactive introduction, definitely check out Jim Kang’s - An interactive explanation of quadtrees. See more of my…

Postgres Insert row with only an auto increment column

How do you insert a record into a postgres table that has a single auto incrementing primary key field? There weren’t many hits on google with the solution, so hopefully this helps someone else: INSERT INTO [table] (id) values (default); I originally tried using null and 0 as the values, but null throws a primary key constraint error and 0 actually gets inserted as 0.

The Productivity Technique You’ve Been Missing

I’ve been crushing it. I’ve gotten more done in my spare time over the last few weeks than in the last few months. If you’re anything like me, you’re easily distracted. Hacker News, Reddit, Twitter and Netflix all are available with fresh new content at any hour of the day. I can’t count how many hours I’ve lost consuming information that I rarely retained. For the past month I’ve been using the…

The fruit of your work grows on other people's trees.

DalliError: No server available – Using Rails, AWS EC2 and Elasticache

We deployed our Rails application today and found that one of our AWS EC2 servers wasn’t able to connect to our Elasticache instance using the Ruby dalli gem. DalliError: No server available Fortunately this isn’t a ruby/rails problem, it’s a permissions issue. In order to allow an Amazon EC2 instance to access your cache cluster, you will need to grant the EC2 security group associated with the…

Setting Default HTTP Cache Headers in Rails

We’re working on putting our current product behind Amazon Cloudfront. With Cloudfront, if you don’t set a Cache-Control header with an expiry time, Cloudfront will cache the content for 24 hours by default. Instead of littering all my controller actions with cache settings, I wanted to add a default value then be able to override on and action by action basis. First, here’s how you actually set a…

jQuery’s Advanced Attribute Selectors

TIL that jQuery has some pretty cool attribute querying capability. I knew you could select element by attributes by simple adding them with brackets: $('a[rel]') And that you can also match against content inside the attributes. $('a[rel='nofollow']') $('a[rel!='nofollow']') But this is where is gets cool. You’re not just limited to equal or not equal. You can also provide other operators for…

Array-like objects in JavaScript

I learned something interesting in John Resig’s book Secrets of the JavaScript Ninja. How could you add Array like properties to your objects? At first thought, or at least my first thought, I would add an array to the object and then just use it internally as a collection, or maybe set the prototype to Array.prototype. However, John points out a much simpler way. You can simply use Array’s…