if anything you want your agents to do is deterministic, such as managing a queue, or sorting a list, create a script for the agent to use. Agent's don't do deterministic things well. It's our job to force determinism upon them.
Just watched @shanselman and Mark Russinovich drop one of the most important truths about AI in engineering, and it needs to be said louder:
"AI isnโt killing engineering, but it is quietly killing something far more dangerous: the junior pipeline."
Hereโs the reality most companies have already learned:
AI delivers its best results when senior engineers work with it.
Their judgment, intuition, and experience are what turn AI from โhelpfulโ into โgameโchanging.โ
But AI has also replaced almost every juniorโlevel task, scaffolding, debugging, boilerplate, testing, and many teams have stopped hiring juniors altogether.
And thatโs the real danger.
If juniors disappear today, there will be no seniors tomorrow.
No juniors โ no midโlevels โ no seniors โ no architects โ no one left who can actually guide AI safely.
Weโve seen this firsthand too.
Thatโs why we are heavily investing in our #cs_internship open-source program, to keep a strong flow of junior talent and give them a real path to grow into the next generation of senior engineers.
Because the future of engineering depends on the people who arenโt seniors yet.
#MicrosoftBuild
https://t.co/4pMdm3vZwY
- Meet Anders Hejlsberg
- Creator of C# and TypeScript
- A self-taught programmer
- Joined Microsoft
- Saw that Java dominated everything
- Microsoft needed a modern language for its new platform .NET
- But there were legal conflicts around Java
- He said: โFineโฆ Iโll build something better.โ
- Wanted a language that is:
> Easy like Java
> Powerful like C++
- Launched C# in 2000
- it became one of the most widely used languages for:
> Enterprise applications
> Game development (Unity)
> Windows software
But He Wasnโt Doneโฆ
- Later noticed problems with JavaScript:
> Hard to scale for large applications
> Bugs and maintainability issues
- Created TypeScript
- Designed it to:
> Work with existing JavaScript (no breaking changes)
> Compile into plain JavaScript
Today, TypeScript is widely used in Angular, React, Node.js and more
Adopted by major companies like Google, Microsoft, Airbnb
didnโt code it alone
but without him, it wouldnโt exist.
absolute legend ๐ฅ
๐ญ๐ฌ ๐ฆ๐๐ฒ๐ฝ๐ ๐๐ผ ๐ผ๐ฝ๐๐ถ๐บ๐ถ๐๐ฒ ๐๐ผ๐๐ฟ ๐๐ ๐๐ผ๐ฟ๐ฒ ๐ค๐๐ฒ๐ฟ๐
Even senior devs don't know all of them ๐
Let's say you face a very slow EF Core query in production.
How would investigate and fix the issue?
Here's my step-by-step approach:
1๏ธโฃ Add OpenTelemetry
Quickly discover slow database queries by adding OpenTelemetry. It provides immediate visibility into performance bottlenecks.
2๏ธโฃ Create a Benchmarks Project
Once you identify a slow query, create a benchmark project. Test each optimization to clearly see their impact.
3๏ธโฃ Pre-Filter Entities
Load as few records as possible into memory. Filter early in your query to avoid unnecessary data loading from the database into memory.
4๏ธโฃ Add Pagination or Limit Top-X Records
If you're generating reports or statistics, only load the records you actually need. Pagination or top-X limits greatly improve performance.
5๏ธโฃ Limit the Number of JOINs
Big number of JOINs slow down queries significantly. Try simplifying relationships or breaking them into multiple simpler queries if needed.
6๏ธโฃ Project Only Required Columns
Select only the necessary columns. Reducing the data you fetch from the database improves performance and reduces memory consumption.
7๏ธโฃ Limit Database Calls in Loops
Avoid querying the database inside loops. Batch operations or pull needed data upfront to minimize round-trips to the database.
8๏ธโฃ Try Making a Single Query
Optimize for fewer database calls by combining multiple queries into one where possible. Each database call adds latency.
9๏ธโฃ Test AsSplitQuery
Experiment with EF Core's AsSplitQuery feature, which splits complex queries with a lot of JOINs into multiple simpler queries. It can improve performance in some scenarios.
๐ Balance Memory and Performance
Sometimes two smaller queries use significantly less memory than one large query. Evaluate your queries not just by speed but by overall resource usage as well.
๐ Note: Always measure and test
Test your queries against realistic data volumes. Use your largest expected production datasets to ensure you pick the right optimization.
Which of these optimizations surprised you the most?
๐ Here is how to get started with OpenTelemetry:
โณ https://t.co/r4FsxxIPGc
๐ Here is how I optimized real-world EF Core Query from 30 seconds to 30 milliseconds:
โณ https://t.co/HxzpSqZUpA
โ
โป๏ธ Repost to help your network learn how to optimize EF Core queries
โ Follow me ( @AntonMartyniuk ) for more
#dotnet #Sq
๐ช๐ต๐ ๐ฑ๐ผ๐ฒ๐ ๐๐ผ๐ผ๐ด๐น๐ฒ ๐ฟ๐ฒ๐ฐ๐ผ๐บ๐บ๐ฒ๐ป๐ฑ ๐ ๐ผ๐ฑ๐๐น๐ฎ๐ฟ ๐ ๐ผ๐ป๐ผ๐น๐ถ๐๐ต๐ ๐ถ๐ป๐๐๐ฒ๐ฎ๐ฑ ๐ผ๐ณ ๐ ๐ถ๐ฐ๐ฟ๐ผ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ๐?
Over the last decade, we have witnessed a significant trend of utilizing microservices across various industries. We were building systems for a few hundred or thousand users and wanted to know how to make a system for millions of users. This was over-engineering and needed to be corrected.
Why was it wrong? Because the development lasted a long time, we created incredibly complex systems, which are hard to maintain. This is especially true for startups that must go fast and stay simple.
A recent paper by authors from Google found that most of their developers split binaries for one of the following reasons: to improve performance, enhance fault tolerance, and establish abstraction boundaries, allowing for flexible rollouts.
Yet, splitting applications into microservices has its challenges:
๐น ๐๐ ๐ต๐๐ฟ๐๐ ๐ฝ๐ฒ๐ฟ๐ณ๐ผ๐ฟ๐บ๐ฎ๐ป๐ฐ๐ฒ. The overhead of serializing data and sending it across the network is becoming an increasingly significant bottleneck.
๐น ๐๐ ๐ต๐๐ฟ๐๐ ๐ฐ๐ผ๐ฟ๐ฟ๐ฒ๐ฐ๐๐ป๐ฒ๐๐. It is incredibly challenging to reason about the interactions between every deployed version of every microservice.
๐น ๐๐ ๐๐ฎ๐ธ๐ฒ๐ ๐๐ผ๐ฟ๐ธ ๐๐ผ ๐บ๐ฎ๐ป๐ฎ๐ด๐ฒ. Rather than having a single binary to build, test, and deploy, developers must manage n different binaries, each on its release schedule.
๐น ๐๐ ๐ณ๐ฟ๐ฒ๐ฒ๐๐ฒ๐ ๐๐ฃ๐๐. Once a microservice establishes an API, it becomes easier to change by breaking the other services that consume the API.
So, they proposed the following approach:
๐ญ. ๐ช๐ฟ๐ถ๐๐ฒ ๐บ๐ผ๐ป๐ผ๐น๐ถ๐๐ต๐ถ๐ฐ ๐ฎ๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป๐ that are modularized into logically distinct components. A component is a long-lived agent, similar to an actor.
๐ฎ. ๐๐ฒ๐๐ฒ๐ฟ๐ฎ๐ด๐ฒ ๐ฎ ๐ฟ๐๐ป๐๐ถ๐บ๐ฒ ๐๐ผ ๐ฑ๐๐ป๐ฎ๐บ๐ถ๐ฐ๐ฎ๐น๐น๐ and automatically assign logistical components to physical processes based on execution characteristics. Therefore, if both components are in the same OS process, they are referred to as regular method calls. However, if they are co-located, calls are executed as remote procedure calls (RPCs) over the network. Runtime decides whether these modules should be collocated or moved to different machines (and scaled, etc.).
๐ฏ. ๐๐ฒ๐ฝ๐น๐ผ๐ ๐ฎ๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป๐ ๐ฎ๐๐ผ๐บ๐ถ๐ฐ๐ฎ๐น๐น๐, preventing different versions of an application from interacting.
This approach consists of two main parts: a programming model with abstraction that allows developers to write modularized applications and a runtime for building, deploying, and optimizing these applications. They claim that it reduces application latency by up to 15 times and costs by up to 9 times by simplifying application management and deployment.
If you want to check the framework that implements the approach from the paper, please visit https:// serviceweaver. dev/.
What do you think about this approach? Does it look like EJBs or CORBA?
I'm happy to release the first version of PackageGuard, a fully open-source command-line tool to verify that the NuGet dependencies of your .NET solutions are only using specific versions or certain open-source license forms.
Check it out at https://t.co/NSiOvBT3D5
It's just the first version, so review the backlog to see what is coming soon. NPM/Yarn support is one of the major features I'll start working on soon.
In case you havenโt noticed - every single notable framework out there except Next.js is either built on top of Vite or using Vite to some extent.
So yeah when you switch away from Next, you are switching to Vite one way or another.
@dvdstelt Het lijkt erop dat veel redenen voor toepassing van Eventsourcing ook opgelost kunnen worden via infrastructuur. Hoewel ik gecharmeerd ben van ES, vind ik het wel moeilijk om dรฉ reden aan te geven waarom je het zou moeten toepassen.
"I'm not old enough to say get off my lawn, butโฆ" @udidahan casts a critical eye over the cargo cult forming around event sourcing in his opening keynote at DDD Europe 2020 https://t.co/mEKDEsHgJk
Mark Zuckerberg stole Facebook from them.
So they sued him for $65 million.
Now they're crypto billionaires.
6 lessons from the wild story of the Winklevoss twins: