Amid AI Bans, Microsoft and OpenAI Plan a ‘Joyful’ Hour of AI for Kids
Generative AI was recently banned in America’s two largest school districts, just weeks after OpenAI launched ChatGPT for Teens.
But forging ahead, tech-backed nonprofit Code.org — now renamed CodeAI — has named OpenAI the “Lead Partner” for its 2026 Hour of AI (which last year replaced its signature event, “the Hour of Code”). Long-tim … ⌘ Read more
Dune: Awakening’s free Blood and Ice expansion launches December 1
Funcom reveals the Blood and Ice expansion and detailed what’s coming over the next three to four months - including new events, offline single-player and more.
Read the full article on GamingOnLinux. ⌘ Read more
I’m happy to report that there is going to be an Advent of Code event this year:
To be honest, I really wasn’t sure if it was going to happen. “Programming” has changed so much this year …
AMD’s ROCm HRX Loom v0.1 Released For Targeting AMD CPUs, GPUs & NPUs
At this year’s AMD Advancing AI event Hyperloom was announced among the ROCm improvements to expect. Hyperloom aims for agentic workload optimizations and more with quote powerful abilities if everything works out right. As part of the latest round of ROCm advancements, the Loom SDK v0.1 release was released today… ⌘ Read more
Steam Next Fest - October 2026, here’s the most-played demos so far
Valve sent word via email as Steam Next Fest - October 2026 beings to wind down about what has been the most popular during this event.
Read the full article on GamingOnLinux. ⌘ Read more
Redox OS Landed Nice Performance Improvements In September
The Rust-based open-source operating system Redox OS had a very eventful September as they outlined in a status update published this weekend… ⌘ Read more
Free Software Foundation Hosts Free ‘Encryptfest’ Event on Sunday
The Free Software Foundation’s “EncryptFest” today covers both encryption and privacy. The free two-hour event runs from 13:00-15:00 Eastern Daylight Time (17:00-19:00 UTC), and includes:
— A discussion on “bulk surveillance, and how encryption protects personal privacy”
— A short video from renowned cryptographer Bruce Schneier.
— A discussio … ⌘ Read more
Zoe Kleinman: PHP Is the Cyber Equivalent of an Unexploded Bomb
BBC technology editor Zoe Kleinman likens the recently discovered PHP security vulnerabilities to an unexploded bomb, writing, “The PHP story feels like the cyber equivalent of an unexploded bomb – I have never seen such a dramatic, public and global response to a cyber event that hasn’t happened yet.” Although no successful attacks have been confi … ⌘ Read more
Apple Announces October 28 ‘Pro and Tell’ Event
Following its October 13 HomeView launch, Apple is gearing up for its second hardware event of the month. The event is scheduled for October 28 in Los Angeles and carries the tagline “Pro and tell.” 9to5Mac reports: Rumors say Apple has a slew of new products to announce at its next event, headlining by its first MacBook Pro with a touchscreen and OLED. According to Bloomberg’s … ⌘ Read more
‘Human Vs. Robot’ Cage Match Was Illegal, Says California
“A human defeated two of the three robots he faced in a cage fight recently held in San Francisco,” reports the Los Angeles Times, noting that videos of the event drew more than 10 million views on YouTube.
But “the humans behind that fight could face a battle of their own — the legal type — if they want to hold another event like ‘Human Vs. Robot,’ the Sept. … ⌘ Read more
I saw this circulating right afte the latest Microsoft event and it illustrates the current state of things perfectly

Even they bet everything on AI they are renting, not even developing and happily let everything else turn to mush, as evident by the current state of Windows 11, GitHub,…
Microsoft Azure AD, I mean “Entra ID”, still the same account management thing, rewritten three separate times, that since the year 2000, couldn’t manage to implement transparent PNG support.
Should We Beware of Other License Plate Surveillance Companies Besides Flock?
NPR reports:
Police officers in cities across the U.S. are quick to extol the virtues of real-time crime centers as a game changer that helps them find missing children, monitor large events from the skies and scope out dangerous scenes before putting an officer in harm’s way. Hundreds of police departments have one of th … ⌘ Read more
Original RFC1149 Packet Up For Auction At Christies
Long-time Slashdot reader badger.foo writes: As some of you may remember, in 2001 RFC1149 (TCP/IP over carrier pigeon) was implemented.
Now one of the packets preserved from that event is up for auction at Christies. Direct link to the auction (current bid: USD 2600) is here.
This is a unique chance to own a piece of Internet history!
[
New Google Earth AI Tool Could Fuel Misinformation, Experts Say
Google has integrated its Nano Banana 2 image generator into Google Earth, allowing users to place AI-generated events and objects onto real satellite imagery. The company says its AI-generated images contain invisible watermarks detectable through Gemini or Lens, but the BBC found those safeguards and some third-party detection tools can be fooled … ⌘ Read more
Earth’s Biggest Disasters Strike In a Hidden Pattern Every 27 Million Years
A new analysis of 89 major geological events over the past 260 million years found evidence that mass extinctions, volcanic eruptions, ocean crises, and other upheavals may cluster around a roughly 27.5-million-year cycle. The cause remains unknown, with possibilities ranging from mantle activity and orbital changes to spe … ⌘ Read more
AMD ROCm Committed To Six Week Release Cycle Moving Forward
One of many interesting takeaways from this week’s AMD Advancing AI event in San Francisco was word that ROCm will be on a rigid six week release cycle moving forward… ⌘ Read more
AMD Advancing AI 2026: Open, Open-Source & More Open-Source
At this week’s AMD Advancing AI 2026 event, “AI” was mentioned thousands of times in talks and in demos. As expected. Beyond that, the other term likely most heard during the event was “open”… Not particularly new for AMD with their long history of open-source efforts but I’d wager at this year’s AMD Advancing AI 2026 event they were more acutely bringing up open-source, open ecosystems, and open standards. Certainly seemed like an uptick in “open” men … ⌘ Read more
Ryzen AI Software 1.8 Released With New Model Support, More Optimizations
Ahead of Lisa Su’s keynote this morning at the AMD Advancing AI event, tagged on GitHub just now was the Ryzen AI Software 1.8 release for helping to deploy AI models on Ryzen AI PCs… ⌘ Read more
Lemonade 11.5 Local AI Server Released With Completed Lemonade Router
Just one week after releasing Lemonade 11.0, the Lemonade 11.5 local AI server was released today for this open-source AMD backed project during their AMD Advancing AI event… ⌘ 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!
The firefly season is ending. I only saw 200 of them or so. There was one female directly on the forest road. If only I brought my camera and tripod, that would have worked out I reckon. I had my torch with me and this looked really cool.
Dusk took forever today. It was really long light out there. Full moon is tomorrow.
On the way back, there was suddenly a load clatter and crashing sound 100 meters away from me. I didn’t see anything, but a tree fell over in the forest out of the blue. Fuck me dead, that was scary as hell. Luckily, I was already on the main road, only meadows around me. It’s the second time I witnessed a tree accidentally coming down. The first one was during the most expensive hail storm in our area so far in 2011 behind me when setting up a summer camp. The weather changed in less than 15 minutes.
Maybe not such a good idea to go out so late alone. :-? Any rustling in the forest immediately reminded me of the boar the other day. Luckily, always false alarm. Still a bit terrified from that event.
Ah, with lazy loading, browsers only start loading images when the load event occurs. And that takes time. Hm. Not a fan, I might revert this. 🤔
‘Fingerprints’ of Black Hole’s Event Horizon Detected For First Time
Researchers say they detected the first gravitational-wave “fingerprints” of a black hole’s event horizon by analyzing the final moments of the powerful GW250114 merger. The findings support Einstein’s general relativity and may eventually help probe frame dragging and quantum fluctuations near black holes. Phys.org reports: For the new r … ⌘ Read more
Early AMD GCN GPUs Seeing Improved GPU Recovery - Another Valve-Led Linux Improvement
Early AMD Radeon Graphics Core Next “GCN” GPUs are seeing work to improve the GPU recovery process in the event of hangs. This work is yet another improvement for older AMD GPUs being led by Valve’s open-source Linux graphics driver team… ⌘ Read more
In the light of current events, I will first consult my pillow and only then write an article about readable code.