AN OPEN POST TO MASTO ADMINS (boost for reach pls):
Yesterday a sizable instance (dice.camp, a TTRPG community, where I have - or HAD - many mutuals) defederated with mastodon.social (cut ties). That server then reversed that decision but the damage was done: follows had been deleted. I lost my friends there.
ADMINS: PLEASE... we (USERS) are all working hard to establish mastodon as a viable social network. This type of action fundamentally damages that effort. Even reversed, it's damaging.
@joat @lolzac @ryanrandall do you have people whose job it is to maintain the wiki? otherwise it's where information goes to die
I never got into open source because I get too easily frustrated by developers failing to document their build environment (assuming they bothered to document anything at all).
"Hey I tried to build your giant library, but I'm getting an error where it says it doesn't recognize the --c++20 flag and suggests I mean --c++2a?"
"Oh yeah, you need to use g++ 11, and we do mean g++, Clang definitely won't work. Also you want openjdk 17 or later, and the specific version of python Guido von Rossum compiled in a drug-fueled haze at a rager in Burbank in 2013, which I can mail to you on thumb drive if you don't have."
So I've learned that #Facebook / #Meta discontinued support for Portal by... my relative's Portal no longer allowing alarms to be set.
... As of yesterday.
Especially relative to Google's handling of shutting down #Stadia, this is embarrassing. No fanfare, barely any news, and the product is still advertised on Meta's website (and the built-in dashboard still lists setting alarms as a feature).
Terrible EOL experience and it really puts me off buying any future hardware from Meta.
By far my favorite special operator in #Lisp, `the` `(the value-type form)` is the operator declaring that `form` has type `value-type`, examples `(the number 3)`, `(the string (get-user-name))`.
Naively, one might assume this declares a value has a specific type. That is true, but not the way one might think. The formal definition is that *the program behavior is undefined if the value does NOT have that specific type*.
That definition means a given LISP compiler / interpreter is *allowed* to assert-and-crash if the types mismatch (because crashing is a valid undefined behavior)... But it also acts as an escape hatch for high-performance LISP engines to save resources by throwing the dynamic typing data away. In other words, `(the)` is the "paint this expression red to let the code go faster" special operator. ;)
For pedagogy reasons, writing something that I would definitely write in #TypeScript in #JavaScript because I can't guarantee the end-user is going to have a TypeScript stack.
JavaScript is still a hole of a language, but I guess I've used it long enough that I'm getting that Cypher-in-the-Matrix thing.
"I don't even see the lack of modules. I just see closure, closure, one exposed variable name..."
I was thinking about AI development, and while I'm skeptical it will replace engineers in its current form (similar to how it's not realistically going to replace human artists either), I'm now starting to come around to the idea that it'll be integral to a future development workflow.
In particular, if a human writes (or at least verifies) tests, then an AI could probably write code to meet those requirements and you could be confident that it's working correctly.
@lauren So an interesting wrinkle in the story of this documentary being taken down from YouTube... Is it being taken down at the behest of the Indian government, or at the behest of the original copyright owner?
Because it looks like archive.org killed their links at the request of the BBC.
https://blog.archive.org/2023/01/27/bbc-modi-documentary-removal/
Unwritten office etiquette point number whatever:
If you schedule an hour-long meeting, it is most reasonable to provide an agenda; you're asking for an eighth of a regular work day from people; you'd better be telling them why.
... Really, this rule applies to half-hour meetings as well, but half-hour meetings can *sometimes* be summarized by the name of the meeting alone.
The #KSP2 tutorial video on achieving orbit is called "Missing the Ground" and I am already in love. :)
I think time has shown that resolving namespace conflicts by remapping local names (#Python or #TypeScript style) is a better solution than resolving namespace conflicts by requiring names to be globally unique in the universe of possible names (#Java style). This is a subset of the larger problem "Solutions that require global knowledge are doomed."
There are some downsides. Increases the complexity of finding all uses with a simple text search... But simple text search is the wrong tool to use for comprehending code anyway.
Relative to other kinds of software I use, databases I picture as steam engines, or reactors... The seemingly-constant tuning, indexing, manual analysis and (in the case of PostgreSQL) "vacuuming" remind me of the picture of the engineer crawling endlessly over their machines, turning that knob, tweaking that setting, clearing up that spill when there's time.
It's easy to see how it becomes a full-time job just to maintain these machines.
Tired: "AI is coming for artists."
Wired: "AI is coming for data analysts."
https://www.patterns.app/blog/2023/01/18/crunchbot-sql-analyst-gpt/
I'm not sure people understand how much #StackOverflow revolutionized software development.
There were entire *languages* that were unapproachable in the Olde Tymes because you'd get a compiler error like "tycon mismatch" and trying to Google what that meant would come up empty (and yes, you'd read the documentation---if you had it---and it *still* wouldn't explain it in language you could understand without sharing the mental model of the language designer).
StackOverflow had a massive broadening and flattening effect on software dev, and most of the complaints that it changes programming into more of a game of lookup and less of a game of learning the depths of the tools are complaining about the *virtues* of the service in an ecosystem where by the time you've attained deep knowledge of your toolset, the industry has moved on to another toolset or your problem domain has changed.
C++ ain't my favorite language, but by George it has the `[[nodiscard]]` function decorator and I have used *so many* other languages that should either have that decorator or should have semantics that don't require that decorator... Instead, the average case for languages I use is "If you call a function and ignore its return value completely, sucks to suck."
In Go, in particular, the easiest way to introduce bugs to your code is to call a function that returns an error and then just ignore the return value.
Career software engineer living something approximating the dream he had as a kid.