This is my home page. I know home pages is not a popular genre these days and it probably makes me look old fashioned.

Whose home page?

My name is Daniil Baturin. On the Internet I usually go by dmbaturin, the “m” is from my middle name, of sorts. The good thing about it is that it's easy to write in ASCII. The bad thing is that just about everyone asks how they should pronounce it and how many i's are there. Myself I don't care, you can call me Dan and avoid the issue altogether.
If you really insist, there are two i's and it's pronounced [Danʲiʔil Baturʲin] (Dah-nee-ee-l Bah-too-ree-n, with a glottal stop between the i's like in “uh-oh”).

I write programs and build networks. Sometimes those programs have something to do with networks, sometimes they don't. I'm also an occasional technical writer, freelance tech journalist, amateur clarinetist and composer, and a personification of the nerd stereotype.

You may be interested in my projects or the documentation I wrote. At least that's what I consider most important.

The ones that are used widely enough that you might have already stumbled upon them are VyOS (a GNU/Linux distribution for routers), encapcalc the MTU/MSS calculator, and the task-centered iproute2 user guide (formerly “iproute2 cheatsheet”).

You can also find me in other places:

You can contact me by email <daniil (at) baturin (dot) org> (here's my PGP key if you want secure communication).

Recent updates

CCNA 200-301

Today I passed Cisco's CCNA 200-301 certification exam. In short, they fixed a lot of old problems but added a few new ones. However, it's still much closer to an exam that a working network administrator can walk into from the street and pass, compared to the last time I've seen it. In this post I'll try to offer some preparation tips.

Why not Hugo

People sometimes ask me why I wrote my own static site generator instead of using an existing one. A lof of time their suggestion is Hugo. Well, a lot of the time I use Hugo as an example of what not to do. It suffers from creeping compatibility breakage and I find it highly limiting in many areas. I'm not planning to use it and not recommend it to anyone else. For the details, read on.

Quotes

Use a Wayback Machine link for the The Legend of the Pea Sea page (fixes issue #1).

BNFGen

The BNFGen demo page now uses BNFGen 3.0 and offers some new features, such as deterministic repetition syntax and debugging/tracing options.

Fully notated pieces

Store assets together with pages.

Continuity

Continuity page overhaul.

Embedding and projection in Lua-ML

One thing I find odd about many interpreter projects is that they are designed as standalone and can't be used as embedded scripting languages. Lua-ML is completely different in that regard: it's designed as an extension language first and offers some unique features for that use case, including a reconfigurable runtime library. You can remove modules from its standard library or replace them with your own implementations. Of course, you can also pass OCaml values to Lua code and take them back in a type-safe manner too. That aspect isn't very obvious or well-documented, so in this post we'll try to uncover it.

Bundle NPM modules into static JS libraries like it’s 2006

A good thing about browser implementations of JavaScript is compatibility. The NPM ecosystem, however, is infamous for its fragility. As a professional “not a frontend developer” I try to opt out of it as much as possible. Luckily, if you just need a library from NPM, it's easy to package it into an “eternal” blob that will work forever. In this post I'll share my procedure for creating such static JS blobs from NPM modules.

Migrating the blog to soupault

I've migrated my blog to soupault. I hope it didn't break too many links or anything else, if you spot a problem, let me know. If you are interested in the details of the migration, read on. However, note that this post is a bit too full of idle musings on blogs, universe, and everything. If a list of pages sorted by date is all you want, read this post instead.

Privacy notice

This website does not use cookies (should I have made this a popup message?).

Copyrights

Everything you see here is distributed under the terms of the Creative Commons Attribution license, unless otherwise specified.

Technology

This website supports IPv6 and HTTP/2. The future will be better tomorrow.

I'm committed to improving accessibility. The pages render fine in text-only web browsers such as w3m and lynx and seem to work fine with a screen reader. If you are an accessibility technology user and you've found an issue, let me know.

Accessibility and support for outdated software are different issues though. Despite its visual simplicity, this website is not made with outdated web browsers in mind, though anything released after 2013 should work.

This site is powered by soupault, a static site generator based on HTML rewriting.