Time to consider not just human visitors, but to treat agents as first-class citizens. Cloudflareโs network now supports real-time content conversion to Markdown at the source using content negotiation headers.
https://t.co/B7wYH4PtA8
Super excited about this launch -- every Claude Code user just got way more context, better instruction following, and the ability to plug in even more tools
The Naroditsky family shares the sad news of Danielโs unexpected passing. Daniel was a talented chess player, educator, and beloved member of the chess community. We ask for privacy as the family grieves.
๐ฎ๐ณโ๏ธIndia Exclusive Giveawayโ๏ธ๐ฎ๐ณ
To celebrate GM Praggnanandhaa joining Team Liquid, we are giving away 2 SIGNED Pragg jerseys.
To enter:
๐Like + RT + Follow @teamliquid + Reply๐
โ ๏ธMUST BE RESIDENT OF INDIAโ ๏ธ
@VKazulkin Having autonomous teams without Managers works for a mature organization and team but to lead the team we need a transition plan and how the manager does get measured in the Autonomous team ?!
Iโm currently in @BryceCanyonNPS , and it seems like there are a couple of fires nearby. I had planned to drive to @ZionNPS east entrance tomorrow. Has anyone traveled there today or planned to do so tomorrow? Do you have any thoughts or experiences to share?
Timothy Davis, Lead Cyber Threat Intelligence Analyst at CIS, discusses the role of malware takedowns in a recent podcast episode. Listen here: https://t.co/zUq6Wo5rEc #cybersecurity#malware
In September, I got the chance to pair program for two hours with the legendary Steve Yegge (@Steve_Yegge), where he coached me on what he calls โCHOP, or chat-oriented programming,โ and built something that Iโve wanted to build for nearly a year.
I learned how to use @SourcegraphCody to level up in ways that I couldnโt quite imagine before.
You may have seen the video excerpts Iโve made of videos and podcasts of talks I enjoyed โย hereโs the first one that I created of the famous Dr. Erik Meijer (@headinthebox), where he talks about how we might be the last generation of developers to write code by hand, and that we should have fun doing it.
I created the tool to make these video excerpts during that two-hour pair programming session with Steve!
We recorded the entire session โย and here, I'm posting the โhighlights reels,โ where I show the prompts that I used (coached by Steve) to create the app, and the lessons learned along the way.
I canโt think of a better way to learn. Dr. Anders Ericsson, renowned for his research on expertise and deliberate practice, wrote the fantastic book โPeak,โ where he identifies key elements to acquire new skills and achieve mastery, such as learning to play musical instruments, play sports, and practice medicine. Those elements are:
- Expert coaching: you learn best when guided by an expert (thatโs Steve!)
- Fast feedback: you learn best when you get immediate, actionable feedback, so you can identify and correct errors quickly, and reinforce positive behaviors (check!)
- Intentional practice: you learn best when focusing on specific tasks (letโs CHOP more, as opposed to manually typing out code!)
- Challenging tasks: you learn best when you tackle tasks slightly beyond your current abilities (check!)
I canโt overstate how much I learned in two hours. In this thread, I post segments from that session, with some introductions, a statement of goals, and portions from the approximately 50 minutes required to build the code that uses ffmpeg to generate video excerpts, with transcribed captions.
(Building the app in 40 easy steps.)
It was fascinating to re-watch the recording โย Iโve watched it in its entirety several times, which I found wildly entertaining. But I wanted to see if I could extract the lessons, so people wouldnโt need to watch the entire 90-minute video.
I inserted video captions that describe what is going on, with any prompts Iโm giving to @SourcegraphCody / Claude / ChatGPT, so you can follow along, as well as other insights or lessons learned.
(In the lower-right corner of the video that shows the elapsed time โย I was astonished to discover that, with Steveโs help, we had gotten the video extraction working in about 47 minutes. The remainder of the two hours was learning the tools, chit-chatting, joking around, etc.)
Among the lessons learned:
- in the beginning, my prompts were unambitious โย Steve kept encouraged me to โtype less, and lean on the LLM more.โ
- despite Steve saying that the tools fully supporting CHOP still being a long way off, youโll see that the interaction model becomes very evident by the end โ give the LLM the relevant context, ask it to build or modify something for you, and ideally, itโll appear in place, or itโll be something you can copy/paste into your code base.
- a key skill is breaking tasks down to make steps more concrete for the LLM โย or as Steve (and many Clojure programmers) likes to say, you reify your tasks (i.e., you make it more concrete or realized)
- having a good way to run your tests quickly becomes critical, because you often won't read the code that the LLM wrote โย until the tests fail.
- when tests fail, a technique is just to ask the LLM to โtry it again,โ but lots of human judgment is required here. Sometimes this works, while other times, youโll be iterating in circles, never getting closer to your goal
1/??
๐๐ผ๐ ๐๐ผ ๐ฑ๐ผ ๐บ๐ถ๐ฐ๐ฟ๐ผ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ๐ ๐ฎ๐ฟ๐ฐ๐ต๐ถ๐๐ฒ๐ฐ๐๐๐ฟ๐ฒ ๐ฝ๐ฟ๐ผ๐ฝ๐ฒ๐ฟ๐น๐?
๐ฆ๐ฒ๐น๐ณ-๐ฐ๐ผ๐ป๐๐ฎ๐ถ๐ป๐ฒ๐ฑ ๐ฆ๐๐๐๐ฒ๐บ๐ (๐ฆ๐๐ฆ) is a software architecture approach that prioritizes the decentralization of applications into independent systems, each with its domain logic, UI, and data storage. Unlike Microservices, smaller services focused solely on business logic, SCS are larger and encompass a broader scope within a specific domain.
SCS are systems that represent ๐ฎ๐๐๐ผ๐ป๐ผ๐บ๐ผ๐๐ ๐๐ฒ๐ฏ ๐ฎ๐ฝ๐ฝ๐น๐ถ๐ฐ๐ฎ๐๐ถ๐ผ๐ป๐, which include web UI, business logic and database, and it might have a service API. A single team usually owns them.
The main ๐ฎ๐ฑ๐๐ฎ๐ป๐๐ฎ๐ด๐ฒ๐ of such systems are:
๐ญ. ๐๐๐๐ผ๐ป๐ผ๐บ๐ - Each SCS operates independently with its database, business logic, and user interface.
๐ฎ. ๐๐ผ๐บ๐ฎ๐ถ๐ป-๐ฎ๐น๐ถ๐ด๐ป๐ฒ๐ฑ - SCS is structured around specific business domains, ensuring each unit represents a coherent and meaningful set of functionalities.
๐ฏ. ๐๐ฒ๐ฐ๐ฒ๐ป๐๐ฟ๐ฎ๐น๐ถ๐๐ฒ๐ฑ ๐๐ฎ๐๐ฎ ๐ ๐ฎ๐ป๐ฎ๐ด๐ฒ๐บ๐ฒ๐ป๐ - Individual databases per SCS ensure data consistency within its boundary, reducing cross-service dependencies.
๐ฐ. ๐ง๐ฒ๐ฐ๐ต๐ป๐ผ๐น๐ผ๐ด๐ ๐๐ถ๐๐ฒ๐ฟ๐๐ถ๐๐ - Allows for different technology stacks to be used across other SCS, suiting the specific needs of each domain.
๐ฑ. ๐๐ ๐ฝ๐น๐ถ๐ฐ๐ถ๐๐น๐ ๐ฃ๐๐ฏ๐น๐ถ๐๐ต๐ฒ๐ฑ ๐๐ป๐๐ฒ๐ฟ๐ณ๐ฎ๐ฐ๐ฒ - Well-defined interfaces for interactions with other systems, maintaining a clear contract while preserving encapsulation.
๐ฒ. ๐๐ป๐ฑ๐ฒ๐ฝ๐ฒ๐ป๐ฑ๐ฒ๐ป๐ ๐๐ฒ๐ฝ๐น๐ผ๐๐ฎ๐ฏ๐ถ๐น๐ถ๐๐ - Each SCS can be deployed, scaled, and updated independently without affecting other systems.
Such systems go well along with ๐๐ผ๐บ๐ฎ๐ถ๐ป-๐ฑ๐ฟ๐ถ๐๐ฒ๐ป ๐๐ฒ๐๐ถ๐ด๐ป (๐๐๐). The first step in creating such systems is domain analysis, which can be conducted by identifying bounded contexts that align with specific business domains. Each bounded context is then encapsulated within an SCS, which comprises its own data management, business logic, and user interface, ensuring each system is autonomous yet able to interact with others through well-defined APIs when necessary.
Why Self-contained Systems (SCS) has the ๐ฒ๐ฑ๐ด๐ฒ ๐ผ๐๐ฒ๐ฟ ๐บ๐ถ๐ฐ๐ฟ๐ผ๐๐ฒ๐ฟ๐๐ถ๐ฐ๐ฒ๐:
๐น ๐๐ฟ๐ผ๐ฎ๐ฑ๐ฒ๐ฟ ๐๐ฐ๐ผ๐ฝ๐ฒ: SCS has a broader scope encompassing the UI, business logic, and data storage within a bounded context
๐น ๐ฅ๐ฒ๐ฑ๐๐ฐ๐ฒ๐ฑ ๐ข๐ฝ๐ฒ๐ฟ๐ฎ๐๐ถ๐ผ๐ป๐ฎ๐น ๐๐ผ๐บ๐ฝ๐น๐ฒ๐ ๐ถ๐๐: Microservices can lead to a high level of operational complexity due to the management of many smaller, interdependent services, while SCS is more significant and more autonomous.
๐น ๐๐ฎ๐๐ฎ ๐๐ผ๐ป๐๐ถ๐๐๐ฒ๐ป๐ฐ๐: SCS manages their data, leading to better data consistency within each system, while Microservices often rely on a shared data store.
Check the full link in the comments.
#softwareengineering #microservices
Most people focus on optimizing the SELECT, but performance starts at CREATE.
5 simple tips for designing a better database.
1. Normalize Your Data
โข First Normal Form (1NF): Each column should contain atomic (indivisible) values, and each column should contain values of a single type.
โข Second Normal Form (2NF): Every non-key column must depend on the entire primary key, not just part of it. This applies to tables with composite primary keys (a primary key made of multiple columns).
โข Third Normal Form (3NF): Every non-key column must depend only on the primary key and nothing else (i.e., no transitive dependencies).
2. Use Appropriate Data Types
Choosing the right data types will impact performance and storage efficiency. Always:
โข Use the smallest data type that can hold your data.
โข Avoid using TEXT or BLOB unless absolutely necessary.
โข Be mindful of precision requirements for numeric data types.
โข Use DATE or TIMESTAMP for date/time data instead of strings.
Example: Instead of using VARCHAR(255) for storing a date, use DATE.
3. Indexing Strategy
Indexes will improve query performance but can also slow down INSERT, UPDATE, and DELETE operations if overused. Develop a balanced indexing strategy:
โข Index columns are often used in WHERE, JOIN, and ORDER BY clauses.
โข Avoid indexing columns that are often updated.
โข Use composite indexes for queries involving many columns.
Example: Add an index if you do lookups often for the email column.
4. Use Constraints and Relationships
Enforce data integrity and relationships through constraints:
โข Use primary keys to identify rows uniquely.
โข Define foreign keys to enforce referential integrity between tables.
โข Define unique constraints for columns that require unique values.
โข Apply check constraints to enforce domain rules at the database level.
Example: Use NOT NULL constraints to ensure critical columns are always filled.
5. Partition Large Tables
โข Horizontal Partitioning: Split a table into many tables containing the same columns but different rows.
โข Vertical Partitioning: Split a table into many tables containing different columns.
Example: Separate infrequently accessed columns into a different table to reduce the size of the main table.
Performance starts with a good Design!
Hereโs a list of my favorite blogs to stay updated on everything around building things with LLMs and the generative AI space in general:
(No specific order)