Blood Dungeon from the Wheel World and Nidhogg dev releases August 25
Blood Dungeon is an upcoming action roguelike featuring frenetic, fun, movement-focused gameplay with a rather silly squiggly art style.
Read the full article on GamingOnLinux. ⌘ Read more
Humble Choice for August 2026 brings TMNT: Shredder’s Revenge, Like a Dragon: Infinite Wealth and more
Another rather good month for Humble Choice subscribers, with a fresh set of games for August 2026 bringing some fun experiences.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/08/humble-choice-for-august-2026 … ⌘ 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…
Crack open planets in the idle incremental game Swarmslam
I’ve grown to love a few idle incremental games recently and started discovering more - like Swarmslam, which has a fun idea about smashing through planets.
Read the full article on GamingOnLinux. ⌘ Read more
Weather the Swarm is a fun looking co-op action roguelite with destructible terrain
A fun looking sci-fi solo / co-op roguelike with fully destructible environments, Weather the Swarm set to release in 2027.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/weather-the-swarm-is-a-fun-looking-co-op-action-roguelite-with-destru … ⌘ Read more
Mount & Blade meets Total War in the upcoming pixel-art Sword & Banner
Sword & Banner captured my eye recently as a pixel-art game that’s Mount & Blade meets Total War and the gameplay looks like a lot of fun.
Read the full article on GamingOnLinux. ⌘ Read more
Bandwagon is a ‘survivors-lite adventure’ that sounds wonderful from the Dome Keeper devs
Bandwagon is a bullet heaven survivors-lite (that’s a new one?) that takes the genre in a fun new direction with music and you restoring joy to the world.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/bandwagon-is-a-survivors-li … ⌘ Read more
@david@daiwei.me Oh yes blame me for you not having fun on the “Play Station” 🚉 Haha 🤣
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!
@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.

@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. :-/
Orgy fun (Sandtiage) [C&C girls] ⌘ 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
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
AI Agent Bankrupted Their Operator While Trying to Scan DN42
Article URL: https://lantian.pub/en/article/fun/ai-agent-bankrupted-their-operator-scan-dn42lantian.lantian/
Comments URL: https://news.ycombinator.com/item?id=48500012
Points: 6
# Comments: 1 ⌘ Read more
Fun with a Gigantic Dildo (Hoptia) [hololive] ⌘ 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
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
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
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
Tattooed titties are even more fun 😜 ⌘ 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
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
A Crash Course in Mountain Bike Suspension (2026)
How your front fork and rear shock work, so you can hurt less and have more fun. ⌘ Read more
@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?
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 👌
Tracer having fun (lexart thighzzzz)[Overwatch] ⌘ Read more
Strip Minigolf was a lot of fun ⌘ Read more
Visiting your nurse is way more fun when you feel her big titties on your face ⌘ Read more
Having fun at work ⌘ Read more
<updated> of the feed, too. But for some reason, some articles were suddenly marked as new.
Aha, yesterday’s newly added support for LC_TIME to render localized timestamps also broke the feed parsing with my LANG=de_DE.UTF-8 and LC_CTYPE=de_DE.UTF-8 environment. :-)
Atom feeds make use of RFC 3339 timestamps. They are first converted into RFC 882 timestamp representation, which is the one that RSS feeds use. However, this conversion now results in localized RFC 882 timestamps, which cannot be parsed into Unix timestamp numbers via curl_getdate(…). I bet that it doesn’t know about the localization at all and expects English month and weekday names. Looking at its docs, I reckon that function was selected because of its myriad of supported timestamp formats: https://curl.se/libcurl/c/curl_getdate.html RFC 3339 is not included, though, hence the transformation up front.
The intermediate Item objects in the parser domain use std::string for the timestamp representation. This isn’t all that silly, because Newsboat supports all sorts of different feed formats with different timestamp formats. These RFC 883 timestamps are centrally parsed into time_t.
Speaking of time: It’s time to go to bed after this late bug hunting fun. :-)
@movq@www.uninformativ.de I really like your style of writing, btw. It’s much calmer and less aggressive then mine. :-) When I turned my bullet points into paragraphs, I got a bit mad in the process.
Sure, feel free to include anything you want. Regarding citing, this is where twtxt falls short in my opinion. Especially with feed rotation, classic links die quickly. Message hashes only help so much. Nobody outside the twtxt universe knows how to deal with them. So, not perfect for inclusion on a web page. Linking to a thread or message on some yarnd instance might be the more user-friendly option. But the disadvantage is that it’s “just” a mirror, not the primary or original source. In all reality, this could be considered splitting hairs, though.
I should have probably written a proper article. That would have given me time to review the result more carefully, too. ;-) Perhaps that’s something for the future. But honestly, I’m not sure if I really want to waste my time and energy on that subject. So many other fun or useless things come to mind right away that I could do instead. 8-)
So, yeah, do whatever feels best to you. I don’t mind being cited or linked, but I also don’t mind not to be cited or not to be linked to. :-D Not a helpful answer, I know. Sorry. ;-) But anyway, thanks for asking, mate! I do appreciate it.
To finish my thought, linking to my frontpage is probably also useless, since I deliberatly do not have a table of contents there. In fact, my entire frontpage is rather silly.
Fun bags ⌘ Read more
Visiting your nurse is way more fun when you feel her big titties on your face ⌘ Read more
Seems very fun to me ⌘ Read more
The Best Outdoor Deals From the REI Anniversary Sale 2026
It’s the best time of year to pick up all the outdoor gadgets, tents, sleeping bags, and other gear you’ll need for summer fun. ⌘ Read more
I love to have a little cheeky fun out in public… ⌘ Read more
@tftp@tilde.town you say that like it is a bad thing. It is not! 😅 Once you have learned your way around, all works together quite lovely. Of course, experimenting with new clients is fun too!
It’s always fun with Mom ⌘ Read more
Link having fun back in Gerudo Town (Nastacic) [Zelda Tears of the Kingdom] ⌘ Read more
brother and sister wanted to have some fun (houkago shounen)[oshi no ko] ⌘ Read more
Fun at the picnic (TaihenGold) [Original] ⌘ Read more
Having fun in the hotel room ⌘ Read more
The Best Outdoor Deals From the REI Anniversary Sale 2026
It’s the best time of year to pick up all the outdoor gadgets, tents, sleeping bags, and other gear you’ll need for summer fun. ⌘ Read more
I’m pleased to announce that express-twtkpr (my ExpressJS library for hosting, editing, and posting to a twtxt.txt file) continues to crawl towards a full release with another (pre-alpha) update published to NPM. This update includes a whole new plugin system, and even a (little) more documentation. Check it out, if you dare (and use it at your own risk): https://www.npmjs.com/package/express-twtkpr
And speaking of plugins, here’s where the fun’s at: announcing express-twtkpr-core-plugins, a set of 3 plugins for your TwtKpr install: emojiButton, uploadButton, and postToMastodon. Like express-twtkpr, this set of plugins is still in pre-alpha, and lacks documentation, examples, tests, installation flexibility, or polish (so also use them at your own risk). Other than that, they work great: https://www.npmjs.com/package/express-twtkpr-core-plugins
Stay tuned for more! 🤘
@bender@twtxt.net I sound like I’m dumping on the game, but it really is alot of fun, especially with the right people. It’s just a whole different beast from D&D.
Let me get them out so we can have more fun ⌘ Read more
idk what size my tits would be considered, but I do know that they’re extra fun to play with ⌘ Read more
@bender@twtxt.net I misread that sentence and thought that your first crush was called Gisela, and was like “wait, he’s not that old”.
Turns out, Gisela is a much younger name than I thought:
https://namecensus.com/first-names/gisela-meaning-and-history/
A peak in the late 1970is and late 1990ies? What?
But then it turned out that, in Germany, the popularity dropped rapidly in the late 1950ies, which actually matches my expectations:
https://www.beliebte-vornamen.de/5203-gisela.htm
In other words, some other countries picked up the name Gisela after it had already faded away in Germany.
What a fun rabbit hole. 😅