# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 2032
# self = https://watcher.sour.is?uri=https://anthony.buc.ci/user/abucci/twtxt.txt&offset=232
# next = https://watcher.sour.is?uri=https://anthony.buc.ci/user/abucci/twtxt.txt&offset=332
# prev = https://watcher.sour.is?uri=https://anthony.buc.ci/user/abucci/twtxt.txt&offset=132
(I'm in the US. Your local situation may be different!)
Wear a mask. 80% of us wearing masks reduces needless COVID death by 2/3. Even now. The pandemic is not over no matter how many people try to pretend it is or try to peer pressure you into pretending it is.
If the US media tried to dedicate as much time to each and every US COVID victim as they have dedicated to Queen Elizabeth's death, they would be airing COVID death stories for the next 20,000 years.
I have half a mind to figure out how to hook a (soft) modem to a smart phone and use the unlimited voice as a data channel lol
I feel like cellular phone plans these days are a lot like cable TV plans, with the bundling they do. I almost never make voice calls and rarely text. Primarily I use data, and could/would fully switch out of the telephone network if I had a reasonable data-only plan. However, almost no one offers data-only plans, and when they are offered they are way more expensive per gigabyte than ordinary cell phone plans with unlimited voice/text options.
@prologic the bug that didn't die--the worst
Svelte also compiles server-side and is pretty popular right now.
@prologic If I'm understanding it properly, it allows you to start with existing server-side code in whichever language you like, have it output specialized HTML templates of the views you want your frontend to have, and then those views are rendered server-side and sent to the web browser. What's interesting is you get a frontend experience much like other single-page web app frameworks, without many of the headaches those cause. A lot of frontend frameworks have the web browser do this rendering work, and require back-and-forth communication with the server to move data around, which then forces you into the world of serializing your server-side app objects to something like JSON, marshalling them over to the frontend (and back) with all the associated networking code complexity, issues, bugs, etc etc.
@adi This looks interesting! Thanks for sharing.
I appreciate the advice people are offering, but this post was not a call for advice. I'm well armed with browser extensions and DNS and VPN to block as many ads and irritants as possible. Mainly I was griping.
@darch That extension was acquired by Avast, which is a very bad actor. You should stop using it if you do. https://www.androidpolice.com/i-dont-care-about-cookies-acquired-by-avast/
I will be there in spirit 👻
@prologic horrible
@movq I wish it did, but sadly no. I've so far not found a good way to deal with those cookie popups.
I tinker with Inform 7, a programming language for writing interactive fiction games, on and off. I was reminded of it the other day. Inform code looks like this:


A closed container called the wood-slatted crate is in the Gazebo. "A bizarre crate sits 
in the center of the gazebo." The crate contains a croquet mallet. The crate is openable. 
Instead of taking the crate, say "The crate is too slimy to pick up." The description of 
the crate is "A strange object, covered in muck and slime, but it looks like it can be 
opened." The description of the mallet is "Just your usual croquet mallet."

(I wrote some of this on top of a demo program included in the documentation)

It's so cool and magical. I wish there were more programming languages like this.
@akoizumi I guess I knew it had gotten bad, but I'm so used to having several layers of ad blocking running that I hadn't seen it "in the raw" in a long time. Just the one page I tried to view threw two different videos in front of what I was trying to read and had several blinking (!!!) banner ads? Oh, and a cookie warning that covered part of the page. I feel like this could give somebody a seizure.
I guess this is a pretty tired critique. But the web is basically unusable without several ad blockers?
I keep around a web browser that has no ad blockers installed for the rare cases that I need it. Today, I accidentally used it to do a web search and visit a link, and holy dear God what has the web become???
It's one of those dreary, rainy days where it perpetually feels like the sun hasn't risen yet.
@movq I've heard that mammoths were renowned for destroying cameras and other equipment when they were being hunted
Climate change is real and caused by humans, too, and vaccines don't give you autism or implant 5G in your bloodstream. OK.
Get out of here with your "antifa" stuff. It is undeniable that right-wing extremism is a real, serious, present threat to the United States and really the world, and "antifa" is the smokescreen onto which their enablers project their own bad intentions. There's no such organization as antifa--it literally means "anti-fascist", which the vast majority of people are--whereas there are powerful, well-monied, and well-connected individuals and groups who are actively attempting to erode democratic institutions, to everyone's detriment but their own. Demonizing antifa was a Trump/MAGA tactic, and you can miss me with it.

These are simply facts, all verifiable from credible news sources and open source sources (and no, I'm not your librarian, I'm not going to do your work for you). If you don't like facts, unfollow and mute me and don't respond to my twts. We are long past the time of being gentle with people who refuse to look at reality.
@retrocrash Antifa lol. Give me a break!
@lyse @prologic
I guess I'm old school because I still use dc


╰─ dc -e '49 2o p'                                                                                                                                                                                      
110001
@lyse speaking as a 110,001 year old, I thank you 🙏
@lyse thank you! I feel exceedingly old now
@prologic idgi, can't you just engineer your ops to be more dev-y and, like, op-y?!?!
@prologic Happy birthday then! 🍰🎂
I wonder when the freeze peach / libertarian types will stop throwing in with sites that dox and swat thousands of people before finally being taken down.
Cloudflare explains why Kiwi Farms was its most dangerous customer ever | Ars Technica
@prologic Thank you!
It is my birthday today. Entering the last year of my 40s!
@lyse Your photos are always so good
@akoizumi Of course! But I don't want to work in Javascript or its variants. Scalajs allows you to write your frontend in scala, which is what my simulation and other backend code is written in.
@stigatle @prologic 👂 did I hear that you work on simulators? I work for a non-profit, the Electric Infrastructure Security Council, building a large-scale simulator of interactions between the electric grid and other infrastructure sectors like natural gas and water distribution.
One thing I started to really appreciate about scala 3 is its optional significant whitespace. I especially like that it's optional; python's mandatory significant whitespace drives me batty. In scala 3 you can use braces if you want, or you can toss out the braces and use indents. I found that I'd skip the braces for shorter blocks of code, but for anything more than 10 lines or so, I used braces because they helped me visually understand and navigate the structure better.

Anyway, that's my yarn for today.
I started using scala at a significant level in 2013 or so, when it was still version 2.9 iirc. I followed it up to scala 2.13 but have mostly resisted switching to scala 3 because I assumed there were significant differences and worried the switch would slow me down. I'm usually on work deadlines when I'm coding and have a lot less free time to tinker now that I have a baby, so I tend to be pretty conservative with technology choices. Anyway, I was wrong about that. Scala 3 is largely similar to scala 2.13 for most things you do at a "user" level. There are significant changes to implicits and macros, but these mostly affect library-level code. You can write what you're used to writing in scala 2.13 for the most part and it'll work with scala 3. For the most part you can also use scala 2.13 dependencies in scala 3 code if there isn't a scala 3 version.
The combination of scalajs and Laminar is absolutely amazing and I don't think I would even consider using anything else if I ever build a big web-based GUI again. Scalably Typed has some warts, mostly owing to the impedance mismatch between scala and Javascript, but overall is great to work with, too. Once I understood the warts, incorporating pixijs and mapboxjs GL, which are Javascript/Typescript libraries, into scala code was straightforward. The SAP UI5 web components are pretty nice too, but I have very limited experience in the world of web components and Javascript frontend frameworks so take that with a grain of salt.
I just finished a roughly six-week push to produce a demo of a simulation I've been working on. Mainly this post is a brain dump of technology used.

I built the user interface in scalajs--first time I've used it--using the Laminar library to wire up all the reactive stuff. I made heavy use of the Scalably Typed ecosystem because I wanted to use Mapbox GL for maps and Pixijs for an animated, interactive map overlay. I used the Laminar bindings for the SAP UI5 web components for all the non-map user interface elements. There are some other choices, mainly libraries to help with time, geometry, and geospatial calculations, that I'm not listing.

This was my first large scala 3 project.
@portlandbeer I use the sanoid/syncoid combo: https://github.com/jimsalterjrs/sanoid
@prologic they have two very useful properties. One is that yes, you can recover files at the point in time when you made the snapshot, so if you lose or overwrite a file you can get it back easily. But the other is that if you have two zpools that are in sync, you can easily send a snapshot from one to the other so that it's stored there. The two features together make for a pretty robust filesystem-level backup strategy, especially if your second pool is off site.
Using zfs on my main work drives and automatically taking snapshots hourly has saved me so many headaches.
@akoizumi no
@akoizumi haha nice
@prologic We're heading back home today, where it's less nice. ☹️ But it's been a good visit!
@movq

This:
> But my emails are just not delivered anymore

is just plain misleading. I hear this a lot about self-hosted email. But I have been self hosting my email for about ten years and as far as I know my email is always delivered. I've only had a problem one time and that was readily fixed.

I have MX and PTR records as well as SPF and DKIM records. I believe these are what make email deliverable reliably. It's a bit of a pain to sort out but once it's done it's done.
@lyse Oh yes, yes you could!
Kiwi Farms should have been banhammered long ago. That's not propaganda, it's obvious fact. It's a public health hazard at a bare minimum.
My view yesterday.

It's beautiful up here as always. The air is definitely crisper, and some leaves are starting to turn colors.
On the road to Quebec!
My wife studies ancient Greek mythology among other things, and wrote this article for The Conversation about "Artemis", the name of NASA's latest moon mission.

Who is Artemis? NASA's latest mission to the Moon is named after an ancient lunar goddess turned feminist icon
@prologic 😆
@movq no worries! under 6 minutes!!!!
@ocdtrekkie @prologic I wonder how "free food" and "multiple cases of COVID per year" weigh against one another.......
25 minutes till the liftoff of Artemis 1! https://www.youtube.com/watch?v=CMLD0Lp0JBg
@prologic I'm not sure. Probably both. It just seems odd. The work gets done, the companies are more profitable than ever, so why do they care where their employees are located?
I just burned through 40% of my laptop's battery capacity compiling stuff, oops
@prologic yeah, it's not about the work or productivity.
@prologic fools
It's more predictable to type boilerplate than it is to think through and implement an efficient design.
Evidence suggests it takes around as long to become fluent in a computer programming language as it does to become fluent in a natural language. That'd be roughly 730 hours of dedicated work. 1 hour a day of study means 2 years; 2 hours a day, 1 year.
@prologic personally I think the problem with node in particular stems from
1. Cramming as many people as possible through "coding bootcamps" on the promise that anyone can learn to code and get a high-paying job in a few weeks
2. Companies largely using the frontend as branding and spyware, as opposed to useful applications

1. means that people learn to copy-paste from Stackoverflow or use libraries, because a bootcamp does not teach language fluency. 2. means there's corporate pressure to focus on visual design and surveillance at the expense of all else. People are given little time to design good application code, even if they had the skills to do that, which I posit the majority most likely don't.
@prologic probably not! Though it's hard to say. Dependencies multiply quickly.
this is almost as much as you'd update to upgrade the operating system
I just resurrected a laptop that had been off for about six months and it needs 585 package updates.
no idea why we aren't emailing each other this thread, encrypted of course.
@prologic 🤦🏻
@lyse yeah, it gets repetitive. I guess it doesn't bother me because I teach classes and also have a kid, and you get used to having to repeat yourself many, many times for the message to get across 😖
@anth In general I don't know that it's possible, but this might be a decent place to start. One sort of obvious way to detect upscaling is to run DFT (discrete Fourier transform) over (portions of) the image and see whether there is an obvious cutting-off point in the frequency domain that would signal a bandpass had ocurred. Fully-detailed images would have frequencies in all bands, but upscaled images would be missing the highest-frequency variations. Of course that'd depend on what exactly the image was--some natural images don't have high-frequency variations either. Anyway, good luck!
@xuu I've always wondered about how well these network over power lines worked. Aside from the MAC address issues, how does it perform?
@prologic grrr that stinks.
@eaplmx I'm fully set up to use it, but no one I communicate with regularly uses it, so I don't. I suppose I would if everyone else I knew used it, but as others have pointed out, the headers are in cleartext and that reduces the safety factor.
@mckinley @prologic I second this. To a lesser degree, it has discoverability going for it as well. It definitely did "back in the day", less so now. Personally I think that's an important feature that is mostly missing from decentralized communication platforms, and another argument in favor of centralized ones.
For the past week or two I've been receiving spam after spam with the title "Confirmation" and no visible contents. It's weird because the spam filters I use very quickly figured out that pattern. Spammers are usually a little more tricky.
@lyse Ugh come on, there are countless hours of free videos on Youtube, it's harmless if the people who make those videos try to make some money from what is otherwise free labor by asking us to click or subscribe. If you don't like it, yell at Youtube to pay these people so they don't have to do that.
(I wrote this Yarn entirely in parenthesis and it disappeared.) @ocdtrekkie I wonder what happens when I respond!
@prologic yeah, it really sucks. I'm not sure how we ended up here, but I think austerity measures from governments + lack of enforcement of antitrust law, which let tech-advertising companies become enormous and powerful, hasn't helped. I'm old enough to remember how bad Microsoft was leading up to the 1990s when it was almosttttt broken up, and how much better the tech industry was--at least speaking in terms of technology--for awhile after that antitrust case against them. The enforcement of these laws is good for everyone except maybe one or two tech execs.

I mean, there ought to be many ways for people to support themselves and their work/art/videos/what have you, not just sticking ads and promotions all over everything. There's no reason to consolidate around that particular model at the exclusion of all others.
@prologic I kinda hate this too, but I understand why people do it. They're trying to make money from their YouTube channels, and this is the customary way to ask for support. I can't fault them for wanting to make money, so I try not to get too irritated and instead direct my irritation towards where I personally think it belongs: the conditions that put them in that position to begin with.
@mckinley @prologic *sniffs the air* hmmmmm
I was making a fractal and it crashed my computer 💥
Getting foggy around here
@prologic couldn't that defer call automagically be part of io.Copy or the open function built-in?
@lyse thank you! You'd think by now I'd instinctively go over a hardware checklist before diving into software debugging, but nope!
@stigatle I checked every network setting multiple times over the course of several months, so I wish it had been easy!
I changed the patch cable for the machine that was randomly dropping off the network, and it stopped randomly dropped off the network. 🤔
@lyse if your watch had shifted counterclockwise it would have been annihilated in a burst of gamma rays!
Getting tired of fighting with Javascript 😫 how do people do this as a job?
@lyse oh wow these are great! I love the effect of the exhaust
putting the MAD in MonAD lol
@movq How else are we supposed to get corporate branded emails with logos and images and single pixel trackers and ...
@lyse I use KDE/plasma but don't even have KMail installed lol. I got used to Thunderbird years ago. It's mostly OK for what I need it to do.
@lyse bizarre!
I point that out because I just saw a new plugin that can run code snippets in an Obsidian note for several programming languages. Which is handy--I have a jupyter plugin that makes calls out to a local jupyter notebook and puts the results in your note, and it's great. However, this plugin had a peculiar set of supported languages, which made me suspicious. It turns out it makes network calls to some server to do the code compilation and running, and then grabs the results and puts them in your note.

No way!!!
I've been using obsidian for about a year now, and I really like it. However, since it's an electron app, and since most plugins for it are written in some variant of Javascript, and since I put semi-important stuff in there, I'm constantly checking plugins to make sure they don't make unwanted network connections. I find it pretty horrifying that web-based technologies tend to just make network connections freely, without first checking with the user that they're OK with it.
@prologic yes, I listed the things I didn't like and forgot to put the things I did like! I agree with you, and him, about encapsulation, especially at the low level. I switched from java to scala about ten years ago and one of the first things I did was stop writing in the java OO style. But I never switched to the full-on disciplined functional style of code ala Haskell, because I find that almost as bad. scala's nice in that it runs on the JVM and you can use OO, FP, imperative, or some cobbled-together hybrid of all three styles as you see fit.
@adi hello!
Got about halfway through, but speaking as an Old guy™ my high-level takeaway is that this sounds like a 30-something programmer who's starting to grapple with some of the warts of programming that they wish they'd known in their 20s.
@prologic
- Lots of opinions, many of which aren't cited and probably not super accurate (e.g., that Java is the reason for the rise of OO programming, when Xerox PARC, Sun Microsystems, Smalltalk, Alan Kay, etc etc led to Java and other things)
- His rant about OO programming is really about Java (and its variants). Smalltalk is quite a bit different. Objective C is too.
- The Actor model more or less fits his notion of what OO programming is, yet is hugely successful
- He imposes a bunch of arbitrary rules on OO programming based on a rigid understanding of what objects, states, and encapsulation mean. He then uses this to argue that messages can only be copies of state, not real state; that for one object to send a message to another object it must hold a reference to that object; that objects aren't allowed to have references to anything; etc.
- "The Most Important Programming Video You Will Ever Watch" <--- no, never say this about your own stuff it makes you sound like a crackpot
It's the first time I've worked on a non-trivial web-based UI and not wanted to jump into the sea and float away