@agocke@hachyderm.io
@agocke@hachyderm.io avatar

agocke

@agocke@hachyderm.io

Seemingly benevolent robot. Dev lead for CLR assembly loading, trimming, Native AOT at Microsoft, ex-C# compiler & language design.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

mekkaokereke, to random
@mekkaokereke@hachyderm.io avatar

If you got upset at me for pointing out that more people died of Covid under Biden than Trump, in large part because Biden rolled back common sense restrictions that were in place under Trump...

Then you'll hate me pointing out that Trump introduced a 25% tariff on Chinese EVs, and Biden is upping that to 100% tariff.

https://insideevs.com/news/719283/chinese-ev-tariffs-biden-quadruple/

We can't allow the US to get off of fossil fuels... unless US billionaires win! 🤡

Fear the BYD Dolphin! (an EV car for $12K)
https://m.youtube.com/shorts/T3nfyO_UHjk

agocke,
@agocke@hachyderm.io avatar

@tojiro @mekkaokereke electric mini cooper

Migueldeicaza, to random
@Migueldeicaza@mastodon.social avatar

You can’t beat this 1:35 minute crash course on how our economy works. It voodoo, not a dark art, not medieval knowledge. Just plain and accessible economics.

This course should be taught in high schools.

You can then nicely progress to various books and textbooks if you want.

https://apple.co/3UJYQLF

agocke,
@agocke@hachyderm.io avatar

@Migueldeicaza I don't understand the dispute here. Orthodoxy seems to say that we have to pay the debt through taxation. MMT seems to say you could also print dollars. But both agree that printing is limited by inflation. So there's only a difference at ZIRP, which is not around anymore. So what's new?

agocke,
@agocke@hachyderm.io avatar

@Migueldeicaza what is commonly misunderstood? What misconception is MMT meant to correct?

agocke,
@agocke@hachyderm.io avatar

@Migueldeicaza ok, but we are currently in a world of full resource utilization, which is why inflation is above target. So this insight was useful 4 years ago, but not useful now.

agocke,
@agocke@hachyderm.io avatar

@Migueldeicaza yeah “supply chain reasons” meaning there’s not enough supply. That’s what “resource limitation” means. Whether or not interest rates alleviate the pressures is not relevant to whether there is enough productive capacity

agocke,
@agocke@hachyderm.io avatar

@Migueldeicaza does the movie have more than Keltons book?

bradwilson, to dotnet
@bradwilson@mastodon.social avatar

I'm skeptical of the new tight integration of .NET to Ubuntu 24.04. I noticed two things immediately:

  • I don't have access to .NET 6 at all
  • I don't have access to the latest .NET 8 SDK any more (currently 8.0.104, despite latest being 8.0.204).

I assumed using the Microsoft apt feed would allow me to use newer even if Ubuntu's feeds were older, but... not so much.

If .NET 6 is still supported, why isn't it on Ubuntu 24.04? And why are we being held back?

agocke,
@agocke@hachyderm.io avatar

@bradwilson You might want to use https://dnvm.net if you need a wide range of SDKs to install and test against

agocke,
@agocke@hachyderm.io avatar

@bradwilson could be, not really meant for that. Dotnet-install script would probably work better. This is more for dev boxes.

agocke, to random
@agocke@hachyderm.io avatar

My recollection is that whenever we tested this, it didn't perform any better than standard generational GC
https://mastodon.social/@HalvarFlake/112334372057873051

agocke,
@agocke@hachyderm.io avatar

I'm not a GC expert, so if there are GC experts on Mastodon they can correct me, but I'll try to explain the basic idea. The generational hypothesis states that you can divide memory allocations into short-lived and long-lived (and maybe more in between). A generational collector takes advantage of this by having different generations, which get collected independently.

agocke,
@agocke@hachyderm.io avatar

All allocations start in Gen 0, also called the "nursery", which you can think of as arena allocation. Whenever you do a Gen 0 collection, the whole arena is freed, except that anything still alive is moved into the Gen 1 space. This actually maps pretty closely to the "request-based" model. If most of the allocation in your app is due to handling requests than the vast majority of Gen 0 will just be current requests.

agocke,
@agocke@hachyderm.io avatar

The pluses and minuses are that Gen0 collection may not happen at the end of a request and instead occur in the middle of the next request. But, 1) that means you do fewer collections overall and 2) Gen0 collection and Gen1 promotion aren't so bad, assuming your Gen1 isn't the same as your super-long-lived generation.

agocke,
@agocke@hachyderm.io avatar

And, most importantly, many apps in languages like C# still have some objects that live from session to session (caches, etc). So while the gen0 hypothesis is modally true, there are enough corner cases to mean you still have to handle them well, and regular generational GC does so without special cases in the GC.

agocke,
@agocke@hachyderm.io avatar

Maybe languages like Erlang that have a much more fine-grained and structurally enforced lifetime boundaries can do something more specific, but languages like C# have to deal with a bit more imperfection.

agocke,
@agocke@hachyderm.io avatar

@Migueldeicaza you mean the language feature that allows specifying a particular arena an allocation must occur in?

agocke,
@agocke@hachyderm.io avatar

@yminsky .NET has always had a similar story, but more explicit. There are two kinds of types in .NET: value types and reference types. Locals and parameters of value type are always stack allocated. References are heap allocated. There's also a 'managed ref' which can point to either, and has a lifetime that is implicitly tracked.

This whole deal is much more implicit and has fewer safeguards, but generally works.

agocke,
@agocke@hachyderm.io avatar

@yminsky both :)

agocke,
@agocke@hachyderm.io avatar

@yminsky the declaration of struct vs class means you choose up front the memory representation. But also structs can be boxed, so you can implicitly go off the rails. And managed refs can point to either, but they have hidden implicit lifetimes

agocke,
@agocke@hachyderm.io avatar

@yminsky the effect for the user is I think that things seem very simple: just struct or class. And with careful programming you can go allocation free. But the rules for an expert are probably more complicated than judicious use of a proper type system

agocke, to random
@agocke@hachyderm.io avatar

I need to write something about C# compilation of generic interface methods. As far as I can tell no one else does the same thing and it has interesting perf characteristics (good and bad)

agocke, to random
@agocke@hachyderm.io avatar

This is a pretty common thing once you get perf focused people looking carefully at stuff in a managed runtime. Interop is non zero cost and many managed languages provide facilities for writing “C in <managed language>”, and eventually you can get close enough in cost that the interop overhead starts to matter. https://mas.to/@davidism/112288910847353545

whitequark, to random
@whitequark@mastodon.social avatar

is assembly language (for the sake of argument, x86 assembly as understood by an assembler released by intel) typed?

agocke,
@agocke@hachyderm.io avatar

@whitequark type checking is a form of semantic analysis and I’m not aware of any assemblers that do semantic analysis, but maybe I missed something.

khalidabuhakmeh, to dotnet
@khalidabuhakmeh@mastodon.social avatar

Thanks to Martin Zikmund making this video about the new proposed #dotnet slnx solution format.

It's about time to kill the .sln format.

https://youtu.be/wzMMclD8QsI?si=BXB2nVrQDhiT7fcw

agocke,
@agocke@hachyderm.io avatar

@tmeschter @khalidabuhakmeh @KirillOsenkov There are so many benefits in .NET to sticking with something like a traversal project that I'd rather VS invent different solution files for different languages. The only thing that really benefits from one solution file format is VS devs.

agocke, to random
@agocke@hachyderm.io avatar

FWIW I suspect most of the wealthy do not work -- because they inherited their wealth. My suspicion is that employment is a personality trait of the wealthy who made their wealth by labor, not something inherent.
https://hachyderm.io/@scottsantens/112224338732515287

agocke, to random
@agocke@hachyderm.io avatar

@danluu Q re: your blogging software. I notice your blog almost never has inline code. Is that deliberate? If you were to put inline code, how would you format it? Would you be able to meet your performance goals with the more complex rendering and (potential) JS usage?

  • All
  • Subscribed
  • Moderated
  • Favorites
  • anitta
  • mdbf
  • magazineikmin
  • Durango
  • Youngstown
  • vwfavf
  • slotface
  • ngwrru68w68
  • khanakhh
  • rosin
  • kavyap
  • thenastyranch
  • PowerRangers
  • DreamBathrooms
  • Leos
  • ethstaker
  • hgfsjryuu7
  • osvaldo12
  • cubers
  • GTA5RPClips
  • modclub
  • InstantRegret
  • everett
  • tacticalgear
  • normalnudes
  • tester
  • cisconetworking
  • provamag3
  • All magazines