Rafael Giraldo (@RafaEntarch) header
Rafael Giraldo (@RafaEntarch) profile picture

Miramos el mundo una sola vez, en la infancia. El resto es memoria.

Bogotá, D.C., Colombia
Joined March 2016
Photo by Rafael Giraldo (@RafaEntarch)Photo by Rafael Giraldo (@RafaEntarch)
Rafael Giraldo retweeted
Stanford University just released free online courses. No payment required. Here are 8 FREE courses you don't want to miss in 2024:
74
917
28
3,235
601,805
Rafael Giraldo retweeted
Vulgar Display of Power was released on this day in 1992! It’s hard to believe that it’s 32 years old. Do you remember the first time you heard it? Share in the comments #pantera #vulgardisplayofpower #32yearsold #walk
54
444
48
2,245
150,693
Rafael Giraldo retweeted
What does a Platform Engineer do? cncf.io/blog/2023/12/29/empo…
39
149
13,579
📖 Complete Architecture for Building Enterprise RAG 🛠️ This architecture by @rungalileo provides a reference on both the algorithmic and system-level components needed to build production RAG 💫. There’s a lot in here 👇: It covers everything from the following broad categories: ✅ Handling user input: user auth 🔐, input guardrails, query understanding ✅ Core advanced chunking/retrieval techniques: the bread and butter of @llama_index ✅ How to store embeddings/documents/chat history/user feedback, and vector db tradeoffs ✅ How to choose a proper LLM inference solution ✅ Handling output: output guardrails, collecting user feedback, observability ✅ Other system-level improvements: Caching, multi-tenancy Check it out as your weekend reading! rungalileo.io/blog/mastering…
15
178
12
870
162,186
Rafael Giraldo retweeted
What are the differences between a load balancer and an API gateway? First, let's clarify some concepts before discussing the differences. 1️. NLB (Network Load Balancer) is usually deployed before the API gateway, handling traffic routing based on IP. It does not parse the HTTP requests. 2️. ALB (Application Load Balancer) routes requests based on HTTP header or URL and thus can provide richer routing rules. We can choose the load balancer based on routing requirements. For simple services with a smaller scale, one load balancer is enough. 3️. The API gateway performs tasks more on the application level. So it has different responsibilities from the load balancer. The diagram below shows the detail. Often, they are used in combination to provide a scalable and secure architecture for modern web apps. Option a: ALB is used to distribute requests among different services. Due to the fact that the services implement their own rating limitation, authentication, etc., this approach is more flexible but requires more work at the service level. Option b: An API gateway takes care of authentication, rate limiting, caching, etc., so there is less work at the service level. However, this option is less flexible compared with the ALB approach. Over to you: Which one should we use, a load balancer or an API gateway? -- Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): bit.ly/3KCnWXq
1
96
1
419
30,318
Rafael Giraldo retweeted
Types of memory. Which ones do you know? Memory types vary by speed, size, and function, creating a multi-layered architecture that balances cost with the need for rapid data access. By grasping the roles and capabilities of each memory type, developers and system architects can design systems that effectively leverage the strengths of each storage layer, leading to improved overall system performance and user experience. Some of the common Memory types are: 1. Registers: Tiny, ultra-fast storage within the CPU for immediate data access. 2. Caches: Small, quick memory located close to the CPU to speed up data retrieval. 3. Main Memory (RAM): Larger, primary storage for currently executing programs and data. 4. Solid-State Drives (SSDs): Fast, reliable storage with no moving parts, used for persistent data. 5. Hard Disk Drives (HDDs): Mechanical drives with large capacities for long-term storage. 6. Remote Secondary Storage: Offsite storage for data backup and archiving, accessible over a network. Over to you: Which memory type resonates most with your tech projects and why? Share your thoughts! -- Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): bit.ly/3KCnWXq
3
148
622
34,366
Rafael Giraldo retweeted
Key Use Cases for Load Balancers The diagram below shows top 6 use cases where we use a load balancer. 🔹 Traffic Distribution Load balancers evenly distribute incoming traffic among multiple servers, preventing any single server from becoming overwhelmed. This helps maintain optimal performance, scalability, and reliability of applications or websites. 🔹 High Availability Load balancers enhance system availability by rerouting traffic away from failed or unhealthy servers to healthy ones. This ensures uninterrupted service even if certain servers experience issues. 🔹 SSL Termination Load balancers can offload SSL/TLS encryption and decryption tasks from backend servers, reducing their workload and improving overall performance. 🔹 Session Persistence For applications that require maintaining a user's session on a specific server, load balancers can ensure that subsequent requests from a user are sent to the same server. 🔹 Scalability Load balancers facilitate horizontal scaling by effectively managing increased traffic. Additional servers can be easily added to the pool, and the load balancer will distribute traffic across all servers. 🔹 Health Monitoring Load balancers continuously monitor the health and performance of servers, removing failed or unhealthy servers from the pool to maintain optimal performance. – Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): bit.ly/3KCnWXq
4
156
2
524
33,386
Rafael Giraldo retweeted
What is SSO (Single Sign-On)? The diagram below illustrates how SSO works. Step 1: A user visits Gmail, or any email service. Gmail finds the user is not logged in and so redirects them to the SSO authentication server, which also finds the user is not logged in. As a result, the user is redirected to the SSO login page, where they enter their login credentials. Steps 2-3: The SSO authentication server validates the credentials, creates the global session for the user, and creates a token. Steps 4-7: Gmail validates the token in the SSO authentication server. The authentication server registers the Gmail system, and returns “valid.” Gmail returns the protected resource to the user. Step 8: From Gmail, the user navigates to another Google-owned website, for example, YouTube. Steps 9-10: YouTube finds the user is not logged in, and then requests authentication. The SSO authentication server finds the user is already logged in and returns the token. Step 11-14: YouTube validates the token in the SSO authentication server. The authentication server registers the YouTube system, and returns “valid.” YouTube returns the protected resource to the user. The process is complete and the user gets back access to their account. Over to you: Question 1: have you implemented SSO in your projects? What is the most difficult part? Question 2: what’s your favorite sign-in method and why? – Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): bit.ly/3KCnWXq
1
170
3
675
43,798
Rafael Giraldo retweeted
How is data sent over the internet? What does that have to do with the OSI model? How does TCP/IP fit into this? 7 Layers in the OSI model are: 1. Physical Layer 2. Data Link Layer 3. Network Layer 4. Transport Layer 5. Session Layer 6. Presentation Layer 7. Application Layer -- Subscribe to our weekly newsletter to get a Free System Design PDF (158 pages): bit.ly/3KCnWXq
11
486
9
1,843
106,378
Rafael Giraldo retweeted
How is data sent over the network? Why do we need so many layers in the OSI model? The diagram below shows how data is encapsulated and de-encapsulated when transmitting over the network. 1/9
63
739
14
2,787
Rafael Giraldo retweeted
Explaining JSON Web Token (JWT) with simple terms. We've made a video (YouTube Link at the end). Imagine you have a special box called a JWT. Inside this box, there are three parts: a header, a payload, and a signature. The header is like the label on the outside of the box. It tells us what type of box it is and how it's secured. It's usually written in a format called JSON, which is just a way to organize information using curly braces { } and colons : . The payload is like the actual message or information you want to send. It could be your name, age, or any other data you want to share. It's also written in JSON format, so it's easy to understand and work with. Now, the signature is what makes the JWT secure. It's like a special seal that only the sender knows how to create. The signature is created using a secret code, kind of like a password. This signature ensures that nobody can tamper with the contents of the JWT without the sender knowing about it. When you want to send the JWT to a server, you put the header, payload, and signature inside the box. Then you send it over to the server. The server can easily read the header and payload to understand who you are and what you want to do. Over to you: When should we use JWT for authentication? What are some other authentication methods? Watch and subscribe here: youtu.be/P2CPd9ynFLg
14
301
4
1,338
117,816
Rafael Giraldo retweeted
If you want to master something, explain it to someone else. 🧠
71
952
80
6,114
350,157
Rafael Giraldo retweeted
Understand. Don't memorize. Learn principles, not formulas.
78
2,097
86
10,494
665,798
Rafael Giraldo retweeted
Open-Source LLMs vs. ChatGPT: 1. General Capabilities: Llama-2-chat-70B variant exhibits enhanced capabilities in general conversational tasks, surpassing the performance of GPT-3.5-turbo; UltraLlama matches GPT-3.5-turbo’s performance in its proposed benchmark. 2. Agent Capabilities (using tools, self-debugging, following natural language feedback, exploring environment): Lemur-70B-chat surpasses the performance of GPT-3.5-turbo when exploring the environment or following natural language feedback on coding tasks. AgentLlama-70B achieves comparable performance to GPT-3.5-turbo on unseen agent tasks. Gorilla outperforms GPT-4 on writing API calls. 3. Logical Reasoning Capabilities: fine-tuned models (e.g., WizardCoder, WizardMath) and pre-training on higher quality data models (e.g., Lemur-70B-chat, Phi-1, Phi-1.5) show stronger performance than GPT-3.5-turbo. 4. Modeling Long-Context Capabilities: Llama-2-long-chat-70B outperforms GPT-3.5-turbo-16k on ZeroSCROLLS. 5. Application-specific Capabilities: - query-focused summarization (fine-tuning on training data is better) - open-ended QA (InstructRetro shows improvement over GPT3) - medical (MentalLlama-chat-13 and Radiology-Llama-2 outperform ChatGPT) - generate structured responses (Struc-Bench outperforms ChatGPT) - generate critiques (Shepherd is almost on-par with ChatGPT) 6. Trust-worthy AI: - hallucination: during finetuning - improving data quality during fine-tuning; during inference - specific decoding strategies, external knowledge augmentation (Chain-of-Knowledge, LLM-AUGMENTER, Knowledge Solver, CRITIC, Prametric Knowlege Guiding), and multi-agent dialogue. - safety: GPT-3.5-turbo and GPT-4 models remain at the top for safety evaluations. This is largely attributed to Reinforcement Learning with Human Feedback (RLHF). RL from AI Feedback (RLAIF) could help reduce costs for RLHF. 🔗arxiv.org/abs/2311.16989 Thanks to the authors for the great paper! @CaimingXiong @HailinChen3 @FangkaiJiao @qcwntu @XingxuanLi @RuochenZhao3 @MatRavox @JotyShafiq
20
259
18
1,057
178,657
9 Must-Read Book's Visual Summary 1. Atomic Habits: The Four Ways Of Behaviour Change
83
2,623
69
9,792
1,648,091
𝗗𝗼 𝗬𝗼𝘂 𝗡𝗲𝗲𝗱 𝗧𝗼 𝗞𝗻𝗼𝘄 𝗔𝗹𝗹 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀? The answer is no. Even though we have 23 design patterns, around 10 are mostly used in everyday development. Knowing which patterns exist overall is good, but you need to know these very well. Design patterns can be divided into three main types: 𝟭. 𝗖𝗿𝗲𝗮𝘁𝗶𝗼𝗻𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀 These design patterns deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. Important patterns in this group are: 🔹𝗙𝗮𝗰𝘁𝗼𝗿𝘆: This pattern allows delegating the instantiation logic to factory classes. The Factory Method creates objects without exposing the instantiation logic to the client. 🔹𝗦𝗶𝗻𝗴𝗹𝗲𝘁𝗼𝗻: The Singleton pattern ensures that a class has only one instance and provides a global point of access to it. It's useful when exactly one object is needed to coordinate actions across the system. 𝟮. 𝗦𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀 These patterns deal with the composition of classes and objects that form larger structures. Important patterns in this group are: 🔹𝗔𝗱𝗮𝗽𝘁𝗲𝗿: This pattern works as a bridge between two incompatible interfaces. It wraps an existing class with a new interface to become compatible with the client's interface. 🔹𝗙𝗮𝗰𝗮𝗱𝗲: The Façade pattern provides a unified interface to a set of interfaces in a subsystem. Façade defines a higher-level interface that makes the subsystem easier to use. 🔹𝗗𝗲𝗰𝗼𝗿𝗮𝘁𝗼𝗿: This pattern dynamically adds/overrides behavior in an existing method of an object. This pattern provides a flexible alternative to subclassing for extending functionality. 🔹𝗣𝗿𝗼𝘅𝘆: The Proxy pattern provides a surrogate or placeholder for another object to control access to it. In its most general form, a proxy is a class functioning as an interface to something else. 𝟯. 𝗕𝗲𝗵𝗮𝘃𝗶𝗼𝗿𝗮𝗹 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝘀 These patterns are specifically concerned with communication between objects and how they interact and distribute work. Important patterns in this group are: 🔹𝗖𝗼𝗺𝗺𝗮𝗻𝗱: The Command pattern encapsulates a request as an object, thus allowing users to parameterize clients with queues, requests, and operations. 🔹𝗧𝗲𝗺𝗽𝗹𝗮𝘁𝗲 𝗠𝗲𝘁𝗵𝗼𝗱: This pattern defines the program skeleton of an algorithm in a method called template method, which defers some steps to subclasses. 🔹𝗦𝘁𝗿𝗮𝘁𝗲𝗴𝘆: The Strategy pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it. 🔹𝗢𝗯𝘀𝗲𝗿𝘃𝗲𝗿: This pattern defines a one-to-many dependency between objects so that all its dependents are notified and updated automatically when one object changes state. #technology #softwareengineering #programming #techworldwithmilan #developers
7
284
2
1,186
109,874
Rafael Giraldo retweeted
The more you learn, the more you realize how little you know.
103
1,663
77
7,833
493,640
Monolithic VS Microservices Architecture. Which one are you using? 🤔 In the realm of software architecture, the choice between Monolithic and Microservices can shape the destiny of your application. Let's break down the key differences in a nutshell! 🧩 1. Monolithic Architecture 🏰 - One Big Castle: Monoliths are like a majestic castle, where all components (database, server, user interface) are tightly knit into a single structure. - Unified & Simple: Easy to develop and deploy due to its unified structure. Changes are made in one place, making coordination a breeze. - Scaling Challenges: Scaling can be a challenge. When one aspect needs upgrading, the entire application must be scaled, even if only a small part requires more resources. 2. Microservices Architecture 🌐 - City of Specialized Buildings: Microservices resemble a bustling city, with each service as a specialized building handling a distinct function. - Scalability & Flexibility: Offers scalability on a per-service basis. If one part of the application needs more resources, you can scale just that service. - Increased Complexity: As the number of services grows, managing the communication between them can become complex. Decentralization brings its own set of challenges. Choosing Your Path 🛤️ - Start Simple: Monoliths are great for small to medium-sized projects where simplicity is key. - Modular Growth: Microservices shine when you anticipate the need for independent scaling or if you have a large and complex application with multiple teams. Conclusion 🎯 - No One-Size-Fits-All: There's no silver bullet. The choice between Monolithic and Microservices depends on the nature and future goals of your project. - Hybrid Approaches: Some find success in hybrid approaches, combining the best of both worlds. Remember, the right architecture can be a game-changer for your project. Assess your needs, weigh the pros and cons, and embark on the architectural journey that aligns with your vision! 🚢✨ 👍🏿 Subscribe to our newsletter - bit.ly/45ucZPf #systemdesign #coding #interviewtips
18
423
6
1,728
134,127
Rafael Giraldo retweeted
Best Books and Places to Learn System Design in depth 1. DesignGuru - bit.ly/3pMiO8g 2. ByteByteGo - bit.ly/3P3eqMN 3. Exponent - bit.ly/3cNF0vw 4. Udemy - bit.ly/3vFNPid 5. Educative - bit.ly/3Mnh6UR
1
64
213
24,000