Programming Leftovers
-
Logikal Solutions ☛ CrowdStrike - Undeniable Proof - Agile Must Be Banned Globally
By now most of you have heard of the Great CrowdStrike Outage of 2024. Actually using the year in the name is probably making too broad of an assumption that there will be only one. At least $10 billion in worldwide financial damage all due to Agile. This myth that a cesspit of User Stories, TDD, and CI/CD with daily stand-ups is a valid software development methodology, it’s not.
We need global laws banning the use of Agile. At least we need them in the U.S. and E.U. If China, Russia, and Iran want to ruin their countries with Agile more power to them!
Agile – pushing whatever hand polished turd that pooped out the back of the last Sprint onto unsuspecting users globally “to get feedback.” Yes, I’ve written a book on Agile. I’ve even written about Agile’s Mega Failures. There have been so many I have honestly lost track of them. Until we start putting CEOs in prison for these things, they are going to keep happening.
-
Dan Slimmon ☛ Putting a meaningful dent in your error backlog
Of course we often don’t realize how noisy the errors have gotten until things are already well out of hand. After all, we’ve got shit to do. Deadlines to hit. By the time we decide to get serious about error management, a huge, impenetrable, meaningless backlog of errors has already accumulated. I call this stuff slag.
-
Trail of Bits ☛ We wrote the code, and the code won
Because Trail of Bits supports the open-source community and encourages the adoption of post-quantum algorithms, we are contributing our implementation to the RustCrypto project and will maintain it there. However, securely transitioning to post-quantum cryptography will be a many-year, complex process, and we are committed to helping the industry in this transition beyond this library. If your company is thinking about how to most effectively and securely make the PQC transition, talk to our cryptography experts, and we’ll ensure you are secure and ahead of the curve.
-
Modus Create LLC ☛ Let there be types: observable type sharing for GHC Core
In the context of my final year internship at Tweag, I’ve had the opportunity to work on the Glasgow Haskell Compiler (GHC), in an attempt to speed up compile times. GHC is renowned for many things, but compilation speed isn’t one of them. One specific problem exposed in issue #20264 is that in Core, GHC’s intermediate representation, types are systematically inlined, resulting in large type trees having to be traversed and transformed along the pipeline. This blog post aims to explain why this is the case, in which situations it can result in slow compile times and large memory usage, and what we can do about it.
-
Undeadly ☛ Game of Trees 0.102 released!
Version 0.102 of Game of Trees has been released and the port updated.
-
Collabora ☛ A shifty tail about unit testing
After rigorous debugging, a new unit testing framework was added to the backend compiler for NVK. This is a walkthrough of the steps taken to achieve this.
-
Silicon Angle ☛ New report identifies critical vulnerabilities found in open-source tools used in AI
A new report released today by Protect Hey Hi (AI) Inc. has detailed a range of new vulnerabilities found in artificial intelligence systems as the Hey Hi (AI) market and the tools therein continue to expand and grow at a rapid pace.
-
Rlang ☛ Mastering Matrix Concatenation in R: A Guide to rbind() and cbind()
Hello, fellow useRs! Today, we’re going to discuss the art of concatenating matrices in R.
-
Python
-
Generate Python Bindings for C++ code using Shiboken
This will be a guide on how to generate Python bindings for your C++ library using Shiboken. Shiboken is a tool specifically created to build PySide, so it supports Qt code perfectly fine.
The steps described here require the in-progress merge request that adds the necessary code to Extra CMake Modules. I hope that it gets merged soon (I’ll update the post). I’ll use KUnitConversion as an example, because it’s a small library.
-
Juha-Matti Santala ☛ Write more pythonic code with context managers
In Python community, we often talk about writing pythonic code. What that exactly means is up for interpretation but in essence, it’s about writing Python code that takes advantage of Python’s features and language constructs in the best way. Sometimes, it’s used in the context of discussing PEP 8 which is the Python style guide but that’s a rather surface level description.
Long-time Python core developer Raymond Hettinger has a wonderful talk about pythonic code from PyCon US 2015 called Beyond PEP 8 which is highly recommended watching for everyone who writes Python.
Today’s post is about Context Managers, a construct in Python language that makes the code easier to read and understand, making it more pythonic. To quote the documentation: [...]
-
Juha-Matti Santala ☛ Combinatoric iterators from itertools
Alongside collections module, one of my favourite collections of tooling in Python’s standard library live in the itertools module. Today, I’ll discuss the four combinatoric iterators that the module offers and how to use them.
The four iterators are product, permutations, combinations and combinations with replacements. If you’re not much into math and don’t know what they mean, that’s totally fine. Every time I need to use one of them, I need to read through the docs to remember which one I need because they are all very similar but they have significant differences.
All of these four return generators making them memory effective but they grow in size real fast so if be cautious if using them with large iterables or iterables of unknown size.
-
-
Shell/Bash/Zsh/Ksh
-
Adam Young: Metaprogramming in bash
My job requires me to perform operations on multiple machines. These operation can either be against the platform management server (reboot, change firmware options) or via an remote connection to the operating system running on that machine. Here’s how I manage the scripts to simplify my work.
[...]
Typically, I am working with a machine in one of three roles. The first is a build server, responsible for producing new versions of compiled code, packages, and other artifacts that will be part of the code executed. The second is a test server, used by me to test the code. This is typically a physical machine, as we are doing hardware testing, but might be a virtual machine in some circumstances. The third role is a QA machine, owned by someone else, that I am either troubleshooting, or helping with an install. There are a few variations on this theme, but this trio is the norm.
-