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.
Option
and error handling. (Or the more complex Result
, but itās easier to explain with Option
.)
@lyse@lyse.isobeef.org lol ā I explicitly kept them in there so that the code is easier to understand for non-Rust people š¤Ŗš
Option
and error handling. (Or the more complex Result
, but itās easier to explain with Option
.)
@movq@www.uninformativ.de All the return
s tell me that youāre not a real Rust programmer. :-D Personally, I would never omit them either. They make code 100 times more readable.
Saw this on Mastodon:
https://racingbunny.com/@mookie/114718466149264471
18 rules of Software Engineering
- You will regret complexity when on-call
- Stop falling in love with your own code
- Everything is a trade-off. Thereās no ābestā 3. Every line of code you write is a liability 4. Document your decisions and designs
- Everyone hates code they didnāt write
- Donāt use unnecessary dependencies
- Coding standards prevent arguments
- Write meaningful commit messages
- Donāt ever stop learning new things
- Code reviews spread knowledge
- Always build for maintainability
- Ask for help when youāre stuck
- Fix root causes, not symptoms
- Software is never completed
- Estimates are not promises
- Ship early, iterate often
- Keep. It. Simple.
Solid list, even though 14 is up for debate in my opinion: Software can be completed. You have a use case / problem, you solve that problem, done. Your software is completed now. There might still be bugs and they should be fixed ā but this doesnāt āaddā to the program. Donāt use āsoftware is never doneā as an excuse to keep adding and adding stuff to your code.
Thatās the code, itās surprisingly simple: https://movq.de/v/81dd5649be/
When I chose the MIT license for all of my software, I thought:
āShould I use GPL, which I donāt really understand? Is that worth it? Yeah, there is a theoretical possibility that some company might use my code in their proprietary product ⦠and then what? Should I sue them to enforce the GPL? Iām not going to do that anyway, so Iāll just use the MIT license.ā
And now we have those LLM scrapers and now itās suddenly a reality that these companies (ab)use my code. I can see it in my logs. I didnāt expect that back then.
GPL wouldnāt help, either, of course. (Regardless, I now think that GPL would have been the better choice anyway.)
Iām honestly considering taking my code and website offline. Maybe make it accessible through some obscure protocol like Gopher or Gemini, but no more HTTP.
(Yes, Anubis might help. Temporarily.)
Iām just tired.
that isnāt mine, a newly made friend bought the domain & code that simple site for me, i find itās hilarious to have so i put it in the front
thank you!!!
QR codes, already posted about them in the last two posts, but I want to hear your hot takes: Should they only be black and white, are they even worth doing in 2025, incorporating them into things,..?
Also, finally getting full screen view for avatars in XMPP - a better integrated one, after 25 years. Y@ay!
@prologic@twtxt.net yeah, that will work perfectly. Because you are using āpleaseāāwhich we all know is a magic talisman word of obedienceāall uploads of your code to Github will be automatically paused, until such magic word is removed. š
Please donāt upload my code on Github!
Iām thinking about putting this up on all my projects and even on the front page of my Gitea instance š¤
@movq@www.uninformativ.de i feel like when i read go code iām reading some algebra shit where every part is 1-5 letters long and then thereās weird symbols like :=
and itās just infinitely harder for me to parse and infer meaning from lol. itās such a me problem
@kat@yarn.girlonthemoon.xyz iām so fucking bad at this shit man i canāt even comprehend JS most of the time coding is not in my future
i wish it was realistic for me to learn golang but every single time i try to comprehend any go code iām like What the fuck am i looking at. why is all of this so short and condensed GIVE ME VERBOSE CODE
I sent you my QR code, please respond!
*for context: long ago, there were some complaints, about some of my sitting drawings, where the legs are apart, not using dithering/more shading and one of my favourite artists, made a video, exploring the use of QR codes, in art
P.S.: the code just redirects to my websites
tar
and find
were written by the devil to make sysadmins even more miserable
@movq@www.uninformativ.de Yeah I actually use sift a lot these days for most āsearchingā ā at least code and text searching. For finding files by name I still use find | grep
.
i got so emo about my site not being statically generated and instead hand coded but itās like i donāt even know if i want that because i feel most SSGs are built for blogging and continuous posting and i donāt want that i just want to make my silly pagesā¦.
that being said, the one iād use if i did switch to one would be astro and that one is so flexible i could really do anything with it including keeping my pages as is mostly without doing the blog stuff. idk! something to consider
ya girlās officially a credited code contributor for the biggest fanfiction site in the world! (i did the gif icon fix) https://archiveofourown.org/admin_posts/31720
What do you think I just learned about in this awesome Computerphile video with Matt Godbolt called āSubroutines in Low Level Codeā? https://www.youtube.com/watch?v=1su3lAh-k4o
Hereās the plot twist, the phrase ātill the cows come homeā. Hahaha, I never heard this before, but I love it! Itās always interesting to me to hear English sayings. Sometimes we have the same in German, sometimes ā like in this case ā entirely different ones. Itās fascinating that even though one hasnāt come across proverbs, itās typically still clear from the context whatās meant.
Yep, some unexpected language stuff. ;-)
Thanks, @movq@www.uninformativ.de! That seems to be much easier. Itās already implemented in the Python docs as examples of recvmsg(ā¦)
and sendmsg(ā¦)
:
- https://docs.python.org/3/library/socket.html#socket.socket.recvmsg
- https://docs.python.org/3/library/socket.html#socket.socket.sendmsg
I looked at them sooo many times in order to figure out why my SCM_CREDENTIALS
sending code didnāt work. :-D
Nobody want to be a shitty programmer. The question is: Do you do anything not to not be one?
Reading blogs or social media and watching YouTube videos is fun. After them, your code may be a little better, of course. But you need a lot. You need to study! Read good books and study the code of other programmers, for example. Maybe work with a new language, architectures and paradigms. You need break the routine.
If you know Object-oriented programming, you learn functional programming.
If you know Model-View-Controller, you learn Model-View-ViewModel.
If you donāt know anything about architectures, you learn Clean Architecture, Hexagonal Architecture, etc.
If you know Python, you learn Ruby or Go.
If you know Clojure or Lisp⦠you donāt need to learn anything else. You are already a good programmer. Just kidding. You can learn Elixir or Scala.
Be a good programmer my friend.
slowing working away at my latest code project: learning PHP by recreating the 2000s fandom mainstay known as a fanlisting! itās been super fun i added a dynamic nav bar and other modifications in the latest commit
fanlistings even to this day rely on old PHP scripts dating back to the early 2000s that need whole ass mySQL or postgres DBs and are incredibly insecure. you can look at them here theyāre like super jank lol itās sad that new fanlistings have to use them because thereās no other optionsā¦.
@prologic@twtxt.net ODD, lol. I donāt wanna be rude, but this sounds more like Code And Fix.
@kat@yarn.girlonthemoon.xyz Iāve almost fixed this btw š¤ Just testing it thoroughly and polihsing the code. In case youāre curious, I do this style of development called āObservability Driven Developmentā (ODD) whereby I make observations of the system via metrics and internal observations and adjust the systemās overall behavior to the desired outcome š
@andros@twtxt.andros.dev I set up a test feed here:
https://www.uninformativ.de/texudus.txt
I made some preliminary adjustments to my client so that it can work with the different threading model. (And I totally get the concerns, this can be quite a bit of work. Especially in a large code base like Yarn.)
@kat@yarn.girlonthemoon.xyz yes, both the newsletter and the podcast, from time to time.
@prologic@twtxt.net I was not expecting much, but since the list of restaurants near company buildings, was hard coded into it, I did expect it to at least copy the menu text, from the websites, in its database. Ironically, the only restaurant where it got something right, is the only one, where the websites has the text as a transparent PNG, the AI has to convert to text.
Show HN: Memex is a Claude Code alternative built on Rust+Tauri for vibe coding
Comments ā Read more
git pull
on one of my repos ā once every two minutes. This is a very pointless endeavour. I push new code a couple of times per month.
@movq@www.uninformativ.de You better push new code sooner!!
As @bender@twtxt.net says, that sounds like a bot. Iād just block the IP address, hoping it doesnāt change all the time. But then you know for sure that itās the AI fuckwits.
Also, the devil in me thinks itās funny to swap out the repo in question for something entirely different. :-D
Someone has started to run git pull
on one of my repos ā once every two minutes. This is a very pointless endeavour. I push new code a couple of times per month.
So far, this isnāt causing any issues. I think this is just a regular human being who misconfigured some automation. And I hope this doesnāt mean that the āAIā bots have finally discovered my page ā¦
7
to 12
and use the first 12
characters of the base32 encoded blake2b hash. This will solve two problems, the fact that all hashes today either end in q
or a
(oops) š
And increasing the Twt Hash size will ensure that we never run into the chance of collision for ions to come. Chances of a 50% collision with 64 bits / 12 characters is roughly ~12.44B Twts. That ought to be enough! -- I also propose that we modify all our clients and make this change from the 1st July 2025, which will be Yarn.social's 5th birthday and 5 years since I started this whole project and endeavour! š± #Twtxt #Update
I will be adding the code in for yarnd
very soon⢠for this change, with a if the date is >= 2025-07-01 then compute_new_hashes else compute_old_hashes
@bender@twtxt.net Hehe good sleuthing 𤣠I swear it was an edit āļø Haha š yarnd
now āseesā both every single time, where-as before it would just obliterate the old Twt, but remain in archive. Now you get to see both š
Not sure if thatās a good thing or not, but it certainly makes it much clearer how to write ācode logicā for detecting edits and doing something more UX(y) about āem š¤
@lyse@lyse.isobeef.org hey pascal bro! My first coding class was with an old Borland Turbo Pascal. I made my own little window manager for the assignments for class.
The teacher didnāt appreciate it much since I had to print out the code to turn it in. My Yatzee game was a stack of pages. š¤Ŗ
Crucial Wii homebrew library contains code stolen from Nintendo, RTEMS
The Wii homebrew community has been dealt a pretty serious blow, as developers of The Homebrew Channel for the Wii have discovered that not only does an important library most Wii homebrew software rely on use code stolen straight from Nintendo, that same library also uses code taken from an open source real-time operating system without giving proper attribution. Most Wii homebrew software i ⦠ā Read more
@movq@www.uninformativ.de I started with Delphi in school, the book (that we never ever used even once and I also never looked at) taught Pascal. The UI part felt easy at first but prevented me from understanding fundamental stuff like procedures or functions or even begin
and end
blocks for if
s or loops. For example I always thought that I needed to have a button somewhere, even if hidden. That gave me a handler procedure where I could put code and somehow call it. Two or three years later, a new mate from the parallel class finally told me that this wasnāt necessary and how to do thing better.
You know all too well that back in the day there was not a whole lot of information out there. And the bits that did exist were well hidden. At least from me. Eventually discovering planet-quellcodes.de (I donāt remember if that was the original forum or if that got split off from some other board) via my best schoolmate was like finding the Amber Room. Yeah, reading the ITG book would have been a very good idea for sure. :-)
In hindsight, a console program without the UI overhead might have been better. At least for the very start. Much less things to worry about or get lost.
Hence, Iād recommend to start programming with a console program. As for the language, not sure. But Python is probably a good choice, it doesnāt require a lot of surrounding boilerplate like, say Java or Go. It also does exceptionally well in the principle of least surprise.
I just fixed a bug in ttās reply to parent feature. Previously, when the message tree looked like the following
Message
āā“Reply 1
ā āā“Subreply
āā“Reply 2
and āReply 2ā was selected, pressing A
to reply to the parent should have picked āMessageā. However, a reply to āReply 2ā was composed instead. The reason was a precausiously introduced safety guard to abort the parent search which stopped at āSubreplyā, because its subject didnāt match āReply 2āās. It was originally intended to abort on a completely different message conversation root. Just in case. Turns out that this thoght was flawed.
Fixing bugs by only removing code is always cool. :-)
University of Waterloo withholds coding contest results over suspected AI use
Comments ā Read more
Devs sound alarm after Microsoft subtracts C/C++ extension from VS Code forks
Comments ā Read more
TacOS: an x86_64 UNIX-like OS from scratch
TacOS is a UNIX-like kernel which is able to run DOOM, among various other smaller userspace programs. It has things like a VFS, scheduler, TempFS, devices, context switching, virtual memory management, physical page frame allocation, and a port of Doom. It runs both on real hardware (tested on my laptop) and in the Qemu emulator. ā« TacOS GitHub page TacOS ā great name ā is written in C, and explicitly a hobby and toy project. The codeās licensed ⦠ā Read more
@aelaraji@aelaraji.com this is REAL VIBE CODING no AI needed
@kat@yarn.girlonthemoon.xyz At least it wasnāt Vibe coding, so just take the win! š
Exciting new for Python 3.14!
t-string
, not to be confused with f-string
, to avoid malicious code and make life easier for web developers.
https://davepeck.org/2025/04/11/pythons-new-t-strings/
#python
This code displays the last 10 lines of a twtxt feed without a full dowload.
FEED_URL="https://twtxt.net/user/prologic/twtxt.txt"
MAX_RANGE=$(curl -sI $FEED_URL | grep -i 'content-length' | awk '{print $2}' | tr -d '\r')
MIN_RANGE=$((MAX_RANGE - 5000))
curl -s --range "$MIN_RANGE-$MAX_RANGE" "$FEED_URL" | grep -v -e '^#' -e '^$' | head -n 10
My self-response!
si4er3q
. See https://twtxt.dev/exts/twt-hash.html, a timezone offset of +00:00
or -00:00
must be replaced by Z
.
@movq@www.uninformativ.de @aelaraji@aelaraji.com Yes @david@collantes.us It would be good for me, or new developers, if the documentation were agnostic. And if possible with many example cases. Iām fine-tuning the code as you inform me of bugs, trial and error. Itās a lesson to be learned for the future.
Am I the only one thatās confused by the discussions, and then the voting we had on the whole threading model? š¤ Iām not even sure what I voted for, but I know it wasnāt the one that won haha 𤣠(which Iām still very much against for based on an intuition, experience and lots of code writing lately).