mgalgs.github.io2023-06-13T19:24:36+00:00Copyright (c) /2022/03/22/end-of-an-eraIt's the end of an era (blog redesign!)2022-03-22T00:00:00+00:00<p>Well, after more than a decade running Bootstrap <tt>v1.2.0</tt> 🤯 I
decided to finally bite the bullet and update the blog design. The old
design was fun but it wasn’t responsive at all, which has become
increasingly problematic.</p>
/2021/03/23/how-to-build-a-custom-linux-kernel-for-qemu-using-dockerHow To Build A Custom Linux Kernel For Qemu Using Docker2021-03-23T00:00:00+00:00<p>This is an updated version of my
<a href="/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-edition.html">Linux Kernel/Qemu tutorial from 2015</a>.</p>
/2019/11/11/openvpn-on-coreos-container-linux-on-digitaloceanOpenVPN On CoreOS Container Linux On DigitalOcean2019-11-11T00:00:00+00:00<p>Using a VPN is useful for a whole host of reasons. Unfortunately, you
either have to pay for a hosted service (which means trusting the service
provider) or you have to host it yourself (and VPNs are famously difficult
to configure and maintain).</p>
/2016/07/06/block-invalid-http-hosts-with-haproxy-and-djangoBlock Invalid Http Hosts With Haproxy And Django2016-07-06T00:00:00+00:00<p>In Django >= 1.5, an error is logged every time a request comes in where
the HTTP host header isn’t present in your <code class="language-plaintext highlighter-rouge">ALLOWED_HOSTS</code> setting. You’ll
see error messages (and probably emails) with stuff like:</p>
/2015/10/30/evil-bouncie-ball-shooter-halloween-piEvil Bouncie Ball Shooter (Halloween Pi)2015-10-30T00:00:00+00:00<p>I had so much fun
<a href="https://www.youtube.com/watch?v=N_VGspit7Xk">shooting trick-or-treaters with silly string</a>
last year that I decided to up the ante this year with an “Evil Bouncey
Ball Shooter”. Before diving into the details, here’s the final
product in action at our local “Trunk or Treat”:</p>
/2015/10/30/atmega8-bare-bones-dev-boardAtmega8 Bare Bones Dev Board2015-10-30T00:00:00+00:00<p>Several years ago I decided it would be nice to have a simple dev board for
the Atmega8’s I had laying around. So I spun up this little guy:</p>
/2015/07/13/installing-a-custom-openwrt-build-on-an-asus-rt-n16Installing A Custom Openwrt Build On An ASUS RT-N162015-07-13T00:00:00+00:00<p>My home router has been acting up recently so I decided to take control of
it by installing <a href="https://openwrt.org/">OpenWRT</a>. I’ve used
<a href="http://www.dd-wrt.com/">DD-WRT</a> and
<a href="http://www.polarcloud.com/tomato">tomato</a> in the past, but wanted
something a little more hackable and less shiny. OpenWRT seems like a
perfect fit!</p>
/2015/05/16/how-to-build-a-custom-linux-kernel-for-qemu-2015-editionHow to Build A Custom Linux Kernel For Qemu (2015 Edition)2015-05-16T00:00:00+00:00<p><br /></p>
/projects/2015/04/02/rafty-projectRafty -- Ripper and Friggin Transcoder, Y'all2015-04-02T00:00:00+00:00<p>See
<a href="/2015/04/02/rafty-dvd-backups-using-systemd-docker-rabbitmq-and-go.html">the main blog post</a>.</p>
/2015/04/02/rafty-dvd-backups-using-systemd-docker-rabbitmq-and-goRafty -- DVD Backups using Systemd, Docker, Rabbitmq, and go2015-04-02T00:00:00+00:00<p>Rafty is a scalable, fully-automated system for backing up DVD collections.</p>
/2014/10/22/enable-arcfour-and-other-fast-ciphers-on-recent-versions-of-opensshEnable arcfour and Other Fast Ciphers on Recent Versions of OpenSSH2014-10-22T00:00:00+00:00<p>After a recent update to my Arch Linux box I noticed that some of my backup
scripts started complaining about not being able to connect to my machine.
The error message I was seeing was:</p>
/2014/07/03/git-submodule-update-init-remote-recursive-considered-harmfulgit submodule update --init --remote --recursive Considered Harmful2014-07-03T00:00:00+00:00<p>I use a repository (<a href="https://github.com/sigma/gh.el">gh.el</a>) that has a submodule to itself. The <code class="language-plaintext highlighter-rouge">.gitmodules</code> looks like:</p>
/2013/05/10/hacking-your-ELF-for-fun-and-profitHacking Your ELF For Fun And Profit2013-05-10T00:00:00+00:00<p>Have you ever wondered how the Linux kernel <code class="language-plaintext highlighter-rouge">module_init</code> and
<code class="language-plaintext highlighter-rouge">*_initcall</code>(e.g. <code class="language-plaintext highlighter-rouge">subsys_initcall</code>) macros work? Even after a quick
glance at their definition things might not be exactly clear:</p>
/2013/05/04/localhost-considered-harmfullocalhost considered harmful (nginx ipv6 fun)2013-05-04T00:00:00+00:00<p>After a recent update to one of my CentOS servers that hosts some
django applications, I started getting 502’s with the following error
message:</p>
/projects/2013/02/16/make-readme-markdownMake Readme Markdown2013-02-16T00:00:00+00:00<p><code class="language-plaintext highlighter-rouge">make-readme-markdown.el</code> is an
<a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Initial-Options.html#Initial-Options">Emacs script</a>
(i.e. invoked with <code class="language-plaintext highlighter-rouge">--script</code>) that can be used to convert typical
Elisp file comment headers into <code class="language-plaintext highlighter-rouge">README.md</code> files, suitable for usage
on GitHub, etc.</p>