So annoying to carry all this heavy stuff around, maybe I should go for a Bass Ukulele. š¤£
More pro for the DEC Professional 380 (featuring PRO/VENIX)
Settle down children, itās time for another great article by Cameron Kaiser. This time, theyāre going to tell us about the DEC Professional 380 running PRO/VENIX. The Pro 380 upgraded to the beefier J-11 (āJawsā) CPU from the PDP-11/73, running two to three times faster than the 325 and 350. It had faster RAM and came with more of it, and boasted quicker graphics with double the vertical resolution built right into ⦠ā Read more
@kat@yarn.girlonthemoon.xyz Oh, yes, itās probably going to be something like gotosocial or snac. Itās got to be as lightweight as possible. (I call this whole thing āMastodonā, but youāre right, thatās not quite correct. š )
iām going to k-pop-ify the yarn verse. everyone look at miyawaki sakura or i will uh do server magic to make your CPU run worse or something
SQL scares me i tweaked a bash script that pulled from a DB and the bash part was easy even if i was just going off of the code in there that i didnāt write (like i understood it at least) but the SQL parts had me suffering
@eapl.me@eapl.me @bender@twtxt.net @prologic@twtxt.net Not including a photo was a stupid move, sorry. There you go:
This particular one is 95mm wide and 185mm high. Fairly compact.
I can only use it figure out distances to other dates and to do some basic calendar math. Iām not able to actually schedule anything. But I grew up with a month calendar like you have there where all appointments of the entire family was recorded.
By far most of my paper use is drawing random stuff on scratch paper during meetings. :-D
Ubuntu to replace classic coreutils and more with new Rust-based alternatives
After so much terrible tech politics news, letās focus on some nice, easy-going Linux news thatās not going to be controversial at all: Ubuntu intends to replace numerous core Linux utilities with newer Rust replacements, starting with the ubiquitous GNU Coreutils. This package provides utilities which have become synonymous with Linux to many ā the likes of ls, cp, and mv. In ⦠ā Read more
Notes from setting up GlobalTalk using QEMU on Ubuntu
I signed up for GlobalTalk in 2024, but never found the time to get a machine set up. Fast-forward to MARCHintosh 2025 and I wasnāt going to let another year go by. This is a series of notes from my experience getting System 7.6 up and running on QEMU 68k on Ubuntu. Hopefully this will help others that might be hitting a roadblock. I certainly hit several! ā« Cale Mooth A short and to-the-point guide for those of us who want ⦠ā Read more
twtxt is a decentralised, minimalist microblogging service for hackers.
The keyword here is microblogging
. But it doesnāt feel like weāve been (relatively speaking) doing much of that lately⦠maybe I go the concept of microblogging
wrong.
oh god i have a horrible headache i know itāll only go away if i sleep but i donāt wanna sleep yet T_T
We had a very sunny day, peaking at 19°C. This not only decoyed me out, but also plenty motorcycle terrorists. Eh fuckwits, nobody wants to listen to your bloody engine and exhaust noise, keep it quiet for fuckās sake! Many of your rider collegues can manage it, too, so should you.
I had some sore muscles after yesterdayās waste paper collection with the scouts. So, I only went for a short trip to my closest backyard mountain. Watching two rock climbers was interesting. Thatās not something I see very often.
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
- sqlite/ implements the storage interface
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.
@lyse@lyse.isobeef.org OK. So how I have worked things like this out is to have the interface in the root package from the implementations. The interface doesnāt need to be tested since itās just a contract. The implementations donāt need to import storage.Storage
- storage/ defines the
Storage
interface (no tests!)
- storage/sqlite for the sqlite implementation tests for sqlite directly
- storage/ram for the ram implementation and tests for RAM directly
- storage/sqlite for the sqlite implementation tests for sqlite directly
- controller/ can now import both storage and the implementation as needed.
So now I am guessing you wanted the RAM test for testing queries against sqlite and have it return some query response?
For that I usually would register a driver for SQL that emulates sqlite. Then itās just a matter of passing the connection string to open the registered driver on setup.
https://github.com/glebarez/go-sqlite?tab=readme-ov-file#connection-string-examples
Microsoft discovers massive malvertising campaign on GitHub
Like the other Chrome skins, Microsoft Edge is also moving to disable Manifest v2 extensions, restricting the effectiveness of ad blockers like uBlock Origin. As an advertising company, Microsoft was obviously never going to do the work to keep Manifest v2 support around in Chrome, so this was inevitable. Blocking ads might be a necessary security practice, but why cry over spilled user data, am I right? Anyway, ⦠ā Read more
@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
- storage.go: defines a
- controller/
- feeds.go: uses a
Storage
- feeds_test.go: here I wanted to reuse the
newRAMStorage(ā¦)
function
- feeds.go: uses a
I then tried to relocate the newRAMStorage(ā¦)
into a
- teststorage/
- storage.go: moved here as
NewRAMStorage(ā¦)
- storage.go: moved here as
so that I could just reuse it from both
- storage/
- sqlite_test.go: uses
testutils.NewRAMStorage(ā¦)
- sqlite_test.go: uses
- controller/
- feeds_test.go: uses
testutils.NewRamStorage(ā¦)
- feeds_test.go: uses
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.
Google, DuckDuckGo massively expand āAIā search results
Clearly, online search isnāt bad enough yet, so Google is intensifying its efforts to continue speedrunning the downfall of Google Search. Theyāve announced theyāre going to show even more āAIā-generated answers in Search results, to more people. Today, weāre sharing that weāve launched Gemini 2.0 for AI Overviews in the U.S. to help with harder questions, starting with coding, advanced math and multimodal queries, with mor ⦠ā Read more
Pinellas County - 5 miles: 5.03 miles, 00:08:58 average pace, 00:45:03 duration
late run do to work and life. had my daughters field trip this morning which was fun. definitely going to sleep hard tonight.
#running
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
TwtAttrs
https://git.mills.io/yarnsocial/go-lextwt/pulls/17
Actually it was your old feed on eapl.mx
TwtAttrs
https://git.mills.io/yarnsocial/go-lextwt/pulls/17
Actually it was your old feed on eapl.mx
Redox continues adding dynamic linking support
These months are coming and going way too fast, for a whole variety of reasons, so weāve got another month of improvements for Redox, the operating system written in Rust. I February, Januaryās work on dynamic linking continued, adding support for it to the recipes for Cargo, LLVM, Rust, libssh2, OpenSSL, zlib, COSMIC Terminal, NetSurf, libpng, bzip2, DevilutionX, and LuaJIT, as well as to the projectās Rust and OpenSSL forks. Relibc also ⦠ā Read more
@lyse@lyse.isobeef.org Looks like a nice day. š I tried to go on a quick walk, but it was really cold. And everythingās wet at the moment. Bah.
Clothespins in the woods, who would have thunk? š„“
Genode OS Framework 25.02 released
The prime feature is the continuation of the multi-monitor topic of the previous release, covering multi-monitor window management and going as far as seamlessly integrating multi-monitor virtual machines (Section Multi-monitor window management and virtual machines). The second and long anticipated feature is the Chromium engine version 112 in combination with Qt 6.6.2, which brings our port of the Falkon web browser on par with the modern web (Section Qt, WebE ⦠ā Read more
@thecanine@twtxt.net I donāt mind the FUTO keyboard either but it is pretty basic. Going to have to try out helio
@andros@twtxt.andros.dev I wouldnāt call it regular, but cyclical. Since, with the exception of Yarn (maybe?), clients are everything when it comes to twtxt, every now and then we see an increase of interest on new development. I have seeing them come and go, only few ābeside remainsā. :-)
To me it appeared that the failed attempts to ban NPD in the past actually helped them gain more supporters.
What makes AfD stronger for sure is just going ālol nah weāre not even going to tryā:
https://www.tagesschau.de/inland/innenpolitik/afd-verbot-antrag-100.html
If they donāt try, then it means that āit canāt be that bad, itās just a normal partyā, right? š”
Mozilla is going to collect a lot more data from Firefox users
I guess my praise for Mozillaās and Firefoxā continued support for Manifest v2 had to be balanced out by Mozilla doing something stupid. Mozilla just published Terms of Use for Firefox for the first time, as well as an updated Privacy Notice, that come into effect immediately and include some questionable terms. The Terms of Use state: When you upload or input information through Firefox, you hereby grant u ⦠ā Read more
@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.
Mozilla reaffirms it wonāt remove Manifest v2 support from Firefox
Mozilla has officially reiterated that itās going to keep offering support for both Manifest v2 and Manifest v3 extensions in Firefox. Google is removing support for Manifest v2 from Chrome, and with it a feature called blockingWebRequest that is used by ad blockers like uBlock Origin. Googleās replacement for that feature is more restrictive and less capable, and as such, uBlock Origin no longer wor ⦠ā Read more
The big established parties are all bad traitors. I blame them and their actions to help raise AfD. They just [donāt?] give a fuck about the ordinary people, theyāre only concerned about their private gain and power.
To a large degree, yes. But I think the media is also equally at fault. There was absolutely no reason to invite AfD people to every event and let them talk. This has been going on for over 10 years. When we give them a stage to spread their hate, are we really surprised that hate spreads ⦠?
I donāt know the answers to this desaster. Iām beginning to think that people literally just want an outlet for their frustration, nothing more. Itās not about what particular parties actually plan to do. At least I think this applies to people in their 30ies and 40ies.
And, Ramadan
is next week. So, we switched to UTC from UTC+1 in the weekend. As if itās going to make the days any shorter š
I am going to start using this one more, or exclusively, from now on. I need to get used to it, as āquarkā will be gone, and ābenderā, well, he is kind of tired of getting bent. :-D
@bender@twtxt.net @prologic@twtxt.net The outcome was to be expected but itās still pretty catastrophic. Hereās an overview:
East Germany is dominated by AfD. Bavaria is dominated by CSU (itās always been that way, but this is still a conservative/right party). Black is CDU, the other conservative/right party.
The guy whoās probably going to be chancellor recently insulted the millions of people who did demonstrations for peace/anti-right. āIdiotsā, ātheyāre nutsā, stuff like that. This was before the election. He already earned the nickname āMini Trumpā.
Both the right and the left got more votes this time, but the left only gained 3.87 percentage points while the right (CDU/CSU + AfD) gained 14.72:
The Green party lost, SPD (āmid-leftā) lost massively (worst result in their history). FDP also lost. These three were the previous government.
This isnāt looking good at all, especially when you think about whatās going to happen in the next 4 years. What will CDU (the winner) do? Will they be able to āturn the ship aroundā? Highly unlikely. They are responsible for the current situation (in large parts). They will continue to do business as usual. They will do anything but help poor/ordinary people. This means that AfD will only get stronger over the next 4 years.
Our only hope would be to ban AfD altogether. So far, nobody but non-profit organizations is willing to do that (for unknown reasons).
I donāt even know if banning the AfD would help (but itās probably our best/only option). AfD politicians are nothing but spiteful, hateful, angry, similar to Trump/MAGA. If youāve seen these people talk and still vote for them, then you must be absolutely filled with rage and hatred. Very concerning.
Correct me if Iām wrong, @lyse@lyse.isobeef.org, @arne@uplegger.eu, @johanbove@johanbove.info.
@andros@twtxt.andros.dev yeah, sorry I couldnāt get back to you sooner. Iāve already made an account on codeberg in order to file in an issue but, I just canāt get myself to concentrate with everything going on with the family lately. Iāll do my best and get things done properly and soon
Microsoft is paywalling features in Notepad and Paint
Thereās some bad news for Windows users who want to use all of the built-in features of the operating system and its integrated apps. Going forward, Microsoft is restricting features in two iconic apps, which youāll need to unlock with a paid subscription. The two apps in question? Notepad and Paint. Windows Insiders were previously able to use these app features free of charge. However, Microsoft is now making it necessary ⦠ā Read more
@eapl_en@eapl.me Your notes are amazing! Iām going to save them for when I do my implementation. Great job!
@off_grid_living@twtxt.net Oh, Iām ready for my retirement, too. :-D Still have some decades to go, unfortunately.
@arne@uplegger.eu Hi! I love that youāre implementing it! Maybe, when weāre both done, we could test the clients by communicating both.
I donāt think Iām going to be able to help you much, my knowledge of OpenSSL and PHP is not as high as Iād like it to be.
Maybe the OpenSSL version uses SHA-1 by default in PHP. Or that the IV is derived together with the key (not generated separately). But Iām not able to answer your questions, sorry.
Iām invoking the commands directly, without any libraries in between. Maybe that would help you?
@prologic@twtxt.net I wish getting a static IP and a (more) stable internet connection wasnāt so hard over here. Then I could do proper self-hosting as well. But as it stands, I need some rented VPS.
I could go ahead and just use the VPS for the IP, i.e. forward all traffic through Wireguard to a box here at home. Big downside is that the network connection would be even slower than it already is and my ISP breaks down all the time for a few minutes ⦠itās just bad overall and much easier/better to rent a VPS. š«¤
Running - 4 miles: 4.00 miles, 00:09:32 average pace, 00:38:06 duration
this week is going to be hell. with the travel and all the fires at work i can already tell.
#running #treadmill
tt
rewrite in Go and quickly implemented a stack widget for tview. The builtin Pages is similar but way too complicated for my use case. I would have to specify a mandatory name and some additional options for each page. Also, it allows me to randomly jump around between pages using names, but only gives me direct access the first, however, not the last page. Weird. I don't wanna remember names. All I really need is a classic stack. You open a new fullscreen dialog and maybe another one on top of that. Closing the upper most brings you back to the previous one and so on.
@doesnm@doesnm.p.psf.lt Iāll let you know once it reaches a point where it might be barely usable by someone else than myself. There are long ways to go, though. Right now, you donāt wanna even look at it. :-)
Iām continuing my tt
rewrite in Go and quickly implemented a stack widget for tview. The builtin Pages is similar but way too complicated for my use case. I would have to specify a mandatory name and some additional options for each page. Also, it allows me to randomly jump around between pages using names, but only gives me direct access the first, however, not the last page. Weird. I donāt wanna remember names. All I really need is a classic stack. You open a new fullscreen dialog and maybe another one on top of that. Closing the upper most brings you back to the previous one and so on.
The very first dialog I added is viewing the raw message text. Unlike in @arne@uplegger.euās TwtxtReader, Iām not able to include the original timestamp, though. I donāt have it in its original form in the database. :-/
Next up is a URL view.
How itās going? This is how itās going: https://movq.de/v/b744b63cc1/oh-fuck-sleep.mp4
ok, sounds like a ālargeā project to me.
Is it more an API (more oriented to developers), more oriented to UI/UX/Frontend? Perhaps both?
Iād go with prologicās advice of measuring and prioritizing. Perhaps you have a budget or at least something like āletās see how far can we reach in 6 monthsā, and possibly you wonāt finish in the time you have (just guessing).
Something that has helped me was defining āWhy do you we want to refactor this project?ā.
Could it be to make it compile on newer versions, or making it easier to grow and scale, or perhaps they are trying to sell that product to another company. Every reason has a different path, IMO.
Definitely something going on with replies. This one was replying to the wrong twt and even when I got clever and pasted the right hash it didnāt work.
i made a little twtxt feed fixer for when a feed uses other whitespace instead of tabs.
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:
(I keep thinking that going back go Gopher or Gemini might be a good idea at this point. They donāt care about that, probably. š«£)
Oasis: a small, statically-linked Linux system
You might think the world of Linux distributions is a rather boring, settled affair, but thereās actually a ton of interesting experimentation going on in the Linux world. From things like NixOS with its unique packaging framework, to the various immutable distributions out there like the Fedora Atomic editions, thereās enough uniqueness to go around to find a lid for every pot. Oasis Linux surely falls into this category. One of its main ⦠ā Read more