NEW POST
Nik Malykhin needed to run a Java 1.5 codebase on today's hardware. His initial try to use LLMs wasn't helpful, but he made progress when he guided the process with careful steps.
https://t.co/3o8sVOcQsb
Ser un developer senior implica sufrimiento y frustración, no solo éxito. La IA está obviando este paso crucial del aprendizaje. Cuidado con los juniors que abusan de ella y no resuelven ni conflictos de Git solos. Esto es parte de mi podcast. #SeniorDev#Career#Tech
Lo correcto y lo legal no siempre coinciden. Lo correcto y lo ético, tampoco. Es fácil de ver: a veces lo correcto implica algo poco ético y otras veces lo ético implica algo ilegal. Es una relación terriblemente compleja.
Vivir en sociedad tiene como implicación que lo que yo considero ético y/o correcto no necesariamente es igual para otra persona, que merece exactamente el mismo respeto que yo y que debe tener garantizados sus derechos como los debo tener yo.
Si quieres convivir en armonía, debes renunciar a tu idea de lo correcto y/o de lo ético y obedecer lo que la ley dicta. Porque puede no ser correcto o ético para ti, pero es el máximo común divisor (o el mínimo común múltiplo, si lo prefieres) para que todos los ciudadanos mantengamos la confianza y la voluntad de construir la sociedad.
La ley, de una manera muy gruesa, es el resultado de obtener el promedio de lo que yo considero correcto/ético con lo que otras personas consideran correcto/ético.
Con el paso del tiempo las sociedades se vuelven complejas y necesitan referencias fuertes sobre cuáles son los valores y reglas del juego que las han vertebrado. Las Cartas Magnas, Cartas Fundacionales... las Constituciones, sirven para recordarnos las reglas: a los ciudadanos, naturalmente, pero sobre todo a los Poderes y a las Élites.
La Constitución —y, en general, todas las leyes—, en su propósito busca defender a la parte más débil frente a los abusos de los que son más malvados que tú. Casi siempre poderosos cuyos intereses son conflictivos con los de la sociedad (quieren amasar poder y enriquecerse a costa del resto de los ciudadanos).
Y llegamos a un punto donde controlan el sistema y el proceso de manera tal que pueden aprobar leyes para distorsionar lo que precisamente la Constitución quería prevenir: evitar los abusos de los Poderes.
Así que hasta aquí he llegado con mi voluntad de respetar el sistema.
El sistema ya no defiende a los ciudadanos, a las partes más débiles. Se ha convertido en un instrumento para los intereses de los Poderosos y las Élites, a costa de extraer rentas y derechos de los ciudadanos.
Cuando es el propio sistema el problema, tu deber es defender lo correcto, no defender el sistema... con toda la complejidad que arrastra el significado de "correcto".
Pero siempre hay que imponerse límites, o tu defensa de lo correcto te convierte en otro adversario para las personas que posiblemente puedan verse afectadas por tu pelea por "lo correcto".
En próximos pasos iré liberando una declaración de intenciones y empezaré activamente la desobediencia civil tecnológica.
Si te da miedo hablar Inglés, tienes que practicar.
El mejor recurso que te recomiendo es que uses Sesame, una IA conversacional que es una joya.
Tiene voz masculina y femenina, y sigue todo el rato el contexto de tu conversación. Es gratis.
→ https://t.co/ZKQ67YtQ08
Recurso para aprender Algoritmos en Programación.
Explicaciones visuales paso a paso y con código.
En Español y con gráficos de complejidad.
40 algoritmos, conceptos y estructuras de datos:
→ https://t.co/dJikJHnPPa
El mejor recurso de Patrones de Diseño en JavaScript.
Con casos de uso en React, Vue, Angular, TypeScript...
Gratis, con ejercicios y ejemplos paso a paso:
→ https://t.co/9oMtJbMao4
30 System Design Concepts EVERY Developer Should Know:
1. Client-Server Architecture
2. IP Address
3. DNS
4. Proxy / Reverse Proxy
5. Latency
6. HTTP/HTTPS
7. APIs
8. Rest API
9. GraphQL
10. Databases
11. SQL vs NoSQL
12. Vertical Scaling
13. Horizontal Scaling
14. Load Balancers
15. Indexing
16. Replication
17. Sharding
18. Vertical Partitioning
19. Caching
20. Denormalization
21. CAP Theorem
22. Blob Storage
23. CDN
24. WebSockets
25. Webhooks
26. Microservices
27. Message Queues
28. Rate Limiting
29. API Gateways
30. Idempotency
I made a 20 𝐦𝐢𝐧𝐮𝐭𝐞𝐬 𝐘𝐨𝐮𝐓𝐮𝐛𝐞 𝐯𝐢𝐝𝐞𝐨 explaining these concepts with visuals and animations.
Link in the comments.
Do give it a watch and subscribe for more such videos.
Choosing the right database is half the battle in system design.
Here’s a structured path to learning databases the right way.
Databases are the backbone of modern software systems. Choosing the right one can make or break your project. Here's how you should learn them.
1. Relational Databases (RDBMS)
• Structured.
• Tabular data.
• ACID transactions.
• Uses SQL.
2. NoSQL Databases
• Handles unstructured or semi-structured data.
• Has a flexible schema.
• Scales well for big data applications.
3. Document Databases
• Uses JSON-like documents.
• Supports dynamic schemas.
• Great for content management, e-commerce.
4. In-Memory Databases
• Optimized for speed.
• Used for real-time analytics & caching.
5. Time-Series Databases
• Optimized for timestamped data.
• Common for IoT, monitoring, and financial data.
6. Graph Databases
• Stores data as nodes, edges, and properties.
• Uses high-level query languages like Cypher (Neo4j) or Gremlin (Amazon Neptune).
• Ideal for relationship-heavy queries (e.g., social networks, fraud detection).
Picking the right database comes down to what problem you're solving.
• Start with SQL (RDBMS)—it's the foundation.
• Move to NoSQL when you need flexibility and scale.
• Use Document DBs (MongoDB) for JSON-like data.
• Redis (In-Memory) is a must for caching and speed.
• Time-Series DBs (Prometheus) are great for logs and IoT.
• Graph DBs (Neo4j) shine when relationships matter.
There's no one-size-fits-all database solution; sometimes, you need a combination.
Choosing a database goes beyond a simple yes or no; it's about learning the trade-offs.
What happens under the hood when you place a stock buy order?
Step 1: client places an order via the broker’s web or mobile app.
Step 2: broker sends the order to the exchange.
Step 3: the exchange client gateway performs operations such as validation, rate limiting, authentication, normalization, etc, and sends the order to the order manager.
Step 4: the order manager performs risk checks based on rules set by the risk manager.
Step 5: once risk checks pass, the order manager checks if there is enough balance in the wallet.
Step 6-7: the order is sent to the matching engine. The matching engine sends back the execution result if a match is found. Both order and execution results need to be sequenced first in the sequencer so that matching determinism is guaranteed.
Step 8 - 10: execution result is passed all the way back to the client.
Step 11-12: market data (including the candlestick chart and order book) are sent to the data service for consolidation. Brokers query the data service to get the market data.
Step 13: the reporter composes all the necessary reporting fields (e.g. client_id, price, quantity, order_type, filled_quantity, remaining_quantity) and writes the data to the database for persistence
A stock exchange requires 𝐞𝐱𝐭𝐫𝐞𝐦𝐞𝐥𝐲 𝐥𝐨𝐰 𝐥𝐚𝐭𝐞𝐧𝐜𝐲. While most web applications are ok with hundreds of milliseconds latency, a stock exchange requires 𝐦𝐢𝐜𝐫𝐨-𝐬𝐞𝐜𝐨𝐧𝐝 𝐥𝐞𝐯𝐞𝐥 𝐥𝐚𝐭𝐞𝐧𝐜𝐲. I’ll leave the latency discussion for a separate post since the post is already long.
--
Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): https://t.co/eVEdOFSYPY
How to Design a Chat Application like WhatsApp:
🔹 Chat Servers - Manages a large number of concurrent WebSocket connections, facilitate real-time communication, and ensure that messages are delivered efficiently between users with minimal latency.
🔹 Load Balancer - Distributes traffic across multiple chat server instances. Uses sticky sessions to ensure clients consistently connect to the same server.
🔹 User Connection Cache - A fast, in-memory cache (e.g., Redis) that stores user's active connection details, such as the chat server they’re connected to and their last_active timestamp.
🔹 Notification Service - Sends push notifications via providers like FCM or APNS when users are offline.
🔹 Message Queue - Decouples real-time messaging from storage of the messages.
🔹 Message Storage Service - Consumes incoming messages from the Message Queue and persists them in the Message DB for efficient storage and retrieval.
🔹 Group Service - Responsible for handling all group-related functionalities, including creating groups, updating group details and returning list of group members.
🔹 Media Service - Handles the uploading and management of multimedia content, such as images, videos, and audio files.
🔹 Blob Storage - Storage backend for a chat application’s multimedia content (eg., S3).
🔹 CDN - To reduce latency when uploading or downloading multimedia content, files are distributed to locations geographically closer to users via a Content Delivery Network (CDN).
You can read the detailed article on this system design interview problem here: https://t.co/b7nEUcloFQ
♻️ Repost to help others in your network.
¡Curso de Google para Aprender Testing desde cero!
✓ Gratuito y en Español
✓ Vitest, React y Web Components
✓ Tipos de pruebas y automatización
✓ Herramientas y las mejores prácticas
Te dejo la página en el primer comentario ↓