RSSAmplifier

Blog

Paul's Notes

Recent content on Paul's Notes

notes.pault.agRSS feed ↗20 posts

Latest posts

It's NOT always DNS.

I’ve written down a new rule (no name, sorry) that I’ll be repeating to myself and those around me. “If you can replace ‘DNS’ with ‘key value store mapping a name to an ip’ and it still makes sense, it was not, in fact, DNS.” Feel free to repeat it along with me. Sure, the “It’s always DNS” meme is funny the first few hundred times…

The Promised LAN

The Internet has changed a lot in the last 40+ years. Fads have come and gone. Network protocols have been designed, deployed, adopted, and abandoned. Industries have come and gone. The types of people on the internet have changed a lot. The number of people on the internet has changed a lot, creating an information medium unlike anything ever seen before in human history. There’s a lot of…

boot2kier

I can’t remember exactly the joke I was making at the time in my work’s slack instance (I’m sure it wasn’t particularly funny, though; and not even worth re-reading the thread to work out), but it wound up with me writing a UEFI binary for the punchline. Not to spoil the ending but it worked - no pesky kernel, no messing around with “userland”. I guess the only…

Complex for Whom?

In basically every engineering organization I’ve ever regarded as particularly high functioning, I’ve sat through one specific recurring conversation which is not – a conversation about “complexity”. Things are good or bad because they are or aren’t complex, architectures needs to be redone because it’s too complex – some refactor of whatever it is…

Domo Arigato, Mr. debugfs

Years ago, at what I think I remember was DebConf 15, I hacked for a while on debhelper to write build-ids to debian binary control files , so that the build-id (more specifically, the ELF note .note.gnu.build-id ) wound up in the Debian apt archive metadata. I’ve always thought this was super cool, and seeing as how Michael Stapelberg blogged some great pointers around the ecosystem,…

Using PKCS#11 on GNU/Linux

PKCS#11 is a standard API to interface with HSMs, Smart Cards, or other types of random hardware backed crypto. On my travel laptop, I use a few Yubikeys in PKCS#11 mode using OpenSC to handle system login. libpam-pkcs11 is a pretty easy to use module that will let you log into your system locally using a PKCS#11 token locally. One of the least documented things, though, was how to use an OpenSC…

Hacking a Projector in Hy

About a year ago, I bought a Projector after I finally admitted that I could actually use a TV in my apartment. I settled on buying a ViewSonic PJD5132 . It was a really great value, and has been nothing short of a delight to own. I was always a bit curious about the DB9 connector on the back of the unit, so I dug into the user manual, and found some hex code strings in there. So, last year,…

The Open Source License API

Around a year ago, I started hacking together a machine readable version of the OSI approved licenses list, and casually picking parts up until it was ready to launch. A few weeks ago, we officially announced the osi license api , which is now live at api.opensource.org . I also took a whack at writing a few API bindings, in Python , Ruby , and using the models from the API implementation itself…

Hello, InfluxDB

Last week, I posted about python-sense , and API wrapper for the internal Sense API. I wrote this so that I could pull data about myself into my own databases, allowing me to use that information for myself. One way I’m doing this is by pulling my room data into an InfluxDB database, letting me run time series queries against my environmental data. #!/usr/bin/env python from influxdb import…

Hello, Sense!

A while back, I saw a Kickstarter for one of the most well designed and pretty sleep trackers on the market. I fell in love with it, and it has stuck with me since. A few months ago, I finally got my hands on one and started to track my data. Naturally, I now want to store this new data with the rest of the data I have on myself in my own databases. I went in search of an API, but I found that the…

Go Debian!

As some of the world knows full well by now, I’ve been noodling with Go for a few years, working through its pros, its cons, and thinking a lot about how humans use code to express thoughts and ideas. Go’s got a lot of neat use cases, suited to particular problems, and used in the right place, you can see some clear massive wins. Some of the things Go is great at: Writing a server.…

It's all relative

As nearly anyone who’s worked with me will attest to, I’ve long since touted nedbat’s talk Pragmatic Unicode, or, How do I stop the pain? as one of the most foundational talks, and required watching for all programmers. The reason is because netbat hits on something bigger - something more fundamental than how to handle Unicode – it’s how to handle data which is…

Docker PostgreSQL Foreign Data Wrapper

For the tl;dr: Docker FDW is a thing. Star it, hack it, try it out. File bugs, be happy. If you want to see what it’s like to read, there’s some example SQL down below. This post was edited on Sep 21st to add information about the DELETE and INSERT operators The question is first, what the heck is a PostgreSQL Foreign Data Wrapper? PostgreSQL Foreign Data Wrappers are plugins that…

Linode pv-grub chaining

I’ve been using Linode since 2010, and many of my friends have heard me talk about how big a fan I am of linode. I’ve used Debian unstable on all my Linodes, since I often use them as a remote shell for general purpose Debian development. I’ve found my linodes to be indispensable, and I really love Linode. The Problem Recently, because of my work on Docker , I was forced to stop…

Hy at PyCon 2014

I gave a talk this year at PyCon 2014 , about one of my favorite subjects: Hy . Many of my regular readers will have no doubt explored Hy’s thriving GitHub org , played with try-hy , or even installed it locally by pip installing it . I was lucky enough to be able to attend PyCon on behalf of Sunlight , with a solid contingent of my colleagues. We put together a writeup on the Sunlight blog…

Musings about Debian and Python

On a regular basis, I find myself the odd-man-out when it comes to talking about how to work with Python on Debian systems. I’m going to write this and post it so that I might be able to point people at my thoughts without having to write the same email in response to each thread that pops up. Turns out I don’t fit in with the Debian hardliners (which is to say, the mindset that pip…

Hy: The survival guide

One of my new favorite languages is a peppy little lisp called hy . I like it a lot since it’s a result of a hilarious idea I had while talking with some coworkers over Mexican food. Since I’m the most experienced Hypster on the planet, I figured I should write a survival guide. This will go a lot easier if you already know Lisp, but you can get away with quite a bit of Python. The Tao…

Automatically lint your packages with debuild.me

Over my time working with Debian packages, I’ve always been concerned that I have been missing catchable mistakes by not running all the static checking tools I could run. As a result, I’ve been interested in writing some code that automates this process, a place where I can push a package and come back a few hours later to check on the results. This is great, since it provides a…

A primer on apt's mirror:// protocol

It’s sometimes helpful to keep your machines using a list of apt archives to use, rather then a single mirror, because redundancy is good. Rather then using (the great) services like http.debian.net or ftp.us.debian.org , you can set your own mirror lists using apt’s mirror:// protocol. While initially hacking this through, Micah ended up filing a bug on mirror:// , more information in…

Using env(1) in the shebang

Some of you out there may have tried to pass flags to a script that was being invoked via /usr/bin/env in the shebang ( #! ), such as python . You might recall an error such as: /usr/bin/env: python -d: No such file or directory This error is super annoying, so I went about trying to figure out how I can pass arguments to python (or even things like ipython or bpython ). The idea is we can abuse…