Minecraft 26.3 Snapshot 4 brings SDL3, and prefers Wayland on Linux
Minecraft is set for another big update with a fresh Minecraft 26.3 Snapshot 4 ready for testing, and overall it’s quite a big technical upgrade.
Read the full article on GamingOnLinux. ⌘ Read more
@david@daiwei.me Not sure if you only mean the code segments or in general. In theory, a general darker text color for read messages would probably work. The thing is that regular white on black is quite standard. In Newsboat, new articles are red (I opted for yellow here) and read ones white. I found that useful and kinda copied it for tt.
Jagex Launcher Linux Beta released for Old School Runescape
Jagex today announced the official release of the Jagex Launcher Linux Beta, making it hopefully simpler and easier to get into Old School Runescape.
Read the full article on GamingOnLinux. ⌘ Read more
Game on the go with the new Humble Handhelds Bundle
Want some more games for your Steam Deck, Legion Go or whatever other device you have? The newly launched Humble Handhelds Bundle might save the day.
Read the full article on GamingOnLinux. ⌘ Read more
Proton Experimental brings fixes for Diablo IV, Marvel Rivals, RPGMaker Engine games
Valve launched the latest update to Proton Experimental to bring more fixes for running Windows games on SteamOS / Linux including Steam Deck and Steam Machine.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/proton-experimental-brings-fixes … ⌘ Read more
Impressive grand-scale RTS game Beyond All Reason gets a major engine upgrade with ARM64 support
Beyond All Reason is a seriously impressive grand-scale open source RTS game that just got a big engine upgrade that brings ARM64 support.
Read the full article on [GamingOnLinux](https://www.gamingonlinux.com/2026/07/impressive-grand-scale-rts-g … ⌘ Read more
Just thought it an interesting Hacker News article that caught my eye 👁️
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!
EchoStar’s US Satellite Pay-TV Provider Dish DBS Files for Bankruptcy
EchoStar’s satellite pay-TV unit Dish DBS has filed for Chapter 11 bankruptcy
protection, reports Reuters. The move also applies to its wireless subsidiaries, according to the article, and “facilitates the wind-down of Dish Wireless’s 5G network operations following an unexpected delay in a spectrum license sale to AT&T… unde … ⌘ Read more
I just read @kat@yarn.girlonthemoon.xyz’s blog post over here:
https://bubblegum.girlonthemoon.xyz/articles/learning-to-code-like-it-s-the-90s
Jesus, it must be so overwhelming for young people to get started with programming.
When I started programming, there was the built-in ROM BASIC of that PC and probably a bit of BASIC on a floppy, and that was it. Nowadays? Millions of libraries and frameworks and languages and what not – and, much worse, there’s the expectation that you need to make something fancy. When I started, printing something and understanding IF was good enough.
RISC-V RVV Vector Performance Benchmarks With The SpacemiT K3 SoC
Since May we have been benchmarking the SpacemiT K3 RISC-V SoC as one of the first to market RISC-V chips supporting the RVA23 profile. The SpacemiT K3 has shown how far RISC-V performance has come in the past half decade and one of the promising elements of this modern RISC-V SoC with its X100/A100 cores is supporting the RISC-V Vector Extension “RVV” 1.0. In this article are some initial benchmarks looking specifically at the RISC-V RVV 1.0 … ⌘ Read more
@movq@www.uninformativ.de I see. I just use CDATA (and still have the XHTML trailing slash for <img … />). But of course, it also has its drawbacks: https://waspdev.com/articles/2026-05-11/avoid-using-cdata-in-rss I might just move away from it.
Everything is a web service these days. :-/
@movq@www.uninformativ.de Yes, that’s what I was thinking, too. For a moment, I wanted to suggest to use <ol> instead of <ul> to fix that. However, that’s only gonna work for the first level, but subsections then miss their parent level.
And it turns out that I was wrong. At least sort of. There are some CSS tricks to fix it: https://stackoverflow.com/a/26243681 Of course, with text or retro browsers, this is not gonna fly.
I also came across this interesting article. I just skimmed it and it’s about real tables of contents with page numbers, so not what you have in mind, but cool nevertheless: https://css-tricks.com/a-perfect-table-of-contents-with-html-css/
@movq@www.uninformativ.de I reckon section numbers are not really needed for articles. But if you number them, the anchors should probably not contain the section number, just the title. Especially for articles that may receive updates.
It’s probably another story for specifications. They’re kinda fixed and thus I found it useful in the past to include the section numbers in the anchors, so they show up in URLs when linking to specific sections. W3C RFCs only include the numbering in the anchors. This makes URLs fairly short, but it would be also nice to directly see what kind of section that URL actually links to.
@prologic@twtxt.net That’s how I read that, too. :-D Unfortunately, all listed articles stop at only 30% maximum. Scam!!
zlib-rs 0.6.4 Released With Fix For Intel Raptor Lake Crash, SIMD Optimizations
As a follow-up to last week’s article around Firefox leveraging zlib-rs and some nice upstream improvements to this Rust-based Zlib implementation, the zlib-rs 0.6.4 release is now available to ship all of these latest enhancements… ⌘ Read more
@movq@www.uninformativ.de Yeah, that would also be fine with me. I certainly do like the “arbitrary” in your comment.
While writing the article, I also thought about something like that:
date := time.Date(2026, 6, 19,
17, 0, 0, 0, time.UTC)
Or possibly:
date := time.Date(
2026, 6, 19,
17, 0, 0, 0, time.UTC,
)
But it’s four lines for a damn timestamp. I also contemplated whether a comment acting as a separator is all that’s needed:
date := time.Date(2026, 6, 19, /**/ 17, 0, 0, 0, time.UTC)
I might like that the most. Not entirely sure yet. It kinda feels like a hack, but still a little elegant. Add your comment on top and we’re golden. Maybe?
I deliberately excluded them as this only distracted from the points I wanted to make. And I also realized that this example was just not ideal at all. Perhaps I should add them nevertheless?
If I ever invented a programming language, a much more human readable timestamp representation of some sort, RFC 3339 or very close to that would be part of that language. Something along the lines of /pattern/ for regexes in certain languages.
In the light of current events, I will first consult my pillow and only then write an article about readable code.
Are Many College Students Losing the Ability to Read?
Futurism reports:
in a new essay for The Chronicle Higher Education, university-level literature and writing instructor Tyler Jagt recalls how not a single one of his students could get through an assigned 20-page article, something that he had read “without complaint” as an undergraduate a decade ago.
One student confessed that the reason they didn’t finish was that … ⌘ Read more
@movq@www.uninformativ.de You may want to include another antipattern to avoid in your article:
- bump $same_dependency from 1.0.0 to 1.0.1
- bump $same_dependency from 1.0.1 to 1.0.2
- bump $same_dependency from 1.0.2 to 1.1.0
- bump $same_dependency from 1.1.0 to 1.2.0
57-годишен загина при катастрофа на пътя между Гоце Делчев и село Долно Дряново
Инцидентът е станал малко след 18.00 часа. 57-годишен мъж е управлявал лек автомобил, но поради здравословен проблем е загубил контрол над превозното средство, навлязъл е в лентата за насрещно движение и се е … ⌘ Read more
Швейцария чака подвизи на световното от Жоан Мазамби - сина на африканските “Ромео и Жулиета”
Ето защо … ⌘ Read more
Намериха изчезналия лекоатлет Живко Виденов
По-рано днес сестрата на Виденов - Диана Тодорова, написа във фейсбук профила си, че брат й е в неизвестност от четвъртък ⌘ Read more
Монтираха соларна пейка за зареждане на телефони в центъра на Чипровци
Пейката дава възможност за зареждане на мобилни телефони от нея.
„С тази придобивка добавяме нов модерен щрих в сърцето на града ни. Елате, тествайте ⌘ Read more
Дара пее на “София прайд” (Видео, снимки)
Дара изпя хита си “Бягаш ли от мен” на сцената в Княжеската градина.
В концерта участва и певицата Мила Роберт.
Събитието започна в 14 часа и ще продължи до 21 часа. Под мотото “Различно си приличаме”, тазгодишната кампания на “София прайд” акцентира върху ⌘ Read more
Константин Проданов: Още в деня, в който земеделци се оплакаха, че веригите ги натискат, се задействахме
Катастрофа спря движението по пътя Казанлък - Габрово край град Шипка
Трафикът се пренасочва по обходен маршрут през гр. Шипка. Шофьорите да се движат с повишено внимание и съобразена скорост. Преминаването се регулира от “Пътна ⌘ Read more
Иван Христанов: Горските първи разкриха нарушенията в Баба Алино още през 2023 г.
Преизбраха Виктор Орбан за лидер на унгарската партия ФИДЕС
Орбан, който бе единственият кандидат, бе избран от делегатите за мандат от една година по време на тайно гласуване ⌘ Read more
Княгиня Калина, облечена с цветовете на българското знаме, е на “Шествие за семейството” (Снимки)
Калина е облечена в цветовете на българския трибагреник - бяло, зелено, червено. Заедно с мъжа ѝ бяха на вечерня с молебен за семейството отслужена от Негово Светейшеств … ⌘ Read more
Размерът няма значение - осемте “джуджета” на световното
Сесар Янис (Панама) - 160 см
Най-ниският играч е дясно крило. Със сигурност няма да е титуляр.
Звездният му миг бе на Копа Америка през 2024 … ⌘ Read more
Намериха труп край базата на Иран на световното
Автомобилът е бил на паркинг на супермаркет срещу тренировъчната база на отбора.
Прокуратурата на Тихуана отбеляза, че тялото на мъжа е било увито в черна торба и поставено в багажника ⌘ Read more
Проф. Константинов: Според проучванията до момента, Йотова ще стигне до балотаж
Вицешампионът “Нефтохимик” взе нов разпределител
От състава на вицешампионите и носители на купата на България остават ⌘ Read more
Ердоган обяви инвестиции за $10 млрд. в AI
Съгласно плана Турция ще мобилизира най-малко 10 милиарда долара, предимно от частния сектор, за инвестиции в центрове за данни, облачни услуги и инфраструктура за изкуствен интелект ⌘ Read more
Зукърбърг признава за грешки в подхода на „Мета“ към AI
Вътрешно писмо, с което Ройтерс се е запознала, показва, че Зукърбърг е коментирал предизвикателствата около бързот … ⌘ Read more
Започна легендарното състезание „24 часа на Льо Ман”
Румен Петков: Кандев трябва да каже кой го е карал да мълчи
Недостиг на 4,3 млн. работници до 2036 г. в Германия
Прогнозата е значително по-песимистична от предходната оценка на института отпреди две годи … ⌘ Read more
Д-р Росен Гацин, културен антрополог: Край Благоевград и Смолян живеят най-дълго, “сините” зони ще светнат на карта
- Д-р Гацин, защо решихте да съставяте карта на столетниците?
- Културната антропология е наука за човек … ⌘ Read more
Емпайър Стейт Билдинг грейна в цветовете на националния флаг на САЩ в чест на победата над Парагвай
Пред … ⌘ Read more
Калоян Калинин от „София прайд”: Не сме различни от другите, искаме да бъдем обичани
Светият Синод не одобрява и се противопоставя на провеждането на „София Прайд 2026“
Предстоящо огрничаване на имигацията тревожи водещи фармацевтични компании в Швейцария
Будапеща и Киев се споразумяха за етническите унгарци в Украйна
Мадяр заяви във фейсбук, че украинската страна се е съгласила да … ⌘ Read more
Популярният US филмов критик Джийн Шалит почина на 100-годишна възраст
Критикът с мустаците стана известен със своя хумор, интервютата си със знаменитости и ярките с … ⌘ Read more
Проучване: Една трета от германските шофьори слизат от колите заради по-скъпите горива
Днес в Сямън се провежда 18-ият Форум между двата бряга на Тайванския пролив
Хлапета се дивят на бойни самолети и куче, откриващо взривове в Крумово (Снимки)
Десетки хлапета изпълниха музея на авиацията в Крумово, който отвори врати за Деня на бащата. Момчета разглеждаха бойни самолети и хеликоптери, а родители им показваха машинит … ⌘ Read more