RSSAmplifier

Blog

mjl blog

ueber.netRSS feed ↗27 posts

Latest posts

dnsclay: DNS UPDATE/AXFR/NOTIFY to many custom DNS operator APIs gateway

Dnsclay provides a standard DNS UPDATE/AXFR/NOTIFY interface for changing DNS records at your DNS operator that only provides API access through their custom web API. Need for an API When you register a domain name, the company you register it through typically sets up DNS...

Ysco - managed automated updates for Go services

There’s a new tool in town! It’s called ysco, and it provides managed automated updates for Go services, without requiring changes to the application. The launch party was at the Go Rotterdam meetup earlier this evening. Special thanks to the organizers for running a we...

Vi editing mode addon for Firefox

For better or worse, I find myself typing more and more text in textarea/input elements in web apps these days. Especially now that I’m writing most emails in the mox webmail client. It was high time to enable vi editing mode in Firefox. One problem: Firefox doesn’t see...

Cross-referencing code & specs for maintainability

You’re implementing a network protocol. You read the specs, make a mental model and a design to fulfill the requirements, do some prototyping, check against existing software implementing the protocol, then continue with the details until the implementation is finished. Yo...

A year of mox

A lot has happened for mox in the past year. And despite good intentions, I haven’t written a blog posts about any of it! Wait, what is mox? A modern, secure, all-in-one mail server. The goal is to make it easy to run your own mail server. So you can stay in control of y...

Server-sent events (SSE) disconnects when clicking download link

I’m a fan of server-sent events, or SSE. They are a very lightweight option to send streaming updates from a webserver to a client. I’m using it in ding , a modest build server for small teams. Ding sends updates about a build (e.g. the build output log, build failure/suc...

Sconf: simple configuration files

I used to write config files for my admittedly small/simple services in JSON. Mostly because they are reasonably easy to read/write as human, and everyone and their programming language can handle it. It isn’t great though. Not new information, we know this. Still, a quic...

Goreleases: package for installing go toolchains

Through the golang issue tracker I recently stumbled upon the JSON-mode of Go download page: https://golang.org/dl/?mode=json&include=all . Quite useful for build server software that wants to allow builds (of your software) with new Go releases quickly (and automatedly), bu...

Experiences with Go modules

Go 1.11beta2 is out. And it includes the new Go modules support, what started as vgo . Go beta’s are delightfully easy to try out: go get golang.org/dl/go1.11beta2 go1.11beta2 download I wanted to use it. See how it feels. And… it works pretty good! I even started usin...

Announcing duit: developer ui toolkit

Hi! In this blog post I’m announcing duit , which is a pure go (*) cross-platform MIT-licensed UI toolkit for developers It is pure Go – no C code or external library involved. The asterisk represents the runtime dependence on a helper tool. It provides duit with cros...

Running accountless for fun and ...

Want to see your software break? Run it in an way that is slightly different than usual. For example under a UID that doesn’t have a system account. I’ve been using Ding to build software. Both Go software and Java software. Resulting in three instances of “fun”. F...

Ding with privilege separation

Ding v0.1.0 has been released just now. Biggest change? Privilege separation. Get it at https://github.com/mjl-/ding . Ding runs builds under a unique user id (uid), so builds can’t interfere with each other. It already did before this new release. But it was a kludge to s...

xcode license nonsense wasting time

A good chunk of the day went into debugging hanging builds in Ding, a new build server. Turns out it wasn’t dings fault. I had just added privilege separation to Ding. Unfortunately, builds were now hanging… I checked and double check the code. Tested different configur...

Announcing Ding: build server for developers

Ding has been released! Get it at https://github.com/mjl-/ding/ . You get code under an MIT-license, but binaries are provided for your convenience. I talked about ding last week at the Golang Amsterdam Meetup, https://www.meetup.com/golang-amsterdam/events/244621922/ . I wa...

Layout glitches when switching between short & long pages

Let’s see if you recognize these symptoms. Say you open a web application. It’s content vertically fits in the viewport. So there is no need for a scrollbar, and your browser doesn’t display it. Now you open another page in that web application. It is a long page, do...

Small annoyances on the web: Checkboxes without a label

I’m quite regularly surprised by websites all over the internet. Not just by crappy websites. Also beautiful, well designed websites. From big companies. The surprise (and annoyance at the same time) is this: Their sites and web apps have checkboxes, with an explanatory l...

Comma or Tab in a Comma Separated Values file?

Quick question. What do you think is the separator in a “Comma Separated Values” (CSV) file? If you are like me, or think in ways I can identify with, you just answered “comma”. If you are a software developer on the Microsoft Excel team, you apparently thought thi...

Printing a database schema on paper

Understanding new information requires an overview of all relevant information. Laying out all the details can help. Like when you’re trying to understand a database schema, with lots of relations. It can help to see it on paper, you can point and write down notes. Thi...

Hiding UIView's in iOS

Standard UI widgets in iOS look quite nice. It’s what most non-game apps use. UI programming has never been one of my strong suits. But writing UI’s for iOS has always seemed one step too low-level. Note: I’ve also done Android programming, with UI’s, and it also doe...

Use the function form of "use strict"

If you’ve done any JavaScript development, you’ve probably used jshint. It’s invaluable in pointing out all the weird stuff in JavaScript that you’re about to shoot yourself in the foot with. Also, you should really “use strict”. This is a statement/expression t...

theThingsNetwork LoRaWan messages on a map

Yesterday and today I was at a joint Gopher Gala meetup from the Golang Amsterdam meetup and theThingsNetwork at the Rockstart office in Amsterdam. Most people were playing around with Lorawan hardware (sending packets) and writing Go code. Exactly as planned! Do I wanted ...

Terminals and unix tools

Had a minor frustration today. One that I’ve had before. I wanted to connect a LoraWAN dev kit board to my MacOSX laptop. It has a serial-over-USB interface. That means you don’t need any extra cables or stuff to get started. Great! But you still need software to connec...

Serving a godoc vfs.FileSystem with http.FileServer

The short version: See https://godoc.org/bitbucket.org/mjl/httpvfs for a tiny library that makes it easy to use net/http’s FileServer() on a vfs.FileSystem from godoc. The longer version: I’ve been writing a few HTTP services in Go again. The “asset” library has bee...

Backups on Google Cloud Storage, with Go

Some more fun today. I had to set up some backups on a VPS. There are many backup tools around, but they all seem so complicated. And many don’t store to cloud storage providers, which is want I wanted to do. Was that a good enough excuse to write Go code? I hope so (;. ...

Tokenizing lines with (quoted) strings in Go

While programming some new tools, I needed to parse configuration files. Normally, I would read a file, remove all empty lines and lines starting with a “#”. Then tokenize each line and treat the tokens as commands. I could even treat them as actual commands with flags ...

Including files in go binaries

I had some fun writing code to add assets to go binaries. I.e. arbitrary files the program needs at runtime, e.g. HTML templates or JS/CSS files. After too little research on existing solutions, I jumped in and wrote some code. Of course, it turns out this has been done be...

Scgi server for go

Just created a new package scgi , read the docs at godoc.org. It’s an SCGI server that works with package http . There is other go code available for serving scgi, but it seems to work outside of the http package, so tries to do too much. With this package, you change your...

mjl blog · RSS Amplifier