I was wondering today how to filter uWSGI logs based on the request path because we had an endpoint that was filling our
logs with meaningless information. At least for me this was surprisingly difficult to find. So
here is an example command line option:
The log-filter flag takes in a regular expression that is used to include lines that match the
filter (so it works as a whitelist). To filter lines that don’t contain something, you can use
a negative lookahead.
So it turns out mechanical keyboards are like a drug to me. After I tried my first one at work, I
had toget more.
At the same time I started to pay attention to the ergonomics of my typing. I noticed that when I
typed a lot, my fingers and wrists would start getting fatigued quickly. My typing style also had
space for improvement, with my left hand stealing a lot of work from the right hand and my fingers
hitting the wrong keys. I was a touch typist, but following my own style that was hardly optimal.
All this got me looking for something different, an ergonomic keyboard.
After getting my Cherry finished, my brother messaged me
that his company was emptying
their old office and were throwing away some sort of IBM typerwiter. He asked if I would be interested
in taking it instead, to save it from going to the landfill. Of course I was, and so I was soon in
possession of a working IBM Wheelwriter 6747-2. The Wheelwriter is an electric typerwiter
introduced by IBM in 1984 to replace the earlier Selectric. It has a keyboard with similar
construction to that of the famous IBM Model M, using the same buckling spring mechanism. The unit
my brother saved for me is from 1986.
I myself had no use for a typewriter, but I was
very interested in its keyboard, that seemed to be in perfect condition. All the keys responded
properly, so it was just a matter of disconnecting the keyboard and converting it into USB usage. This
is how my conversion story started.
After quite some time in development, I’ve now deployed Mebe 2 on
this site, to replace the aging Mebe codebase. The earlier blog engine was written with Phoenix, which
while being a great framework, was a bit heavy handed for the engine’s minimal needs. Mebe 2 has the
old engine’s Markdown parsing and DB logic, but the web side is totally rewritten. The framework I
chose is Raxx, because it’s quite minimal but also mainly
because I just wanted to learn it. Alternatives are good.
The new blog engine has proper Distillery releases, so
keeping it running and making new fixes and features is a lot easier. It’s still in very early
development, though, as it’s missing tests and proper docs et cetera, but I figured I’d start
dogfooding it already, as this remake process has kept me from writing new posts. So hopefully in the
near future I’ll come out with some new stuff! See you till then!
I’ve always loved retro keyboards. Back at my previous job I used to
use a Keytronic keyboard
that I salvaged from the university’s trash room. I liked the 80’s/90’s beige aesthetic, the huge
keys, and the sound of typing on it. But it wasn’t a mechanical keyboard, just rubber dome. Once
I got to type on a mechanical keyboard, I knew I wanted one, but that meant I had to put my trusty
Keytronic to the side.
So about a month ago, I was very surprised and excited when I found an old looking keyboard in the
trash bin at my current employer.
I use OBS Studio to store replays of my games with my friends for later.
OBS writes two audio tracks to the file, one for game audio and one for my
mic. I was surprised to find that multi-track files were not properly supported
by many programs like Handbrake (or YouTube for that matter), so I needed to
combine the audio tracks.
When improving Code::Stats’s Atom plugin, I wanted to add the plugin version
as the User-Agent header: code-stats-atom/x.y.z. I used the fetch API and set the header there but it did nothing!
By googling a bit I found that User-Agent used to be a “dangerous” header that wasn’t allowed to be set in browsers.
It was only recently allowed, but Chromium
has not implemented support for it.
I’ve known GitLab has existed for a long time, but haven’t really paid any attention to it before. This week I decided to
take a closer look and it looks really nice. The UI is much better than the new horrid BitBucket UI at least, and it
offers free private repos like BitBucket does. As a bonus, it’s mostly open source and that’s something I want to support.
So I’m moving at least all my stuff from BitBucket over, like Mebe’s repo. Not sure yet if I’ll move Code::Stats’s
stuff over. GitLab’s builtin CI stuff does seem tempting though.
People commented so nicely on my first build tool FBU
that I decided to push it to the Elixir package manager Hex.pm. I renamed
it, though, since people pointed out that it could be used to build anything, not just the
front end. So now it’s called (still unimaginatively) MBU: Mix Build Utilities.
EDIT 2017-04-04: I have since renamed the project to MBU: Mix Build Utilities and published it on
Hex.pm: hex.pm/packages/mbu. I have edited the links and code examples in this post to
tl;dr I wrote my own build tool using Elixir’s Mix:
It’s no secret that I somewhat dislike the state of modern
is the ecosystem and tooling around it. There’s a lot of innovation and hard work going on
in very many fragmented projects, resulting in reimplementations of already solved problems
and a ton of half working, alpha quality, 0.x versioned packages with unknown support status.
With these packages, you start your project by building an elaborate house of cards that is
the build system. And you dread the day when you need to touch it again.