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 #TiddlyWiki 5:
https://gist.github.com/datagrok/67e9f9ae42cea9cf5740c353277f8fb0
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
dear #boston 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 https://drewdevault.com/2019/12/30/dotfiles.html 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.
https://github.com/datagrok/home
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 (https://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.
Oh hey, keybase.io has native support for many Mastodon instances now.
Feeling smart because I implemented a Ring List Zipper in #elixir to help me solve a programming puzzle 🤓👍
It's similar to the List Zipper from the "Zippy" library, but includes some unique functionality.
https://github.com/tchoutri/Zippy
Newbie adventures in trying to lazily tokenize an input stream with #elixir
https://gist.github.com/datagrok/1d13ceac855a324ced0c270e07b1ec51
With a link to someone's massive blog post on the same subject with a more thorough walkthrough: https://www.poeticoding.com/elixir-stream-and-large-http-responses-processing-text/
Well, that took a while but my changes to add support for the SH1106 OLED display driver IC are now merged upstream into QMK master! 🎉 https://github.com/qmk/qmk_firmware/pull/5787
Does this mean I can now put "C-language embedded driver development" on my resume? 😲
(no, my changes were tiny)
I got a little 128x64 I2C OLED display for $2.50. It said in the product listing that it used an SSD1306 driver IC, which made me think it would work with #QMK firmware.
I hooked it up but it only showed static.
So I read some datasheets and learned some stuff and did some hacking and now (or very soon) QMK will support this OLED display too! (Turns out it actually uses an SH1106.)
Pictured: the wireless receiver for my Mitosis #mechanicalkeyboards, with a speaker and this OLED display attached.
python zip(*rows) is matrix transpose
>>> [(1, 2, 3), (4, 5, 6)]
[(1, 2, 3), (4, 5, 6)]
>>> list(zip(*_))
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(*_))
[(1, 2, 3), (4, 5, 6)]
>>> [[1, 2, 3], [4, 5, 6]]
[[1, 2, 3], [4, 5, 6]]
>>> numpy.transpose(_).tolist()
[[1, 4], [2, 5], [3, 6]]
>>> numpy.transpose(_).tolist()
[[1, 2, 3], [4, 5, 6]]
hey it rhymes too
‘HTML, CSS and our vanishing industry entry points’
https://rachelandrew.co.uk/archives/2019/01/30/html-css-and-our-vanishing-industry-entry-points/
this says so many things i agree with, i hardly know where to begin pulling quotes. web design and dev used to be something you could organically transition toward from a variety of other roles or hobbies. there was a broad, porous space between laypeople and ultra nerds. this zone created a culture i was able to grow and succeed within. it is now nearly gone.
🛎️ Website update:
- Still a bunch of CSS cleanup to do, but I've got marginalia working! 😍 Soon I want to get a "light theme" toggle going.
- Lots of revision to my article re: "purist free software systems shouldn't shun non-free programs"
https://datagrok.org/gpl/shun/
- Some revision to my "exec the arguments" draft, including implementation in bash, c, python, rust, and scheme
https://datagrok.org/src/exec-args/
I make software, usually with Python and GNU/Linux.
I like free software and copyleft licenses.
he/him | 38 | southern california | https://datagrok.org