I stopped using Clean Architecture.
I replaced it with Vertical Slices. And you should too ๐
โ 4 projects and 5 layers to navigate just to add one endpoint
โ A Controllers folder, Services folder, Repositories folder, DTOs folder
โ One small change touches files across 4 projects
โ AI agents waste tokens crawling through layers to find your feature
โ Use Vertical Slice Architecture.
All feature code lives in one folder.
Here is what changes when you make the switch:
๐ญ. ๐๐ฒ๐ฎ๐๐๐ฟ๐ฒ๐ ๐ฏ๐ฒ๐ฐ๐ผ๐บ๐ฒ ๐ณ๐ผ๐น๐ฑ๐ฒ๐ฟ๐
For a "Create Shipment" feature:
โ CreateShipment.Endpoint.cs
โ CreateShipment.Handler.cs
โ CreateShipment.Mapping.cs
โ CreateShipment.Validators.cs
Everything for one feature lives in one place. To change the feature, you open one folder.
๐ฎ. ๐ฆ๐บ๐ฎ๐น๐น ๐ณ๐ผ๐ฐ๐๐๐ฒ๐ฑ ๐ฐ๐น๐ฎ๐๐๐ฒ๐ ๐๐ถ๐ป ๐ถ๐ป ๐ฎ๐ฌ๐ฎ๐ฒ
This is the part most architecture posts miss.
โณ Small focused classes save tokens when you work with AI
โณ AI agents understand your code much faster when it's all in one place
โณ Your teammates onboard in days, not weeks
๐ฏ. ๐๐น๐ฒ๐ฎ๐ป ๐๐ฟ๐ฐ๐ต๐ถ๐๐ฒ๐ฐ๐๐๐ฟ๐ฒ ๐ถ๐ ๐ป๐ผ๐ ๐ฑ๐ฒ๐ฎ๐ฑ
I'm not saying you should never use it.
Add Clean Architecture principles only when complexity justifies it: rich domain models, multiple infrastructure adapters, or hard isolation between layers.
๐ฐ. ๐๐ฟ๐ผ๐๐-๐๐น๐ถ๐ฐ๐ฒ ๐ฐ๐ฎ๐น๐น๐ ๐๐๐ถ๐น๐น ๐ป๐ฒ๐ฒ๐ฑ ๐ฟ๐๐น๐ฒ๐
VSA doesn't mean "let everything talk to everything."
In a modular monolith, I expose a PublicApi project per module:
โ Other modules see only the interface and DTOs
โ The implementation stays internal sealed
โ If I ever split a module into a service, the contract stays the same
๐ฑ. ๐๐๐ฒ๐ป๐๐ ๐ณ๐ผ๐ฟ ๐๐ถ๐ฑ๐ฒ ๐ฒ๐ณ๐ณ๐ฒ๐ฐ๐๐
When "Create Shipment" needs to update stock and notify a carrier, the handler doesn't call them directly.
It publishes a ShipmentCreatedEvent.
Other modules subscribe.
I wrote the complete production VSA guide with all the code, file layouts, auto-registrations, PublicApi and Event patterns.
๐ Read the full article here:
โณ https://t.co/1OyBrBm2kr
โโ
Check out the best resources of the week:
MongoDB's free AI Skill Badges teach you how to build AI apps that hold up in production: https://t.co/QnnzrtjsC2
The free Datadog Developer Toolkit shares resources built specifically for developers who shipping AI features: https://t.co/kYWd0rqXu4
โโ
โป๏ธ Repost to help other .NET developers ship better architecture
โ Follow me ( @AntonMartyniuk ) to improve your .NET and Architecture Skills
Linux 101: Drives, Partitions, and Mounts
Practice partitioning drives, formatting them with different filesystems, and working with mounts in a series of hands-on challenges:
- Mount a drive with existing data and read its contents https://t.co/6ksdTdYYNN
- Create a GUID Partition Table (GPT) on a blank drive https://t.co/BKfeojxyw5
- Split a drive into multiple partitions and format them as ext4 and btrfs https://t.co/zefqTwif33
- Mount an existing directory at a new location (bind mount) https://t.co/QNl2X27Fpk
- Make a filesystem mount survive a reboot https://t.co/hu0VywNu0q
I've been using these features using our internal builds for a while, and they have changed how I deal with pull requests. Check it out! https://t.co/kGkkcG9Xc6
The most fearless Indian tech reviewer?
โข Banned by OnePlus
โข Banned by Xiaomi
โข Started with phone reviews
โข Now reviews everything
โข Known for brutally honest opinions
โก๏ธThese are the (Most LIKELY) dates:
6th October - Inauguration
7th October - Services open for Public
We will get to know Officially by tomorrow. Waited for a long time so patiently, we are almost there now!!
#PurpleLine#Bangalore@ChristinMP_@NammaBengaluroo
A few years ago, a friend forwarded me a Lion King meme in which Simba (a Telugu kid) is asking his dad "What are national awards?" to which the dad replies, "I don't know, son. We are the Telugu film industry."
This win feels personal. And we still have a long way to go. ๐โจ
Uber CI/CD Tech Stack
Uber is one of the most innovative companies in the engineering field. Letโs take a closer look at their CI/CD tech stacks.
This post is based on research on Uber engineering blogs. If you spot any inaccuracies, please let us know.
Project planning: Asana, JIRA, Project, etc.
Backend services: Spring Boot to develop their backend services. And to make things even faster, they've created a nifty configuration system called Flipr that allows for speedy configuration releases.
Code issues: They developed NullAway to tackle NullPointer problems and NEAL to lint the code. Plus, they built Piranha to clean out-dated feature flags.
Repository: They believe in Monorepo. It uses Bazel on a large scale.
Testing: They use SLATE to manage short-lived testing environments and rely on Shadower for load testing by replaying production traffic. They even developed Ballast to ensure a smooth user experience.
Experiment platform: it is based on deep learning and they've generously open-sourced parts of it, like Pyro.
Build: Uber packages their services into containers using uBuild. It's their go-to tool, powered by Buildkite, for all the packaging tasks.
Deploying applications: Netflix Spinnaker. It's their trusted tool for getting things into production smoothly and efficiently.
Monitoring: Uber built their own monitoring systems. They use the uMetric platform, built on Cassandra, to keep things consistent.
Special tooling: Uber relies on Peloton for capacity planning, scheduling, and operations. Crane builds a multi-cloud infrastructure to optimize costs. And with uAct and the OnCall dashboard, they've got event tracing and on-call duty management covered.
Have you ever used any of Uber's tech stack for CI/CD? What are your thoughts on their CI/CD setup?
โ
Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): https://t.co/4QcX8btXGL
Multimodal Neurons in Pretrained Text-Only Transformers
paper page: https://t.co/kpk94sVtXS
Language models demonstrate remarkable capacity to generalize representations learned in one modality to downstream tasks in other modalities. Can we trace this ability to individual neurons? We study the case where a frozen text transformer is augmented with vision using a self-supervised visual encoder and a single linear projection learned on an image-to-text task. Outputs of the projection layer are not immediately decodable into language describing image content; instead, we find that translation between modalities occurs deeper within the transformer. We introduce a procedure for identifying "multimodal neurons" that convert visual representations into corresponding text, and decoding the concepts they inject into the model's residual stream. In a series of experiments, we show that multimodal neurons operate on specific visual concepts across inputs, and have a systematic causal effect on image captioning.
Linux command every developer should know
1. find - https://t.co/syQ0cVRupL
2. grep - https://t.co/BG7MJglRu3
3. curl - https://t.co/SUnYNAJcHi
4. lsof - https://t.co/0Zc2iVQ59D
5. chmod - https://t.co/FdjM96FaIj
6. tar - https://t.co/MDP9OAaa8T
need more? see this by @b0rk
What does API gateway do?
The diagram below shows the detail.
Step 1 - The client sends an HTTP request to the API gateway.
Step 2 - The API gateway parses and validates the attributes in the HTTP request.
Step 3 - The API gateway performs allow-list/deny-list checks.
Step 4 - The API gateway talks to an identity provider for authentication and authorization.
Step 5 - The rate limiting rules are applied to the request. If it is over the limit, the request is rejected.
Steps 6 and 7 - Now that the request has passed basic checks, the API gateway finds the relevant service to route to by path matching.
Step 8 - The API gateway transforms the request into the appropriate protocol and sends it to backend microservices.
Steps 9-12: The API gateway can handle errors properly, and deals with faults if the error takes a longer time to recover (circuit break). It can also leverage ELK (Elastic-Logstash-Kibana) stack for logging and monitoring. We sometimes cache data in the API gateway.
Over to you: 1) Whatโs the difference between a load balancer and an API gateway?
2) Do we need to use different API gateways for PC, mobile and browser separately?
โ
Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): https://t.co/4QcX8btXGL
Towards Generalist Biomedical AI
paper page: https://t.co/USJXBzFgvM
Medicine is inherently multimodal, with rich data modalities spanning text, imaging, genomics, and more. Generalist biomedical artificial intelligence (AI) systems that flexibly encode, integrate, and interpret this data at scale can potentially enable impactful applications ranging from scientific discovery to care delivery. To enable the development of these models, we first curate MultiMedBench, a new multimodal biomedical benchmark. MultiMedBench encompasses 14 diverse tasks such as medical question answering, mammography and dermatology image interpretation, radiology report generation and summarization, and genomic variant calling. We then introduce Med-PaLM Multimodal (Med-PaLM M), our proof of concept for a generalist biomedical AI system. Med-PaLM M is a large multimodal generative model that flexibly encodes and interprets biomedical data including clinical language, imaging, and genomics with the same set of model weights. Med-PaLM M reaches performance competitive with or exceeding the state of the art on all MultiMedBench tasks, often surpassing specialist models by a wide margin. We also report examples of zero-shot generalization to novel medical concepts and tasks, positive transfer learning across tasks, and emergent zero-shot medical reasoning. To further probe the capabilities and limitations of Med-PaLM M, we conduct a radiologist evaluation of model-generated (and human) chest X-ray reports and observe encouraging performance across model scales. In a side-by-side ranking on 246 retrospective chest X-rays, clinicians express a pairwise preference for Med-PaLM M reports over those produced by radiologists in up to 40.50% of cases, suggesting potential clinical utility. While considerable work is needed to validate these models in real-world use cases, our results represent a milestone towards the development of generalist biomedical AI systems.