Programming Leftovers
-
Ted Unangst ☛ banging errors in go
One of the many problems with programming in go is there’s functions, and the functions are written by people, and the people make mistakes, and the functions return errors, and now you have to check for the errors. This is all very tedious and tiresome. We can’t fix the people who cherish their imperfections as a sign of humanity, but we can change go to pretend the errors aren’t there.
A short experiment to write a tool to bang away the errors. Mostly to poke around and manipulate the AST some more.
-
Godot Engine ☛ Dev snapshot: Godot 4.2 beta 2
After last week's 4.2 beta 1 release, we introduced fixes for a number of bugs reported by the community, which are now ready to test in beta 2.
-
Andy Wingo: requiem for a stringref
Good day, comrades. Today's missive is about strings!
a problem for java
Imagine you want to compile a program to WebAssembly, with the new GC support for WebAssembly.
-
Firefox Nightly: More WebExtensions! Coming to an Android near you soon – These Weeks in Firefox: Issue 147
Highlights
- Extensions process support in Firefox Android is going to ride the Gecko 120 release train (tracked by Bug 1859533). This has been one of the many things blocking full support for WebExtensions on Firefox for Android.
-
Qt ☛ qtpip: a simple tool to get commercial Qt for Python packages [Ed: When they say "commercial" they mean non-free, proprietary, a trap developers would be wiser to avoid]
If you have been following the 6.6 release blog posts, both the general Qt and Qt for Python ones, you might be aware of
qtpip.
-
Phil Eaton ☛ io_uring basics: Writing a file to disk
I started with implementations in Go and ported them to Zig to make sure I had done the Go versions decently. And I got some help from King and other internetters to find some inefficiencies in my code.
This post will walk through my process, getting increasingly efficient (and a little increasingly complex) ways to write an entire file to disk with io_uring, from Go and Zig.
-
Reuven Lerner ☛ I’m banned for life from advertising on Meta. Because I teach Python.
The first friend looked into it, and found that there was nothing to be done. That’s because Meta has a data-retention policy of only 180 days, and because my account was suspended more than one year before I asked people to look into it, all of the evidence is now gone. Which means that there’s no way to reinstate my advertising account.
Now, I’m not a big believer in “there’s nothing to be done,” especially when it comes to companies and software, both of which are created and managed by people. But this friend seemed convinced, so I moved onto a second one. He didn’t get any further. And the third friend? He didn’t seem to make any headway, either.
The bottom line seems to be that Meta’s AI made a mistake, a big one. (You can be sure that I’ll be using this example when I teach courses on machine learning.) The fact that both the original judgment and the appeal were handed by AI is pretty ridiculous.
-
Miguel Grinberg ☛ We Have To Talk About Flask
Flask 3.0 was released on September 30th, 2023, along with a parallel 3.0 release of Werkzeug, its main dependency. That day, the Flask-Login extension, one of the most popular of all Flask extensions, stopped working due to a backwards incompatible change introduced in Werkzeug. It is October 19th when I'm writing this, and Flask-Login remains broken. As a result, any person using my Flask Mega-Tutorial will hit issues, because my tutorial uses Flask-Login. Not only that, every Flask tutorial that features Flask-Login, from every author, in every language, in written or video form, is going to fail for as long as this problem remains. Hard to believe, right?
If this was the first occurrence of something of this nature in the Flask community, I would hope it would serve as a lesson for the Flask maintainers to learn from and avoid in the future. Sadly, this happens pretty much every time there is a major release of Flask, and sometimes minor ones too. Why does this happen? How can it be avoided? In this article I'll try to make an assessment of the current situation and how it can be prevented going forward.
-
Rusty Russell: Covenants: Examining ScriptPubkeys in Bitcoin Script
Covenants are a construction to allow introspection: a transaction output can place conditions on the transaction which spends it (beyond the specific “must provide a valid signature of itself and a particular pubkey”).
My preferred way of doing instrospection is for Bitcoin Script have a way of asking for various parts of the transaction onto the stack (aka
[...]OP_TX
) for direct testing (Fully Complete Covenants, as opposed to using some tx hash, forcing the Script to produce a matching hash to pass (Equality Covenants). In the former case, you do something like: -
Rust Blog ☛ The Rust Programming Language Blog: Announcing the New Rust Project Directors [Ed: Rust is so unstable. Do you want your program, which you deem stable. to be based on such foundations? They all use proprietary GitHub (Microsoft), some hide their coding activity, and proudly adopt "they" for singular. "They" for singular is grammatically incorrect, but it's not about facts, it's about ideology and rebellion against science. The moment you attempt to collaborate with or try to work for someone who flagrantly discards facts is the moment you give up on science and technology, as solid arguments cease to matter.]
We are happy to announce that we have completed the process to elect new Project Directors.