I have to say. Iām really very disappointed in Microsoft. Not only did they buy out Minecraft the game, but they basically ruined it for every privacy conscious family, parents and their kids, who can no longer play the game without giving away personal identifiable information (PII) on my children that Microsoft have zero rights to. š¤¦āāļø ā Honestly⦠Fuck you Microsoft.
@movq@www.uninformativ.de https://movq.de/blog/postings/2026-08-05/0/POSTING-en.html Very interesting! I basically never analyze binary files, but this were some great thoughts on that subject. I hope to remember them when I find myself in the situation to look at binaries more closely.
And just like that Problem 10 is done and correct whoohoo š„³ It was easy because in Problem 7 Iād already written an iterator to produce infinite primes. So the solution for finding the sum of primes under 2,000,000 is basically (shortened):
primes := iter.take_while(iter.filter(prime_candidates(), is_prime), fn(p) { p < n })
print(iter.sum(primes))
And of course the answer is: 142913828922 which took ~21.ss for the Go Vm to compuete.
Iām not seeing any of what youāre describing, But then again I only use the app on mobile, on iPhone. Thereās only been basically a few commits to the App and one to Swag. Thatās it.
@david@daiwei.me Also if you wouldnāt mind writing up an Issue for the image/upload problem too, that would be great š I still havenāt solved it properly, but Iāll try to do so today. Thereās also an issue uploading images via the yarnd API path from the Twtxt App too, which I can replicate with basically any photo from my iPhoneās Photo gallery hmm š¤
I really do find it difficult to follow anyone that basically posts to a wall, or doesnāt follow back. Itās utterly pointless not being able to have a conversation, like basically, at all. Maybe itās not even anyoneās fault? Maybe just a sucky client that doesnāt understand how User-Agent works in Twtxt Discovery? š”
@itsericwoodward@itsericwoodward.com And⦠Are there basically a lot of āvillage idiotsā? š¤
Okay Iām fixing this in lextwt, yarnd and twtxt.app (takes a different path). Soon youāll be able to write shit⢠like (<this>) and itāll get escaped and rendered correctly on the page. Basically you are really writing HTML here, but not intending to do so, Twtxt never supported HTML, and I donāt think it ever should. We extended the format to support basic Markdown, and I think thatās where it should end.
Probably time we wrote a Spec for this really.
Dunno if anyone will find this interesting⦠But some ~6 months or so ago I experimented briefly with creating a whole bootloader + kernel + userland ā Basically an entire OS in the Mu programming language (which as you know I also designed and created) ā 6 months later Iāve worked on it some more after spending the last week working on improvements to Mu itself, which is now able to compile itself with its own Mu implemented compiler and now have an os/arch backend called muos/amd64 that boots into a running shell, with a tiny little vfs, UNIX-like semantics, syscalls, read/write, etc. It works pretty nicely, and aside from a small Assembly ānucleusā, most of the Kernel and Userspace is written in Mu.
@david@daiwei.me Have you never seen or heard me say AI is basically Artificial Incompetence? š¤£
jenny stuff aside, I received zero bug reports or code contributions since leaving GitHub in 2018.
And @lyse@lyse.isobeef.org is right. Not being on Github is a good thing IMO. Even when I was there with all my many projects, I basically got the same amount of āattentionā as I do now. The only real way to gain more āattentionā is to artificially play the āgameā. You know. The stupid āStargazerā one, and whatever you can to get into the āTop 10 Xā charts. ā But ultimately that doesnāt buy you āqualityā contributors or users or whatever. So itās all pointless.
š£ ACTION REQUIRED: Hey folks š For those of you whom are using the Twtxt App either via the Hosted option or on your own twtd instnace or via Github/Gitea or any other publishing backend (doesnāt amtter). Please read.
Please open the app and you should be prompted to save your recovery code for your device. This basically is all of your settings, follows, etc in the app itself. This is synced to the Origin everytime you make a change, and also stored on-device. This is what makes it possible to sync your setting across services, move to another device, etc.
Please save a copy of the recovery code somewhere. This is only your only way to recover your settings.
Thank you š
Posting the review and plan here for posterity as it is related to this thread: https://canvas.mills.io/a/6QVGjzRW
The PR(s) as-is will likely not go ahead Iām afraid. More work to be done, but this is basically all about the āRecoveryā story and how to anchor and notion of an āaccountā without well umm an account š¤£
Unread messages are yellow, while read messages are white in tt. Focusing them just alternates the fore- and background colors. With the old color scheme, I disliked that inline code and code blocks were basically just the opposite of normal text. Hence, unread code was white and read code yellow. I found this often confusing, especially with larger code blocks. Sure, there are the timestamp and author columns that still show the usual white (read) and yellow (unread) background for selected messages, but still.
This is how it was before with unread messages:
Before with read messages:
So, I just reworked the code styles. Not sure if I like that or if it is actually an improvement. Unread code is teal on gray when not in focus and becomes blue on orange when focused. I thought the dark gray code background on a black regular background is still nice and subtle. The same similarity in colors for focused messages meant to go with an orange code background on a yellow regular background. The teal was too light, so went with a blue foreground color:
When read and unfocused, the new color scheme calls for the same code style teal on dark gray. However, with white as the main background for selected messages, I went with a light gray code background and a blue code foreground. Again, the contrast with white and teal wasnāt good enough. Vice versa, blue on dark gray is also not all that readable:
It looks like a parrot. Letās see if I begin to like it.
I just read @kat@yarn.girlonthemoon.xyzās blog post over here:
https://bubblegum.girlonthemoon.xyz/articles/learning-to-code-like-it-s-the-90s
Jesus, it must be so overwhelming for young people to get started with programming.
When I started programming, there was the built-in ROM BASIC of that PC and probably a bit of BASIC on a floppy, and that was it. Nowadays? Millions of libraries and frameworks and languages and what not ā and, much worse, thereās the expectation that you need to make something fancy. When I started, printing something and understanding IF was good enough.
Whatās your motivation for running this, btw? š¤
Basically, two things a) feeling generous for folks that either canāt afford or find it hard to have a little place to call home (webpage, feed, whatever) and b) a real opportunity to test some of the components that make it possible sshbox, which I know works well as it fronts my Gitea instanceās Git+SSH service and box, a container runtime I wrote a while ago, recently improved, hardened and polished.
As I said, Iām on vacation, and for about a week now, I did basically nothing but sleep. Day or night.
I canāt tell if this actually is a vacation or just therapy for burnout. š¤
Lenovo IdeaPad Slim 5x Review: The Best Laptop Under $1,000
Lenovoās IdeaPad Slim 5x just might be the best laptop you can buy for $850. Itās hard to find any major flaws, which is basically unheard of in a laptop at this price. ā Read more
Lenovo IdeaPad Slim 5x Review: The Best Laptop Under $1,000
Lenovoās IdeaPad Slim 5x just might be the best laptop you can buy for $850. Itās hard to find any major flaws, which is basically unheard of in a laptop at this price. ā Read more
@prologic@twtxt.net As have I. š¤ I mean, since I left GitHub, I got basically 0 pull requests anyway.
Even during my time using GitHub, I noticed that ādrive-by PRsā are rarely a good idea. People donāt really know/understand the code or the design principles/goals, so I often turned down PRs. Or I accepted them and was grumpy afterwards. š
What does work is having a team of maintainers/devs. The only question is: How do you build such a team if you donāt accept PRs? Thatās going to be the interesting part.
How to Edit, Merge, and Split PDFs With Free Online Tools
You donāt need expensive software for basic PDF tasks. In fact, all you need is a handful of free web-based apps. ā Read more
@movq@www.uninformativ.de Hahaha, a ride indeed. Exactly, this affected each and every Atom feed and only Atom feeds. All RSS feeds worked like nothing ever happened. This std::string to time_t to std::string to time_t dance only happens for Atom feeds. RSS feeds, on the other hand, go right from std::string to time_t and be done. Thatās precisely what the second option is aiming to propose for Atom feeds, too.
I will clarify that tomorrow in the article.
Itās very interesting what kind of quirks accumulate in software over the years. Especially quirks, the basically noone knows of anymore. Until something explodes and gets rediscovered. Luckily, that doesnāt happen all that often.
And every time I ask it to do the same thing, it produces basically the same result. It will sometimes not produce a go.mod, but thatās probably because doing so isnāt as statically high as writing the code to sum numbers from stdin.
So going back to the understanding of how it generated this, is quite simply the most statistically relevant search space of itās weights it has been trianed on and it has basically just produced a series of tokens, one after another that are relevant to the input, the next token and so on. Itās a trivial example I know, but it basically pattern matches itās way through itās vast search space just producing outputs based on context.
Most of the time, I take a very very long time to do anything. If I say, for example, āIāll build an IRC Web Clientā, that may not happen for weeks, if not months, until my sub conscience has has time to process everything. Itās like basically a āfeelingā of internal readiness. I never talk through it, never actively think about it, it just happens.
You can basically think of this as pattern-matching. Iām very very good at very fast pattern matching and piecing pices of a puzzle together very quickly, sometimes with very little to go on, itās often gotten me into a lot of trouble at work in my career because I can make a lot of assumptions very very quickly.
@bender@twtxt.net Now thatās an interesting philosophical viewpoint right there. But this assumes that the āAIā we seemingly have available to us today is actually telligent, understands and has cognitive reasoning. It does not. All of these LLM models from big-tech companies like Anthropic, OpenAI, Google, Microsoft, Meta and Alibaba are all just very powerful, very large multidimensional neural networks with attention that are very good at statistical probabilities of āwhat comes nextā. I think we get really upset over the wrong things sometimes. We need to continue to be upset that these 𤬠companies have basically destroyed any meaningful value of the concept of Copyright and Intellectual Property and Works of art. The so-called āAIā we have today is just a tool. Can you say for certain that the typewriter and the computer ruined our ability to write? Perhaps yes, but we still learn how to do so, likewise, I still think that learning to write code, research, read and write are all valuable skills to learn. Later on once you have the basics, you can defer some of the ātediousā work to these models, because frankly, theyāre far better at inferencing and pattern matching than you or i will ever be, not because theyāre better at pattern-matching per se, but because they have been trained on a very large corpus and they are much much faster at doing the same basic things we are far superior at.
Is it the fact that ābig techā companies have basically stolen all of human knowledge to their benefit to build these AI(s) thatās the problem? Or is it that these AI(s) can write code better than you can (some of the time)? Or is it that because of all of the above, thereās no joy left in writing code anymore? š¤
Of course, @movq@www.uninformativ.de! Most of my points are also included in your list.
First of all, programming is what I really do enjoy the most. So, it doesnāt make any sense at all to not do this anymore. āBut you could use your now free time to do something much cooler and more valuable!ā, others might reply. Fuck no, I donāt want to waste my time with other shit that doesnāt fulfill me, why on earth would I want to do that?
All this hallucination reduces quality badly. In my experience, itās also happening much more rapidly than I expected. Even though developers are still supposed to own and understand whatever has been generated under their name and even be responsible for that, the sad reality is that teammates often blindly trust the AI output. āBut I asked the AI and it told me that $this was impossibleā, āIāve no idea either, but the AI just generated itā are responses I get more often. What really makes my angry is when I point out a flaw and suggest an alternative and this is the reaction. It happened several times that just trying it out and seeing it clearly work to proof my point only took me half a minute, but people still did something handwavy else instead.
The learning effect is drastically reduced. The more time I spend on a topic, the better the odds that whatever I learned actually makes it over into long-term memory. Itās like if a collegue just says ādo it like thatā or āthis solves your problemā, but neither explains the why or how. Somehow, people are still convinced that itās a completely different story when you replace the human counterpart with a computer program in this equation.
Skills are unlearned. Itās like with automation in general, just much worse. You end up in a state where youāve no clue how anything works under the hood or how to actually find out important information that are needed to solve your problem. Youāre screwed when a process breaks out of the blue. Even though it can become also rather terrible, with classical automation youāre typically still be able to decipher how exactly the thing was supposed to do something.
The energy consumption is sooo high, I absolutely do not want to be a part in burning down our planet. Iām sure I find (and probably have long found without knowing) other ways to contribute to worsen our climate crisis.
The scraper part is already covered in detail in your list. :-)
Iām convinced that license and copyright violations are only played down or even refused entirely because companies want to make big money quickly. With the work of others of course. Their double standards are obvious, they still try to actively keep their own stuff secret and out of any training sets. At most for internal use only. Virtually noone in charge is interested in good long-term solutions. Short-term for the win, when disaster eventually strikes, the causers are long gone, the responsibilities in other hands.
Vendor lock-in is something that lots of folks are only realizing very slowly. Itās completely crazy to me. This drug dealer routine should be well-known by now. Itās fucking everywhere. Yet, people are always surprised when they found themselves caught in it.
Adding new AI stuff only increases complexity. But complexity is the enemy that everybody should fear and reduce as much as possible. Of course, this is not limited to AI at all. And everywhere I look around, people in charge looooove to make things way more complicated than they ever need to be. Yet, simplicity is the real art and much harder to achieve.
I donāt understand why we have to go back full force to the ambiguity of natural languages. This alone should be more than enough to realize what a stupid idea all that is. Linked to that is that the āinstruction setā is interpreted differently with newer model versions. I mean, is has to be. Why else would somebody want to upgrade in the first place than to get more Powerful⢠Featuresā¢?
Some people argue that with AI the democratization is empowered. However, in my view, the exact opposite is the case. Models are getting so large that you can basically not run them locally or even train them. So, you have to rely on whatever the vendor offers you and runs for you. In the end, this only gives the owners more power, the multi billionaires. Not exactly what I understand by democratization.
Finally, technology assessments are missing completely. Or they are faked such that mostly only the (questionable) benefits are listed. But all the negative impact is just ignored.
Letās keep some popcorn around for when this all explodes. :-)
A Dating App Is Giving Away Free Gas to Convince People to Get Out of the House
Amid ongoing economic anxieties, BLK and other companies are giving away basic essentials to appeal to the public. ā Read more
C64 Basic: Game Map Overhead āCamera Viewā
Article URL: https://retrogamecoders.com/overhead-camera-view/
Comments URL: https://news.ycombinator.com/item?id=48279842
Points: 6
# Comments: 0 ā Read more
And we have a search function now. This should cover most of the basic features, I think.
Microsoftās 6502 BASIC is now Open Source (2025)
Article URL: https://opensource.microsoft.com/blog/2025/09/03/microsoft-open-source-historic-6502-basic/
Comments URL: https://news.ycombinator.com/item?id=48257058
Points: 13
# Comments: 0 ā Read more
āPerfect Stormā: How Trumpās Aid Cuts Are Fueling the Ebola Outbreak
One health provider who works on the ground says that basic medical equipment like masks and hand sanitizers are in short supply due to funding cuts. ā Read more
Sony Bravia Theater Bar 5 Review: Basic Bar, Big Sound
The latest Bravia Theater soundbar strips away the nice-to-have extras, but its crisp and booming sound is on point. ā Read more
How Handheld Translators Work and Why Theyāre Handy for Travel
Your cell phone can handle basic language translation, but bespoke tools can offer a much more immersive experience. ā Read more
ReMarkable Paper Pure Tablet Review: Back to Basics
After six years, the ReMarkable 2 gets a replacement in the form of the ReMarkable Paper Pure. ā Read more
All sorts of .de domains donāt resolve right now. But not all, movq.de for example still works. All on our server and basically all major other sites are cactus. Maybe some DENIC problem? Iām too tired to investigate, but Iām looking forward to tomorrow to read some report on that. :-) Good night.
EufyMake E1 UV Printer Review (2026): Add 3D Texture to Mugs, Magnets, and More
The UV printer lets you customize on almost anything, but it basically needs its own bedroom and probably canāt make rent. ā Read more
The auDA, and some 3rd-party identify service and my Registrar are a joke!
WOW! I just had to share this little story I ran into today.
I tried to register a .AU Domain the other day, only for it to instantly fail.
I emailed support, which took several days to respond, only for them to respond by saying (paraphased):
Weāre sorry, but the identify checks failed. The 3rd-aprty service doesnāt tell us why, But, please make sure that the ID you used matches the Full Name, including any Middle name(s).
I used my Passport number. Which of course has my First, Middle and Last Name.
I can only assume at this point that the checks failed on the missing āMiddle nameā. Why? Because the Registrar I use has a database and user interface for ācontactsā that only have support for First name and Last name. NO Middle Name.
š¤¦āāļø This is basically stupid at this point. Systems cannot be trusted at the most fundamental level, no matter how good they are.
Until we figure out how to build a system that allows an individual to prove to another entity that they are who they say they are without a shred of doubt (i.e: cryptographically), weāre stuffed.
There is literally nothing I can do in this case. The auDA are at fault. The 3rd-party identify service (unknown) are at fault. The registrar are at fault. Hell, even the Passport office are at fault for even bothering to or requiring a Middle name.
How has āidentityā come to this?
This whole thing was pretty weird, btw. I had no idea it was happening until basically yesterday. No news coverage, nobody mentioned it. š¤ And suddenly, boom, weāre going to the moon. What? š
@lyse@lyse.isobeef.org Oops, I guess the new text is a bit obscure. If you follow the link, the text is a bit more explicit, but you still need to know what a lexical scope is. Anyway, this is part of Perl moving very carefully toward being UTF-8 by default while also not breaking code written in the 90s. If you name a recent version like āuse v5.42;ā then Perl stops letting you use non-ASCII characters unless you also say āuse utf8;ā. The ālexicallyā part basically means that strictness continues until the next ā}ā, or the end of the program. That lets you fix up old code one block at a time, if you arenāt ready to apply the new strictness to a whole file at once.
2nd Van trip coming up this weekend, taking Friday off work. Gonna sleep in the Van tonight and see if I can fiddle with the town water supply (basically our outside tap near the Van haha š) and see if I can have a shower in the Van, brush my teeth and go to bed š ā Basically I just want to figure out the rest of the plumbing šŖ
This year for some reason or another, I decided to purchase an Ocarina, Iāve been practising a fair bit every now and again, basically during work breaks and sometimes in the afternoon / evenings (not enough to annoy the family š¤£) Anyhoo, that was 3 months ago, since then Iāve built up a bit of a Repertoire:
- Silent Night
- My Bonnie Lies Over the Ocean
- Amazing Grace
- O Holy Night
- Happy Birthday
- Greensleeves
- Scarborough Fair
- Sheāll Be Coming āRound the Mountain
Iāve now decided to purchase a slightly better quality Ocarina, the one I originally bought was a cheap $28 one, Iām now upgrading to a more professional instrument worth about $80 ā Wish my luck š
** Bicross **
I made a game. Iāve written about it in passing a few times, but here is an honest to goodness intro to it!
Bicross is 3 versions of the same basic game,
- Bicross, is a zen-mode version of the game.
- Bicross RPG, is an RPG version of the game where you can earn power ups, and build up hearts and stuff.
- Bicross Daily, is very similar to the RPG version, but everyone who plays on a given ⦠ā Read more
@movq@www.uninformativ.de if they havenāt, I would recommend a āsubtleā nudge. You know, like leaving an advert flier at their door for a āBasic English (including swearing words!) for Dummiesā book, or something like that. :-D :-P
Has a bit of a long history story behind this, where last year at work we were reading this book called Engineering a Safer World and initially came across a service called Speech Reply that allowed me to upload a PDF copy of the book and start to read it, but unfortunately, the free trial right now before I can finish reading it turns out that Speech Reply service cost a whopping US$30 a month and expected me to pay a full year upfront, which was well over US$300 just for one fucking book! So I sent their sales and support staff a message kindly asking if it were possible to just pay for the audio transcription of just a single book or to change to a monthly subscription fee, to which they refused, so basically in the end I got very angry and told them to go fuck themselves and built my own service. A year later here we are :-)
Spent basically the entire day (except for the mandatory walk) fighting with Pythonās type hints. But, the result is that my widget toolkit now passes mypy --strict.
I really, really donāt want to write larger pieces of software without static typing anymore. With dynamic typing, you must test every code path in your program to catch even the most basic errors. pylint helps a bit (doesnāt need type hints), but thatās really not enough.
Also, somewhere along the way, I picked up a very bad (Python) programming style. (Actually, I know exactly where I picked that up, but I donāt want to point the finger now.) This style makes heavy use of dicts and tuples instead of proper classes. That works for small scripts, but it very quickly turns into an absolute mess once the program grows. Prime example: jenny. š©
I have a love-hate relationship with Pythonās type hints, because they are meaningless at runtime, so they can be utterly misleading. Iām beginning to like them as an additional safety-net, though.
(But really, if correctness is the goal, you either need to invest a ton of time to get 100% test coverage ā or donāt use Python.)
@bender@twtxt.net Iām already using it for tracktivity (meant for tracking activities and events, like weather, food consumption, stuff like that), which is basically a somewhat-fancy CSV editor:
I have a couple of other projects where I could use it, because they are plain curses at the moment. Like, one of them has an āedit boxā, but you canāt enter Unicode, because it was too complicated. That would benefit from the framework.
Either way, itās the most satisfying project in a long time and Iām learning a ton of stuff.
I basically worked through the Christmas break last year. I already had my holidays in Vietnam a few weeks earlier. š
Mu (µ) is now getting much closer to where I want it to be, it now has:
- A
processstdlib module (very basic, but it works)
- An
ffistdob module that supportsdlopen/dlsymand calling C functions with a nice mu-esque wrapperffi.fn(...)
- A
sqlitestdlib module (also very basic) that shows off the FFI capabilities
š
On my way to having windows and mouse support:
https://movq.de/v/95bbbbd3e8/basic-windows.mp4
It would be cool to have something like Turbo Vision eventually.
(I considered just using Turbo Vision, but itās a C++ library and thatās not quite what Iām looking for. But itās not yet completely off the table.)
Whoo! I fixed one of the hardest bugs in mu (µ) I think Iāve had to figure out. Took me several days in fact to figure it out. The basic problem was, println(1, 2) was bring printed as 1 2 in the bytecode VM and 1 nil when natively compiled to machine code on macOS. In the end it turned out the machine code being generated / emitted meant that the list pointers for the rest... of the variadic arguments was being slot into a register that was being clobbered by the mu_retain and mu_release calls and effectively getting freed up on first use by the RC (reference counting) garbage collector š¤¦āāļø
@movq@www.uninformativ.de From 2:50 PM to 3:23 PM AEST (+10 UTC) there was an outage. Everything went āupā on Down Detector, my EU region went offline, numerous sites were unavailable, and so on. Basically everything to/from the EU appeared to basically go kaput.
@aelaraji@aelaraji.com Yeah and I think I can basically pull the crowssec rules every N interval right and use this to make blocking decisions? ā Iāve actually considered this part of a completely new WAF design that I just havenāt built yet (just designing it).
Oh fuck me! I had basically turned off the route to git.mills.io last night and went ot bed at ~2AM after unsuccessfully trying to control the attacks (bad bots) that were behaving like a DDoS attack. Tried to re-enable the route this monring and *BOOM, theyāre back! As-if they never stopped?! what da actual fuq?!
Anyone have any clever ideas of what I can do here to allows normal users, like you nice folk and block ths obnoxious traffic?!
All my newly added test cases failed, that movq thankfully provided in https://git.mills.io/yarnsocial/twtxt.dev/pulls/28#issuecomment-20801 for the draft of the twt hash v2 extension. The first error was easy to see in the diff. The hashes were way too long. Youāve already guessed it, I had cut the hash from the twelfth character towards the end instead of taking the first twelve characters: hash[12:] instead of hash[:12].
After fixing this rookie mistake, the tests still all failed. Hmmm. Did I still cut the wrong twelve characters? :-? I even checked the Go reference implementation in the document itself. But it read basically the same as mine. Strange, what the heck is going on here?
Turns out that my vim replacements to transform the Python code into Go code butchered all the URLs. ;-) The order of operations matters. I first replaced the equals with colons for the subtest struct fields and then wanted to transform the RFC 3339 timestamp strings to time.Date(ā¦) calls. So, I replaced the colons in the time with commas and spaces. Hence, my URLs then also all read https, //example.com/twtxt.txt.
But that was it. All test green. \o/
@lyse@lyse.isobeef.org @bender@twtxt.net Pfft, they want folks to relocate to Sydney. Fuck that 𤣠Sydney is a bit like San Francisco, Iām not actually sure which is worse. Fuckān expensive as hell, the only palce youād be able to afford to buy or rent is at least ~2hrs out of the city by public transport (i.e: train) and by that time youāve just pissed your life down the toilet, because youād be expected ot work a 9-10hr day + 2-3hrs of travel each way, buy the time you factor in having to wake up super early to get ready to travel in to work, you basically have zero time for anything else, let alone your ufamily,
Fuck that.
Be it Java with Swing or PyQt6, it takes ~300 ms until a basic window with a treeview and a listbox appears. That is a very noticeable delay.
Is it unrealistic to expect faster startup times these days? š¤
Once the program is running, a new second window (in the same process) appears very quickly. So itās all just the initialization stuff that takes so long. I could, of course, do what āfatā programs have done for ages: Pre-launch the process during boot, windowless. But I was hoping that this wasnāt needed. š (And itās a bad model anyway. When the main process crashes, all windows crash with it.)
@prologic@twtxt.net Letās go through it one by one. Hereās a wall of text that took me over 1.5 hours to write.
The criticism of AI as untrustworthy is a problem of misapplication, not capability.This section says AI should not be treated as an authority. This is actually just what I said, except the AI phrased/framed it like it was a counter-argument.
The AI also said that users must develop āAI literacyā, again phrasing/framing it like a counter-argument. Well, that is also just what I said. I said you should treat AI output like a random blog and you should verify the sources, yadda yadda. That is āAI literacyā, isnāt it?
My text went one step further, though: I said that when you take this requirement of āAI literacyā into account, you basically end up with a fancy search engine, with extra overhead that costs time. The AI missed/ignored this in its reply.
Okay, so, the AI also said that you should use AI tools just for drafting and brainstorming. Granted, a very rough draft of something will probably be doable. But then you have to diligently verify every little detail of this draft ā okay, fine, a draft is a draft, itās fine if it contains errors. The thing is, though, that you really must do this verification. And I claim that many people will not do it, because AI outputs look sooooo convincing, they donāt feel like a draft that needs editing.
Can you, as an expert, still use an AI draft as a basis/foundation? Yeah, probably. But hereās the kicker: You did not create that draft. You were not involved in the āthought processā behind it. When you, a human being, make a draft, you often think something like: āOkay, I want to draw a picture of a landscape and thereās going to be a little house, but for now, Iāll just put in a rough sketch of the house and add the details later.ā You are aware of what you left out. When the AI did the draft, you are not aware of whatās missing ā even more so when every AI output already looks like a final product. For me, personally, this makes it much harder and slower to verify such a draft, and I mentioned this in my text.
Skill Erosion vs. Skill EvolutionYou, @prologic@twtxt.net, also mentioned this in your car tyre example.
In my text, I gave two analogies: The gym analogy and the Google Translate analogy. Your car tyre example falls in the same category, but Geminiās calculator example is different (and, again, gaslight-y, see below).
What I meant in my text: A person wants to be a programmer. To me, a programmer is a person who writes code, understands code, maintains code, writes documentation, and so on. In your example, a person who changes a car tyre would be a mechanic. Now, if you use AI to write the code and documentation for you, are you still a programmer? If you have no understanding of said code, are you a programmer? A person who does not know how to change a car tyre, is that still a mechanic?
No, youāre something else. You should not be hired as a programmer or a mechanic.
Yes, that is āskill evolutionā ā which is pretty much my point! But the AI framed it like a counter-argument. It didnāt understand my text.
(But what if thatās our future? What if all programming will look like that in some years? I claim: Itās not possible. If you donāt know how to program, then you donāt know how to read/understand code written by an AI. You are something else, but youāre not a programmer. It might be valid to be something else ā but that wasnāt my point, my point was that youāre not a bloody programmer.)
Geminiās calculator example is garbage, I think. Crunching numbers and doing mathematics (i.e., ācomplex problem-solvingā) are two different things. Just because you now have a calculator, doesnāt mean itāll free you up to do mathematical proofs or whatever.
What would have worked is this: Letās say youāre an accountant and you sum up spendings. Without a calculator, this takes a lot of time and is error prone. But when you have one, you can work faster. But once again, thereās a little gaslight-y detail: A calculator is correct. Yes, it could have ābugsā (hello Intel FDIV), but its design actually properly calculates numbers. AI, on the other hand, does not understand a thing (our current AI, that is), itās just a statistical model. So, this modified example (āaccountant with a calculatorā) would actually have to be phrased like this: Suppose thereās an accountant and you give her a magic box that spits out the correct result in, what, I donāt know, 70-90% of the time. The accountant couldnāt rely on this box now, could she? Sheād either have to double-check everything or accept possibly wrong results. And that is how I feel like when I work with AI tools.
Gemini has no idea that its calculator example doesnāt make sense. It just spits out some generic āargumentā that it picked up on some website.
3. The Technical and Legal Perspective (Scraping and Copyright)The AI makes two points here. The first one, I might actually agree with (ābad bot behavior is not the fault of AI itselfā).
The second point is, once again, gaslighting, because it is phrased/framed like a counter-argument. It implies that I said something which I didnāt. Like the AI, I said that you would have to adjust the copyright law! At the same time, the AI answer didnāt even question whether itās okay to break the current law or not. It just said ālol yeah, change the lawsā. (I wonder in what way the laws would have to be changed in the AIās āopinionā, because some of these changes could kill some business opportunities ā or the laws would have to have special AI clauses that only benefit the AI techbros. But I digress, that wasnāt part of Geminiās answer.)
tl;drExcept for one point, I donāt accept any of Geminiās ācriticismā. It didnāt pick up on lots of details, ignored arguments, and I can just instinctively tell that this thing does not understand anything it wrote (which is correct, itās just a statistical model).
And it framed everything like a counter-argument, while actually repeating what I said. Thatās gaslighting: When Alice says āthe sky is blueā and Bob replies with āwhy do you say the sky is purple?!ā
But it sure looks convincing, doesnāt it?
Never againThis took so much of my time. I wonāt do this again. š
@movq@www.uninformativ.de Uh, that actually looks not that terrible. Somehow, I remember Swing GUIs being way uglier.
As for Visual Basic, I only had to use VBA once in my life. That was in the beginning of my career when I inherited a project from a leaving coworker. Fuck me, was that awful. Just alone the damn compiler error dialog box popping up in my face all the time while editing and the compiler already trying to parse the unfinished and hence of course uncompilable code. Boy, that left a lasting impression on me. I ported everything to Java very quickly. Luckily, the code base wasnāt all that large at that point in time. I had to add a bunch of new features after that, so I was very glad that I convinced my workmate/project manager to do that first. We didnāt even need a GUI, the button in Excel was transformed to a command line program that just generated the large file.
But I cannot comment on the VB GUI designer, I never used that. Your screenshot looks very similar to the Delphi one, though. Only towards the end of my Delphi days I found out about the possibility to make the widgets snap to window edges and corners (I donāt remember how that was called), so that resizing the windows was actually possible without messing up their entire contents.
Switching to Linux, Delphi wasnāt an option anymore. For some reason I couldnāt use Kylix. Maybe it was already dead by the time I changed OSes. Or I couldnāt get it to run. I just donāt remember. I just recall that the unavailability of Delphi was the reason it took me a while to actually settle on Linux. I then fully switched to Java. The GridBagLayout was my absolutely favorite Swing layout manager. I reckon I used it 98% of the time, because it was so powerful and made the windows resize properly, just as I had learned to do in Delphi shortly before.
Up until discovering Swing, I used Javaās AWT for a short amount of time. That was very limited I think and I hit the limits fairly quickly. Later at uni, we had one project making use of SWT. Didnāt convince me either. I could be wrong, but I think there was also a SWT GUI designer plugin for Eclipse. If there really was, that one wasnāt in the same street as Delphiās (there must be a reason I forgot about it ;-)).
The one for Delphi was quite good.
It was! I didnāt use Delphi for long, though. Dunno why, I always gravitated towards Visual Basic back then. š
These days I donāt deal with GUI programming anymore.
I also avoid it when possible, because ⦠itās exhausting, because ⦠the tools that I have/know are āsubparā. Doing anything regarding GUIs always feels like a chore. That wasnāt the case in the VB days.
Well, I made this in ~2009 with Java/Swing and it was pretty nice to work with, custom widgets and all:
I wouldnāt dare doing this with GTK.
And maybe I should go back to using GUI designers. Havenāt used those since the Visual Basic days. š¤ It wasnāt pretty, but you got results very quickly and efficiently.
(When I switched to Linux, I quickly got stuck with GTK and that only had Glade, which wasnāt super great at the time, so I didnāt start using it ⦠and then I never questioned that decision ā¦)
Just FTR, in case this wasnāt obvious, the āright to repairā (if there ever is one) needs to be more than just āyouāre legally allowed to repair stuffā.
I just fixed this thing by replacing two capacitors. Great, but this was an absolute shitshow and it took several days. So many obstacles, everythingās tiny, connectors glued together, ⦠It worked in the end, but I was so close to giving up.
Being legally allowed to do something is basically worthless if itās not feasible to actually do it.
Ireland plans to make a $1,500 a month basic income for artists permanent ā Read more
@arne@uplegger.eu Yeah SSE + HTMX is basically all you need really. The whole complicated/complex JavaScript ecosystem is overkill.
Unbelievable Security Hole: JWT Secret in a Series-B Funded Company
It started as a routine penetration test. Little did I know I was about to uncover one of the most basic yet catastrophic securityā¦
[Continue reading on ⦠ā Read more
Network Layers Model (Networking Basics) - Computerphile ā Read more
@lyse@lyse.isobeef.org In my case it was a silver necklace, a hummingbird with a wing connected with the cold welding I mentioned using thin brass wires.
It made it in a goldsmithing class (I went to a private craftmanship high-school) so no phones allowed (no photos of it) and no ātake homeā of the works.
Hereās a rough sketch of it drawn by memory, the dots in the wing is where it connects to the body.
The technique is basically the same as i described, but the scale is much smaller, the whole piece was about 5-6 cm on the largest side.
The rivet was made by drilling a hole through the parts, than with a short and thicker drill you widen the hole on the surface to let the rivet settle flatter on the piece, then with a rubber hammer you hit it to flatten the head until itās snug on the hole, lock them together by doing the same on the other side.
Note that widening the hole with a thicker drill head wonāt make a difference with bigger holes, mine had holes of about 1-2 mm of diameter maximum.
Hereās a sketch of what is going on for clarity.
@bender@twtxt.net We have quite a few that are basically part of our friendly neighborhood. They knew we wonāt chase them aware, scare them, etc. In fact some of us find little cockroaches to feed them, tose āem up in the air and watch them sweep in and grab the little suckers š¤£
War on America, Chicago Theater of Operations
Ruth Ben-Ghiat , Ā Professor of History New York UniversityĀ - Ā Reader Support News | Lucid Substack
_Stephan:Ā Ruth Ben-Ghiat is an American history professor and political commentator. She is a scholar on fascism and authoritarian leaders, and a professor of history and Italian studies at New York University. She is absolutely correct. What amazes and saddens me is that millions of Americans sit at home basically reading social media ⦠ā Read more
āI cannot abideā: Biting dissent blasts Supreme Court for āplainly misjudgingā case
Nicole Charky-Chami, Ā Senior EditorĀ - Ā Raw Story
_Stephan:Ā Like the country itself, the Supreme Court is divided between the majority of corrupt justices who are basically helping Trump and the Republicans to make the United States a nation controlled by a fascist authoritarian oligarchy, and a minority of justices who follow precedent and the laws. The minority ⦠ā Read more
Hi everyone, hereās a little introduction of my twtxt client (still WIP).
The client Iām developing is a single tenant project that runs entirely in the browser (it might use an optional backend).
Itās entirely based on native web-components and vanilla JS, it is designed to act closer to a toolkit than a full-fledged client, allowing users to āDIYā their own interface with pure html or plain javascript functions.
Users can also build their own engines by including a global javascript object that implement the defined internal API (TBD).
Iām planning to build a system that is easy enough to build and use with any skill level, using only pure html (with a homebrew minimal template engine) or via plain JS (Iāll be also providing some pre-made templates too).
Everything can be self-hosted on any static hosting provider, this allows to spread twtxt within communities like Neocities and similarly hosted websites (basically any Indieweb/Smallweb/Digital garden website and any of the common GitHub/Lab/Berg/lify Pages).
It will be probably named something like TxtCraft or craf.txt but Iām not really sure yet⦠š¤ (Maybe some suggestions could help)
Iām still in the experimental phase, so thereās no decent source-code to share yet, but it will soon enough!
Pretty happy with my zs-blog-template starter kit for creating and maintaining your own blog using zs š Demo of what the starter kit looks like here ā Basic features include:
- Clean layout & typography
- Chroma code highlighting (aligned to your site palette)
- Accessible copy-code button
- āOn this pageā collapsible TOC
- RSS, sitemap, robots
- Archives, tags, tag cloud
- Draft support (hidden from lists/feeds)
- Open Graph (OG) & Twitter card meta (default image + per-post overrides)
- Ready-to-use 404 page
As well as custom routes (redirects, rewrites, etc) to support canonical URLs or redirecting old URLs as well as new zs external command capability itself that now lets you do things like:
$ zs newpost
to help kick-start the creation of a new post with all the right āstuffā⢠ready to go and then pop open your $EEDITOR š¤
@prologic@twtxt.net the simplest thing to do is to completely forgo hashing anything because we are communicating using plain text files right now :3 while i agree hashes are incredibly helpful in the backend im not sure it has a place outside of it, it basically eliminates two core design principals of twtxt (human readability and integrating well with unix command line utilities) and makes new clients more difficult to build than it should be
index.md a prehook and a few utilities:
@bender@twtxt.net Yes I did about a week or so ago. It took me a lot of effort to get the content even rendered in the first place. LOL I had to basically export my blog as HTML (can you believe that?!) ā The Hugo export just didnāt work at all š¤£
@zvava@twtxt.net love the direction this is heading, hope this soon evolves into a basic Android app, usable with any instance.
@lyse@lyse.isobeef.org Iām looking for an OS that runs better than Windows (š¤®) and through which I can do basic stuff like read RSS feeds and browse geminispace; but which I can also learn from.
Hmm, gnu.org is slow as heck. Shorter HTML pages load in about ten seconds. This complete AWK manual all in one large HTML page took a full minute: https://www.gnu.org/software/gawk/manual/gawk.html Is there maybe some anti AI shenanigans going on?
In any case, I find the user guide super interesting. My AWK skills are basically non-existent, so I finally decided to change that. This document is incredibly well written and makes it really fun to keep reading and learning. Iām very impressed. So far, I made it to section 1.6, happy to continue.
@dce@hashnix.club Ooops š Hope you still have enough money for the basics š¤ Iām doing okay though!
@movq@www.uninformativ.de Right now Iām basically just blocking entire ASN(s) at this point and large blocks of IP(s) from Anthropic, OPenAI, Microsoft and others.
** Make awk rawk **
A friend online recently replied to something I wrote about awk by saying:
[ā¦] itās a danged shame [awk] didnāt continue to evolve the way Ruby, Python, PHP have evolved over the decades.
I had exactly this thought while working on my slightly unhingedālets see if I can implement a basic scheme using awk by writing an assembler and VM in awk,ā skwak. Which eventually lead me to start noodling on how to layer in some modern niceties into awk, without breaking awkās portability.
⦠ā Read more
Desktop SSH->Pinephone->here. This is crazy. Sxmo is the best UI for the Pinephone, and maybe phones in general. Insane: basically dwm on a phone with gestures and built-in yt-dlp + mpv (among others).
@prologic@twtxt.net well, the ones down there (on your list) are pretty minimal, basic even. Yet, their pricing is super high (number wise, havenāt checked the equivalent from AUD to USD).
Someone did a thing:
https://social.treehouse.systems/@ariadne/114763322251054485
Iāve been silently wondering all the time if this was possible, but never investigated: Keep doing X11 but use Wayland as a backend.
This uses XWaylandās ārootfulā mode, which basically just gives you a normal Wayland window with all the X11 stuff happening inside of it:
https://www.phoronix.com/news/XWayland-Rootful-Useful
In other words, put such a window in fullscreen and you (more or less) have good old X11 running in a Wayland window.
(For me, personally, this wonāt be the way forward. But itās a very interesting project.)
Hahaha, Iām sure there were well over one thousand fireflies today! Basically at all times I could watch at least 15 of them around me. At better spots where one could see a few meters into the forest, there were easily 30 individuals, probably more. One even landed on my small finger. I didnāt feel anything at all, but my finger glowed. :-) Awwww! After a 20 meters ride it took off.
But it looks like I have to go already at 21:30 at sunset the next days. Today, I left the house at 22:00 and all the above happend in the first half. The second half of the walk was rather boring, maybe just around 70 glowworms in total. The extremely busy route yesterday was virtually dead this time I came around. They all have already gone to sleep, or something like that.
I also encountered two toads. I nearly stepped on the first one, but it luckily jumped to the side in time. No animals harmed.
I did a ālectureā/āworkshopā about this at work today. 16-bit DOS, real mode. š¾ Pretty cool and the audience (devs and sysadmins) seemed quite interested. š„³
- People used the Intel docs to figure out the instruction encodings.
- Then they wrote a little DOS program that exits with a return code and they used uhex in DOSBox to do that. Yes, we wrote a COM file manually, no Assembler involved. (Many of them had never used DOS before.)
- DEBUG from FreeDOS was used to single-step through the program, showing what it does.
- This gets tedious rather quickly, so we switched to SVED from SvarDOS for writing the rest of the program in Assembly language. nasm worked great for us.
- At the end, we switched to BIOS calls instead of DOS syscalls to demonstrate that the same binary COM file works on another OS. Also a good opportunity to talk about bootloaders a little bit.
- (I think they even understood the basics of segmentation in the end.)
The 8086 / 16-bit real-mode DOS is a great platform to explain a lot of the fundamentals without having to deal with OS semantics or executable file formats.
Now that was a lot of fun. š„³ Itās very rare that we do something like this, sadly. I love doing this kind of low-level stuff.
Okay, hereās a thing I like about Rust: Returning things as Option and error handling. (Or the more complex Result, but itās easier to explain with Option.)
fn mydiv(num: f64, denom: f64) -> Option<f64> {
// (Letās ignore precision issues for a second.)
if denom == 0.0 {
return None;
} else {
return Some(num / denom);
}
}
fn main() {
// Explicit, verbose version:
let num: f64 = 123.0;
let denom: f64 = 456.0;
let wrapped_res = mydiv(num, denom);
if wrapped_res.is_some() {
println!("Unwrapped result: {}", wrapped_res.unwrap());
}
// Shorter version using "if let":
if let Some(res) = mydiv(123.0, 456.0) {
println!("Hereās a result: {}", res);
}
if let Some(res) = mydiv(123.0, 0.0) {
println!("Huh, we divided by zero? This never happens. {}", res);
}
}
You canāt divide by zero, so the function returns an āerrorā in that case. (Option isnāt really used for errors, IIUC, but the basic idea is the same for Result.)
Option is an enum. It can have the value Some or None. In the case of Some, you can attach additional data to the enum. In this case, we are attaching a floating point value.
The caller then has to decide: Is the value None or Some? Did the function succeed or not? If it is Some, the caller can do .unwrap() on this enum to get the inner value (the floating point value). If you do .unwrap() on a None value, the program will panic and die.
The if let version using destructuring is much shorter and, once you got used to it, actually quite nice.
Now the trick is that you must somehow handle these two cases. You must either call something like .unwrap() or do destructuring or something, otherwise you canāt access the attached value at all. As I understand it, it is impossible to just completely ignore error cases. And the compiler enforces it.
(In case of Result, the compiler would warn you if you ignore the return value entirely. So something like doing write() and then ignoring the return value would be caught as well.)
@bender@twtxt.net Both Gopher and Mastodon are a way for me to ābabbleā. š I basically shut down Gopher in favor of Mastodon/Fedi last year. But the Fediverse doesnāt really work for me. Itās too focused on people (I prefer topics) and I dislike the addictive nature of likes and boosts (Iām not disciplined enough to ignore them). Self-hosting some Fedi thing is also out of the question (the minimalistic daemons donāt really support following hashtags, which is a must-have for me).
Iāll probably keep reading Fedi stuff, I just wonāt post that much, I think.
Having some fun with SIRDS this morning.
What you should see:
And the tutorial I used for my C program: https://www.ime.usp.br/~otuyama/stereogram/basic/index.html
How can one write blazing fast yet useful compilers (for lazy pure functional languages)?
Iāve decided enough is enough and I want to write my own compiler (seems I caught a bug and lobste.rs is definitely not discouraging it). The language I have in mind is a basic (lazy?) statically-typed pure functional programming language with do notation and records (i.e. mostly Haskell-lite).
I have other ideas Iād like to explore as well, but mainly, I want the compiler to be so fast (w/ optimisations) that ⦠ā Read more
A bill from our ISP in 1998.
Weāre talking about a month here, 1998-07-27 to 1998-08-26.
Basic fee: 7.50 DM (about 6⬠today).
Online time: 516 minutes, 23.53 DM (about 20⬠today).
Thatās just the ISP costs, if Iām not mistaken. The underlying phone calls were pretty pricey as well.
How to Adjust Font Smoothing in macOS Sequoia & macOS Sonoma
Font Smoothing is a longstanding feature in MacOS that aims to make rendered screen text more legible, and it works by subtly blending the edges of display fonts with the background by using anti-aliasing. The idea is to reduce the jaggedness of screen text, but in practice nowadays it basically makes screen fonts on the ⦠[Read More](https://osxdaily.com/2025/06/04/how-adjust-font-smoothing-macos-sequoia-sonoma-v ⦠ā Read more
Over the past few weeks Iāve been experimenting with and doing some deep learning and researching into neutral networks and evolutionary adaptation of them. The thing is I havenāt gotten very far. Iāve been able to build two different approaches so far with limited results. The frustrating part is that these things are so ārandomā it isnāt even funny. Like I canāt even get a basic ANN + GA to evolve a network that solves the XOR pattern every time with high levels of accuracy. š
Status report on optional Rust in FreeBSD support
Shawn Webb has published a status\āØreport on work to provide basic support in FreeBSD for userland components
written in Rust.
We introduced a new BSD makefile, located at
share/mk/bsd.rust.mk,
that enables building a Rust application during buildworld. As of ⦠ā Read more
How to Use Surfshark DNS on Mac, iPhone, iPad
Did you know that your internet service provider default DNS servers almost certainly track and log your online activity? Basically this means that every time you visit a website or use an internet-connected application from your Mac, iPhone or iPad, your ISP is aware of that. Many ISPās will not only log and track your ⦠Read More ā Read more
@bender@twtxt.net basically because we donāt readily use or support range hunters when requesting feeds itās ideal to keep feed small for the time being at least until we think about writing up a formal specification for this, but itās also only for Http hosted feeds