bc_programming

Joined 3 years ago

Karma
263
Submissions
27
Member since
Jun 13
View on Hacker News

Recent submissions

Comment · 5 days ago
I think elements like scrollbars remaining visible serve a useful purpose of their own. I don't just mean scrollbars in this case depicting the location in the scroll, either, but instead offering a fully predictable interface that looks the same and doesn't depend on state. Elements like scrollbars only appearing when needed- expanding when you hover near them, for example, removes some of the predictability of the interface. If you have elements all over a UI that only appear "when needed" it starts to become a bit of a circus show, IMO; ribbons or toolbars or menus that only appear when you press alt or hover near the top of a window; scrollbars that only appear when you either scroll or move the mouse near the scroll elevator area, etc. It's some of the same push that has removed titlebars from desktop UI. Programs like Chrome spearheaded effectively taking over that area, because it's a "waste of screen space", But it's not, that screen space was used for a predictable, known UI element that used to be fully expected on all desktop UI Window elements. It's sort of like how we have with writing a predictable convention of words on a page to have margins on the left and right. If that followed the way UX has gone we'd have dismissed page margins as "wasted space" and all text would have 0" margins and run all the way to the edges of the page and we'd pat ourselves on the back for "using page real estate" more effectively.
Comment · 1 month ago
"compare something like Swing's JTable to WinForms' DataGrid"

Do you actually mean the DataGrid? Because the WinForms "DataGrid" was deprecated in 2002 with .NET 2.0 which added the DataGridView. The software I work on is Windows Forms and I can't say I've had any issues like you describe with the DataGridView. I was able to create a control derived from it that does all the heavy lifting for customizations(Visual, interaction, cell spanning, etc.), of which we had a lot. Enough that we were exploring third party controls, but found we would have to customize those ourselves anyway, so I just wrote my own control based on DataGridView to save us the licensing.

WPF had it's own DataGrid control from the start, though I can't comment from experience on it's versatility, I'd assume given WPF's nested-content approach it is surely at least more flexible than the DataGridView.

Comment · 4 months ago
A pascal string is a single byte with the length, followed by the data.

Some implementations use more bytes for the length data, such as Delphi which changed over to a 4 byte prefix length, though those aren't technically Pascal strings anymore. I can't find anything about a Pascal string being two pointers?

Comment · 7 months ago
My favourite example of "Modern" style is the toggle switch, shown even in that image. I laugh a lot of the times I see one, it's the 'replacement' for the checkbox, but it's so awful at actually telegraphing it's current state in a consistent way- (the entire purpose of the control!) that it has to have a label indicating whether it's on or off. I find it so absurd that people genuinely put this stuff into their programs and have no problem with it, because apparently we are just supposed to accept this type of poorly designed component because it's more "Modern".
Comment · 1 year ago
We don't digest food exclusively with bacteria. They play a role, of course, but our digestion is done through things with hydrochloric acid and various enzymes produced by the stomach. The bacteria in our stomach is pretty much strains that can both survive the acidic environment and can consume things we cannot digest at all. Various fibers, for example. They help as they consume it and shit out stuff we can digest. Often the things they consume that are indigestible to us are the result of our own breakdown of other compounds; making the process symbiotic.

Also, the environment on a kitchen counter is wildly different than the environment inside out stomach, so airborne bacteria- even if we were to presume these were the exact same kinds of bacteria present in our stomach - being uninterested in foods in the open air doesn't really translate to the idea that the food is indigestible. Many gut bacteria rely on us to break down foods into the things that they can digest, so a colony couldn't start on the surface of the same food(s) in the open air.

Comment · 2 years ago
Well if it's self-hosted you have to do it yourself. You can either backup your databases from the old version and restore it to the new version once installed, or you can use pg_upgrade to upgrade/copy a old version data directory to the new version.

I don't think this is done automatically when you simply install a new postgres version, but I'm not certain of that.

Comment · 2 years ago
It's related because that past suggests a history of being untrustworthy. I mean we're talking about running a company that literally stole money from people and intentionally infected peoples computers to try to trick them into giving you more money, not just something he did by accident one weekend but something he dedicated years of his life to. Him leaning heavily on how he worked at a company two decades ago doesn't help. Other than the scam company shut down by washington state, what has he done since?

As for the particular claim regarding the start menu, What he actually claimed is that his implementation was removed in production builds. However, at the same time, there's no evidence of it in any of the various Beta and release candidate versions of NT4. Not only that, but prior to the NT4 betas, it was effectively the NT 3.51 "Desktop Shell Update" and none of the releases of that have his claimed implementation. So when and where is it?

He states "I wrote the programmatic version in '94 and we ran it internally". The issue is that there really was no "NT4 beta" at that point in time, nor any start menu in NT to add his rotated text code to. It was only around the start of 1994 that what would be known as the Taskbar and Start Menu really appeared in Chicago milestones- we know he isn't referring to those, since 9x didn't support the needed LOGFONT structures. What would become the start menu on Windows NT only appeared with the "Newshell" project which was preview software that you installed on NT 3.51 to add the Windows 95 enhanced shell. originally a desktop update for Windows NT 3.51 which started around the time of 95's release in, well, 1995. There's no evidence of his special code there- in fact the NT 3.51 Desktop Shell Update previews all used a bitmap.

And you might think, ahh, hew must mean before that, but the rotation feature in question, I believe, was new to NT4 altogether- so it would presumably have appeared somewhere during the betas.

The problem with his claims seems to be that evidence never seems particular forthcoming. When new information comes out he retracts claims and re-titles videos in order to move his claim into "gaps" where his claims are less falsifiable.

Comment · 2 years ago
This issue seems like partly an artifact of the invented binary operator ^. In math exponents are superscripts and there's no binary operator- it's part of the term. But for text on computers, binary operators ended up being fabricated for the things you couldn't represent directly. The caret is common and was the first one to appear, but doubled multiplication signs is another one. Traditionally, binary operators have lower precedence than unary operators since the unary minus is considered part of the term, so the exponent turning into an operator mucks things up if it's still implemented to adhere to that logic.

You sort of see the same issue with division. The forward slash is a completely invented binary operator since the actual division symbol was often not present- and let's be real nobody uses the binary division operator when writing formulae. It's supposed to represent the dividing line in a fraction, similar to how division is usually represented in a formula as a fraction of two other expressions. It's got lower precedence than anything in either term- but, if you just replace the dividing line with a forward slash to input the formula into a computer, you'll get incorrect results, because it's replacing what is part of a complete term (the division line) with a new binary operator inserted between sets of terms, which is now subject to precedence rules.

Comment · 2 years ago
This is because a particular support page has "The Control Panel is in the process of being deprecated in favor of the Settings app, which offers a more modern and streamlined experience.". Crazy how that somehow has spawned endless articles from tech "news" sites. But it's hardly news, and saying they've 'officially deprecated' is misleading. Fact is The Control Panel has been in the 'process of being deprecated' since Windows 8.
Comment · 2 years ago
In this case, By "side effects" I mean non-obvious changes to the static state, Where a seemingly simple function will both rely on static fields to evaluate it's result as well as make changes to various other fields that will subsequently change the result of that function going forward. I don't think one needs a dogmatic adherence to immutability and avoiding side effects to find that to be undesirable.
Comment · 2 years ago
For me, I bought "Clean Code" because it was, at the time at least, quite highly recommended. After being rather confused for a while, I finally stopped reading right around page 141 when I realized that the reason his examples looked awful were because they were.

In that section of the book, he takes a Java port of Donald Knuth's PrintPrimes program, and refactors it. But in doing so, he actually breaks it. He moves state out of local variables and parameters and makes them all static fields, and then refactors the code into long-winded methods that specifically perform side effects or operate on those fields (names like isNotMultipleOfAnyPreviousFactor(), isLeastRelevantMultipleOfNextLargerPrimeFactor()). But the simple act of moving state that would otherwise be part of the stack frame into static fields means he has changed the behaviour of the code - it is no longer thread safe! calling it from different threads will have undefined results because all threads will be operating on the static fields. He demonstrably made the code worse!.

It invalidated the entire book for me at that point. Here's "Uncle Bob" trying to pretend to be some aged, skilled, craftsman hand guiding us young, ignorant whippersnappers into being proper craftsman and not only can't he properly refactor a simple prime number sieve as a demonstration, but he's so blind to awful code that he doesn't even see it in his awful example enough that it gets published in the same book that complained about programmers who don't have "code-sense". Mistakes and "errata" are one thing, but when he makes such a big noise about "do it right the first time" and then has an example where he refactors and literally breaks something, that's another.

Comment · 2 years ago
Not quite what you are describing, but you can prevent any specific executable from ever running by configuring a "debugger" for it in Image File Execution options (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options). You add a key with the executable name and then add a "debugger" value, then point that debugger at C:\Windows\system32\systray.exe. Every time the named executable tries to launch, Windows will try to "debug" it with systray, which immediately exits so the program never actually runs. After uninstalling OneDrive this can be set to prevent OneDriveSetup.exe from ever running for example.
Comment · 2 years ago
He was CTO but also owned the company. That is why he was named directly on the complaint.

I feel he violated what I feel are very basic, elementary ethical principles with regards to software development, by specifically setting out to create software products that were not designed to give the user value but to scam and trick them out of their money.

(There's an argument to be made that he was merely ahead of his time at Microsoft but that's perhaps another discussion.)

He's retired and supposedly wealthy. Not sure what sort of stock options he might have for 7 years at Microsoft, but how much of that wealth (if it even exists) is or was from the scam company? He didn't have to pay most of the fine and the number of customers that requested refunds is hardly documented. For all we know dude is still living off money he scammed from people.

Either way when you stoop that low I don't think you can ever stand up straight again- all you can do is try to hide your slouch.

>What would it take for you to let go of this vendetta that you say you have?

Well, to take an extreme but analogous (IMO) example - what would it take to trust Bernie Madoff for financial advice? That's kind of what I feel this is like. Doesn't matter if they "went through the justice system". You never regain the trust in the field when you so readily violated it to make money.

Comment · 2 years ago
Fair enough. As others have noted the source code was leaked; I've got NT4, NT5, XP, XPSP1 and Server 2003 codebases to review from that, which I downloaded a good while ago. I've been a software developer primarily targeting Windows for 20 years, 10 of those professionally. I was a Microsoft MVP for half of those (2012-2016 inclusive). The reference to the date is found in the header of nt4\private\windows\shell\shelldll\unicode\format.c

The 32GB limit for FAT32 doesn't appear to be handled by the shell code or the dialog, so when I said it was handled internally to the formatting code, I couldn't actually find that. It's just somewhere loweer than the UI. What I did do howeever was boot up Windows 2000, the first version that did have FAT32, and there's no limitation in the format dialog itself. It goes through the entire process and then gives a "Volume too big" error after it has gone through the process, an error shared by not just the format dialog, but diskpart, disk management, and format, which certainly suggests that that is happening at some lower level. The dialog in question does just call into other functions to perform the actual format, but I wasn't able to find the actual source files for it.

>Dave for his part provided his credentials.

Now he understandably does leave out a bit of info about his history which you could arguably say is part of my "vendetta" that you observed. The reason for the proportion of comments is less a vendetta and more that I get kind of worked up every time stuff of his is posted and people applaud how great he is. He's no Dave Cutler but he certainly talks like he was.

Now, as to the tidbit. Dave Plummer ran a scam company that was sued by Washington State in 2006, "SoftwareOnline.com, Inc. ". He actually left Microsoft specifically to run this company. Court documents can be seen here:

https://www.atg.wa.gov/news/news-releases/attorney-general-s...

You can find David W. Plummer listed in the court complaint.

The short of it is that it was an online software scam company that tricked people into downloading fake Anti-virus and security software using online ads, and then the software delivered additional adware and nagware onto users machines.

That is why it may appear I have a vendetta. I don't trust a word he says and especially when what he says directly contradicts other sources. Mistakes in memory are one thing, but some of them are rather beyond the sort of thing I think is reasonable. Paired with his history, I'm convinced he's actually lying intentionally because he's trying to build a "following" and "Dave's Garage" is just his latest scam. That's why he keeps "coming forward" in posts and his youtube as writing this or doing that. What bothers me is that it's working, because most people don't seem to even question it, even where there are rather severe contradictions.

Comment · 2 years ago
I was able to confirm in the Windows NT4 source code that he originally wrote some of the code for the format dialog on 2-13-95. That much is true. (late 1994, early 1995, close enough)

>"I also had to decide how much 'cluster slack' would be too much, and that wound up constraining the format size of a FAT volume to 32GB."

NT4 didn't support FAT32, and NT4 actually was actually able to be 4GB rather than 2GB for a FAT volume because NT4 allowed 64K clusters, so actually exceeded what most systems were able to do at the time. Formatting as FAT in NT4 had no cluster check or option. The cluster size used was decided based on the size of the volume.

Furthermore, the The 32GB limitation for FAT32 volumes was originally in the internal format functions, not the dialog itself. On Windows 2000 (Which does support FAT32) you can try to format a drive bigger than 32GB as FAT32, but the formatting will fail, as it is hard-coded at the end of the format to fail trying to format FAT32 volumes larger than 32GB. The dialog itself isn't what presents this limitation and it is shared by the command line format.com which uses the same functions.

Not sure why he seems to always exaggerate his own involvement. He's got people believing that he wrote the Zip folder code that Microsoft literally licensed from Info-Zip because he had to touch it to get it integrated. I guess exaggeration is what "influencers" do, and that's what he is at least trying to be now.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton