I've been "datagrok" online since 1999 or so. Just learned that some startup has decided to name themselves "datagrok" as well. datagrok.ai

Explicitly: I am not associated with this company in any way.

Feels pretty weird to see "my name" on this company's website though. Looks like they do the kind of work that I thought I would be when I chose this nick.

But, I'm not upset about it. It's actually a good excuse to retire this silly nickname that I never really became, and that I've been feeling distanced from for a long time.

I'll probably just use my government-recognizable name in some capacity for meatspace stuff from now on.

A globally unique identifier isn't really a reasonable expectation anyway. I'm not internet Cher or internet Prince

Trying on something new.

Retiring the vanity domain that I've kept for the past two decades and instead making my personal site a tilde-subdirectory of something more general-purpose.

It decenters my meat-self, and I intend for it to provide a home to software that is more about the project than about me having written it. (Also, not owned by Microsoft GitHub.)

The page itself is just a placeholder for now...


Finally managed to completely expunge jQuery from my web site. Learned a bunch of slightly more modern web API. Abandoned any thought of support for internet explorer. Now it's totally vanill... uh

...well it's not vanilla js

It's vanilla coffeescript?

I hear you, I hear you, who tainted the carafe 🤢
yes it was me

I like it 🤷

(When I have some more hack time the CoffeeScript bits are getting thrown out and rebuilt in ClojureScript (that I have become fond of at work), or maybe a Scheme that compiles to JS)

makebakery, my static site generator (formerly known as m4-bakery) has had a spike of recent improvements!

Among other things,
- bumped the demonstration site to use bootstrap 5.0.0
- improved module docs and several demo-site pages
- new modules enabling:
-- `make serve` to stand up a local webserver for previewing changes
-- `make watch` for automatically running make when source files change
-- `make gh-pages` for deploying your static site to github

With a bit more work I might even tag a commit with a first release number and start a changelog!


rms, free software 

because a mostly-free-libre system is less dangerous to a user than their giving up and retreating to a familiar, working, but entirely proprietary system

and users who use mostly-free-libre systems with one unfortunate nonfree component are those best positioned to jump to an entirely-free-libre system, the moment they can escape whatever circumstances forces them to accept that nonfree component

Show thread

rms, free software 

maybe this is an opportune time to revise & republish "scorn; don't shun"


we agree that non-free software, binary blobs, etc., are bad

but instead of taking the rms tack of not mentioning its existence (shunning)

or just shoveling it all in for convenience as if it's no big deal

a freedom-respecting os should highlight the dangers in each piece of available non-free software, to educate users

and then bend over backwards to help informed users install it, if they accept the risk

I've been having little impulses of motivation to update my website again, since it is very stale, and a javascript banner that I set up for the purpose loudly declares it to be so.

Taking a step back and thinking,

What am I?

What has been the deliverable from my existence? What am I to strangers, other than what I have written?

What do I want to express?
Do I like this collection of writing?
Do I want it to represent me?
What value is there in expressing myself if I'm not very unique, or accomplished, or interesting?

I keep thinking "maybe no, maybe none" and that I should replace my personal homepage with a spinning beachball or similar. Embrace that I am one instance among billions and build the appropriate site for that which may be none at all.

But I'm reminded of the time that I bumped into an old colleague and one of the first things he said to me was how much he liked that zany writing about impossibly ambitious project ideas, that I was thinking of deleting even then. Huh.

What to do.

Made a Python 3 server for 5:

It was more difficult than I expected.

Turns out, browsers don't send EOF, so you can't do the typical thing of reading from the file-like object self.rfile until it doesn't return any more data.


work brag 

By paying attention, understanding and tuning things where I can, and without the drastic whole-system rewrites I irresponsibly dream of embarking upon, I've successfully cut my employer's technology bill in half 💸

Including cutting our AWS bill 66% -- the lowest it's been since 2013 -- and our Heroku bill 80% -- lower than it's ever been. While running the same or more services 😎

programming shoptalk 

TIL AWS Lambda's Python3 configures a handler in the root level logger

so your call to logger.basicConfig(level=INFO) that works just fine in local dev no longer has any effect

and their handler keeps the default level (WARNING)

and all your calls to logger.info() evaporate in production

video conferencing tip: you can map mic mute/unmute to a global hotkey! pactl list-sources to find out the index of your mic. then

pactl set-source-mute <idx> toggle


my 2nd attempt at mini muffin pan popovers turned out pretty good!

dear friends and mufos

the founder of your vegetarian-for-meat-lovers restaurant Clover Food Lab is doing a live cooking show on youtube while the restaurants are closed for coronavirusmas

i am entirely biased but i have been very much enjoying it


I've been keeping my dotfiles under version control for ages. It started out as a CVS repo. Remember those? Then Subversion, then Git.

After I made $HOME a Git repo, I eventually ran "git clean -fdx" from the wrong place, and Git helpfully walked up the tree and deleted almost my entire home directory. 😭

So I wrote a script to help me manage a collection of dotfile symlinks into a repo of un-dotted files instead, for safety, and didn't look back for 10+ years.

Somebody recently tooted a link to drewdevault.com/2019/12/30/dot and, well I sortof knew it was possible, but seeing a working example was enough to inspire me to give it another shot.

I abandoned my script and reorganized my dotfiles repo. $HOME is now a git clone, it works fine, with less cognitive overhead, few symlinks, and no unintentional "walking up the tree to the wrong repo" problems.


Also separated out all the files intended for system-level configuration into a new repo:


Please join us in the signing of this petition and consider adding years to your .org registration today.

5541 letters have currently been sent to stop the sale - add your name now!

Save .ORG

Help stop the sale of Public Interest Registry to a Private Equity Firm



With the news of the .org TLD being sold to a private equity firm, I've been thinking that maybe it's time to abandon the datagrok.org domain that I've held for 19 years.

There's a campaign to stop the sale (savedotorg.org/) but I've always felt like the centralized domain name registry implements artificial scarcity and rent-seeking.

So maybe instead of just choosing a different one, now is a good time for me to reexamine the value of keeping a domain name "forever" and explore alternatives.

rich filmmaker debacle
cliché filmmaker beard
firmed clickable harem
clarified member chalk
childlike farm embrace
backfield mile marcher
half remember acid lick
crab milk remedial chef
cerebral milkmaid chef
bleached farm limerick
flaccid hiker embalmer

anagrams of my full name

Feeling smart because I implemented a Ring List Zipper in to help me solve a programming puzzle 🤓👍


It's similar to the List Zipper from the "Zippy" library, but includes some unique functionality.

Show thread

Newbie adventures in trying to lazily tokenize an input stream with


With a link to someone's massive blog post on the same subject with a more thorough walkthrough: poeticoding.com/elixir-stream-

Show older

cybrespace: the social hub of the information superhighway jack in to the mastodon fediverse today and surf the dataflow through our cybrepunk, slightly glitchy web portal support us on patreon or liberapay!