Picture

Name Marco von Ballmoos
Member since
Email [hidden]
Home page https://earthli.com/users/marco
Description

The (only) developer at earthli.com.

Contents

3752 Articles
113 Comments

3 years Ago

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]

Links and Notes for September 22nd, 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.

[1] Emphases are added, unless otherwise noted.
[2] Annotations are only lightly edited and are largely contemporaneous.

Table of Contents

Links and Notes for September 15th, 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.

[1] Emphases are added, unless otherwise noted.
[2] Annotations are only lightly edited and are largely contemporaneous.

Table of Contents

Links and Notes for September 8th, 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.

[1] Emphases are added, unless otherwise noted.
[2] Annotations are only lightly edited and are largely contemporaneous.

Table of Contents

We’ve been here before

Published on in Miscellaneous

The interview The Great Reorganization of Sexuality and Gender by Hugh Ryan (This is Hell!) is quite an interesting discussion, which ranged over some absolutely terrible characterizations of what the concerns of so-called right-wingers are, as well as seemingly obstinately refusing to acknowledge the modern-day use of the word snowflake, instead clinging to a 19th-century definition, as well as completely misdefining the Dunning-Kruger Effect, and misusing “strawman argument” for good measure. Then he uses the phrase... [More]

Capsule Movie Reviews Vol.2023.07

Published on in Movies

These are my notes to remember what I watched and kinda what I thought about it. I’ve recently transferred my reviews to IMDb and made the list of around 1600 ratings publicly available. I’ve included the individual ratings with my notes for each movie. These ratings are not absolutely comparable to each other—I rate the film on how well it suited me for the genre and my mood and. let’s be honest, level of intoxication. YMMV. Also, I make no attempt to avoid spoilers.

Star Trek III: The... [More]

Killing with medical neglect

Published on in Public Policy & Politics

 The article Drug makers have tripled the prices of top Medicare drugs by Beth Mole (Ars Technica) writes,

“Overall, the average lifetime price increase for the top 25 drugs was 226 percent. The highest increases were seen in drugs that have been on the market the longest. For example, drugs that were on the market for under 12 years had an average lifetime price increase of 58 percent, while those on the market for 20 or more years had an average lifetime increase of 592 percent.

These are medications to help people.... [More]

Art is not Content

Published on in Philosophy, Sociology, & Culture

 The always-entertaining Patrick [H] Willem made two excellent videos about the state of filmmaking and art, in general. The first one discusses what people are calling AI films, focusing on the recent spate of so-called Wes Anderson AI remakes.

There’s not a lot of my own, original writing in this article. Instead, I’ve done the service of transcribing what I found to be the pithiest, hardest-hitting parts of Willem’s two rather long videos, which total more than 90 minutes.

A.I. Filmmaking Is Not The Future. It's a Grift. by Patrick (H) Willems (YouTube)

At 27:00,... [More]

Links and Notes for September 1st, 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.

[1] Emphases are added, unless otherwise noted.
[2] Annotations are only lightly edited and are largely contemporaneous.

Table of Contents

The UI is an afterthought, a detail

Published on in Programming

Complexity: Divide and Conquer! by Michel Weststrate on May 7, 2017 (YouTube)

“Can we make our UI dumb enough to make our app usable without it?”

The video demonstrates navigating through a simple e-commerce site. Then, he shows how the app can be driven from the console by calling the APIs directly—upon which the URL and UI all update automatically. That is, the logic is not in the UI.

He then demonstrates that he can drive the web site without a UI by deleting the rendering to React DOM entirely. He can still manipulate the console API to perform the same... [More]

Elite Universities are Hedge Funds

Published on in Public Policy & Politics

The article US Colleges and Universities Are Becoming Giant Exploitation Machines by Daniel Denvir & Dennis M. Hogan (Jacobin) writes,

“[…] there are schools like Yale or Princeton, frankly, that have the latitude such that they could pretty much send people to school for free. But in spite of that, they continue to overwhelmingly enroll wealthy students.

And it’s not merit-based; they’re laundering privilege into credentials. That’s their business.

“They’re going to end up graduating students with more debt who also have... [More]

Lip service is not enough

Published on in Public Policy & Politics

The article Let Me Reiterate the Questions I Asked in My AOC Essay by Freddie de Boer (SubStack) writes

“Ocasio-Cortez is not treated like a legislator, but like an icon, a sacred cow who can’t be criticized where any back-bench fifth-year representative would be for similar behavior. I don’t know what that is, but it’s not progressive.”

 This is a not unusual idolization of a person who is seen as a bulwark against things ostensibly even more evil. But, as listed in concise detail in the linked article, there are... [More]

Sanders 💕 Biden

Published on in Public Policy & Politics

Oh, c’mon, Bernie. Really?

 The article In New Hampshire speech, Bernie Sanders seeks to give Biden “progressive” credentials, comparing him to FDR by Patrick Martin (WSWS) reports on Sanders’s latest disappointment. The article basically provides detail for what it says on the tin.

Specifically, he said this:

“The Democrats, once and for all, must reject the corporate wing of the party and empower those who are prepared to create a grassroots, multi-racial, multi-generational working class party in every state in... [More]”

Links and Notes for August 25th, 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.

[1] Emphases are added, unless otherwise noted.
[2] Annotations are only lightly edited and are largely contemporaneous.

Table of Contents

Links and Notes for August 18th, 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.

[1] Emphases are added, unless otherwise noted.
[2] Annotations are only lightly edited and are largely contemporaneous.

Table of Contents

Mo Gawdat discusses AI

Published on in Technology & Engineering

A co-worker of mine sent me the following video with a strong recommendation. There are parts I liked, and parts I did not. It was a long video. The following are my notes on it. My attitude starts off pretty bad and gradually improves, then goes a bit downhill again.

YouTube

These people are all fools or shysters. The young guy (Stephen Bartlett?) interviewing offers as proof that AI is amazing is that his miniscule mind is already satisfied with it. *applause*

The older guy seems like the kind of... [More]

Robert Edward Grant: King of Gobbledygook

Published on in Miscellaneous

A good friend of mine sent the following video to me, telling me “just lean back, relax, and let it flow over you.” Excellent advice, my friend.

Robert Edward Grant: NEW EVIDENCE! Mysterious Inscriptions & Encodings INSIDE the Pyramids! by Next Level Soul Podcast (YouTube)

The following are some notes and comments I sent to him as I was watching it.

(A) Um, OK. Some interesting stuff, but WHOA. (B) You’re right; just let it flow over you. (C) Terrified that this is how I sound to other people.

“The Great Pyramid is 11/7, which is the base to the height. So 117 and 11.7 squared is 137 and that’s the number of times the... [More]”

On the usefulness of containers like Docker

Published on in Programming

The article Works on most machines by Mark Seemann (Ploeh Blog) argues provocatively that containers are a fallback for poorly written software.

“When you have general-purpose software, though, do you really need containers?”

Well, yes. The point isn’t that you need a container to paper over software that isn’t sufficiently generic: it’s to avoid fixing incompatibilities that have nothing to do with your target deployment systems.

I think the author is thinking too much of highly general-purpose software whereas the... [More]

Sometimes being realistic == being pessimistic

Published on in Science & Nature

The article We can’t afford to be climate doomers by Rebecca Solnit (Guardian) takes “doomers” to task for failing to maintain optimism in the face of overwhelming resistance.

“Stanford engineering professor and renewable energy expert Mark Z Jacobson tweeted the other day, “Given that scientists who study 100% renewable energy systems are unanimous that it can be done why do we hear daily on twitter and everywhere else by those who don’t study such systems that it can’t be done?””

This means nothing. First of... [More]

Promoting a language monoculture

Published on in Philosophy, Sociology, & Culture

The article Are translation apps making the learning of foreign languages obsolete? by John McWhorter (NY Times) discusses the idea of a language monoculture, playing with the idea that, if a language can be translated to any other language, what is the need for learning the target language?

“In Europe, nine out of 10 students study a foreign language. In the United States, only one in five do. Between 1997 and 2008, the number of American middle schools offering foreign languages dropped from 75 percent to 58 percent.... [More]”