Programming Leftovers
-
Low Code Software Development Is A Lie
Perhaps I'm getting a bit too old and loose lipped for my own good, but the truth is that creating software for other people is exceedingly difficult. Contrary to the opinions of non-practitioners (aka non-coders), this difficulty is not the fault of coding languages, tools and paradigms. It is actually the result of clients and developers not taking the time to understand the root causes of the problems they want to solve and not designing a solution around the conclusions you'd draw from that process.
-
Funny Programming Pictures part XXIX
Doofenshmirtz, Excel, & ChatGPT. Oh, my.
-
Interfaces are not free in Go
Let us illustrate. Sometimes we like to ‘iterate’ through a set of values… we often call the software implementation of this concept an iterator. You can specify an iterator as an interface in Go… and once you have that, you can define function like the a function to count the number of elements: [...]
-
They’re Selling Nudes of Imaginary Women on Reddit — and It’s Working
“For those who aren’t aware, I’m going to kill your fantasy,” the comment reads. “This is literally an AI creation, if you’ve worked with AI image models and making your own long enough, you can 10000% tell. Sorry to ruin the surprise, I guess.”
Claudia is, indeed, an AI-generated creation, who has posted her (AI-generated) lewd photos on other subreddits, including r/normalnudes and r/amihot. She’s the brainchild of two computer science students who tell Rolling Stone they essentially made up the account as a joke, after coming across a post on Reddit from a guy who made $500 catfishing users with photos of real women. They made about $100 selling her nudes until other redditors called out the account, though they continue to post lewds on other subreddits.
-
The world is on fire, but not because of C23
The premise seems to be that, since undefined behaviour is bad, any new way of invoking undefined behaviour is also bad. While it’s true that undefined behaviour can cause huge problems, and that this has been a sore point with C for some time, the complaint here is fallacious: the whole point of this particular annotation is to allow the programmer to specify their intent that a certain path be unreachable, as opposed to the more problematic scenario where a compiler determines code is unreachable because a necessarily-preceding (“dominating”) instruction would necessarily have undefined behaviour. In other words it better allows the compiler to distinguish between cases where the programmer has made particular assumptions versus when they have unwittingly invoked undefined behaviour in certain conditions. This is spelled out in the proposal for the feature: [...]
-
Google Assured OSS
Live the "pushing left on security" mantra to the fullest and partner with maintainers and compensate them for their efforts. Not partnering with maintainers leaves many actual end-to-end security practices on the table that could get delivered to all open source consumers.
-
Two types of software engineers
Here's something I've been kicking around in my head for a few weeks, a tiny theory I have of how people think about software engineering.
According to my theory, there are two types of software engineers:
Type 1, when presented with a problem, thinks: "easy, people can just do X."
Type 2, when presented with the same problem, thinks: "very hard, because it requires people to do X."
-
Numbers To Know For Managing (Software Teams)
Learning how to manage is a long race - it takes many years and each lap offers new learnings. Along the way, anchors emerge that can help orient a manager when a number of other variables are in flux.
-
Quickly formatting a stack of commits
A certain category of developer uses Git with a “patch stack” workflow, in which they accumulate a sequence of small, individually-reviewable commits that together implement a large change. In these cases, it’s oftentimes useful to run linters or formatters on each commit in the stack and apply the results. However, this can be tedious, and a naive approach can cause needless merge conflicts. (One workaround is to run formatters on each commit in the stack backwards.)
git-branchless’s git test command offers a solution to quickly run formatters, etc., on an entire stack of commits without causing merge conflicts. Additionally, it can be performed in parallel, and it caches results so that reformats of the same commits are skipped. You can see the announcement post or the documentation for git test.
-
Making most of Java: Features that you should use as a Java developer
Java is a popular programming language used for developing a wide range of applications. From simple command-line programs to enterprise-level applications, Java is widely used for its simplicity, reliability, and security. This blog post will cover 12 Java programming features with examples that will help you write more efficient and scalable code.