Rust has a perception of being a very difficult language to learn. I had a similar experience, but just as I was told, there is a point where things start to get a lot easier. This post aims to describe the hard parts that I had to get through in order to start being productive with Rust in the belief that this may help others get over the hill to that sweet spot of infinite bliss and…
IAM is Amazon’s primary access control system for managing permissions to access AWS APIs. It’s extremely flexible, but also has the distinct property of giving one enough rope with which to hang oneself. It’s hard to get right, easy to get wrong, but there are a good set of guidelines that can be used to make it manageable and reusable. IAM Objects AWS provides a number of different primitives…
Procedural macros in Rust are a really compelling feature that I didn’t understand until recently. There are a few gotchas, but they make it super easy to implement custom #[derive()] expansions for implementing traits with a single line of code. Let’s dive in. Before the advent of procedural macros two years ago in Rust 1.15, it was historically really difficult to create your own derive…
So 2019 is totally happening. Year in Review: 2018 2018 was an interesting year. Pros A lot happened. Here’s a list of the positives this year. Rust I got over the hill in Rust this year. I now feel comfortable enough to write general purpose applications in Rust now, which will hopefully be my main go-to over Python. Why? Well, a lot of reasons, largely centered around deployment and performance.…
dnsmasq is one of those pieces of software that you might not be familiar with. Personally, on all new deployments for employers or customers, I advocate for dnsmasqing all the things. dnsmasq, at a high level, is a DNS resolver. However, it’s decidedly not BIND. Think of it more as a smart DNS router and caching layer. Consider the following network layout: This is based on a real environment…
In today’s episode of “discontinued stuff that I rely on,” enter the Logitech G700s mouse . Feast your eyes on this: Before there was the G700s, there was the G700, which was, for all intents and purposes, identical to this mouse but without some of the graphics on the mouse. Here are a series of images to get you familiar with the layout of the mouse. These are all pictures of the G700 and not…
I can’t quit you babe… I honestly can’t stop using hardware that isn’t made anymore. Today, I’ll be discussing my favorite keyboard, the Apple Wired USB Keyboard without the num-keys. Let’s break down why I can’t stop using this keyboard. Media Keys Simply put, the media keys are right there . I don’t have to look to play/pause or skip tracks, it’s all just a short reach away. Volume up and volume…
For those of us nerds who have been running Linux on the desktop for years now, the addition of systemd in recent releases has opened up some interesting user service management solutions. While not often discussed, systemctl --user is a per-user systemd service management system which sports most if not all of the features of the parent PID 1 systemd. One issue I ran into on elementary 0.4 Loki…
It’s Q4 of 2017 and I’m in the market for new hardware. I’ve been wanting new monitors for my desktop for some time now, so I thought I’d provide my process and my findings for what’s important for modern desktop monitors. Displays are something that will likely outlast multiple PC builds, so it’s important to choose displays that will last as long as possible, taking into account features you’d…
Blue-green deployments with Route 53 involve transferring traffic from one endpoint to another using weighted DNS records. We can automate this relatively easily via the AWS CLI and jq , though there are a few things that are left to be desired: the syntax is quite verbose for updating DNS records. Finding Your Hosted Zone We can find a hosted zone id by its name using the following AWS CLI…
systemd seems to be a dividing force in the Linux community. There doesn’t seem to be a middle ground to systemd, polarizing opinions suggest that you must either love it or want to kill it with fire. I aim to provide a middle ground. First, let’s discuss the awful things about systemd. The Bad and the Ugly systemd-escape The fact that systemd-escape exists screams that there’s something…
The date is December 1st, 2016. Amazon announces an interesting new feature for CloudFront allowing running Lambda functions at CloudFront edge locations . This is a powerful addition to the AWS arsenal for running code in locations geographically closest to users. This feature is a “preview” feature, and it’s opt-in only. What was not mentioned, however is this change to the CloudFront API .…
After many years of internet content management dysfunction, I have finally begun to consolidate everything and solidify my approach to writing articles and publishing content. This site uses Jekyll as a content management system for hosting a static site, a modified version of Lanyon as a theme, and a fleet of other technologies to create a pretty comprehensive system. Since it’s all the rage to…
Nobody ever said it’d be easy, but then again nobody ever said it’d be this hard. The theory is simple enough, right? Put an ISO in your server, edit the Linux command-line, hit enter, and fifteen to thirty minutes later, you have a server running, configured just so.™ In reality, getting Kickstarts to actually work and to do what you need is pretty hard. One of the most difficult parts of…
Ansible is awesome. You can automate all the things , which is a motto to live by. Let’s automate sudoers permissions. This operation is one of the more dangerous operations you can run in automation, right after dd or parted , with a little less risk. If sudoers gets screwed up, you won’t be able to gain root, and that’s a perfect way to ruin an otherwise good day. Luckily, there is a sudoers…
It often happens, at least to me, that I need to synchronize a directory to another server while maintaining permissions and original ownership. While ssh root@box is a terrible idea™ , you can use some epic hacks to do what you need to, securely. I’ll first start out by SSHing into the server I’ll be grabbing files from : ssh -o "ForwardAgent yes" naftuli@source ForwardAgent is assumed to be…
At a recent job, I faced a pretty bleak situation: my MacBook Pro had only 8 gigabytes of RAM and only 256 gigabytes of disk space. Because of “Apple Reasons™,” you can no longer upgrade your disk or add more RAM to new MacBook Pros. On top of all that, I wasn’t supposed to uninstall OSX, even though I only ever booted Linux. That meant that my root partition for my Linux install was only around…