That's an interesting feature I didn't know F# had. It sounds similar to row polymorphism (which I found a good description of here: https://news.ycombinator.com/item?id=7829766 ).
I'm just putting this Alan Kay question (from Stack Overflow) here because of relevance.
In that question, he's considered not with implementation or how good the execution of an idea is (which is certainly one type of progress), but in genuinely new ideas.
I don't think I personally am qualified to say yes or no. There are new data structures since then for example, but those tend to be improvements over existing ideas rather than "fundamental new ideas" which I understand him (perhaps wrongly) to be asking for.
That looks pretty great! I would love to use this at work if functional programming idioms were already familiar to the team and I didn't face resistance introducing them. Thank you for sharing and developing the library.
My experience with this is in .NET, which has methods like readFile (which is async) and readFileSync.
.NET doesn't really need to provide two separate utility methods like this though, because you can use Task.wait to block until the async task is done.
File.ReadAllBytes/Text/Lines use synchronous underlying file API.
Their async variants call different OS APIs for asynchronous operation where available (Overlapped IO on Windows, on Linux it is specially scheduled (p)read and write calls).
A similar distinction applies to Socket where asynchronous calls use an internal epoll-based engine while synchronous ones are plain send/recv.
Generally speaking, in synchronous code there is no advantage to calling `.Wait()` or `.GetAwaiter().GetResult()` over synchronous APIs when such are offered, and if you can help it, it is best to update the code using them to be async too if your application is multi-threaded. Luckily it's quite easy in most situations unlike what HN public (that hates better languages like C#) would lead you to believe. But ff you do have to do block on waiting for a task, the impact on throughput is usually negligible if you do so within say threadpool worker - the implementation nowadays can cope with this very well and is more resilient to scenarios that used to be problematic.
I had the same opinion with async/await, that it's nice to know a function performs IO and will wait before continuing. Makes it clearer when to use Promise.all to make multiple requests in parallel and wait for all of them to finish before continuing (faster than making calls sequentially).
I kind of wish the languages I use had Haskell's IO monad too, to separate functions in terms of the type system, but that's slightly different.
Integrating Defender sounds like it would create an antitrust issue? If I remember correctly, MS was in the past taken to court and forced to sell some product or other separately, when they previously provided it for free.
No comment about being able to move Defender to not require kernel hooks (I don't know).
It’s unclear imho if it would be an antitrust behaviour. Many regions have security exceptions as long as it’s a core feature. It also wouldn’t prevent competitors working at a higher level either.
I'm not doubting, but can you give a few examples of Microsoft trouncing others?
I do recall Disney (a main reason copyright laws last so long, and who didn't want Steamboat Willie to enter public domain).
I also think of Amazon (which the creator of the Elm programming language describes as having "the Jeff problem" because they steal smaller people's/team's ideas), although that's a different problem.
I can't say anything comes to mind right now about MS, though, which is most likely a failure of my memory/knowledge. So I'd appreciate some examples.
> ... they steal from others and trounce others for stealing from them.
Explain how the antitrust case or its conclusion proves the quote above?
Mozilla/Netscape had a browser that could have competed with Microsoft, they didn't litigate them for stealing. The antitrust case was about it being effectively impossible to overthrow their monopoly because of the platform being locked down.
The current crop of litigation against Apple reeks more of the Microsoft antitrust case than any Disney cases.
Great article. Reminds me of this quote from RG Collingwood about how pervasive copying has been throughout history, and how the famous names we know to have copied would be baffled about us being shocked.
"Individualism would have it that the work of a genuine
artist is altogether ‘original’, that is to say, purely his own work and not in any way that of other artists. The emotions expressed must be simply and solely his own, and so must his way of expressing them.
It is a shock to persons labouring under this prejudice when they find that Shakespeare’s plays, and notably Hamlet, that happy hunting-ground of self-expressionists, are merely adaptations of plays by other
writers, scraps of Holinshed, Lives by Plutarch, or excerpts
from the Gesta Romanorum; that Handel copied out into his
own works whole movements by Arne; that the Scherzo of Beethoven’s C minor Symphony begins by reproducing
the Finale of Mozart’s G minor, differently barred; or that Turner was in the habit of lifting his composition from the works of Claude Lorrain. Shakespeare or Handel or Beethoven or Turner would have thought it odd that anybody should be shocked."
I do understand the desire to protect one's work too and find it hard to take a single side.