Tag Archives: SciTech

Science, technology (probably mostly around software development), various geekery.

Weirdness in math & science

Gödel’s Incompleteness Theorem, in layperson’s language, which I phrase to myself as “there are truths which cannot be proven”: https://www.scientificamerican.com/article/what-is-godels-theorem/

(That’s not say those unprovable truths aren’t completely trivial; but it IS to say that even the best, most pure math is not automatically going to get you all the way.)

Quantum tunneling, which I see as “the universe is not just a bunch of billiard balls bouncing around in a way that would be totally predictable if we had a big enough computer”: https://en.wikipedia.org/wiki/Quantum_tunnelling#:~:text=Quantum%20tunnelling%20or%20tunneling%20(US,flow)%20appearing%20inside%20the%20barrier.

Spooky action at a distance, which I phrase to myself as “there are no limitations. How is that even possible?”:  https://www.theatlantic.com/science/archive/2017/02/spooky-action-at-a-distance/516201/

«Measure photon A to be vertically polarized, and photon B instantaneously becomes horizontally polarized, even though B’s state was unspecified a moment earlier and no signal has had time to travel between them. This is the “spooky action” that Einstein was famously skeptical about in his arguments against the completeness of quantum mechanics in the 1930s and ’40s.»

Einstein is famous for saying that he does not believe that God plays dice with the universe, but I think God does exactly that. It’s just that, if the dice don’t fall the way God thinks they should, science has absolutely nothing to say about the possibility of God altering the results. (Or even about God’s existence, for that matter.)

Now faith is the assurance of things hoped for, the conviction of things not seen.

There are more things in heaven and earth, Horatio, than are dreamt of in your philosophy.

(As they say.)

Hacker News comment on Test-Driven Development

https://news.ycombinator.com/item?id=23344109

Yikes.

«TDD isn’t going to find solutions to hard problems beyond bowling.

There is a stark contrast between agile development and actual software engineering. Agile works where the customer and the developer don’t really know what is being developed.»

(This whole comment is 🔥, as I think the cool kids say.)

Formal methods are worth it, but they’re hard. Maybe use them to write TESTS instead of the main app code.

Thread by @hillelogram: This is one of the most common questions about formal methods: how do I rigorously translate a spec to implementationdo I keep them in sync? Short answer: you can’t. Long answer: you can, but it’s incredibly difficult and rarely w…

Source: Thread by @hillelogram: This is one of the most common questions about formal methods: how do I rigorously translate a spec to implementation, and how do I keep the…

Learning Gradle

Ok, Gradle. I know you guys are really proud of yourselves, but do you have to be so dang leaky with your abstractions? Is it really crucial that we know that script blocks are secretly method calls that take *closures* as parameters? Can’t you just say “script blocks” and be done with it?

Also… “configures the dependency configurations”? Seriously? You know “configure” is ALREADY a nebulous word, right? You had to configure the configurations?

«A script block is a method call which takes a closure as a parameter. The closure is treated as a configuration closure which configures some delegate object as it executes. The top level script blocks are listed below.

….

configurations { } — Configures the dependency configurations for this project.

dependencies { } — Configures the dependencies for this project.»

(From https://docs.gradle.org/current/dsl/index.html.)

Shouting into the void about Microsoft and Blazor

We had a dev team meeting yesterday and I said something disparaging about Blazor. My manager responded with “well, Microsoft is the second biggest company in the world” with the implication that the Microsoft Way must be The Right Way. And everybody sort of nodded.

Since I can’t shout at my manager and teammates, I’ll just shout into the void here.


Amazon and Linux (and a horde of other suppliers such as Digital Ocean and Netlify) are squeezing Microsoft on the back-end.

Javascript and the Web (Google’s Angular; Facebook’s React) are squeezing Microsoft on the front-end.

MS has axed IE/Edge development and capitulated to Google (although I’m sure nobody would word it that way, probably for good reason). Mobile Microsoft is non-existent (Surface notwithstanding).

Microsoft’s only real play is to get WPF onto browsers via web assembly and Blazor. And to continue to offer “business value” a la IBM. That’s really an enterprise solution.

And they know it. So that’s what they’re doing, as hard as they can. They’ve really been caught flat-footed by this whole “web” thing, the same as IBM got caught flat-footed by this whole “TCP/IP” thing (remember LU 6.2?). They have really been locked into the desktop/Windows OS for years, and I’m sure it’s yet another example of large corporations unable to change culture quickly.

If they try to go back to their old methods of anti-competitive practices and dictating to/fooling customers, they’ll be dead. I think a lot of decision-makers aren’t standing for that nonsense any more. Linux cloud instances are half the price of Windows instances, and that money talks loudly.

Is the future WPF, served from Linux onto WASM? Maybe. Will Microsoft try to charge money for that? Will customers pay for it? Maybe (it’ll have to be worth the price). Will Azure surpass AWS? Maybe, if the Blazor solution is strong enough (because Microsoft will, of course, try to use Blazor to push Azure), but I doubt it.

Everything* can be compiled to WASM, so, apart from Javascript frameworks, who else has a UI story that can be an alternative to Microsoft Blazor? Well, JavaFX (ha). And… Google Dart?

Plus whatever those wild-eyed open-source hippies come up with.


*Well, except maybe C++, since it’s probably got dependencies on all sorts of close-to-the-metal libraries like DirectX or OpenGL or the network stack or some such.

(Also, WTF, WordPress.com? $300/year to let me put a footnotes plugin in my site?)

The Thiel question

“What important truth do very few people agree with you on?”

Hashmaps are O(1). The number of people who don’t know this is astonishing.

Function documentation should include pre- and postconditions and invariants (since actual Design by Contract can be problematic due to side effects in call trees). I guess if you’re going to do real DBC, you should only access primitive data members without making function calls.

Logic does not belong in the database.

Caching is good. (Maybe these last two are indications that I’m not working at the right company.)

Developer documentation is worth the effort.

Slack (and MS Teams) is terrible. See above. Curation is worth the effort.

Long ‘switch’ statements are bad. Dispatch lookup tables are (probably) better.