Searching We Love Privacy Club

Twts matching #article
Sort by: Newest, Oldest, Most Relevant
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 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.

⤋ 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

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

⤋ 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.

⤋ Read More

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

⤋ Read More
In-reply-to » @lyse Besides, have a look at https://movq.de/v/cf0903ebc3/numb.png again: When it goes from item 9 to item 10, the indentation of the text (after the number) changes. Pretty ugly. In other words, a table of contents should be a table, not a list like it is at the moment. And that would require me to write my own extension for python-markdown … Probably not worth it.

@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/

⤋ Read More
In-reply-to » Numbered headings in blog posts, yay or nay?

@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.

⤋ Read More

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

⤋ Read More
In-reply-to » @lyse Oh wow, we’re talking about such a detailed level. 🤔

@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.

⤋ Read More

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

⤋ Read More
In-reply-to » Oh boy, I absolutely hate this stupid trend of not writing changelogs anymore! Why the fuck would one seriously consider it to be a viable option to just let some shitty bot spew all merge requests on a goddamn GitHub release?! First of all, these merge request titles suck balls. The order of the changes in this "changelog" is completely random (well, probably merge time, which is as useless as the dick on the Pope). They are not grouped by anything at all. Additions, changes, removals, deprecations, etc. randomly mixed up in one giant list. And then "Add feature X", seventeen kilometers further down "Revert 'Add feature X'". Fuck you! Don't include this shit in the first place!

@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

⤋ Read More

57-годишен загина при катастрофа на пътя между Гоце Делчев и село Долно Дряново

Image

57-годишен мъж загина при катастрофа на пътя между Гоце Делчев и село Долно Дряново.
Инцидентът е станал малко след 18.00 часа. 57-годишен мъж е управлявал лек автомобил, но поради здравословен проблем е загубил контрол над превозното средство, навлязъл е в лентата за насрещно движение и се е … ⌘ Read more

⤋ Read More

Швейцария чака подвизи на световното от Жоан Мазамби - сина на африканските “Ромео и Жулиета”

Image

Бъдещето на швейцарския национален отбор е обект на скептицизъм напоследък. Твърди се, че ще мине време, преди от почвата, която е дала Джердан Шакири, Гранит Джака и Ян Зомер (само последният беше включен в състава за това световно), да покълнат нови таланти.
Ето защо … ⌘ Read more

⤋ Read More

Намериха изчезналия лекоатлет Живко Виденов

Image

Лекоатлетът Живко Виденов е бил намерен и се намира в добро състояние. Това са съобщили близките на легендарния лекоатлет на председателя на Федерацията по лека атлетика Илиян Пищиков, каза за “24 часа” Пищиков.
По-рано днес сестрата на Виденов - Диана Тодорова, написа във фейсбук профила си, че брат й е в неизвестност от четвъртък ⌘ Read more

⤋ Read More

Монтираха соларна пейка за зареждане на телефони в центъра на Чипровци

Image

Община Чипровци монтира соларна пейка до новото спортно игрище в центъра на града, съобщи във фейсбук кметът на Чипровци Пламен Петков, информира БТА.
Пейката дава възможност за зареждане на мобилни телефони от нея.
„С тази придобивка добавяме нов модерен щрих в сърцето на града ни. Елате, тествайте ⌘ Read more

⤋ Read More

Дара пее на “София прайд” (Видео, снимки)

Image

На концерта, част от „София Прайд 2026”, пя победителката от “Евровизия” 2026 Дара.
Дара изпя хита си “Бягаш ли от мен” на сцената в Княжеската градина.
В концерта участва и певицата Мила Роберт.
Събитието започна в 14 часа и ще продължи до 21 часа. Под мотото “Различно си приличаме”, тазгодишната кампания на “София прайд” акцентира върху ⌘ Read more

⤋ Read More

Константин Проданов: Още в деня, в който земеделци се оплакаха, че веригите ги натискат, се задействахме

Image

Още в деня, в който се получи сигнал от земеделски производители, че търговските вериги ги притискат да намалят цените, за да се вместят в „Кошницата с грижа”, ние се задействахме. И премиерът, и министърът на икономиката се задействаха, а междув … ⌘ Read more

⤋ Read More

Катастрофа спря движението по пътя Казанлък - Габрово край град Шипка

Image

Ограничeно е движението по път I-5 Казанлък - Габрово в района на гр. Шипка /при км 183/ поради ПТП, съобщиха от АПИ.
Трафикът се пренасочва по обходен маршрут през гр. Шипка. Шофьорите да се движат с повишено внимание и съобразена скорост. Преминаването се регулира от “Пътна ⌘ Read more

⤋ Read More

Иван Христанов: Горските първи разкриха нарушенията в Баба Алино още през 2023 г.

Image

Първата проверка на Регионалната дирекция по горите не е от март 2026 г. Тя е извършена на 24 октомври 2023 година. Тя е проведена съвместно с РИОСВ - Варна и Изпълнителната агенция по горите, която е централното управление на Регионалната дирекция по горите. Това заяви пред NOVA NEWS бившия … ⌘ Read more

⤋ Read More

Преизбраха Виктор Орбан за лидер на унгарската партия ФИДЕС

Image

Бившият унгарски премиер Виктор Орбан днес бе преизбран за председател на ФИДЕС по време на тридесет и втория конгрес на партията в Будапеща, предаде унгарската новинарска агенция МТИ, съобщи БТА.
Орбан, който бе единственият кандидат, бе избран от делегатите за мандат от една година по време на тайно гласуване ⌘ Read more

⤋ Read More

Княгиня Калина, облечена с цветовете на българското знаме, е на “Шествие за семейството” (Снимки)

Image

Княгиня Калина и нейният съпруг Китин Муньос подкрепиха “Шествие за семейството”.
Калина е облечена в цветовете на българския трибагреник - бяло, зелено, червено. Заедно с мъжа ѝ бяха на вечерня с молебен за семейството отслужена от Негово Светейшеств … ⌘ Read more

⤋ Read More

Размерът няма значение - осемте “джуджета” на световното

Image

170-сантиметровият Лионел Меси доказа, че ниският ръст не е бил пречка да стане велик футболист. Затова ви представям осемте най-ниски играчи в отборите на световното първенство в Канада, САЩ и Мексико.
Сесар Янис (Панама) - 160 см
Най-ниският играч е дясно крило. Със сигурност няма да е титуляр.
Звездният му миг бе на Копа Америка през 2024 … ⌘ Read more

⤋ Read More

Намериха труп край базата на Иран на световното

Image

Тялото на неидентифициран мъж беше намерено в кола близо до националния отбор по футбол на Иран в Тихуана, Мексико, съобщи Sport.es.
Автомобилът е бил на паркинг на супермаркет срещу тренировъчната база на отбора.
Прокуратурата на Тихуана отбеляза, че тялото на мъжа е било увито в черна торба и поставено в багажника ⌘ Read more

⤋ Read More

Проф. Константинов: Според проучванията до момента, Йотова ще стигне до балотаж

Image

Според проучванията до момента, Илияна Йотова ще стигне до балотаж. Подкрепата от страна на “Прогресивна България” за нея е абсолютно необходима. Ако я няма, това ще се зачете като предателство от обществото. Тя се държи лоялно към бившия си партньор и настоящ премиер Румен Радев. Това заяви п … ⌘ Read more

⤋ Read More

Вицешампионът “Нефтохимик” взе нов разпределител

Image

Владимир Станков е новият разпределител на вицешампиона във волейбола „Нефтохимик”. 30-годишният бивш национал идва от „Локомотив Авиа” (Пловдив), а преди това е играл за ЦСКА и „Левски”. През изминалия сезон на тази позиция в Бургас бяха Дмитро Долгополов и Любослав Телкийски.
От състава на вицешампионите и носители на купата на България остават ⌘ Read more

⤋ Read More

Ердоган обяви инвестиции за $10 млрд. в AI

Image

Турският президент Реджеп Тайип Ердоган обяви днес нов план за действие в сферата на изкуствения интелект, съобщава Анадолската агенция.
Съгласно плана Турция ще мобилизира най-малко 10 милиарда долара, предимно от частния сектор, за инвестиции в центрове за данни, облачни услуги и инфраструктура за изкуствен интелект ⌘ Read more

⤋ Read More

Зукърбърг признава за грешки в подхода на „Мета“ към AI

Image

Главният изпълнителен директор на „Мета“ (Meta) Марк Зукърбърг е признал пред служителите си, че компанията е допуснала грешки при мащабното пренасочване на персонал и ресурси към инициативите в областта на изкуствения интелект.
Вътрешно писмо, с което Ройтерс се е запознала, показва, че Зукърбърг е коментирал предизвикателствата около бързот … ⌘ Read more

⤋ Read More

Започна легендарното състезание „24 часа на Льо Ман”

Image

Легендарното състезание „24 часа на Льо Ман” отново прикова вниманието на милиони фенове по света с грандиозното откриване, изпълнено с ревящи двигатели и зрелищна атмосфера. През 2026 година френската класика отбелязва своето 94-о издание, а градът Льо Ман за пореден път се превърна в световна столица на автомобилния спорт ⌘ Read more

⤋ Read More

Румен Петков: Кандев трябва да каже кой го е карал да мълчи

Image

„Не бих правил пряк паралел между настоящата ситуация и събитията отпреди 21 години, когато бях министър на вътрешните работи и главен секретар беше Бойко Борисов. На такава професионална длъжност не приляга по три часа на ден да си в TikTok и Facebook. Когато човек обърка сградата на МВР със сцената на Народния театър ⌘ Read more

⤋ Read More

Недостиг на 4,3 млн. работници до 2036 г. в Германия

Image

Германия може да се изправи пред недостиг от около 4,3 милиона работници до 2036 г. заради застаряването на населението и по-слабата имиграция, показва нов анализ на Института за германска икономика (IW), цитиран от вестник „Райнише пост“, съобщи БТА.
Прогнозата е значително по-песимистична от предходната оценка на института отпреди две годи … ⌘ Read more

⤋ Read More

Д-р Росен Гацин, културен антрополог: Край Благоевград и Смолян живеят най-дълго, “сините” зони ще светнат на карта

Image

Първият ми контакт със столетници беше, когато бях първи курс студент, оттогава се чувствам като крадец на спомени
- Д-р Гацин, защо решихте да съставяте карта на столетниците?
- Културната антропология е наука за човек … ⌘ Read more

⤋ Read More

Емпайър Стейт Билдинг грейна в цветовете на националния флаг на САЩ в чест на победата над Парагвай

Image

След победата на националния отбор на САЩ над Парагвай в първия мач от груповата фаза на световното първенство (4:1) прочутият небостъргач Емпайър Стейт Билдинг в Ню Йорк беше осветен в цветовете на националното знаме на един от домакините на мондиала.
Пред … ⌘ Read more

⤋ Read More

Калоян Калинин от „София прайд”: Не сме различни от другите, искаме да бъдем обичани

Image

“София прайд“ е празник, но и протест, защото продължаваме да доказваме, че не сме различни от другите, всички сме еднакви в едно – искаме да бъдем обичани, приемани, свободни и част от общество, което не ни съди, каза Калоян Калинин от сдружение „София прайд“ и част от фондация „Пог … ⌘ Read more

⤋ Read More

Светият Синод не одобрява и се противопоставя на провеждането на „София Прайд 2026“

Image

Светият Синод не одобрява и се противопоставя на провеждането на „София Прайд 2026“ и изразява своето несъгласие с идеите и посланията, които се популяризират чрез това събитие, се казва в изявление, публикувано в официалния сайт на Българската православна църква – Българска патриаршия … ⌘ Read more

⤋ Read More

Предстоящо огрничаване на имигацията тревожи водещи фармацевтични компании в Швейцария

Image

Водещите фармацевтични компании в Швейцария и местните власти в Базел предупредиха, че предстоящият референдум за ограничаване на населението на страната може да застраши икономическия растеж, достъпа до квалифицирани кадри и конкурентоспособността на един от най-важните и … ⌘ Read more

⤋ Read More

Будапеща и Киев се споразумяха за етническите унгарци в Украйна

Image

Унгарският премиер Петер Мадяр заяви, че Будапеща и Киев официално са сключили споразумение, свързано с образователните, културни и езикови права на унгарците в граничната украинска Закарпатска област, предаде унгарската новинарска агенция МТИ, съобщи БТА
Мадяр заяви във фейсбук, че украинската страна се е съгласила да … ⌘ Read more

⤋ Read More

Популярният US филмов критик Джийн Шалит почина на 100-годишна възраст

Image

Известният с остроумните си коментари ветеран сред американските филмови критици Джийн Шалит почина на 100-годишна възраст, потвърди семейството му пред телевизия Ен Би Си, цитирана от Би Би Си и Асошиейтед прес.
Критикът с мустаците стана известен със своя хумор, интервютата си със знаменитости и ярките с … ⌘ Read more

⤋ Read More

Проучване: Една трета от германските шофьори слизат от колите заради по-скъпите горива

Image

Почти една трета от шофьорите в Германия използват автомобилите си по-рядко заради високите цени на горивата вследствие на конфликта между Иран и САЩ, показва проучване на „Тиймбанк“ (Teambank), цитирано от ДПА, съобщи БТА.  Данните показват, че 31 на сто от анкетираните ост … ⌘ Read more

⤋ Read More

Днес в Сямън се провежда 18-ият Форум между двата бряга на Тайванския пролив

Image

На 13 юни в Сямън, провинция Фудзиен, се провежда 18-ият Форум между двата бряга на Тайванския пролив. Тази година форумът продължава темата „Разширяване на гражданските обмени, задълбочаване на интеграцията и развитието” и ще включва поредица от 58 събития в четири основни направления: основен … ⌘ Read more

⤋ Read More

Хлапета се дивят на бойни самолети и куче, откриващо взривове в Крумово (Снимки)

Image

Каква е максималната скорост на изтребителите, на каква височина летят хеликоптерите, питаха децата в Деня на бащата
Десетки хлапета изпълниха музея на авиацията в Крумово, който отвори врати за Деня на бащата. Момчета разглеждаха бойни самолети и хеликоптери, а родители им показваха машинит … ⌘ Read more

⤋ Read More