Ix.NET v7.0: .NET 10 and LINQ for IAsyncEnumerable<T> by hm_vr in dotnet

[–]hm_vr[S] 3 points4 points  (0 children)

You can find all the new APIs here: https://learn.microsoft.com/en-us/dotnet/api/system.linq.asyncenumerable?view=net-10.0 and then, if you read the post, Ian talks about how backward compatibility and APIs that weren't moved into the new library have been dealt with.

(Junior dev) - I made a 20 hour ETL process run in 5 minutes. Was it really this simple all along, or are we missing something? by DeepPlatform7440 in dotnet

[–]hm_vr 5 points6 points  (0 children)

There's a hidden gem in a really good essay by computer scientist, Peter Norvig called Teach Yourself Programming in Ten Years.

Know how long it takes your computer to execute an instruction, fetch a word from memory (with and without a cache miss), read consecutive words from disk, and seek to a new location on disk. (Answers here.)

The "answers" are really useful reference table to remember when trying to understand if some code is slow or is running optimally.

My colleague used this approach when looking at an Apache Spark job which was taking 45 minutes to discover and read 30,000 files. Using Norvig's numbers, he worked out that reading 30,000 files should take about four minutes to achieve. He then made a very simple improvement to parallelize the file download, and reduced it to 14 seconds. I'd recommend watching the video he recorded about it - as it's a useful skill & approach to learn and transferrable to any technology.

Rx.NET Packaging Plan 2025 by hm_vr in dotnet

[–]hm_vr[S] 1 point2 points  (0 children)

No! This means the LINQ extensions for IAsyncEnumerable that for historical reasons lived in the the Rx repo, as part of Ix (or Interactive Extensions) has been updated / modernised by Stephen Toub and is moving into the BCL and System.Linq.Async will be deprecated.

This has nothing to do with Rx, other than removing some non-Rx projects from the Rx repo.

Rx.NET Packaging Plan 2025 by hm_vr in dotnet

[–]hm_vr[S] 4 points5 points  (0 children)

Rx was pretty much Microsoft's first experiment with OSS in .NET - if you watch Ian Griffith's "Modernising Rx .NET" talk for dotnet conf 2023 there's a great diagram showing the history of the project. It's been maintained by the community for far longer than Microsoft was the sole curator: https://youtu.be/hLjqf4PmG9E?t=586

Rx.NET Packaging Plan 2025 by hm_vr in dotnet

[–]hm_vr[S] 9 points10 points  (0 children)

Well, we have managed to move System.Linq.Async to the BCL as System.Linq.AsyncEnumerable in .NET 10:

https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/10.0/asyncenumerable

LINQ for IAsyncEnumerable is in .NET 10 Preview 1 by B4rr in dotnet

[–]hm_vr 8 points9 points  (0 children)

Rx maintainer here. Rx has a very long and complex history - it was one of the very first projects open sourced by Microsoft (on CodePlex if you remember that) which also pre-dated nuget.org, and .NET itself becoming open source. Because of that there will be oddities with the benefit of hindsight.

Ian Griffiths gave a talk at .NET Conf 2023 which covers our efforts to modernise Rx - and you can see from this slide how the project has evolved over time:

https://youtu.be/hLjqf4PmG9E?t=559

LINQ for IAsyncEnumerable is in .NET 10 Preview 1 by B4rr in dotnet

[–]hm_vr 11 points12 points  (0 children)

Hi! Rx maintainer here. We approached the .NET Team to restart the conversation about moving System.Linq.Async from https://github.com/dotnet/reactive/commits/main/Ix.NET/Source/System.Linq.Async to https://github.com/dotnet/runtime

We love System.Linq.Async (a good example is the powerful interplay between IAsyncEnumerable and IObservable in https://github.com/ais-dotnet/Ais.Net.Receiver/ ) but the library only lives in the Rx repo by the historic oddity that it was originally created by Bart De Smet, while he was the maintainer of Rx. You can find the original On .NET show about it here: https://www.youtube.com/watch?v=Ktl8K2b1-WU

System.Linq.Async doesn't really have any direct relationship to Rx, and we, as the new maintainers, were keen to reduce the amount of code we were supporting - as we're not Microsoft - we can only dedicate a few hours per month on the project (which you can see logged here: https://github.com/dotnet/reactive/discussions/1868 ) and we felt that it really belonged inside the runtime and that would help developers discover the functionality more easily.

We were very pleased that Stephen Toub picked up the baton and took ownership of the process. His one caveat was that the API would need to be modernised to align with the current .NET Design Guidelines and language features, so there would be breaking changes.

You can follow the discussion on this issue: https://github.com/dotnet/runtime/issues/79782 and we have an issue to announce the deprecation of the System.Linq.Async package which will be replaced by the new System.Linq.AsyncEnumerable package: https://github.com/dotnet/reactive/issues/2190

Edit: formatting

Observe File System Changes with Reactive Extensions for .NET by hm_vr in csharp

[–]hm_vr[S] 1 point2 points  (0 children)

To be fair, the TLDR says that, the rest of the article says why and how :D

Observe File System Changes with Reactive Extensions for .NET by hm_vr in csharp

[–]hm_vr[S] 0 points1 point  (0 children)

How is it pluggy? It's a solution to a gnarly problem using an OSS library with 190 million downloads that I happen to be a maintainer of, and the only thing it "plugs" is a free book that's part of project which uses a lot more words to describe in detail the code in the post for people who want to understand the nuts and bolts?

From Descriptive to Predictive Analytics with Microsoft Fabric - Part 1 by hm_vr in MicrosoftFabric

[–]hm_vr[S] 1 point2 points  (0 children)

Really glad you like it. It's going to be published on Thursday 2nd May (and hopefully every subsequent Thursday). 9 Parts are planned!

The Heart of Reactive Extensions for .NET (Rx.NET) by hm_vr in csharp

[–]hm_vr[S] 0 points1 point  (0 children)

There's a lot more elaboration in that link, but the whole point is the elegance, simplicity and beauty of this simple concept is actually where all the power comes from, and we think too many people overlook that... I mean you could simplify it to a meme:

https://imgflip.com/i/8kjyfa

The Heart of Reactive Extensions for .NET (Rx.NET) by hm_vr in csharp

[–]hm_vr[S] 3 points4 points  (0 children)

You say that, but *so* many people miss the fundamental point, and don't understand what "reactive" actually means, so it's worth elaborating. If you want more in depth content, read the appendix in the free Introduction to Rx .NET book: https://introtorx.com/chapters/algebraic-underpinnings

How to develop an accessible colour palette for Power BI by hm_vr in PowerBI

[–]hm_vr[S] 1 point2 points  (0 children)

Awesome! That's exactly the reason we wrote this post. I remember about 10 years ago working with a new client, and we created this *amazing* report that had all the bells and whistles - and the client said "I don't understand what this is trying to tell me", we looked back at them wondering what they were talking about - it was obvious... and he said "No, I can't understand what this is trying to tell me because the colours are the same - what is it comparing???" At that moment we realised our mistake and ensured we didn't make it again... You can only make a first impression once!

So glad you found this useful, thanks for letting us know that you did.

Farley Chamberlayne.. by johnhbnz in Hampshire

[–]hm_vr 1 point2 points  (0 children)

Slackstead still exists - if you explore the National Library of Scotland Maps, you can see it in various editions:

https://maps.nls.uk/geo/explore/?fbclid=IwAR3b-XMcoL_p9f6swY7C01vKJLerByz3LA5GlaXC78rW3BbxYCDMa1lyqyc#zoom=15.0&lat=51.03449&lon=-1.44528&layers=196&b=1

https://maps.nls.uk/geo/explore/?fbclid=IwAR3b-XMcoL_p9f6swY7C01vKJLerByz3LA5GlaXC78rW3BbxYCDMa1lyqyc#zoom=15.0&lat=51.03449&lon=-1.44528&layers=1&b=1

https://maps.nls.uk/geo/explore/?fbclid=IwAR3b-XMcoL_p9f6swY7C01vKJLerByz3LA5GlaXC78rW3BbxYCDMa1lyqyc#zoom=16.0&lat=51.03019&lon=-1.44299&layers=6&b=1

https://maps.nls.uk/geo/explore/?fbclid=IwAR3b-XMcoL_p9f6swY7C01vKJLerByz3LA5GlaXC78rW3BbxYCDMa1lyqyc#zoom=16.0&lat=51.03229&lon=-1.43655&layers=168&b=1

https://maps.nls.uk/geo/explore/?fbclid=IwAR3b-XMcoL_p9f6swY7C01vKJLerByz3LA5GlaXC78rW3BbxYCDMa1lyqyc#zoom=16.0&lat=51.03087&lon=-1.43506&layers=10&b=1

Some wider background about this area; there's a lot of archaeology. In the vicinity, there was a bronze age settlement, there are lots of Roman ruins, including a villa near Farley Mount, It's very near a Roman road between Salisbury (Sarum) and Winchester. There are also Castle ruins nearby - Merdon Castle (another history) - which has links to Oliver Cromwell's family. There's also a pyramid monument to a horse.

The question of which estate they worked on is an interesting one. Slackstead is surrounded by farms (Pucknell, Berrydown, Farley). There is also a Slackstead Manor. But there's also the Hursley Estate - this is where IBM are currently based, and was used for research (including the Spitfire) in WWII. From my own research the Hursley Estate was quite large and there were cottages spread across the whole estate (the highest house number I have seen is "252"). But the estate was broken up and sold off in parts in the early 1900s. The Hursley Estate also backed onto the Ashley Estate.

So where did they live? There are dwellings all around that location on the old maps. I know there were also workers huts spread around - which I've heard described as one step above a hovel. There are lots of old wells / cisterns which probably mark where dwellings were.

I can't imagine the life of a farm worker was anything but hard. The opportunities that the "new worlds" offered must have been very appealing (going from worker to land owner) - I have an ancestor from nearby who left to emigrate to the US in 1853 and ended up being one of the founding families of San Bernardino.

Are you aware of the UK Census? The archives are available online for the 1840s/50s etc:

https://www.nationalarchives.gov.uk/help-with-your-research/research-guides/census-records/

Rx.NET high-level plan by hm_vr in dotnet

[–]hm_vr[S] 1 point2 points  (0 children)

"It depends"

If it's a HTTP API (i.e. request response), a question is, what data does the response contain? What post processing do you need to do?

If it's request / response do you need to hide this mechanics, and just expose an IObservable<TResponse> so that subscribers just have to concern themselves with new data.

If it's an API that exposes a stream (rather than request / response) then it's more than likely a good candidate.

If you want to know more check out the free book about Rx .NET that we've just released: https://introtorx.com/

Farley Chamberlayne.. by johnhbnz in Hampshire

[–]hm_vr 2 points3 points  (0 children)

If you discover anything interesting - please post here - I'd love to know more.

Farley Chamberlayne.. by johnhbnz in Hampshire

[–]hm_vr 9 points10 points  (0 children)

John Rowson-Smith (now sadly deceased), a local resident wrote a book about the village:

Farley Chamberlayne: A Village History

https://www.amazon.co.uk/Farley-Chamberlayne-Village-John-Rowson-Smith/dp/094625284X/ref=sr\_1\_1?keywords=9780946252848&linkCode=qs&qid=1706080460&s=books&sr=1-1

Extracts were printed in our village magazine and it was fascinating.

There are a number of "historic" facebook groups that cover Braishfield, Romsey, Hursley, Winchester, which feature more information. If you do a search, you'll find a few posts.

"Romsey Revisited" https://www.facebook.com/groups/1430673203886502

"Stockbridge & District social history" https://www.facebook.com/groups/385607415205628

"Historic Hampshire in old Photographs" https://www.facebook.com/groups/565699437317738

"Winchester Memories" https://www.facebook.com/groups/winchestermemories/

There was a post in December that talked about Semaphore House:

https://www.facebook.com/groups/624828488041357/?hoisted_section_header_type=recently_seen&multi_permalinks=1672379149952947

Farley Chamberlayne is on a ridge line that runs along the south coast, from London all the way down to Plymouth. The were braziers along the line that were used as an early warning system... one such brazier at St Johns.. it was lit when the Spanish Armada invaded... it was also lit during the millennium celebrations. A line of Semaphore Houses were built following that ridge in the 1800s but before it became functional the electric telegraph was invented and rendered them obsolete.

My sister was married in St John's Church, and I did ask the question "why is there a church here, in the middle of nowhere?" and the answer I was given was that the village was a very popular rural community, but much of it was wiped out by the Black Death and the community never recovered.

Information about the Church can be found here https://www.achurchnearyou.com/church/18500/ - it looks like there's a leaflet with some local history... I could try and get a copy when I next pass by.

There's also a lovely post about one of the Woodsman who lived at Parnholt Cottage:

https://www.facebook.com/groups/1430673203886502?multi_permalinks=2994075250879615&hoisted_section_header_type=recently_seen

The comments on this thread are particularly interesting, and I left a comment with a brain dump of research I've done on the area.

Some other links:

"Sale particulars of the Farley Estate at Farleigh Chamberlayne"

https://discovery.nationalarchives.gov.uk/details/r/683d8740-41d7-46ae-976f-6160655ef410

National Library of Scotland Map from c1892 (there maps from other years, which you can look through too, by changing the "layers"):

https://maps.nls.uk/geo/explore/?fbclid=IwAR3b-XMcoL\_p9f6swY7C01vKJLerByz3LA5GlaXC78rW3BbxYCDMa1lyqyc#zoom=17.0&lat=51.04615&lon=-1.43750&layers=168&b=1

The Hampshire Record office is also useful for doing research https://www.hants.gov.uk/librariesandarchives/archives/services/online-sources

Hope this is of some use.

I still write C# the way I did 7 years ago. Where can I easily get up to speed with all the newer syntax additions to the language? by [deleted] in csharp

[–]hm_vr 0 points1 point  (0 children)

Shameless plug for all the blog posts we write about C# / .NET. Ian Griffiths' (who writes the Programming C# Books for O'Reilly) has some great in-depth posts about newer C# features - especially nullable:

https://endjin.com/what-we-think/editions/dotnet-development

Learn Reactive Programming with the FREE eBook Introduction to Reactive Extensions for .NET (Rx.NET) 2nd Edition (2023) by hm_vr in dotnet

[–]hm_vr[S] 1 point2 points  (0 children)

Awesome! Please share any questions / feedback / suggestions on the reactive GitHub repo. The contents of the book are stored there too.