@prologic@twtxt.net Hahaha, I love that! :-D Something to laugh during these hard times. Hope you’re doing alright.
@arne@uplegger.eu Glückwunsch, das ist in der Tat doch mal eine erfreuliche Abwechslung. :-)
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.
Pinellas County - Long run: 8.15 miles, 00:11:43 average pace, 01:35:28 duration
had a date night last night and probably drank a bit too much. my wife followed me on the bike while we did some errands as well. hot and humid this afternoon which really dragged me down. i’ll finish the rest of the HM at home.
#running
Vous connaissez coolmaze pour transférer des fichiers? Je ne trouve pas le code source, donc ça ne doit pas être libre. Vous connaîtriez un équivalent, si possible auto-hébergeable? https://coolmaze.io/

North Korea reveals new nuclear-powered submarine + 1 more story
Russia reclaims territory with help from North Korea; North Korea unveils new nuclear submarine. ⌘ Read more
@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
Storageinterface (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
@lyse@lyse.isobeef.org Das war ein sehr glatter Ritt mit der Bahn. Ebenso heute auf der Autobahn.
(gesendet aus Thüringen)
Pacman (Linux) Update Issue ?~L~X https://thenewleafjournal.com/b/7_M
Good Internet Writing Habits ?~L~X https://thenewleafjournal.com/b/7_G
@arne@uplegger.eu Hals- und Beinbruch! Die Bahn hat ja nur die vier Feinde: Frühling, Sommer, Herbst und Winter. Wurdest Du heute positiv überrascht?
@prologic@twtxt.net You just have to stay in the center. It’s supposed to be calm in there I heard. Just getting there is the tricky part. Good luck!
Popular “AI” chatbots infected by Russian state propaganda, call Hitler’s Mein Kampf “insightful and intelligent”
Two for the techbro “‘AI’ cannot be biased” crowd: A Moscow-based disinformation network named “Pravda” — the Russian word for “truth” — is pursuing an ambitious strategy by deliberately infiltrating the retrieved data of artificial intelligence chatbots, publishing false claims and propaganda for the purpose of … ⌘ Read more
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
@prologic@twtxt.net Thank you 😁
@lyse@lyse.isobeef.org Oh, so that’s the problem! 😅
@prologic@twtxt.net Brace for impact. 🫣 How stormy is it at the moment?
Omniroll
⌘ Read more
Startup launches biological computer made of human brain cells
Melbourne start-up launches biological computer using human neurons; Novel immune system function reveals potential for antibiotic advancements; Australia reveals its oldest-known impact crater dating back 3.47 billion years ⌘ Read more
@movq@www.uninformativ.de “Thermometer must not be installed near aircraft turbine exhaust.”
@xuu@txt.sour.is My layout looks like this:
- storage/
- storage.go: defines a
Storageinterface
- sqlite.go: implements the
Storageinterface
- 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.
Made O’Meter helps you easily and quickly avoid American products
With the United States having started an incredibly dumb and destructive trade war with Canada, Mexico, and most likely soon the European Union, there’s quite a few people who want to avoid American products. With how interconnected the global production chain and corporate ownership structures are, it’s often difficult to determine where products actually come from. Luckily, technology can help. There … ⌘ Read more
Comparing Fuchsia components and Linux containers
Fuchsia is a new (non-Linux) operating system from Google, and one of the key pieces of Fuchsia’s design is the component framework. Components on Fuchsia have many similarities with some of the container solutions on Linux (such as Docker): they both fetch content addressed blobs from the network, assemble those blobs into an isolated filesystem structure that holds all the dependencies necessary to run some piece of software, and … ⌘ Read more
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 - 4 miles: 4.05 miles, 00:08:21 average pace, 00:33:46 duration
the morning is so much better to run. just the getting up part sucks. legs tired from such a quick turn around but felt fine.
#running
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
NetBSD on a JavaStation
Back when Java was still a new programming language, Sun had the idea of building a computer specifically designed for Java, unique processor running byte-code as its native machine code and all. This whole endeavour proved to be more complicated than Sun had hoped, and as such, they eventually abandoned the idea of a Java processor in favour of plain SPARC. When the JavaStation shipped, it was a regular SPARC workstation without a hard drive, running something called JavaOS from fla … ⌘ Read more
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
Zen and the art of microcode hacking
Now that we have examined the vulnerability that enables arbitrary microcode patches to be installed on all (un-patched) Zen 1 through Zen 4 CPUs, let’s discuss how you can use and expand our tools to author your own patches. We have been working on developing a collection of tools combined into a single project we’re calling zentool. The long-term goal is to provide a suite of capabilities similar to binutils, but targeting AMD microcode instead of CPU mach … ⌘ Read more
Microsoft Publisher will no longer be supported after October 2026
In October 2026, Microsoft Publisher will reach its end of life. After that time, it will no longer be included in Microsoft 365 and existing on-premises suites will no longer be supported. Microsoft 365 subscribers will no longer be able to open or edit Publisher files in Publisher. Until then, support for Publisher will continue and users can expect the same experience as today. ↫ Microsoft’s Supp … ⌘ Read more
Thank you, @eapl.me@eapl.me, this is awesome! I’m curious to see if we find some more advantages with the current approach. It seems there should be some more, but I can only think disadvantages right now. :-)
@eapl.me@eapl.me Great, thanks for organizing this! 👍
@lyse@lyse.isobeef.org No, it’s always in the shadow. But there’s not a lot of wind, maybe other things around it heat up … 🤔
lang=en @xuu@txt.sour.is 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.
I’ve added a [lang=en] to this twt to see current yarn behaviour.
@prologic@twtxt.net Best wishes!
@movq@www.uninformativ.de Did you place it in the sun? We only got 15°C today.
Hi everyone,
I’ve drafted a Request for Comments (RFC) to improve how threads work in twtxt:
https://git.mills.io/yarnsocial/twtxt.dev/issues/18
I’d love your feedback! Please share your thoughts on anything that could be better explained, check if the proposed dates work for everyone, and I invite you to join the discussion…
I have released new updates to the twtxt.el client.
- New feature: View and interact with threads.
- Optimisation of ordering for long feeds.
- Minor fixes.
In the next version you will be able to see all your mentions.
Enjoy!
@movq@www.uninformativ.de Toowoomba! I love that name. LOL. Sorry, digressing big time.
@prologic@twtxt.net Ouch, that’s heading right towards you, eh? 🙈

@prologic@twtxt.net stay safe, close windows, have sand sacks ready, check flashlights, make sure to have some canned food, and bottled water, fill up the bathtubs, etc., and enjoy the ride! :-)
This is what I’ll be facing into in the next few hours and over the next couple of days!
Cyclone Alfred 🌀
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
@eapl.me@eapl.me@eapl.me@eapl.me I saw a few a while back.
Water Damage
⌘ Read more
Why fastDOOM is fast
How much faster is fastDOOM than regular Doom on a decked-out 486 from 1993? 30% faster without cutting any features! On a demanding map like doom2’s demo1, the gain is even higher, from 16.8 fps to 24.9 fps. That is 48% faster! I did not suspect that DOOM had left that much on the table. Obviously shipping within one year left little time to optimize. I had to understand how this magic trick happened. ↫ Fabien Sanglard What follows is an incredibly detailed exploration of why, exactly, fa … ⌘ Read more
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