7 months Ago
Helpful tip from Teams
Published on in Design
I was looking up something[1] about my account in Microsoft Teams (Teams) the other day.
As I was looking at that, Teams showed me the following tip on the dropdown menu.
Does it look like that? Does it really, Teams?
How could it possibly look like that if you’ve been paying attention at all?
Teams is on all day on my machine. When I log in at 07:00 every day, Teams is active. When I log out around 16:00 on a workday, Teams knows about it.
I work 07:00–16:00 on about 90% of my workdays.... [More]
Some commentators are still MIA
Published on in Public Policy & Politics
A few days back, I wrote Losing the plot completely, describing several previously useful commentators who’d gone completely off the script after October 7th. As of November 3rd, the article Is “Humanitarian Pause” A Real Thing? by Scott H. Greenfield (Simple Justice) reveals the current state of mind for at least one of the authors. It ends with this incoherent and clearly unedited babble.
“The newly-beloved phrase, “humanitarian pause,” seems so ripe for the moment to “do something” (remember the syllogism?) to help the... [More]”
Links and Notes for October 27th, 2023
Published on in Notes
Below are links to articles, highlighted passages[1], and occasional annotations[2] for the week ending on the date in the title, enriching the raw data from Instapaper Likes and Twitter. They are intentionally succinct, else they’d be articles and probably end up in the gigantic backlog of unpublished drafts. YMMV.
Table of Contents
Links and Notes for October 20th, 2023
Published on in Notes
Below are links to articles, highlighted passages[1], and occasional annotations[2] for the week ending on the date in the title, enriching the raw data from Instapaper Likes and Twitter. They are intentionally succinct, else they’d be articles and probably end up in the gigantic backlog of unpublished drafts. YMMV.
Table of Contents
Losing the plot completely
Published on in Public Policy & Politics
The article Hamas Clarifies They Meant To Start The Type Of War Where They Get To Do Whatever They Want And No One Fights Back (Babylon Bee) is just one in a large set of really tone-deaf and unfortunately unsurprisingly one-sided headlines from this supposedly satirical online newspaper. A good satirist would somehow note that that headline may reflect how Hamas currently feels, but also how Israel was acting a few weeks ago.
There are many more irony-free and completely non-self-aware headlines from the... [More]
An office parable
Published on in Philosophy
Suppose you have a problem with a person at work. Your office is right next to theirs. Your own office is nice, but theirs is also nice.
You both have grievances and you’ve kind of tried to get along, but it’s not working, and you’ve managed to win people to your side. The other person has grievances against you, but no-one really believes or acknowledges them. You insist that they’re made-up. People agree not to think too much about it because they like you so much.
Just recently there... [More]
Family emojis cannot be unseen
Published on in Fun
What’s New in Unicode 15.1 & Emoji 15.1 by Keith Broni (Emojipedia)
Am I the only one that thinks bad thoughts when he sees, for example, the third emoji in this list? I know that they think it’s a parent with a child, but does that not look like a gender-neutral blowjob to you? You won’t be able to unsee it, either. In fact, I can’t look at any of the four pictures and see “family”. Look at the second one! That’s two people “sharing”! How does the emoji committee not see this? Or maybe they do! Maybe they’re making... [More]
Fixing a crash blossom
Published on in Miscellaneous
I recently read the headline Vacuum suction-mounted wireless TV zip lines off faulty walls to safety by Scharon Harding (Ars Technica). What an incredible crash blossom. The author used one hyphen but more punctuation would have been better.
How about:
- Original
- Vacuum suction-mounted wireless TV zip lines off faulty walls to safety
- Add punctuation
- Vacuum-suction-mounted, wireless TV zip-lines off faulty walls to safety.
- Remove redundancy
Vacuum-Suction-mounted, wireless TV zip-lines off faulty walls to safety.- Restore phrase... [More]
Performative condemnation
Published on in Philosophy
What is it with performative condemnation? The push for it? Is it a control thing? I think very much that it’s a psychological trick to get the upper hand in an interaction.
If I don’t officially and performatively condemn acts of murder or war crimes, is the assumption that I condone them? Are you kidding me? I have to defend myself against people thinking I’m a monster, by default? And a performative declaration of “I am not a monster” would fix that?
Or would it just put me in a cycle of... [More]
Misplaced priorities
Published on in Quotes
Architecture is about intent
Published on in Programming
The following video is a talk by Robert Martin “Uncle Bob”, one of the graybeards worth listening to. This video from 2011 is wide-ranging and contains a lot of brilliant advice. It’s stuff that we’ve known for a long time now, but every generation of programmers needs to re-learn these things about every 5-10 years. You usually can’t stop people from just reinventing the wheel because who wants to watch videos of or read blog posts written by old dudes, ammirite?
At 10:00, he talks about... [More]
Links and Notes for October 13th, 2023
Published on in Notes
Below are links to articles, highlighted passages[1], and occasional annotations[2] for the week ending on the date in the title, enriching the raw data from Instapaper Likes and Twitter. They are intentionally succinct, else they’d be articles and probably end up in the gigantic backlog of unpublished drafts. YMMV.
Table of Contents
Search algorithms are breaking down everywhere
Published on in Design
I’ve noticed the Apple Music search acting quite wonky over the last couple of years. It seems utterly incapable of finding certain songs, even when you enter the exact title and artist.
I’ve had cases where Apple Music has dozens of albums from that artist, so that I’m almost certain that the song is available. It just will not show it to me. In those cases, I’ve instead searched with DuckDuckGo using the same title and artist to find out the name of the album. With the album name in hand, I... [More]
Links and Notes for October 6th, 2023
Published on in Notes
Below are links to articles, highlighted passages[1], and occasional annotations[2] for the week ending on the date in the title, enriching the raw data from Instapaper Likes and Twitter. They are intentionally succinct, else they’d be articles and probably end up in the gigantic backlog of unpublished drafts. YMMV.
Table of Contents
History doesn’t care about justice
Published on in Quotes
“History has no mercy. There are no laws in it against suffering and cruelty, no internal balance that restores a people much sinned against to their rightful place in the world. Cyclical views of history have always seemed to me flawed for that reason, as if the turning of the screw means that present evil can later be transformed into good. Nonsense. Turning the screw of suffering means more suffering, and not a path to salvation. The most frustrating thing about history, however, is that so... [More]”
8 months Ago
Woefully unqualified “programmers”
Published on in Programming
As I was reading the absolute train wreck of a unit test in Testing with a Lisp (Daily WTF), the song “What the fuck is going on?” popped into my head, like it always does when I see that a programmer not only didn’t understand the assignment, not only doesn’t know how to program, but also doesn’t know that they don’t know how to program.
They are living their best life because they don’t think that “knowing how to program” is required in order to be a programmer. Neither does their boss or team, I guess.... [More]
Raiffeisen PhotoTAN Registration
Published on in Design
A major bank in Switzerland has an MFA that uses PhotoTAN. It took me dozens of attempts over three days to finally be able to register the app.
This isn’t the first time that this has happened. I’d reset my phone in July and I’d had to go through this for a couple of days then. When my partner reset their phone in August, it took days to register. In September, I’ve moved into a new phone and had to set up the app again.
- It often failed to even send an SMS
- 17 times it managed to send an... [More]
Links and Notes for September 29th, 2023
Published on in Notes
Below are links to articles, highlighted passages[1], and occasional annotations[2] for the week ending on the date in the title, enriching the raw data from Instapaper Likes and Twitter. They are intentionally succinct, else they’d be articles and probably end up in the gigantic backlog of unpublished drafts. YMMV.
Table of Contents
Technology-independent software-development courses
Published on in Programming
I was recently asked something like the following question, which I am citing with a few minor edits.
We would like to do a course about SW development with Python, preferably an online course, so that we can start at our own pace.
We don’t want a Python course, but would instead like a course more about SW development. It would be great if it were in Python because we are comfortable with it.
The interesting topics would be:
- object-oriented programming
- functional programming
- design... [More]
To crash or not to crash; that is the question
Published on in Programming
Note: I found this old draft containing my response to a colleague.
I 100% agree with you, in general. I absolutely want to know immediately when an assumption I’ve made does not hold.
But…😁
The degree to which I’m willing to crash depends on whose consistency I’m basing my assumptions on. When I call a method in my code from another method in my code, I’m absolutely going to assert that an argument is not null. I can control that. My IDE will tell me when I might be passing null
. That... [More]
Encodo White Papers Archive
Published on in Programming
This article is a copy of the white papers and process description that I wrote for Encodo Systems while I still worked there. I’ve preserved a copy of it here and in the linked articles.
Through our many years of experience building software, we’ve accumulated methodologies and principles that lead to quality software.
- The experience and know-how we bring to our consulting services also make us excellent partners in development-process consulting.
- We have experience in reviewing existing... [More]
Encodo White Papers: DI, IOC and Containers (2019)
Published on in Programming
Encodo keeps the SOLID principles in mind when designing software.
DI & IOC
We implement the Inversion of Control [I] pattern with the dependency-injection pattern (D) to allow for a large amount of flexibility in how an application is composed. We’ve applied this principle throughout the Quino framework and use it in our products as well.
What does this mean? It means that the product or framework doesn’t make any decisions about which exact components to use. Instead, it indicates the API... [More]
Encodo White Papers: Clean and Safe Code (2019)
Published on in Programming
These are the two core principles that guide how we write code:
- KISS: Keep It Simple, Stupid
- YAGNI: You Ain’t Gonna Need It
KISS
This first principle is a constant reminder to ourselves to avoid the seductive call of cleverness. Most code does not need to be clever. Very occasionally, it is necessary to implement something with real flair, that requires explanation.
The best code, though, requires no explanation. The best code gets its job done in a very boring way, using the same... [More]
Encodo White Papers: Testing as first-class citizen (2019)
Published on in Programming
Tests are code. Writing tests is not a “step”—it is part of writing the code itself. The component is nothing without its tests.
It should be easy to verify any requirement with a test. The tests should tell the story of the requirements.
A developer can test any component in isolation (unit testing) or can test the component in the constellation in which it normally exists (integration testing).
Tests are code
Just so we’ve said it: tests are not a place to use a different coding style... [More]
Encodo White Papers: Document Everything (2017)
Published on in Programming
Good documentation is part of every piece of quality software. What do we mean by “good”, though? Or “documentation”, for that matter? Quality software should be self-explanatory, but don’t be fooled into thinking that you don’t need to write documentation.
Actors & Use Cases
Documentation has an audience. Before writing anything, consider who you’re writing it for. What are the possible audiences?
Evaluators
Evaluators are interested in what your software does, how it interacts with other... [More]
Encodo White Papers: Continuous Integration and Delivery (2017)
Published on in Programming
An important part of the software process is the final step: delivery.
If you can’t get your software into your customer’s hands, then what’s the point of writing it at all?
Goals
There are several at-times cross-cutting goals. In descending order of importance, they are:
- Improve reliability and quality of releases
- Improve efficiency of the release process
- Improve testing feedback loop
- Improve efficiency of the development process
Definition
There are several aspects to continuous... [More]
Encodo White Papers: Design by Contract (2006)
Published on in Programming
Design by Contract is a software engineering practice in which software requirements and promises − the “Contract” − are explicitly written into the code. The code is, at the same time, better documented, more reliable and easier to test against. Encodo uses this technique to ensure software quality.
A brief overview of contracts
A software contract is composed of several components: preconditions, postconditions and invariants. Preconditions are what a component requires of a client, whereas... [More]
Encodo White Papers: Code Reviews (2017)
Published on in Programming
A healthy and active review culture is essential for any team interested in building quality software. At Encodo, we’ve been doing reviews for a long time. They’ve become an essential part of everything we do:
- Analysis
- Estimates
- Design
- Architecture
- Coding
- Style
- Performance
- Coverage
- Security
- Deployment
- And more…
Definition
What we mean by review is not a formal process at all. It is simply that you prepare work you’ve done for an informal presentation to a team member. Explaining what... [More]
Encodo White Papers: Component-based Design (2006)
Published on in Programming
This article is part of an archive of Encodo White Papers.
What is the best approach when designing a new application, be it a small tool or an end-user application?
Build a Prototype?
Many developers jump straight into a prototype, in order to get a feel for how the application will work. While prototypes are good for demonstrations, they are dangerous: in projects with tight time or budget constraints, the temptation to simply “build out” the prototype becomes irresistible. This leads to... [More]
Encodo White Papers: Test-driven Development (2006)
Published on in Programming
Most people in the software industry have heard of test-driven development — it has become a buzzword with several possible meanings.
The Problem with Unit Testing
One of the more negative associations is the notion of unit testing. Unit testing traditionally involves writing a test for each and every routine in a unit or class, to ensure that it does what it claims. This practice has, of late, declined in popularity — mostly because of the sheer mindlessness of maintaining complete... [More]