Searching We Love Privacy Club

Twts matching #FUN
Sort by: Newest, Oldest, Most Relevant
In-reply-to » I've been away with the scouts in our district summer camp. The nearly two weeks were absolutely amazing, mentally a great vacation. On the other hand, physically not so much. But I've still got Monday to recover from my holiday. :-)

And here some photos of the crazy kitchen we had at our glamping trip. Of course, it was waaaaaaaaaaaaay oversize. It’s typically used to feed several hundred people, not just only 70ish. Although it was really fun to work in, cleaning the whole thing took an entire day. We completely underestimated this.

https://lyse.isobeef.org/2026-09-07-willy-brandt-zeltlagerplatz-kueche1/

⤋ Read More

Awful 33°C today. But I had to move, no matter what. So, I went outside. At first, the sun was out a bit. It was brutal. Later it vanished behind the clouds. But the humidity was still through the roof.

I watched the corn harvest I came across. Dusty as hell, but it was great fun observe the machineries work.

Going up my backyard mountain, there weren’t many people around. I was pleasantly surprised. However, the smaller hill below was rather crowded. Many people with picnic mats, enjoying their dinner, painting A3 love letters, claiming all available benches, taking wedding photos, walking their dogs, etc.

The public barbecue site at the summit is still closed due to the ongoing fire hazard. I found it rather funny to see a fire extinguisher ready to go next to it. The bread and cake smell disclosed that the Mountain Baking Boys were active. The large oven right next to the BBQ was still going strong.

https://lyse.isobeef.org/waldspaziergang-2026-08-27/

⤋ Read More
In-reply-to » @lyse Huh, didn’t expect that. :-D

@movq@www.uninformativ.de @itsericwoodward@itsericwoodward.com Hahaha, a festival, indeed! :-D There was also “Raupenkrieg” (caterpillar war): jumping against each other in sleeping bags. I reckon that counts as pogo or mosh pit.

And back in the days, we had wonderful deep mud all around us, too! In extreme years we even needed to leave the camp ground for a day and walk to a gym with all the kids. There was just too much rain and the creek dangerously high.

We once had an actual creek running through the dining tent before the kids arrived. Luckily, it didn’t originate from the official creek, but the water came down the hillside. Unimaginable today with all these droughts in summer. Many creeks around here are dried up for several weeks, if not months now.

There you go, enjoy my favorite selection of yummy chocolate on the ground!

It was a question of the mindset. Once we supervisors just made the best out of it and tried to had fun, the kids typically didn’t mind the mess either. Besides building huts, one of the most favorite things ever was actually “Matschschöpfen” (scooping mud). The kids scooped puddles into wheel barrows using giant soup ladles from the kitchen. “Sorry kids, time is up for today. Whoever sits in the closing circle first gets to go first tomorrow.” Unfortunatly, I don’t find any photos from that.

⤋ Read More

In #Magic last night, I debuted my new #Dune deck with an underwhelming performance - perhaps unsurprisingly for a desert-focused deck, I faced a real drought, starting the game with only 1 land in hand (even after a mulligan) and not pulling another land until turn 4(!). Because of our house starting mana, I wasn’t totally sunk, but everything I got out was just luck. I did die last thanks to my big wurms (so I guess I was 2nd place?), but still… underwhelming.

For game 2, I wanted to bring the thunder (especially after my pitiful performance last week), so I dusted off my Night of 1000 Squirrels deck (headed by the infamous Chatterfang, Squirrel General). By turn 3, the #squirrel army was forming, and thanks to well-timed casts of Fog and Make a Stand, the squirrels managed to overrun everyone just a few turns later.

Another fun night overall. I won’t be able to play for the next few weeks, so I’m glad this one ended with a win. 😁 #mtg

⤋ Read More
In-reply-to » The original twt is unavailable. It may have been edited or deleted, or is from an unknown or muted feed.

@david@daiwei.me It’s like Rummy but with more freedom which makes it a hell lot more interesting. You’re allowed to manipulate everything that’s on the table, trigger jokers, recombine the cards as long as there are at least three in a row after your move, not just simply add cards to existing rows (or whatever the correct terminology is). It’s good fun and mental exercise.

⤋ Read More

Although I was initially concerned that adding modern Marvel superheroes to the high-fantasy worlds of “Magic: the Gathering”” would be too aesthetically dissonant, instead it’s gotten me back into deck building in a big way.

Since the set was released last month, I’ve built: a 5-color Super Villains deck, two 5-color Superheroes decks, plus a 5-color tribal Mutant Ninja Turtles deck (built from the best cheap singles from the TMNT set from earlier this year, a set that was a bit more dissonant, but still weird enough to be fun).

And then there’s the proxies…

Image

⤋ Read More

Hurray, I can now press gg instead of g to go to the top in tt. Much better! :-) Other multi-key combinations are also easily possible now.

I should probably write a real article about this at some point, but here we go. The only downside with my new key binding system is that it breaks tview’s established pattern. You’ve got an InputHandler(), that is implemented using WrapInputHandler(…). It typically then directly implements the switching logic depending on the key press. Something like this:

func (w *Widget) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
    // WrapInputHandler allows for intercepting key events with SetInputCapture(…)
    // from the outside for customization. This handles the default key bindings.
    return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
        switch event.Key() {
        case tcell.KeyRune:
            if event.Modifiers() == tcell.ModNone {
                switch event.Rune() {
                case 'k':
                    w.scrollUp()
                    return // we already handled the event, stop processing

                case 'j':
                    w.scrollDown()
                    return
                }
            }
        }

        // We didn't handle the key event. Maybe the parent
        // widget knows what to do with it.
        if handler := w.parent.InputHandler(); handler != nil {
            handler(event, setFocus)
        }
    })
}

From the outside, you can intercept and either stop or continue the widget’s original key handling with a potentially rewritten key event using SetInputCapture(…):

w := NewWidget()
// customized or additional key bindings
w.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
    switch event.Key() {
    case tcell.KeyUp:
        // Rewrite the event, so the "cursor up" key is an alias
        // for the vim key binding "k", that is handled by the
        // wrapped input handler above. (I know, I know, this is a
        // completely unrealistic example, why would anyone use
        // cursor keys when there are vim key bindings available?!)
        return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)

    case tcell.KeyRune:
        if event.Modifiers() == tcell.ModNone {
            switch event.Rune() {
                case 'q':
                    app.Stop()
                    // we already handled the event, do not pass it
                    // to the wrapped input handler above
                    return nil

                case 'r':
                    toggleMessageReadStatus()
                    return nil
            }
        }
    }

    // we didn't handle the event, pass it to the wrapped
    // input handler above
    return event
}

Since they all expect a single key, I’ve noticed that using multiple dedicated KeyBindings of mine on these different levels kinda breaks multi-key handling with common prefixes. The outer-most KeyBinding captures the prefix, but it can’t transfer it to the inner one if not handled by the outer one. At least not without some more (potentially ugly) changes. So, I now have to work with just a single KeyBindings object for the entire widget chain (if it consists of multiple other widgets or the regular input handler and input capture are in the game). The outside needs to register all its key bind customizations or extensions at the same level that the original widget handles its default ones. Doable by exposing the widget’s KeyBindings instance, but not pretty. You always have to keep this in mind.

With the KeyBindings, it will look like that:

type Widget struct {
    parent tview.Primitive

    // make it available to children or the outside either by
    // direct field access or by providing a getter method
    KeyBindings *bind.KeyBindings
}

func NewWidget() *Widget {
    w := &Widget{KeyBindings: &bind.KeyBindings{}}
    w.KeyBindings. // default key bindings
        Bind0(bind.KeySequence('k', w.scrollUp).
        Bind0(bind.KeySequence('j', w.scrollDown)
    return w
}

func (w *Widget) InputHandler() InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
    return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
        // also note the missing support for focus transfer at the moment
        event = w.KeyBindings.Capture(event)
        if event == nil {
            return
        }

        if handler := w.parent.InputHandler(); handler != nil {
            handler(event, setFocus)
        }
    }
}

And then from the outside, or in a child widget:

w := NewWidget()
w.KeyBindings. // additional or customized key bindings
    Bind1(bind.KeySequence(tcell.KeyUp), func(*tcell.EventKey) *tcell.EventKey {
        return tcell.NewEventKey(tcell.KeyRune, 'k', tcell.ModNone)
    }).
    Bind0(bind.KeySequence('q'), app.Stop).
    Bind0(bind.KeySequence('r'), toggleMessageReadStatus)

When directly working with tview primitives that are not part of custom widget implementations, the following works well so far:

textView := tview.NewTextView().
    SetWordWrap(true).
    SetText("…")
    SetScrollable(true)
textView.SetInputCapture((&bind.KeyBindings{}).
    Bind0(bind.KeySequence('q'), app.Stop).
    Bind1(bind.KeySequence('g', 'g'), func(*tcell.EventKey) *tcell.EventKey {
        return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone)
    }).
    Capture)

I need to sleep on this some more.

Also, writing very long messages like this one is really not all that fun in tt’s editor. I should absolutely provide a way to shell out to vim.

(Took me about one and a half hours to compose, holy crap. But not only because of not using vim. Although, that might have saved me a quarter hour or so for sure. Proof-reading this message also uncovered quite a few bugs in my real documentation. So, that’s a big win!) Good night!

⤋ Read More
In-reply-to » The original twt is unavailable. It may have been edited or deleted, or is from an unknown or muted feed.

@david@daiwei.me Ta, I continued my fun with studying the tcell and cbind code bases for key bindings. My plan is to eventually not only support custom key bindings in the tt configuration file, but also to enable multi-key sequences, such as gg to jump to the top of a list/tree. Or use other vim-like navigation movements like 7j or 25gg etc.

And it turns out there are only a hand full oft tcell/cbind version combinations that work together. Only if all stars align, there’s chance of success. I will probably end up pulling cbind in to simplify my life. There are situations where tcell.EventKey’s triple of key, modifiers and rune are not all that intuitive to me. Let’s see.

⤋ Read More
In-reply-to » @lyse Awww, that sounds like a typical experience at school. 😅 They meant well but somehow it was still shitty …

@movq@www.uninformativ.de Hahaha. It could have been worse, though. I’ve heard stories from others that were many levels crazier than what I experienced. And I’m glad that I was very, very lucky with almost all of my teachers throughout all of school. One of my maths teacher, who was also my computer science teacher then, is the reason I do what I do for a living. It’s all his fault! ;-)

Ja, possibly a BaWü thing. The ministry of education and cultural affairs changes the rules, curriculums and details every one or two years, anyway.

Said teacher had to fight real hard that he was allowed to teach CS in class 12 and 13. As a real subject, that is, not just an extracurricular activity („AG“). At first, the ministry refused, because we’re just am „allgemeinbildendes Gmyi“, not an „informationstechnisches Gymi“. It’s insane, you’ve got super motivated (and technically as well as humanly excellent) teachers and then forbid them to offer a class. What the hell!? (Fun fact on top, he had a doctor in CS and was also teaching at the university of applied sciences.)

Eventually, they granted permission to only have a two hours a week class („zweistündig, wie Nebenfach“). One or two years later – too late for me, unfortunately – they allowed four hours a week („vierstündig, wie Hauptfach“). But each pupil had to sign upfont that they will not take CS class in the Abi. That was still exclusive to ITGs only. Completely ridiculous.

I reckon, you can talk to any random teacher and they will endlessly tell you about very dubious decicions from the ministry. :-/

⤋ Read More

10 Netflix Originals Are Leaving the Streamer Very Soon
Several Netflix Originals are scheduled to leave the platform soon. As the streamer’s catalog evolves, it adds and removes titles based on their performance and licensing agreements. Since this strategy applies to original content as well, several of the streamer’s own titles are marked for removal next month. From gripping dramas to fun stand-up comedies, […]

The post [10 Netflix Originals Are Leaving the Streamer … ⌘ Read more

⤋ Read More

Jennifer Lopez ‘Would Have Had Sex With Any’ Star of This ‘Arousing’ Movie
Jennifer Lopez recently talked about a romance thriller that ended up “arousing” her. She sat down for an interview with Office Romance co-star Brett Goldstein, and during a fun segment, she shared the details. Jennifer Lopez calls this classic movie ‘arousing’ On Brett Goldstein’s podcast Films to Be Buried With, Jennifer Lopez gave spicy answers […]

The post [Jennifer Lopez ‘Would Have Had Sex With … ⌘ Read more

⤋ Read More

The Odyssey’s Popcorn Buckets Have 1 Major Flaw
The Odyssey will have two popcorn buckets to pick up for Christopher Nolan‘s new epic. While they are both fun and uniquely themed, they both have one major flaw. Earlier this month, Universal Pictures unveiled the first popcorn bucket for the highly anticipated upcoming movie. Instead of something geared toward the movie, the popcorn bucket […]

The post [The Odyssey’s Popcorn Buckets Have 1 Major Flaw](https://www.comin … ⌘ Read more

⤋ Read More

The Batman 2 Delays Were the Best Thing to Happen to Robert Pattinson’s Career
The Batman 2 has faced a number of delays leading up to its release. While they weren’t fun for fans, the delays have helped Robert Pattinson’s career in a major way. Robert Pattinson will reprise his role as Batman in the movie, with other cast members from the original film also returning, including Colin Farrell’s […]

The post [The Batman 2 Delays Were the … ⌘ Read more

⤋ Read More

Fall 2: Deadpoint Trailer Review: Unnecessary Sequel Still Looks Fun
Fall 2: Deadpoint‘s trailer has officially been revealed for the new survival thriller movie. While a second movie doesn’t feel the most necessary, the movie still looks fun. Fall 2: Deadpoint stars Harriet Slater, Arsema Thomas, and Tom Brittney. The film is directed by Peter and Michael Spierig from a screenplay written by Mann and Jonathan Frank. It is […]

The post [Fall 2: Dea … ⌘ Read more

⤋ Read More

ARM Linux Server Performance Up More Than 7x Geo Mean In 8 Years, As Much As 15x With NVIDIA Vera CPU
NVIDIA’s Vera CPU is delivering the fastest ARM performance I have ever seen. For putting it into perspective how far the ARM server CPU hardware has come in just the last decade and for some “fun” benchmarks as part of Phoronix marking 22 years of Linux hardware reviews and benchmarking, here are some benchmarks showing the Ampere eMAG from September 2018 to the performance now with NVIDIA Vera. Not even factori … ⌘ Read more

⤋ Read More

Masters of the Universe’s 1st Great Joke Happens Before the Movie Truly Starts
Right before the new live-action movie officially begins, audiences can spot Masters of the Universe‘s first joke during the opening title sequence. The joke is actually a fun and clever tribute to the original animated TV show. Amazon MGM Studios‘ Masters of the Universe movie stars Nicholas Galitzine as the long-lost prince of Eternia. Joining […]

The post [Masters … ⌘ Read more

⤋ Read More

Supergirl Shows Why the DCU Shouldn’t Be Afraid of Having Fun After Snyderverse
Supergirl has been positioned as a fun space adventure in the DC Universe. Frankly, it’s precisely the change that DC needed following Zack Snyder‘s DCEU, aka the Snyderverse. When Snyder started the DC Extended Universe, he immediately set a darker tone for superheroes in 2013’s Man of Steel. The DCEU represented the antithesis of Marvel’s […]

The post [Supergirl Shows Why the DCU Should … ⌘ Read more

⤋ Read More
In-reply-to » @lyse By the way, which site generator are you using? I kind of miss having code blocks with syntax highlighting and that generic yellow highlighting thing is pretty cool, too.

@movq@www.uninformativ.de It’s the “Lyse types the entire HTML by hand” generator. Yes, no kidding. I write articles so rarely, that I can do that once in a while. It’s fun to some degree, but also not.

After some time, I finally recorded some Vim macros to insert <b>…</b>, <var>…</var>, <span class=s>…</span> etc. around the tokens. This helped a little bit. But I was still questioning my mental state doing it like that. I also had to fix a bunch of the end tags by hand, because the word movement wasn’t enough or the end movement went too far. Quite the annoying process for sure.

But I think the HTML looks a wee bit nicer and is maybe even semantically a little bit better than having only <span>s everywhere. I find the <span class="whatever"> just soo awfully long. Of course, I never look at the code again, but knowing, that e.g. there is a <b> and it saves so many bytes in comparison, makes me happy. It is a more elegant solution in my opinion. Not by much, but better nonetheless. It’s a matter of simplicity. Admittedly, even I can’t avoid the <span>s alltogether. Oh well. On the other hand, I’m sure that this does not make any difference whatsoever. I bet, nobody and nothing, like a screenreader, analyzes the HTML for that, where this would be truly useful.

Oh! Maybe text browsers, though. It just occurred to me while composing this reply. :-) Haha, I lost my bet quickly. w3m picks up at least the <b> for keywords and builtin types, <u> for filenames and <i> for comments. Yey. No different styles for <var> and <mark>, unfortunately. elinks only renders the bold. It’s cool that I had the right intuition right from the beginning, despite being unable to pinpoint it. :-)

All the <span> hell with common syntax highlighters is a downer for me that keeps me from looking more into them. If I wrote more articles, I might rig something up with Pygments. At least that’s somehow positively connotated in my brain. Not sure if it actually deserves it, but I dealt with that in some loose form (can’t even remember) years and years ago. Apparently, it wasn’t too terrible.

To prepare the table of contents, I used grep and sed with some manual intervention in the end. The entire process can be improved. Absolutely.

You wrote your own site generator, didn’t you?

⤋ Read More
In-reply-to » @prologic @bender Thanks! Yeah, it already supports Twt Hash via twtxt-lib (both v1 and v2, when the time is right), plus most of the other features (multiline, user-agent, and metadata), and I'm working on (re-)implementing threading, mentions, and hash filtering (to make conversations easier to follow).

Nice work! Threading + mentions is where it gets fun 😅 Ping me if anything in the spec is unclear 👌

⤋ Read More