-
Common Loki Misconfigurations
Loki is fairly straight forward to setup. Unlike, Prometheus you don’t even need to define scrape targets in the configuration. Instead, in the config for your logging agent of choice,...
-
Iterating Through a List in Ink
Ink’s lists are not an array like in Python. Instead they are boolean sets. They are mostly used for activating and deactivating certain elements within the set, or perhaps incrementally...
-
Debugging Misconfigured Container Networks
A common issue when debugging your container environment is you have a container application deployed to a particular port, say 3000, and then you have another container running a reverse-proxy...
-
Minimum Viable EC2 in Terraform
The Terraform AWS tutorial will have you create an EC2 instance with just a few lines of configuration that look something like this: terraform { required_providers { aws = {...
-
Storylets in Ink
Emily Short defines storylets as having the following qualities: they are a piece of content they have conditions for when they can occur there are effects on the world state...
-
Interactive Fiction Tooling Overview
Over the last year I’ve experimented with a variety of tools for writing interactive fiction. I thought it might be worthwhile to give an overview of the different tools available,...
-
In-Place Resizing for Digitalocean Droplets
Terraform is great for maintaining inventory, but I haven’t always had the best luck with using Terraform to maintain existing state of a VM while upgrading to a more powerful...
-
Unity Demonstrates the Importance of FOSS
The news of Unity’s proposed changes to its pricing structure is another reminder of why I’m glad I don’t work in game development. But also it is another demonstration of...
-
Target Labels in Prometheus
The primary use-case for labels in Prometheus is to add extra information to the metrics you are collecting, which allows you to filter and aggregate your metrics in useful ways....
-
My View of AI is the Same
It has been awhile since I last wrote about my impressions of AI. Over the last year AI has been having a moment with the proliferation of art generation tools,...
-
Verify DNS Ownership with TXT Records
The transfer of domain name ownership from one registrar can potentially be quite complicated depending on the nature of the transfer, and there are a lot of things to keep...
-
Sane Droplet Defaults
For quickly spinning up VMs on the cloud, Digitalocean provides a very simple deployment interface at a competitive price point. One annoyance with Digitalocean however is that the ssh access...
-
Editing Made Easy with Vim
Thanks to the shift to DevOps practices in deploying code, people are spending a lot more time these days editing yaml files that are used to configure their CI/CD pipeline....
-
Gatsby Gotchas
Last year I shifted roles from working on front-end development to DevOps. One of the last projects I worked on while doing front-end development used Gatsby. Gatsby tries to reduce...
-
Concatinating Default AWS Tags in Terraform
In a large organization that heavily uses AWS for their infrastructure needs managing and tracking costs is an extremely complicated tasks. One tool to help improve observability is with user-defined...
-
Easily Updating the Default Github Branch
After the murder of George Floyd at the hands of a Minneapolis police officer, a global wave of protests has emerged in response. In the US, activists are calling for...
-
Lifetimes in Rust
In Rust, every reference has what is called a lifetime. A lifetime is the period of time when a reference is valid. Like in most programming languages, that is going...
-
Checking for Bad Links
A frequent problem with webpage maintenance is through no fault of your own there will be broken links. Often these don’t get fixed unless a user is kind enough to...
-
Maybe TypeScript and React is Bad
Statically typed languages are in, and with good reason. You catch errors earlier, and that makes you look better as a developer. Statically typed langauges care about data inputs and...
-
Static Asset Management in React
React really wants you to import static assets like png and jpg files so that it is part of a minified Webpack bundle that reduces the number of server requests...
-
Bundler Down Time
The project I mostly work on these days involves a webpack build process that takes about 30 seconds to complete. That is long enough that I don’t want to just...
-
Using React Context for Localization
Localization is an enormous undertaking for any organization. There are many different considerations that go along with a localization task that are beyond the scope of this post. I just...
-
JS Implementation of a Sticky Footer
Suppose we want a footer at the bottom of a page. It’s a common enough requirement for most web pages. You typically might include various legal documents, and other information...
-
Custom Aliases
There are a lot of blog posts out there about writing aliases as shortcuts for various git commands. That’s great, and totally something you should do. But I wanted to...
-
Trying Out the 7drl Challenge
I’ve played NetHack for about as long as I can remember (for the record I’ve had four successful ascensions, and one gut wrenching botched ascension where I offered the amulet...
-
Trash Opinions
I created a Firefox extension that removes the opinion section from the Washington Post. You can get it here. Some of my friends suggested doing the same thing for the...
-
Building Your First Program in Rust
In January I commited to learning a language I had been eyeing for over a year, Rust. At the same time I had picked up some contract work, and I...
-
Fixing mongod reports errors related to opening a socket
tl;dr If you get a complaint about the socket already in use try running the mongo shell twice. For the past 24 hours I have been trying to fix a...
-
Improving Open Source Maintenance
A little over a week ago there was a major compromise in security as a result of a social engineering attack. You can read more about it in the npm...
-
Technical Interviewing Tips
There are a lot of things you need to prepare for for a technical screening. This post won’t go over the data structures and algorithms you need to rehearse before...
-
Housekeeping Note
I know it has been awhile since my last update for the machine learning series. Unfortunately I am here to announce that it will be awhile longer until I have...
-
Dynamic Programming Basics
Dynamic programming is confusing for a lot of people. Even the name is strange, and it’s by design. It was coined by Richard Bellman (the same Richard Bellman of the...
-
The Oddity of Naming Conventions in Programming Languages
I was recently thinking about how we implement variable names. In mathematics it is really common to use a single character for variable names. Why is that? The typical answer...
-
An Experiment Using Machine Learning, Part 3
In the last blog post in this series I reviewed my research findings on other machine learning experiments regarding Shakespeare. After those findings I started to setup a repository of...
-
Debugging with grep
There are a couple of standard pieces of advice for debugging software: Create break points to figure out where something goes wrong Create strategic print statements to figure out what...
-
An Experiment Using Machine Learning, Part 2
My initial research into studies involving Shakespeare and machine learning didn’t turn up a ton of results, but luckily all the results I did find provided useful frameworks for how...
-
An Experiment Using Machine Learning, Part 1
I recently decided it would be fun to start learning about machine learning. And what better way to learn something new than to try and conduct your own experiment? The...
-
The Value of while
When you are learning to program you come across certain pieces of advice that are helpful, but not entirely accurate. The intention is not to be misleading, but to act...
-
National Day of Civic Hacking
Yesterday I attended the National Day of Civic Hacking at Code for San Francisco. The National Day of Civic Hacking is an annual event that all of the Code for...
-
OpenAI and the Future of Humanity
Warning! This post gets into Dota 2, a complex, real-time, multiplayer, strategy game that I have talked about on numerous occasions on this blog, but that I have always avoided...
-
Creating a Whiteboard App in Django
Like anyone else looking for a job as a software engineer, I’ve been studying and practicing the sort of problems that get asked during the whiteboarding section of the interview....
-
Creating Meaningful, Organized Information
In my last post I critiqued the social media feed for lacking a meaningful organization for its consumers. This is counter to the design principles that inform the structure of...
-
Towards A Critique of Social Media Feeds
It’s not exactly a secret that there are plenty of people that are sick of Facebook, Twitter, Instagram, etc. Ask why and you will hear any number of reasons: They...
-
Setting up Routes in Django
As mentioned in my last post, I’m currently developing an admin component using Django. Django is a highly opinionated (in a good way) framework that has an extremely powerful built-in...
-
Developing a Messaging Component for Code for SF
I have been going to meetups at Code for San Francisco since September. I found myself working with their UX Research group on a web app (tentatively called Project Match)...
-
Dream Stream 2.0
Dream Stream 2.0 was a complete rework of both the front-end and back-end of the site. There were three goals I had in mind: to adopt recent web design practices...
-
Keyed Collections in Javascript: Maps and Sets
When you are first learning Javascript, the built in objects you typically learn about are objects and arrays, and that’s pretty much it. That isn’t surprising when you consider the...
-
Blog Soft Relaunch
I took an extended hiatus from blogging because managing a blog on my own with the limited capabilities of the webhost I was working with was proving to be unnecessarily...
-
Scraping with Puppeteer
Puppeteer is a Node library that provides an API for a headless Chrome browser. A headless browser is a browser with no graphical user interface, which is a useful tool...
-
Looking Ahead to Dream Stream 2.0
Yesterday Valve revealed the format for the professional competitive Dota scene for the coming year. Most significantly, players will now earn points throughout the year by participating in Valve approved...
-
Solving West of Loathing's Soupstock Lode Puzzle
West of Loathing is a computer role playing game by Asymmetric Publications. It has a mystical American Wild West setting, but more importantly it also has very clever, funny writing....
-
Installing Ubuntu
Recently I’ve been interested in getting better acquainted with Ruby. However my experience by the time I reached Rails territory working in Windows was a miserable experience where nothing worked...
-
Interview with David Jickling Evaluation
This was an exercise in making a document more readable relying completely on CSS to manipulate the display (aside from inserting a CSS link of course). The CSS file consists...
-
Compare Text Evaluation
When I was developing the Dream Stream app I had two copies in separate directories. They were basically identical except one directory was for my GitHub repository and lacked the...
-
Dream Stream Evaluation
Dream Stream was the first independent coding project I put together, and it has been a terrific opportunity to learn a lot of different aspects of Node and Javascript. While...
subscribe via RSS