8 years Ago

Breaking Changes in C#

Published by marco on in Programming

Due to the nature of the language, there are some API changes that almost inevitably lead to breaking changes in C#.

Change constructor parameters

While you can easily make another constructor, marking the old one(s) as obsolete, if you use an IOC that allows only a single public constructor, you’re forced to either

  • remove the obsolete constructor or
  • mark the obsolete constructor as protected.

In either case, the user has a compile error.

Virtual methods/Interfaces

There are several... [More]

Version numbers in .NET Projects

Published by marco on in Programming

Any software product should have a version number. This article will answer the following questions about how Encodo works with them.

  • How do we choose a version number?
  • What parts does a version number have?
  • What do these parts mean?
  • How do different stakeholders interpret the number?
  • What conventions exist for choosing numbers?
  • Who chooses and sets these parts?

Stakeholders

In decreasing order of expected expertise,

  • Developers: Writes the software; may *change* version numbers
  • Testers:... [More]

v6.0: .NET Standard & Authentication

Published by marco on in Programming

Note: this article was originally published at Encodo.com at the end of October, 2018.


The summary below describes major new features, items of note and breaking changes.

The links above require a login.

Overview

At long last, Quino enters the world of .NET Standard and .NET Core. Libraries target .NET Standard 2.0, which means they can all be used with any .NET runtime... [More]

Learning Quino: a roadmap for documentation and tutorials

Published by marco on in Programming

Note: this article was originally published at Encodo.com in July, 2018.


In recent articles, we outlined a roadmap to .NET Standard and .NET Core and a roadmap for deployment and debugging. These two roadmaps taken together illustrate our plans to extend as much of Quino as possible to other platforms (.NET Standard/Core) and to make development with Quino as convenient as possible (getting/upgrading/debugging).

To round it off, we’ve made good progress on another vital piece of any... [More]

Delivering Quino: a roadmap for deployment

Published by marco on in Programming

Note: this article was originally published at Encodo.com in July, 2018.


In a recent article, we outlined a roadmap to .NET Standard and .NET Core. We’ve made really good progress on that front: we have a branch of Quino-Standard that targets .NET Standard for class libraries and .NET Core for utilities and tests. So far, we’ve smoke-tested these packages with Quino-WebApi. Our next steps there are to convert Quino-WebApi to .NET Standard and .NET Core as well. We’ll let you know when it’s... [More]

Removing unwanted references to .NET 4.6.1 from web applications

Published by marco on in Programming

Note: this article was originally published at Encodo.com in July, 2018.


The title is a bit specific for this blog post, but that’s the gist of it: we ended up with a bunch of references to an in-between version of .NET (4.6.1) that was falsely advertising itself as a more optimal candidate for satisfying 4.6.2 dependencies. This is a known issue; there are several links to MS GitHub issues below.

In this blog, I will discuss direct vs. transient dependencies as well as internal vs. runtime... [More]

Quino’s Roadmap to .NET Standard and .NET Core

Published by marco on in Programming

Note: this article was originally published at Encodo.com in May, 2018.


With Quino 5, we’ve gotten to a pretty good place organizationally. Dependencies are well-separated into projects—and there are almost 150 of them.

We can use code-coverage, solution-wide-analysis and so on without a problem. TeamCity runs the ~10,000 tests quickly enough to provide feedback in a reasonable time. The tests run even more quickly on our desktops. It’s a pretty comfortable and efficient experience,... [More]

Docker for Windows and Hyper-V

Published by marco on in Tips & Tricks

As it stands, Docker for Windows still requires Hyper-V to be enabled on the host machine. If you’ve been around long enough, you may still believe (falsely, it turns out) that Hyper-V doesn’t work with hyper-threading.

The problem with Hyper-V was apparently never that it disabled hyper-threading but that it led to sub-optimal cache-usage on older chips (single-core). Newer chips have many more cores and much larger caches, so the cache-poisoning issue from 2005 is no longer a problem.
... [More]

Repairing Windows Updates that refuse to install

Published by marco on in Tips & Tricks

 Updates won't install Windows Defender not runningFor quite some time now (months?), my Windows 10 installation has had a problem/corruption in its Update Database that prevented it from applying some updates.

At first, it was just a definition update for Windows Defender, which is bad enough. However, a recent update to Windows Defender itself could not be applied and this conflict prevented Windows from even starting Windows Defender Antivirus.

That’s not great.

Finally: A Solution

Digging around online in this problem area is... [More]

Convert Markdown to earthli format

Published by marco on in Programming

The earthli blogging format uses HTML-like formatting, described in the lengthy manual (with examples). However, Encodo’s blogging back-end now uses Umbraco, with Markdown for content. I used to be able to cross-post with ease, by copy/pasting. Now, I need to convert the content from Markdown to earthli formatting.

The following steps suffice to convert any article:

  1. If there are attached media (e.g. graphics), save those locally
  2. Create a new earthli article with the same title as the source... [More]

Syncing Contacts with the Apple iCloud

Published by marco on in Tips & Tricks

too long; didn’t read: Back up with Time Machine before syncing your contacts via iCloud. If iCloud wipes out your contacts, you can restore the ~/Library/Application Support/AddressBook/ folder to get them back.

I regularly use two MacOS devices and one iOS device. Considering who else already has my contacts, I figure it was time, for convenience’s sake, to use Apple’s iCloud to sync my contacts across the three devices.

I obviously not writing this article to inform the world that... [More]

Why so angry?

Published by marco on in Quotes

“Rage is by no means an automatic reaction to misery and suffering as such. Only where there is reason to suspect that conditions could be changed, and are not does, rage arise.”
Hannah Arendt

The True Self

Published by marco on in Quotes

“At sea, a fellow comes out,”
Herman Melville

Capsule Movie Reviews Vol.2019.1

Published by marco 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 almost 1200 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.

36.15 code Père Noël... [More]

Compiler Pessimism

Published by marco on in Programming

“In practice, nearly everything you write is potentially dependent upon the order of evaluation, but in practice it isn’t because you are not a nincompoop.”

He completes the thought with “[b]ut the compiler doesn’t know that. The compiler must adhere to the letter of the language standard, because it has to compile insane code as well as sane code.”

Occupy vs. Burning Man

Published by marco on in Philosophy, Sociology, & Culture

Chuck Palahniuk on Joe Rogan says that there was only one Occupy because it wasn’t any fun. Burning Man, on the other hand, has been going on for 30 years and is bigger and better every year.

This is an insipid analysis of the two events. Occupy is about a revolution, against the corporate dominance. Burning Man is about subsuming revolutionary fervor in a corporate way. Tickets cost $200-$1200.

At least Joe Rogan pushed back against that.

Occupy never got a chance because it was squashed as... [More]

Skynet is the good outcome

Published by marco on in Technology & Engineering

Will Artificial Intelligence take over the world? Only if we let it, I think.

And we’re almost certainly going to let it.

Our habit seems to be to capitulate to any form of power that dangles a short-term bauble of convenience before our greedy, beady eyes, even if it always seems to be just out of our grubby reach.

AI is dangerous less for what it is capable of doing now and more for how much power we concede it even when it’s stupefyingly shallow. We’ve given up before the battle has even... [More]

Because of course they do

Published by marco on in Public Policy & Politics

I’m not even going to do more than cite the article US Intelligence thinks Russia may have microwaved US embassies in Cuba, China by Sean Gallagher (Ars Technica).

I’m honestly not sure how anyone with an ounce of journalistic self-respect can write an article like this non-ironically.

I wrote in the title, “because of course they do”. I’m referring to the “analysts” who—after nearly a year—have decided that the Russians are to blame.

It is here that we should all become more adept at both thought experiments and... [More]

Poisonous Hyper-capitalism

Published by marco on in Technology & Engineering

From Kai-Fu Lee’s new book says Artificial Intelligence will be Google vs China and will kill half the world’s jobs by Robert X. Cringely

“And I find it difficult to see China as being any more of a development crucible than is Sand Hill Road, where startups have even less time to succeed and therefore more pressure to evolve. Explain to me how this is incorrect, because the numbers are published and are real. In comparison to other adolescent startup cultures, yes China is and will be successful and they are... [More]”

A Holier-than-thou Bullshit Factory

Published by marco on in Public Policy & Politics

Out-of-date and chock-full of devil’s advocacy.

I’ve listened to some coverage of the Kavanaugh hearings on The Intercept. This includes an unusually giddy and convinced Jeremy Scahill and a typically partisan Amy Goodman.

What shines through is this notion that being blackout drunk (i.e. not remembering parts of an evening) is an indication of alcoholism, or having a drinking problem. It’s also the sign of a really good party.

These people all sound like shrill churchgoers who can’t even... [More]

Analyzing a LateStageCapitalism meme

Published by marco on in Public Policy & Politics

There was a meme posted to Reddit at How are we supposed to live? that discusses the costs of various features of life now vs. 40 years ago.

The discussion petered out quickly when someone posted a refutation from Meme Policeman. In fairness, it didn’t exactly refute the meme, but questioned its numbers and tried to put them into a better context.

I responded with the following comment,

It’s not just the cost of these things, but also the value obtained for the money.

While offering more... [More]

Explicit vs. Implicit Violence

Published by marco on in Philosophy, Sociology, & Culture

On a post on Reddit, someone cited Michael Moore as follows,

“In my first film, Roger & Me, a white woman on social security clubs a rabbit to death so that she can sell him as “meat” instead of as a pet. I wish I had a nickel for every time in the past 10 years that someone has come up to me and told me how “horrified” they were when they saw that “poor little cute bunny” bonked on the head. The scene, they say, made them physically sick. The Motion Picture Association of America gave Roger &... [More]”

Inventing languages for the sake of it

Published by marco on in Programming

The article Fear, trust and JavaScript: When types and functional programming fail presents issues in JavaScript and a solution: use another language. The list several newer ones that are completely untested.

But the main problem that the article mentions can’t be solved 100% by any language. The main problem is at the boundaries of your application: inputs.

When you get data from an external source, you have to validate it somehow before passing it along to the rest of the application.

No... [More]

Anyone Can Be a Programmer, Right?

Published by marco on in Programming

The post on Reddit called Someone asked me to make a site for them and I don’t know how the fuck I’m supposed to go about it. is about exactly what it sounds like it’s about. Amid the flurry of comments with recommendations on how to pretend he (or she) knows how to build a web site by using tools he’s (or she’s) never heard of, I chimed in with,

What is it about software that makes people who have never done it think that they can do it professionally?

What if your neighbor had heard you... [More]

iOS can’t get the easy stuff right

Published by marco on in Technology & Engineering

This is a laundry list of issues I’ve had with iOS over the last half-year or so. Some things get fixed; others break. This operation system is in its 12th version and is 10 years old. It’s made by the richest company on the planet. It’s frustrating to watch the magical engine of capitalism and privatization be seemingly unable to get even the easy stuff right.

How is it that I’m the only one to whom this happens? iOS is supremely unreliable. I have an iPhone 6s with iOS 12.01 and a battery... [More]

SBB iOS App refreshes too much

Published by marco on in Technology & Engineering

Here is the text of my bug report to the SBB for its iOS App. I wrote them in German, so I’ll let them stand that way; translations are in the footnotes.

Verbesserungsvorschlag im iOS-App

Umgebung

iOS 11.4.1, SBB Mobile 8.2.2 (10)

Use Case

Einen Benutzer will schon geladenen Streckeninformationen ohne Datenverbindung lesen.

Beobachtetes Verhalten

Der SBB-App aktualisiert immer wieder automatisch, auch wenn der App nur vor kurzem verlassen wurde (z.B. 10 Sekunden, wenn man auf einem... [More]

RIP Uri Avnery

Published by marco on in Miscellaneous

I have assiduously followed the writings of Uri Avnery for what feels to me like a long time now—at least 15 years. Those fifteen years were but the coda to Avnery’s extremely long and productive and honorable life. He was an Israeli peace activist with a wicked pen—right up until his death in August of 2018 at 94 years of age. He will be missed.

I include below two encomiums/elegies/obituaries from two other writers whose writings and reporting I respect deeply, Jeffrey St. Clair (editor... [More]

Windows 10 Search is not very good

Published by marco on in Technology & Engineering

Windows Search has been unpredictable for a long time. If you’re a MacOS user, it feels terrible. It’s an utter mystery how Windows can’t seem to find anything, even in a small pile of startup icons and control-panel entries. It’s a database of a few hundred entries, at best. Let’s see how Windows 10 fares.

I finally took the time to document my struggles to run the “Microsoft SQL Server Management Studio”. There are so many words in there. Which ones can I type to find the icon? Hint: I... [More]

Why use Docker?

Published by marco on in Technology & Engineering

Use Case

Let’s imagine we’re working on a PHP web site together, using PostgreSql as a database.

Without Docker

Without something like Docker, I’ll write a readme.md that tells you which PostgreSql to install (maybe latest, whatever), how to configure the Apache server (or Nginx, whatever) and make sure the document root, extensions, modules, etc. are all lined up for this project.

In order to write this readme, I had to set it up on my machine and carefully write down instructions matching... [More]

Apple iCal

Published by marco on in Technology & Engineering

Apple iCal is another piece of software that’s in a very established field, with a very established feature set, in which Apple has been producing software for over a decade. It’s a calendar application with reminders. The reminders can be set to a specific time, with one or more alerts. An alert can be snoozed for a certain amount of time.

This is not rocket science.

Ok, so a modern calendar has to be able to pull in remote sources, to sync with other sources, and to send notifications. It... [More]