Programming Leftovers
-
Program Picker With Zenity
Zenity is a small utility program for building simple graphical widgets and menus. I've never had use for it before, but a few days ago I ran into a situation that it just so happened to be perfect for.
-
MQTT and Raspberry PI Pico W: Start with Mosquitto (MicroPython)
Raspberry PI Pico W brings connectivity to your projects. Mosquitto is one of the most reliable, simple and fast communications for IoT projects.
-
The Python on hardware news for this week!
-
Finding people's use of /usr/bin/python with the Linux audit framework
Our Ubuntu systems have had a /usr/bin/python that was Python 2 for more or less as long as we've had Ubuntu systems, which by now is more than fifteen years. Over that time, our users have written a certain amount of Python 2 programs that use '#!/usr/bin/python' to get Python 2, because that's been the standard way to do it for a relatively long time. However, Python 2 is going away on Ubuntu since it has on Debian, and as part of that we're probably going to stop having a /usr/bin/python in our future 24.04 LTS servers. It would be nice to find out which of our users are still using '/usr/bin/python' so that we can contact them in advance and get them either to move their programs to Python 3 or at the very least start using '#!/usr/bin/python2'. One way to do this is to use the Linux kernel's audit framework. Or, really, two ways, the broad general way and the narrow specific way. Unfortunately neither of these are ideal.
-
Rebuild mozc with Mozc UT Dictionary - ひとりしずかに。
When rebuilding mozc with Mozc UT Dictionary, it may be better to build in docker container because you don't want install unused IM development packages.
-
Git Change Remote URL to SSH (from HTTPS) - TecAdmin
Git is a distributed version control system that is widely used for tracking changes in source code during software development. It allows developers to collaborate on projects and keep track of their changes without the need for a central repository.
One way to access a Git repository is via SSH (Secure Shell). SSH is a network protocol that provides a secure way to communicate with a remote computer over an unsecured network. Using SSH can be more secure and efficient than other methods, such as HTTP or HTTPS, for accessing Git repositories.
-
Qt 6.4.2 Released
I am happy to announce that we have released Qt 6.4.2 today.
As a patch release, Qt 6.4.2 does not introduce any new features but contains ~ 150 bug fixes, security updates, and other improvements to the top of the Qt 6.4.1 release. See more information about the most important changes and bug fixes from Qt 6.4.2 release note.
-
Why Modeling Finds Bugs (Without Model-Checking)
The main impetus for these changes is that I’ve left Twitter. While it will assuredly improve my mental well-being, it’s not a great change for my professional prospects. I’ve leaving behind a large audience, a reliable source of client connections, and a medium to share unrefined software thoughts.
-
State Machines III: Type States
I've been writing a bit about state machines recently. In my last post I explained how we could potentially leverage arbitrary self-types and anonymous enums to support type-level state machines as a first-class construct. Which is cool, but it had some readers asking: "How does this improve on the existing type state pattern?" Which is fair!
Well, to start off by answering that question: it's only after authoring that post that I learned that "type states" have a name! I was familiar with the pattern, but I didn't realize it had a name. If you'd like to learn more about them, Will Chrichton gave an excellent presentation about API design which also covers type states.
-
26 programming languages in 25 days, Part 1: Strategy, tactics and logistics
In the end:
on 12 days, I had to learn a new programming language from scratch, and then use it to solve that day’s puzzle;
on 4 days, I used languages where I had very little experience; and
on the other 9 days, I used languages I had known well at some point.
Ultimately, I used 26 languages, because I combined two on Day 21 (sed and bc), turning the experience into a rapid-fire “breadth-first search” of programming language space.
-
26 programming languages in 25 days, Part 2: Reflections on language design
Here are my two high-level reflections from the experience:
Good design in the first part of each puzzle – especially more functional techniques and abstractions – tended to make the second part easier. So, in general, functional languages seemed to have the advantage in the puzzles.
Using better algorithms and data structures was far more important than having a “faster” programming language. There was never a time where rewriting in another language felt like the right way to get better performance.
Read on for more specific reflections on language design.
-
On OKRs
I'm solidly in favour of a planning architecture of some kind for any team-size collection of people greater than about 5. (Hell, arguably above 2, but let’s keep overheads down.)
I’ve had the opportunity to try OKRs across a number of teams and companies, and I’ve found them useful overall. Those of us who’ve been in large companies or planning-focused small companies will have encountered a number of approaches to planning before. OKRs take their place amongst this number, I think; neither clearly the best (but absolutely not the worst), they are great for certain kinds of things but not for others.
Let me be more precise.
-
A Programming Language DataBase - 2022 recap and roadmap for 2023
2022 was a breakout year for a Programming Language DataBase (PLDB). We are now used by over ten thousand people in a slow week and probably were used by over a million people on the year (I can't be too exact since our stuff is public domain and we don't do much tracking). Some of the world's top software people got in touch with us and we now provide analysis on how to make their companies' languages better. Not bad for a research effort started by a kid from Brockton without a PhD! I am 100% convinced that someone can (and will) revolutionize research in any and every domain simply by copying our tech and creating a high-quality public domain CSV file for their domain.
-
A confusing lifetime error related to Rust's lifetime elision
Earlier this week, I ran into a confusing situation with lifetimes and the borrow checker while working on my Lox interpreter. It took me a little while to figure out, and it's an instructive situation.
Here's a reduced-down version of what I was working on. It's an interpreter, so there is a scanner which produces tokens. Ideally these tokens are references back into the underlying original string so that you can avoid any more memory allocation.
-
6 tips for building an effective DevOps culture
Why would you want to build a DevOps culture? There are many benefits to the streamlined collaboration of the development and operations teams. A major goal is efficiency: Increasing the speed of new software deployments and reducing idle time for workers. Fostering trust between colleagues can improve employee satisfaction, produce new innovations, and positively impact profitability.
DevOps is a broad philosophy with a range of interpretations. In other words, you can visit 40 companies and find 40,000 different ideas about using DevOps effectively in the workplace. This diversity of opinion is actually a good thing–so many perspectives are useful for building stronger teams. This guide will look at the top tips for encouraging better collaboration between colleagues within a DevOps culture.
Each section offers a different aspect of DevOps culture and looks at ways to introduce it into your workforce.
-
Boston students win 2022 NASA Space Apps global championship
-
Quick Start: Pico W with WipperSnapper [Ed: New guide]
-
This Week In Rust: This Week in Rust 476
No calls for participation this week. Keep an eye out for more places to contribute next week!