Tag Archives: SciTech

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

Hacker News comment on Test-Driven Development



«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.

What’s really behind Microsoft’s love of open source – TechRepublic


I guess the old Microsoft really is finally dead*, killed by open source (with a personal note at the bottom).

For decades, MS’s appeal was “let us handle the details, don’t you worry, just click here”, and C-level business types made technical decisions based on that. Then you had the MCSE-type “technical” people who really didn’t understand much except which buttons to click when configuring TCP/IP and IIS.

And everybody who made the choice tried to justify it all as “Microsoft knows best”/”Microsoft is the best”, because nobody wanted to admit they were just clicking buttons in a GUI without really knowing what they were doing.

But the real world came along and crushed Microsoft like a dump truck running over a walnut. There was a lot of screaming about how “open source is a cancer”, but… the market decided that what open source could deliver (high-quality web browser(s), cloud computing based on Linux farms, an entire massive substrate for solution delivery (LAMP stack, as much as I hate MySQL and PHP, Javascript frameworks, CLI tools)), and even Microsoft can’t hold back the tide. Economics.

So, here we are. Everybody in the old Microsoft world that decided that Windows, Visual BASIC and SQL Server were all you need to know are at a disadvantage. I picked inflammatory examples, but more “modern” folks are just updated versions of that: Windows, C#, Razor/Blazor, Azure (which is 99% “click here and don’t worry about the details”, as far as I can tell). That whole “only stuff Microsoft invents (or buys or mentions at Build) is any good” mentality still persists, but it’s (slowly) on the way out.

So, it’s time for me to stop the bitter-old-man routine and realize that my people (-ish; I have no doubt whatsoever there’s a ton of hackers in the non-MS world, too) won and moved on, while I was holed up at a Microsoft shop being bitter.

*Of course, it could always rise up from the grave, a shambling zombie of anti-competitive practices, if it manages to recover its footing.

Coulda, woulda, shoulda. If you have to ask, I don’t wanna explain.