● Home
Knowledge
Action Journal
Homework
Labs
Study
Try
Case
Make
Training
Misc
Encode Cards
Study History
Free Recall
Quizzes
Digests
Tasks
Conjectures
Belief Gym
Audio Timeline
Knowledge Items
People
Templates
Outcomes
DMXs
Situation Analysis
Council Debate
Parable
Branch Learning
Story Engine
Content Engine
Explainer
Rehearsal
Bench
Import Kindle Notes
--Catchfile
$1 tasks and $4 tasks
01 isn't a chat model
1,000 Simultaneous Experiments: The Next Mental State for Founders
10 DFS Secrets From Top Pros
10 Marketing Lessons from Steve Jobs
10 Traits of Massively Successful People
1000 Ways to Make $1000
100M Leads
100M Money Models
100M Offers
106 Response Winning Headlines
10X is Easier than 2X
10X: Metrics for Early Stage Startups
12 Principles of Manufacturing Excellence
12 Winning Strategies For Executives With ADHD
13 Habits of Smart Risk Takers
20 Rules of Knowledge Formulation
2020 Shareholder Letter
2023 RUFF Planning
2024 Life Handbook
2025 Fantasy Football Impact: New Coaches
2026 Fantasy Prep
2026 Fantasy Prep: Fantasy Points
2026 Fantasy Prep: Late Round Sleepers
2026 Product Strategy Vision & Initiatives
2026 Productivity Stack: Sleep, Hormones, & Supplements - Dr Andrew Huberman
2026 Reading List
2x2 Matrix
33 Strategies of War
48 Laws of Power
4P Copywriting formula
50 Things I Know
500 Ways To Deliver Value
51 questions you can ask in any meeting when you are "not getting it"
55 Business Model Pattern
7 Habits of Highly Effective People
7 Key Metrics Every Business Should Track
7 Powers
7 Rules of Power: Surprising--but True--Advice on How to Get Things Done and Advance Your Career
76ers
78 (Unwritten) Rules Of Life
80/20 Principle
9 Rules of Debugging
92 Tricks: How To Talk To Anyone
97 Things Every Data Engineer Should Know
A Career Cold Start Algorithm
A Dozen Things I’ve Learned from Charlie Munger about Moats
A Good Explanation for Long Term Behavior
A LIFETIME OF SYSTEMS THINKING
A Mind for Sales
A Portfolio of Small Bets
A Practical Guide to Building an Event Streaming Platform
A Practical Guide to Executive Presence
a16z
a16z Reading Lists
a16z Sales
Aaron Levie
Accelerated Expertise
Acceptance and Commitment Therapy
Account Executives
ACG: Confluent Certified Developer for Apache Kafka
Achieving a World-Class Standard
Acquisition Reports
Actioning Towards PQOs
Active Inference
Activity Heuristic
Adam Townsend
Adding is favored over subtracting in problem solving
ADHD
ADHD 2.0: New Science and Essential Strategies for Thriving with Distraction
Adjacent Possible Theory
Adora Cheung
Advanced Arithmetic
Advisors
Aesthetic Digital Taste
Afghanistan
Agent Command Centers: Scaling Human Attention
Agent of Influence
Agent Skills API Doc
Agentic Systems, Deployment, and Enterprise Integration
Aggelos Mouzakitis
Aggregation Theory
Agile
Agile Strategy
AI Agents
AI agents and problem prioritization
AI and the Future of Coding
AI Model Inference Economics
AI Native Constraint Training
AI Native Platitudes
AI/ML Use Cases
AIP: Services Estate
Air Fryer Recipes
AirBnb
Akira Kurosawa
Alan Carr's Easyway Method
Alan Watts
Alasdair MacIntyre
Albert Einstein
Alchemy
Alex Hormozi
Algorithms of Thought
Algorithms To Live By
Allocation As a Theory
Alpine.js
Alternatives to OKRs
altMBA Prompts
Always Day One
Amanda Robson
Amazon Leadership Principles
Amazon Q and Amazon Quick
Ambient Agents
Amp it Up
Amplifying Contextual, Analogical, Temporal, and Counterfactual Intelligence
Amy Dunford
Amy Hoy
AMZN Shareholder Letters
An MBA for Business Operators
Analysis + Capital + Execution
Analytics
Analytics and Shift-Left
Anatomy of a League Winner
andrej karpathy on learning
Andrew Chen
Andrew Huberman
Andrew Wilkson
Andy Grove
Annie Duke
Anticipatory Affect
Antifragile
Antonio Damasio
Apache Avro
Apache Iceberg
Apache Kafka
Apache Kafka and API Management / API Gateway – Friends, Enemies or Frenemies?
Apache Kafka Background
Apache Kafka Definitive Guide
Apache Kafka Docs
Apache Kafka Fundamentals Course
Apache Kafka on Confluent Cloud Best Practices
Apache Kafka Survival Guide
Apache Kafka Use Cases
Apache Kafka vs. Enterprise Service Bus
Apache Pinot
Apache Samza
API Gateways
Apify
Application Integration
Applying Power Laws to Execution
Are there any good principles/formulas to follow when selecting a new business name?
Are there any good principles/formulas to follow when selecting a new business name?
Are You Solving The Right Problem
Are you stuck in movie logic?
Arguments
Aristotle
Aristotle's Three Appeals
Art of Nonfiction
Artificial Intelligence
Ashish CCDAK Notes
Asimov and Emotion
Ask More
Ask Your Developer
Async/Await
ATG Knees Over Toes
Atomic Habits
Augmented Intelligence
Austin
Automation
Automation Theory
Autopoiesis
Awaken The Giant Within
AWS
AWS Analytics
AWS Certified Generative AI Developer - Professional
AWS Databases
AWS Generative AI By Layer
AWS Generative AI By Service
AWS Generative AI By Service: Application Integration
AWS Generative AI By Service: Machine Learning
AWS Generative AI By Service: Management and Governance
AWS Generative AI By Service: Security, Identity, and Compliance
AWS in One Line
AWS Lambda Sink Connector
AWS Networking
AWS Professional Architect Study Guide
AWS Storage
Ayesha Selden
Balanced Scorecard
Barbara Minto
Basic Economics
Basketball
Batch and Stream Processing in Confluent Cloud for Apache Flink
Bayes Theorem
Be Odysseus
Be Slightly Evil
Be Your Future Self Now
Becoming a better writer
Becoming Data Driven in Business: A Series
Behavior Change Management
Behavioral Game Theory
Being That Guy
Benzodiazephine
Best Practices for Driving Projects to Completion
Best Ways to Build Better Habits & Break Bad Habits
Better Harness: A Recipe for Harness Hill-Climbing with Evals
Better Problem Selection
Beyond the Sales Process
Biased Competition Theory
Big Bet Leadership
Big Data is Dead Long Live Easy Data
Binstack: Making a maximal multi-dimensional decision
Biofabrification
Biology
Bipul Sinha
Bird By Bird: Some Instructions On Writing And Life
Bitcoin
Black Box Machine Learning
Blake Emal
Blitzscaling
Blockchain
Body Language
Book of Hooks
Books
Bootstrap Grid System
Bootstrap Spacing Utilities
Bottlenecks vs. Bandpass
Boz
Brag Book
Brainstorming New Startup Ideas
Brainstorms / Action Journals
Branding Pays
Brandolini's Law (The Bullshit Asymmetry Principle)
Breakthrough Advertising
Brian Johnson
Brian Kehm
Brian Roemmele
Buffett & Munger – A Study in Simplicity and Uncommon, Common Sense
Build
Build a Prompt Learning Loop
Building Agents That Automate Knowledge Work
Building agents with the Claude Agent SDK
Building Event-Driven Microservices
Building LLM applications for production
Building Microservices
Building New Intelligence Agents
Business Engineering Blogs
Business of Blockchain
Businesses considered essential
Butter
Byrne Hobart
Cache Layer Architecture
Calixa
Calvin Rosser
Capital Allocation
Capital Allocation Guide
Careers
Careers in Sales
Carmen Medina
Cate Hall
Category Errors
Category Errors of AI/Agents
CCEL (Confluent Customer Engagement Lifecycle)
CeCe Moore
Certain to Win
CFLT Work Journal H2
Chamath Palihapitiya
Change Data Capture
Change Management
Change Management & Governance
Charisma University
Charles Blog Notes
Charlie Munger
Charlie Munger
ChatGPT
Checklist Manifesto notes
Chess
Chicken Recipes
China
Chip Wilson
Chris Orlob
CLA Constraints-Led Approach for Learning
Claude Code
Claude Skills
Clickhouse Connector
Clickstream Analysis
Cloud Consumption Playbook
Cloud KPIs
Cloud Migrations
Cloud Native Transformation
Cloud SDR Management Projects
Cloudflare
Clusterr Framework
Co-Intelligence
Co-opetition
Coffee v. Kale JTBD
Cognitive Appraisal
Cognitive Behavioral Therapy
Cognitive Biases
Cognitive Flexibility
Cognitive Reappraisal
Cold Calls
Color Combinations for Glyvian
Comedy
Common Tasks
CommonCog
Communicating with Agency
Communication
Communication is The Job
Communication Scripts
Communication Swipe File
Company
Company Proprietary Prompts
Comparing Apache Flink with Confluent Cloud for Apache Flink
Competitive Intelligence Toolkit:
Completion as a Crucial Dimension of Stepping Stones
Compound/Robust Engineering
Compressed Skill List
Compute and Containers
Compute Pools in Confluent Cloud for Apache Flink
Computer Programming
Computing
Confluent
Confluent 2024 Evolving Customer Growth GTM
Confluent 2024 Strategy
Confluent 2026
Confluent Big Bets
Confluent Cloud
Confluent Cloud Case Studies
Confluent Cloud Client/Service Quotas
Confluent Cloud Customer Success Engineering
Confluent Cloud Demo
Confluent Cloud Docs
Confluent Cloud Flink Autopilot
Confluent Cloud Onboarding Checklist
Confluent Cloud Pricing
Confluent Cloud Support Guide
Confluent Connectors
Confluent Customer Success and Expansion Strategies
Confluent Event Driven Microservices Whitepaper
Confluent FY24 Sales Comp
Confluent Intelligence 2026 Strategy
Confluent Land Motions
Confluent Mastery
Confluent MEDDPICC Guidebook
Confluent PAO LTV 2021
Confluent PG Metrics
Confluent Platform
Confluent Product Roadmap
Confluent Replicator
Confluent Salesforce Connectors
Confluent Solutions
Confluent Tools (K8s + Ansible)
Confluent Win Wires
Connect
Connect and CDC
Consilience
Context Engineering for AI Agents: Lessons from Building Manus
Context Graphs
Context Management of Big 3 Model Providers
Conversation Code
Conversation Code Revised Notes
Conversation-Driven Development
Conversational Kumite
Conversationalist
Cooking
Cooking Lasagna
Copywriting
Core Ideas of the Progress Principle
Cost & Capacity
Cost Optimization, Performance, and Observability
Costly Signaling Theory
Courage Equals Freedom w/ Claude
Courage To Be Disliked
COVID19
COVID19 Pandemic
Creating a Wraith
Creating Good Process
Creating great SAAS Landing Pages
Creating Sales Urgency
Creating Scaffolds with Laravel
Creating the Accountable Organization
Creating the Accountable Organization Guidance
Creating The Ultimate Odysseus System
Creative
Creative Selection
Criminal Profiling
Critical Chain Project Management
Critical Realism
Critical Thinking
Crucial Conversations
cSDR Cheatsheet
cSDR Demos
cSDR Discovery Playbook
cSDR Experiment
CSFLE
Culture Hacker
Culture Virusees
Cupid Investing
Curie Medical Demo Script
Curie Medical Presentation Script
Curves
Customer Experience Job Maps
Customer Job Deep Dive
Customer Retention
Cut your fantasy football drafts into quarters
Cybernetics
Cycle Time
Dad Jokes
Daily Intention Review
Dailys
Dakota Robertson
Damn the Org Chart
Dan Koe
Daniel Dennett
Daniel Disney
Daniel Gross
Danny Postma
Dashboards, Custom Reports, Intelligence Alerts
Data Driven Management
Data Driven Organizations
Data Driven Startups
Data Integration
Data Locality
Data Management at Scale
Data Mesh
Data Visualization
Data-Driven Businesses
Databricks
Databricks and Premier Inc
Databricks for Executives
Databricks for HLS
Databricks for Retail
Databricks Presentation Round Prep
Databricks Solutions Architect Interview
Databricks Solutions Design Interview Prep
Databricks Solutions Design: Consultative Layer
Databricks Solutions Design: Governance & Security
Databricks Solutions Design: Integration
Databricks Solutions Design: Serving & Consumption
Databricks Solutions Design: Sources & Ingestion
Databricks Solutions Design: Storage
Databricks Solutions Design: Transformation & Processing
Databricks Solutions Design: Whiteboard Tips
Databricks Vibe Coding Interview Prep
Databricks: Build, Pitch, Demo! - Curie Medical
Date Night Ideas
Dave Kline
David Goggins
David Ogilvy
David Senra
David Shippins
David Skok
Death is the Default
Decide To Play Great Poker
Decision Elimination: The Largest Hidden Lever on Transaction Cost
Decisions as Bets
Deep Agents
Deep Dive Into Marketing Channels for Indiehackers/Micropreneurs
Deep Learning
Deep Learning Basics
Deep Thinker
Deep Thinkers
Deep Thinking Books
Deglazing
Delivery Guarantees and Latency in Confluent Cloud for Apache Flink
Demand Based Marketing
Demand Curve
Demand Side Problems
Demand-Side Sales
Denise Shull
Descartes' Error
Design Principles: Feedback
Designing Data-Intensive Applications
Designing Event Driven Systems
Designing for Buying: How to Break Through the Ceiling in Product-Led Growth
Designing the Ideal Bootstrapped Business
Detailed Daily Manifestation Practice
Determinism in Continuous Queries on Confluent Cloud for Apache Flink
Developer Advocacy
Developer Productivity Startups
Developer Tools, Migration, and Customer Engagement
Devin Reed
DFS
Dickie Bush
Digital Business Solutions
Digital Ocean
Dinesh Raju
Directed Acyclic Graphs
Disarm, Elicit, Influence, Ask
Discipline Equals Freedom
Disciplined Risks
Discovery Calls
DiSSS Method
Distributed Systems
Ditch Your To-Do List. Use these Docs To Make More Impact
Docker
Doing Time Right
Domain Driven Design
Domains that are difficult for AI
Don't Create Chaos
Don't Flinch Manual
Don't Think of An Elephant
Don’t Build Multi-Agents
Donald Polkinghorne and Narrative Knowing
Dopamine Reward Prediction Error Visualization
Double-Loop Learning
Doublespeak
Douglas Engelbart's NLS/Augment System
Draftkings
Drift
Drift Script
Driven by Compression Progress
Drugs/Supplements
DSP 2 Year Plan
Duplicate Records in Tableflow
Dynamic Verbal Confirmation Prefixes
E-commerce
E-Myth Revisited
Easy Way To Stop Smoking
Eat That Frog
Economics
Economists Numbers Guide
Ed Thorpe
Effective Kafka
Effectual Entrepreneurship
Efficiency: Optimizing Thought and Action
Efficient Model Validation and Calibration Strategies
Electrical Engineering
Elements of a Story
Elena Verna
Elon Musk
Elon's Algorithm
Eloquent Query Scopes
Eloquent Relationships
Emotional Memories
Emulsion
Ender's Game
Endure
Engineering Teams
Epistemology
Eric Thomas
Escaping the Build Trap
ETL
ETL v ELT
Eurie Kim
Evaluation & Feedback
Evaluation, Quality Assurance, and Troubleshooting
Event and Data Modeling
Event Driven Microservices
Event Tracking
Every time I have a startup idea a few days or weeks later someone else is doing it. Are there any ideas left?
Everyone talks about Clawdbot, but here's how it works
Evolutionary Psychology
EX-Livewire
EX-Tailwind
Example Script
Excuse Log
Execution as StarCraft
Execution as StarCraft w/ Claude
Executive Functioning
Executive Functions: What They Are, How They Work, and Why They Evolved
Exercises with most muscle activation
Expected Value
Experimentation / Testing
Explaining Creativity
Exposure Therapy
Expressing Ideas Through Code: A Working Guide
Extraction, Sanitization & Normalization
Extreme Asking
Extreme Giving
Extreme Integrity
Extreme Networking
Extreme Ownership
Extreme questions to trigger new, better ideas
Extreme Urgency
Extremely High Agency
Fanatical Prospecting
Fantasy Football
Fantasy Football 2021
Fantasy Football 2024
Fat
fathersabrina
Favorite Reframes
FB Libra
Feel The Fear and Do It Anyway
Feel The Fear Notes
Feeling and Knowing
Fela Kuti
Fermi Estimation Problem Solving
Fermi Estimations
Figma's Dylan Field on the Future of Design
Financial Intelligence for Entreprenuers
Finish
Finish What You Start
Finite and Infinite Games
Fintech Tools and APIs
First Principles: Why Assistance Expands Effectiveness
First Round Articles
FiveThingsYouDidToday
Fix Your Broken Team: 8 Turnaround Tips for Sustained Success
Fixed-point futurism
Fixing the ROI rubric
Flink Overview
Flink SQL Statements in Confluent Cloud for Apache Flink
Flip The Script
FlockJay
Flow
Fluid Intelligence
Focus
Focus on Impact
Focused Work Sessions
Focusing: The Essence of Change
Football Practice Structure and Organization Principles
Foreign Keys
Forget The Funnel
Formal definitions of Pills (Red, White, Blue, Black)
Foundation Model Integration, Data Management, and Compliance
Foundation Model Integration, Data Management, and Compliance: Services
Foundation Training: From Pain To Performance
Four Disciplines of Execution
Four Disciplines of Execution Summary
Four Thousand Weeks
Frameworks
Framing
Frank Slootman
Frankfurt's Theory of Higher-Order Desires
Friedrich Hayek
From Impossible To Inevitable
Full Catastrophe Living
Function to get a url query value
Functional Programming
Fundamentals of Data Engineering: Plan and Build Robust Data Systems
Funny Worldstar
Future Me
Future Me Future Statement List
Future Me Present Statement List
Future Me v2
Future Me v3
Future Me v4
Future Me: Conditional Rules
FY2026 SE Accounts
FY26 Faire
Fyodor
Fyodor v2
Gadamer's Hermeneutic Circle
Game Theory
Games People Play
Gap Selling
Gartner's 13 Sales Plays for Account-Based Everything
Gary Becker's Human Capital Framework
Gary Klein
Gary V
Gena Gorlin
General Marketing
General Planning Dilemma
General Principles of Resistance Training
Generative AI
George Soros
Gestalt Psychology
Get It Done
Get The Truth
Getting Shit Done
Getting the most out of superintelligent ai models
Git
Global Economy and Politics
Gnosis
Gnosis
Goals and Ecommerce
Goals, Methods, Habits (GMH)
Going slow to go fast
Goldratt's Rules of Flow
Good Players Are Still Good: The Most Undervalued Wide Receiver Metric
Good Publications
Good Reasons for Bad Feelings
Good relationship questions
Good Strategy, Bad Strategy
Good To Great
Google Analytics Breakthrough
Google Fonts I like
Google Tag Manager
GPT 4.1 Prompting Guide
GPT-3
Graham Weaver
Graph Theory
Great Founder Theory
Great Writing Examples
Greatness Cannot Be Planned
Greg Brockman
Grooming
Growth and Stock Prices
Growth Engineering
Growth Is Now a Trust Problem
Growth Mindset
GTD
GTM Engineering School
GTM Tactics for Sales Acceleration
GTM Tactics for Sales Acceleration x ChatGPT
GTM Tactics for Sales Acceleration x Claude
GTM Tactics for Sales Acceleration x Grok
Guidelines to Problem Solving and Decision Making
Gwen Shapira
Hacking Growth
Hacking Sales
Hammock Driven Development
Handbook of Emotion Regulation
Handling and Manipulating Dates and Time in PHP
Hardball
Hardcore Claude Code (Reddit Post)
Harold Adams Innis
Harry Dry
Haruki Murakami
Harvard Business Review
HBM Industry Michael Porter
Heidegger's Concept of Disclosure
Helpful Tips
Henrik Wærdin on Agents and Portfolio Entrepreneurship
Hero's Journey
Heroes
Heuristics
Hey Whipple, Squeeze This: The Classic Guide to Creating Great Advertising
High Contact Work
High Growth Handbook
High Output Management
High Performance Habits
High Quality Investing Content Sources
High Scalability Blog
Home Ownership
Horizontal Scaling With Docker
Hosts file Block list
How Big Things Get Done
How Brands Grow
How Brands Grow: What Marketers Don't Know
How Builders Think
How can I accelerate my personal growth efficiently?
How can I come up with a marvelous idea (in technology or finance)?
How Claude Code Works
How Computer Programs Work
How email verification works
How Finance Works
How Is the ADHD Brain Different
How Kafka and Flink Can Support AI Agents
How NFL Offenses Are Adjusting in 2025
How Not To Be Wrong: The Power of Mathematical Thinking
How Note Taking Can Help You Become an Expert
How to Ace an Internal Interview
How to analyze the elements of a game
How To Ask Questions The Smart Way
How to attend an event/meetup
How to automate, delegate, or defer
How to avoid hubris
How to be a high-value man
How To Be a Power Connector
How to be a tech evangelist
How to be an effective human
How to Be Great? Just Be Good, Repeatably
How to be more agentic
How To Be The Funniest Person In Any Room
How to Become Data Driven
How to boil life's hardest questions down to just 12 rules
How to Build an Agent
How to Build an Effective Developer-Focused Product-Led Growth Team
How to build great products
How to Build Relationship with Sales Leads
How to center content vertically using bootstrap
How to classify games
How to clean teeth effectively
How to clean the kitchen
How to clear DNS cache on Mac
HOW TO COMMUNICATE WHEN TRUST IS LOW (WITHOUT DIGGING YOURSELF INTO A DEEPER HOLE)
How to complete a work break stretch
How to configure a domain from Godaddy to Netlify site
How to connect a domain to server
How to Convert Trials into Customers
How to create a game theory matrix
How to create a laravel request
How to create a new FailMachine Site
How to create a product vision
How to create a simple Select2 select input
How to create an alias in bash profile
How to create better outcomes
How to create OKRs
How to Create Successful Sales Plays and Playbooks
How to create your own Jquery plugin
How to debug a PHP script
How to debug slow queries
How To Decide
How to decide whether or not to quit something
How to design a automation solution
How to do a jobs map
How to do an ajax request using Vue
How to do customer development
How to do JTBD prototyping
How To Evaluate AI Tools
How to Figure Out What You Really Want
How To Find A $1 Million Idea — What Product To Build
How to find a single item using Eloquent
How to find an item in a javascript array by a value
How to get a nutty flavor
How to get cheap flight tickets
How to get just column names from MySQL table
How to get random elements using Eloquent
How to get startup ideas
How to get the current window location
How to get time between two dates PHP
How to Get Whatever You Want
How to get your ida.rsa.pub
How to Get Your Organization to Appreciate Apache Kafka
How to handle conditional rendering in Vue
How to handle events with your Vue component
How To Have a Good Day
How to have a robust database
How to horizontally align content using bootstrap
How to identify frame traps
How to identify the elements of a game
How to implement a Vue component
How to implement an AJAX form submission using Vue
How To Impress Someone You Admire
How to influence people to behave how you want them to
How to influence yourself
How to instantly be better at things
How to kill crab grass and clover
How to kill slow and stuck queries
How To Know Everything
How to make a sidebar with Bootstrap
How to make a sound design decision
How to make decisions
How to Make it to President's Club in 2025
How to manipulate JSON in Javascript
How to market effectively
How To Measure Anything
How To Meet New People Guidebook
How To Operate
How to operate effectively in this world
How To Pick The Right Tools
How to protect yourself from analytics hacking
How to purposefully read a book
How To Queue Work For Greatness
How to quickly launch software projects
How to react when you see someone has built something that you had an idea of building
How to resolve to the correct directory Path
How to Rise from Newbie to General Manager in Seven Years
How to run a masterful product company
How to run PHP Unit via Docker-compose containers
How to run SQL queries in Laravel
How to select high leverage activities to work on
How to sell to a problem
How to sell to developers
How to serve a server with php artisan
How to Set 2025 Goals That Are Impossible to Fail
How to Set up Time Synchronization on Linux Ubuntu
How to share a blog post after writing it
How to sharpen a knife
How to ssh into laravel forge
How to start a Jigsaw project from a repo locally
How to start a new FailMachine project locally
How to start a new Laravel Spark project
How to start a work session
How To Style a Page
How to think and be contrarian
How to think from first principles
How to track user behavior using Javascript
How to Train a Wild Elephant
How to troubleshoot bootstrap grid system
How to troubleshoot common Vue problems
How to troubleshoot SASS errors
How to troubleshoot solving riddles
How to troubleshoot the design process
How to turn a PHP object into an array
How to turn an idea into a working UI
How to understand the natural world
How to use a seeder and seed data in Laravel
How to Use AI to Create Role-Play Scenarios for Your Students
How To Use Docker Swarm for Horizontal Scaling
How to use Eloquent mutators
How to use Quilljs editor
How to use the Intrigue frame
How to use the javascript fetch API
How to use the Prize frame
How to use timezones with mysql
How to use webpack to implement Vue Modules
How to version control effectively with Git
How to wake up in the morning
How to Win in a Winner-Take-All World
How To Win Violently
How to win, constantly and consistently
How To Work Better With AI, Through AI
How to work hard
How to write
How to write a bash script
How To Write Clean and Effective Code
How To Write Funny
How to Write Nurture Emails
How volatility affect the price of options
Howard Marks
HTTP Headers
HTTP Methods
HTTP Status Codes
Hubspot
Hubspot Sales Email Subject Lines
Human-Computer Interaction (HCI) Principles
Human-LLM Collaborative Reasoning Techniques
Humble Modifiers
Husserl's Concept of Bracketing (Epoché)
HV Action
HVAC
IBM
IBM WatsonX
Identifying a niche between Information/AI/Data/Automation
Identifying Your Most Important Outputs
Identity & Entitlement
Identity Economics
If Only We Knew What We Know: The Transfer of Internal Knowledge and Best Practices
If you over salt your food
Igbo
Images of an Organization
Impatience
Implementing CRMs
Important Info
Important Information
Impossible To Inevitable
Impro
Improv Wisdom
Improving ChatGPT Prompts
Improving Predictive Processing Systems
In Defense of Radical Self-Betterment
Inadequate Equilibria
Inbox Ten
Incentives and the Cobra Effect
Increateable
India
Individuals as Magnitudes and Teams as Vector Sums
Inertia.js
Inference is the New Sales & Marketing Spend
Infinite Games
Influenza
Information and the Modern Corporation
Information Processing Models
Information Rules
Information Rules: A Strategic Guide to the Network Economy
Information Theory
Inner Game of Work
Inside OpenAI’s in-house data agent
Inspirations
Installing QuillJs
Instapage
Intellectual Humility Is a Cop-out
Intellectual Tapestry
Intellectual Truths
Intelligence Products
Intelligence tradecraft and Humint
Intercom Creating Best Practices
Intercom Customer Support Best Practices
Interesting Deep Learning Projects
Interesting GA segments for SAAS
Internal Training
Internet Pipes
Interviewing
Introduction to the Sales and Marketing Machine
Introductory Sales Questions
Intuition Pumps and Other Tools for Thinking
Inverse, Converse, Contrapositive
Investing
Irrational Fears
Is Covid19 a Synthetic Virus?
Itamar Turner-Tauring
J.L Austin Speech Act Theory
Jack Butcher
Jacob O'Bryant
James Gross's Process Model of Emotion Regulation
James O'Shaughnessy
Japan
Jason Capital
Jason Cohen
Jason Liu
Jasper Polak
Javascript
Javascript Array Manipulation
Javascript Tricks
Jay Kreps
Jean-Paul Sartre
Jeff Bezos
Jerry Seinfeld
Jess Chan
Jev
Jia Jiang
Jim Dethmer
Jim Rogers
Jim Rohn
Joanna Wiebe
Job Hunt
Job Stories
Jobs To Be Done Theory
John Anthony
John Cutler
John McMahon
Jordan Belfort
Jordan Peterson
Jordan Peterson
Josh Braun
Josh Brindley
Josh Waitzkin
Josh x Keenan
Journal
Jquery
JTBD Insight Framework
Julian Shapiro
Julie Gurner
Just Demo
Justin Skycak
Justin Welsh
Kafka Connect
Kafka Consistency and Availability
Kafka Integrations
Kafka Internals
Kafka Streams
Kafka Streams DSL
Kafka Topic Design
Kafka Value Props
Kafka, CDC, ML/AI, Agents
Kafka, CDC, ML/AI, Agents: Source
KafkaJs
Kage Bunshin
Kai Waehner
Karisma King
Katherine Boyle
Kathy Sierra
Keith Rabois
Keith Stanovich and Rational Thinking
Kelly Criterion
Keras
Kevin Samuels
Key Takeaways from Elite Athlete Mental Research
Kieran Klaasen on Agentic Workflows
Kieran Majury
Knoster Model
Knowledge Management
Knowledge through Syllogistic Reasoning
Kolb's Experiential Learning Cycle
KSQL / ksqlDB
ksqlDB Concepts
ksqlDB Tutorials
Kubernetes
Kubernetes Docs
Kubernetes Tutorials
Kumar Thangudu
Kunal Shah
Labor Productivity
LangChain
Laravel
Laravel Collections
Laravel Factories
Laravel Forge
Laravel Installation
Laravel Queues
Laravel Request Instance
Laravel Tinker
Laravel Web Push Notifications
Larry Long Jr.
Latent Expertise: Everyone is in R&D
Laws of Fun
Laws of Thermodynamics
Lead Review Memo
Leaders as Decision Architects
Leadership Handbook
Lean Canvas
Lean Customer Development
Lean Customer Development
Lean Startups
Learning from Quant Traders
LearnUI
Lessons from Building AI Agents for Financial Services
Lessons from the 2022 RUFF League
Letters to a Young Poet
Levels of an Idea
Levels of Done
Lex Freidman
Life Coaching Handbook
Life Satisfaction
Limits of Service Leadership
Lincoln Tunnel
LinkedIn Playbook
Linux
Linux Certification Training
Linux Certifications
Linux Commands
List of CFJ in business
Listening Is The Job
Lived Experiences
Livewire
Living with Complexity
LLM Codegen Workflow
LLM Prompts
Load Balancers
Loading QuillJs Data into a form
Local Deployment Concepts for LLMs
Logic
Logic [Fixed]
Logic of Failure Compressed Notes
Logical Fallacies
Long Story Short
Longform Lite
Loose Podcast Ideas
Loserthink
LSAT Reading Comprehension
Ludwig
Lux Capital
Mac and Cheese
Machine Learning
Machine Learning Algorithms
Machines of Loving Grace
Mailchimp
Make
Make a Name For Yourself
Make it Clear
Make Time
Making Work Visible
Manage your Day to Day
Manage Your Manager
Managed Databases
Management
Management and Governance
Management Consultancy
Management Levels and Types
Manager Superpower Series #2: Optimism
Managing Your Manager
Mapping Semantical Certainties to Kelly Criterion Edge Percentages
Maps of Meaning
Marc Adler
Marc Andreessen
Marcus, Friedrich, Fyodor
Mark Manson
Market Mind Games: A Radical Psychology of Investing, Trading and Risk (DIGITAL AUDIO)
Marketing
Marketing Segmentation
Marketing to Developers
Martin Kleppmann
Marty Lobdell
Master Data Management
Master Shi Heng Yi
Mastering Confluent Kafka from Failure Cases
Mastering Fun as a Skill
Mastering Kafka from First Principles
Mastering Kafka from First Principles: API-First/Digital Native
Mastering Kafka from First Principles: Fintech
Mastering Product Experience in SaaS
Mastering Technical Sales
Math
Mathematics
Matrix
Matt Abrahams
Matt MacInnis
Matt Mochary
Matt Pocock on Speaking
Matthew Confer
Max Levchin
Maxims For Thinking Analytically
Maybe you’re not Actually Trying
McKinsey
Measuring Deal Momentum, the Formula for Enterprise Sales
Mechanism Design
Meditation
Meditations
Meditations Guidance
Melvin Conway
Memory as Reasoning
Memos
Mental Action Tricks
Mental Models of Analytics
Meta-Lessons from Creating with Claude
Metabolism
Metadata
Metaphors We Live By
Method Acting
Michael Mauboussin
Microservices
Microservices with Apache Kafka
Microservices with Confluent
Microsoft on Microservices
Mid-funnel (MOFU)
Midwit
Migration
Milestones, Learnings, Confidence, the inner triangle to Outcomes, Knowledge, Actions
Million Dollar Weekend
Millionaire Fastlane
Mimetic Theory
Mind Magic
Mindfulness and Rationalization
Mindsets on being Relentless by Tim S. Grover
Minimalist Web Design
Minto Communication Guide
Minto Pyramid
Mircea Eliade's Eternal Return
Mission, Strategy, and Tactics
Model Customization
Model Evaluation Fundamentals
Model Invocation
Model Serving
Model Thinkers
Models of Misalignment, Information, and Coordination
Module 0: The Agent Platform Landscape
Module 1: The Token Economy
Module 1: Agent Fundamentals: Loops, Reasoning, Memory, and State
Module 1: Evaluation Foundations
Module 1: The GenAI Threat Model
Module 2: Evaluation Datasets and Ground Truth
Module 2: Input Safety and Adversarial Defense
Module 2: Requirements elicitation for generative AI
Module 2: Token Efficiency and Context Optimization
Module 2: Tools, Function Calling, and MCP
Module 3: Automated Evaluation and Model Comparison
Module 3: Data Validation and Processing Pipelines
Module 3: Model Selection, Tiering, and Distillation
Module 3: Multi-Agent Systems and Model Coordination
Module 3: Output Safety and Deterministic Transformation
Module 4: Grounding, Verification, and Hallucination Control
Module 4: Agent Safety, Control, and Human-in-the-Loop
Module 4: Caching
Module 4: RAG and Retrieval Evaluation
Module 4: Vector Store Design
Module 5: Agent Evaluation
Module 5: Data Security and Network Isolation
Module 5: Model Deployment and Serving
Module 5: Retrieval Mechanisms
Module 5: Throughput, Capacity, and Scaling
Module 6: FM API Integration and Real-Time Delivery
Module 6: Human Feedback and Annotation
Module 6: Latency Optimization and Inference Tuning
Module 6: Privacy and PII Handling
Module 6: Prompt Engineering and Governance
Module 7: Continuous Evaluation, Quality Gates, and Reporting
Module 7: Enterprise Integration, Security, and Compliance
Module 7: Governance, Lineage, and Auditability
Module 7: Resilience, Customization, and Lifecycle
Module 7: Retrieval and Vector Store Performance
Module 8: Developer Experience, Observability, and Troubleshooting
Module 8: Observability, Monitoring, and Troubleshooting
Module 8: Responsible AI: Transparency, Fairness, and Policy
Module 8: Systematic Troubleshooting: Content and Integration
Module 9: Prompt and Retrieval Troubleshooting
Mogul
Mogul: Books
Molly Mielke McCarthy on finding special people, agency, and playing your own game
Mom's Stew
Money Skills Review
Monthly Content Plan
MoonShots mission statement
Moral Reasoning
Morgan Housel
Morgan J. Ingram
Move First Think Later
MrBeast
Multi-tenacy Laravel
Multi-tenancy Software Architecture
My Big 5 Personality Test
My Personal Archtype
My Personal Jungian Analysis
My Philosophy
MySQL
MySQL Antipatterns
MySQL Design Patterns
MySQL How to get the difference between two dates
Mythical Man Month
n8n
Narrative Psychology
Narrative Writing Structure for Internet Content
Narratives, Commitments, Tasks (NCTs)
Naruto
Nat Friedman
Naval Ravikant
Navan Q1 FY27 Earnings Transcript
Navigator
Negative Feedback
Negotiate Vested Options Severance
Neo Sub Factors (Big 5 Personality Test)
Neo4J
Neurobiology of Social Behavior
Neuroscience
Neuroscience of pain and discomfort
Never Eat Alone
Never Finished
Never Split The Difference
New York City
Nick Huber
Nick J Sheriff
Nicolas Cole
Nicotine
Nigeria
Nikita Bier
Nine Things Successful People Do
No Vibes Allowed: Solving Hard Problems in Complex Codebases
Non Linear Dynamics
Non-Negotiable as a personal decision making strategy
Note on the Relationship Between Artificial Intelligence and Human Intelligence
Notes on Managing ADHD
Notes on Managing ADHD
Nothing Fucking Matters
NPS
Nuclear Energy
Number Quest
Numbness To Loss
Oatmeal Raisin Bar Cookies
Oatmeal Recipes
Object Design Style Guide
Objection Handling
Observability
Obviously Awesome
Ogilvy on Advertising
Ole Peters
Olive Oil
On becoming competitive when joining a new company
On Being an Executive
On Being Contrarian
On Culture
On First Principles Thinking
On Humility
On Reviews
On Sarcasm
On the Shortness of Life
On the viability of PQOs Memo
On Writing Well
One-shot Rapid Application Development
Ontology
OODA Ontology
OpenAI
OpenAI API
Operating Efficiently at Scale
Operational Troubleshooting
Operations
Operations Research
Operator
Operator: Books
Opportunity Cost
Optimal Scaling Path for a PHP CRUD Application
Optimizing Eye Health
Orchestration & Control
OSINT
OSS Migrate
Outbox Pattern
Outcome Orientation as a Cure for Information Overload
Outcomes
Overcoming The Time Sink of Getting Blocked
Overfitting
Ownership and Entitlement
Parakeet
Pareto Efficiency
Parmita Mishra
Pat Grady
Path Dependency
Patrice O'Neal
Patrick Mckenzie
Patrick O'Shaugnessy
Patrick Winston
Pattern Breakers
Pattern Recognition for Intelligence Products
Paul Graham
Pavel Training Methods
Paying attention to complete a task/goal
PayPal
Percent Increase Forumla
Perceptual Control Theory
Personal Anki Categories
Personal Office Communication Guide
Personal Reframes
Personal Shadow Work
Personality
Personality Plus at Work
Personality: A User's Guide
Persuasion
Peter Attia
Peter Thiel
pgVector
PHP isset vs empty vs is_null
PHP: How to search for the array key that has the value OR has the array with the value
Physics
Picking Problems to Marry
Pieter Levels
PIPE Program 2025
Pipeline Cures All
Pitch Anything
Pixar's 22 Rules of Storytelling
Planning v. Feedback
Playing Long Term Games
Playing To Win
PM Communication Scorecard
Podcast loose ideas
Poor Charlie's Almanack
Pork
Portfolio Management
Post Ideas
Post-Click User Experience
Practical Change Data Streaming Use Cases with Apache Kafka & Debezium
Practical Use Cases for Read-Only Iceberg Tables
Pragmatics
Pragmatism
Precious Metals
Precommitment: A Way around Temptation
Primal Intelligence: You Are Smarter Than You Know
Principal-agent problem
Private Networking with Confluent Cloud for Apache Flink
Problem Solving
Problem Solving Techniques
Process Data with Flink
Process Groups
Process Improvement is Trickier Than You Think
Product Development
Product Market Fit
Product-Driven versus Customer-Driven by Ribbon Farm
Product-Led Growth
Product: Delivery Systems at Scale
Products
Profile: Agents as the Medium
Profile: LLMs as the Medium
Profit First
Program management vs. project management
Progress through Storytelling
Project Management
Project Management Unraveled
Project Management Unraveled Expanded
Project Portfolio Strategy
Prompt Engineering
Proof of Concepts
Protein Recipes
Prototype Theory
Psycho-Cybernetics
Psycho-Cybernetics Condensed Notes
Psychology of Intelligence Analysis
Pull Work That Pays
Python
Quantum Computing
Quarterly strategic planning using the fairytale structure
Question Based Selling
Question Tome
Questions That Sell
Questions to Analyze a Business
Queueing
QuillJs Events
Rackspace
Radical Focus
Raise or Fold
Random Notes
Rationality: From AI to Zombies
Ravi Gupta
Ray Dalio
Ray Dialo's Principles
Real Estate
Recon-ng
RecordRTC.js
Redfin
Redis
Reducing
Reforge
Reforge Artifacts
Reforge: Growth Series
Reforge: Retention and Engagement
Reframe Your Brain
Reframe Your Brain: The User Interface for Happiness and Success (The Scott Adams Success Series)
Reid Hoffman
Relationship and Rapport Mastery
Rendering
Repeatability
Resonate
REST best practices
Retrieval & Grounding
Reverse ETL
Reverse Proxy
Rice Recipes
Rich Hickey
Richard Feynman
Richard Odysseus
RichNwan Blog
Risk Savvy: How to Make Good Decisions
Roasted Potatoes Recipe
Rob Henderson
Robert Cialdini
Robert J. Sternberg and Practical Intelligence
Robert Moses
Robert Spolsky
Roberto Blake
Rohan Gilkes
ROIT: Return on Invested Token
Roles and RAS
Root Cause Analysis
Rotoviz
RSDTyler
Rubrics
RUFF 2025
RUFF Fantasy League
RUFF Final 2023 Plan
Rule Reviews
Rulebook
Rules of the Game
Runaway Selection
Running Effective Prospecting Days in B2B SaaS (with Remote Best Practices)
Ruth Chang
Ryan Singer
Saas Metrics -- A Guide to Measuring and Improving what Matters
SaaS Terminal Value under Scrutiny
Safety & Policy
Safety, Security, Privacy, Governance, and Responsible AI
Sales
Sales Acceleration Formula
Sales Compensation in a Consumption Pricing World
Sales Engineering
Sales Happen When Buyers Fear Missing Out
Sales Pipeline
Sales Pitch: How to Craft a Story To Stand Out and Win
Sales Process
Salesforce
SalesLoft
Salt
Salt, Fat, Acid, Heat
Sam Altman
Sam Hinkie
Same as Ever: A Guide to What Never Changes
Sandler Method
SBA
Scaling People
Scaling The Things That Don't Scale
Schema and Statement Evolution with Confluent Cloud for Apache Flink
Schema Registry
Scientific Method
Scientist
Scientist: Books
Scott Alexander
Scott Barrett
Scott Bessent
Scrapinghub x Confluent Cloud
Search for knowledge/information to complete a specific task/goal
SECI Model of Knowledge Management
Second Machine Age
Secrets to Winning Office Politics
Security and Governance
Security, Identity, and Compliance
Seeing Like a State
Segment
Segmentation
Segmentation In-Depth
Segmentation, Vectorization & Index Maintenance
Seibel on Startups
Select2
Self-Directed Behavior
Selfish Writing by Morgan Housel
Selling Confluent Cloud
Selling To Big Companies
Selling to Carol: Why targeting an ICP brings 10x more customers than you expected
Sense of Urgency
Sensemaking Sales
Server Architecture
Server-Fetched Partials
Serverless
Servers
Seven and a Half Lessons About the Brain
Sex
Sexual Tension
Shaan Puri
Shadow Work
Shape up
Shifting Left: Rearchitecting the Operational–Analytical Divide to Produce Trustworthy, AI-Ready Data atthe Source
Shyam Sankar
Sign-up Onboarding Flows
Signals for a successful venture
Simon Sinek
Simple Heuristics That Make Us Smart
Simple Made Easy
Simply Complexity
Sizing, Performance and Cost
Skill
Skill Prioritization and Ideas
Skin in The Game
SKOOL Games
Slack
Slava Akhmechet
Smallpox
Smart Brevity
Smash Bros
Snapshot Queries in Confluent Cloud for Apache Flink
Snowflake
So You Think You Can Prompt
Soft Skills for Managers
Software
Software Architecture
Software Engineer's Guide to Freelance Consulting
Software Tool Solutions
Solving Present Bias: Governance across time.
Somatotypes
Soros' Fallibility and Reflexivity
Source & Ingestion
Sources of Power
Sovereign Individual
SparkToro
Speak in Stories
Speak Like Churchill, Stand Like Lincoln
Speak with Impact
Spellbinding Sentences
Spin Selling
Sports
Spy Secrets That Can Save Your Life
Standard Operating Procedures
Stanley Druckenmiller
Star Wars
Start From Demand
Start Small, Stay Small
Startup Analytics/Marketing Stack
Startup Ideas
State & Memory
Statement CFU Metrics in Confluent Cloud for Apache Flink
StaySassy Blog
Steal the Show
Steph Smith
Stephen Covey
Steve Jobs
Steven Pressfield
Stocks
Store Knowledge to later complete a specific task/goal
Stratechery
Strategies of Genius
Strategy to Manage User's Timezones across application
Strategy v. Execution
Stream Processing
Stream Processing
Stream Relational Processing Platforms
Streaming and Generative AI
Streaming Audio
Streaming Projects
Strengths Dictate Weaknesses
StrengthsFinder
Strong Phrases and Sayings
Studying Ads
Submitting a form that is using QuillJs
Subscribe Highlights from the Claude 4 system prompt
Sudden death in FIFA athletes
Suhail Doshi
Superapps
SuperPrompts
Surrounded by Idiots
Sweller's Cognitive Load Theory
Synthesis
System Fonts
System Thinking Tools
Systems Bible
Systems Institute Courses
Systems Thinking
TableFlow Technical Study Guide - First Principles
Tables and Topics in Confluent Cloud for Apache Flink
Tacit vs. Explicit Knowledge
Taiichi Ohno
Tailwind
Take Back Your Power
Talk Tracks and Definitions
Taylor Pearson's notes
TCAD Internal Prep Strategy
Teaching instead of Selling
Team of Teams
Technical Advisor Guidelines
Technical Advisor Guidelines: Data Engineering T-Shirt Sizing
Techniques of Visual Persuasion
Technology
Ted Talks: The Official Guide to Public Speaking
Teleology
Template for Critical Analysis of Arguments
Tempo
Temporal Landmarks
Temporal.io
Tenancy, Quotas & Metering
Text-Heavy Design Presentation
TGSiTW: Condensed
TGSiTW: Condensed JBP
TGSiTW: Condensed Simple
TGSiTW: Condensed Simple II
That's Interesting
That's Not What I Meant
The 1-Page Marketing Plan
The 5 Part Process to Networking Effectively
The 6 AI Engineering Patterns
The 7 Primal Pains
The A-Z guide to Startup Metrics
The Agent Development Life Cycle
The architecture of today's LLM applications (2023)
The Art of Action
The Art of Extreme Commit
The Art of Impossible
The Art of Profitability
The Art of Strategy
The Art of Strategy
The Art of Strategy: A Game Theorist's Guide to Success in Business and Life
The Art of Winning
The As If Principle
The Bedrock Family
The Beginning of Infinity
The Beginning of Infinity w/ Claude
The Bid/Ask Spread of Top Talent
The Book of Elon: A Guide to Purpose and Success
The Book of Why
The Challenger Sale
The Checklist Manifesto
The Chimp Paradox
The cognitive categories of knowledge work
The Complete Guide to Command of the Message, Challenger & Great Demo!
The Complete Guide to Planning Your Day
The Complete Guide to Sales Force Incentive Compensation
The Compound Effect
The Comprehensive Architecture of Shaping: Technical and Tactical Methods
The concept of a Unit
The Constant Questions
The Constitution of Knowledge
The Conversation Code
The Creative Act
The Creative Act: Organized Notes
The Creed of Future Me
The Crumbling Workflow Moat: Aggregation Theory's Final Chapter
The current state of AEO
The Dark Triad Playbook
The Deep Dive Into the Needs of Indiehackers and Micropreneurs
The Design of Everyday Things
The Design of Future Things w/ Claude
The Dictator's Handbook
The Economic Rationalist
The Effective Executive
The Elements of Execution
The Embedded Entrepreneur
The Existential Questions to Answer For Any Endeavour
The Extended Mind
The Factory and The Lab Thesis
The Fear That Steals Your Life's Work
The Fifth Discipline
The Five Dysfunctions of a Team
The Five Patterns That Separate Elite Revenue Teams From the Rest
The Flinch
The Folly of Fools
The Folly of Fools Insights
The Founder's Mentality
The Four Horsemen of the Tech Recession
The Four Steps to the Epiphany
The Full Stack Startup
The Gifts of Imperfection
The Gifts of Imperfection Notes
The Glyvian Think Tank
The Go-Giver
The Go-Giver
The Goal
The Golden Workflow
The Great CEO Within
The Greatest Businessman in The World
The Greatest Salesman in The World
The Growth Marketer's Playbook
The Habituation of Excellence
The Hawthorne Effect
The Heart of Innovation: A Field Guide for Navigating to Authentic Demand
The Information
The Inner Game of Tennis
The Inner Game of Work
The Intangible Skills You Can't Interview For
The Internet
The Joy of Game Theory
The Key Skill We Rarely Learn: How to Feel Your Feelings
The Knowing-Doing Gap
The Knowledge Economy Is Over. Welcome to the Allocation Economy
The Ladder of Success
The Language of Uncertainty
The Last Bus Problem
The Laws of Human Nature
The Lifecycle of a Webpage
The Logic of Failure
The Lost Art of Listening
The Magic of Big Thinking
The Math Behind Deep Learning
The Meaning of Ownership
The Meta on Learning 2026
The Midwit Trap: Why Sophistication Defeats Itself
The Mindfulness Game
The Molecule of More
The Mom Test
The Moral Case for Making Money
The MoSCoW Method
The most profitable skill of the 21st century (not AI)
The Nature of Value
The Neuroscience of Risk Taking
The One Question That Accelerates Every Ambitious Goal
The One Thing
THE OPERATOR'S MANUAL ON WINNING ANY RELATIONSHIP
The Order of Time
The Outsiders
The P Rules
The Pain is the Rehab
The Pain We Can't Outrun
The Philosophy of Progressive Refinement
The Phoenix Project
The Pipeline Delusion
The Potential of Integrating Intelligence and Intuition
The Power of Mathematical Thinking
The Power of Myth
The practical application of "Rocks, Pebbles, Sand"
The Presentation Architecture Framework
The Price We Must Pay
The Principles of Product Development Flow
The Principles of Scientific Management
The Process
The Prompt Report: A Systematic Survey of Prompting Techniques
The Psychological Needs of the Extremely Ambitious
The Psychology of Action: Linking Cognition and Motivation to Behavior
The Psychology of Strategy
The Psychology of Time Perception
The Psychology on How We Interact With Things
The Psychopathology of Beliefs
The Purpose-Built AI Services
The Pursuit of Wow!
The Qualified Sales Leader
The Ratchet Effect
The Rebel Allocator
The Reframing Matrix
The relationship between Mindfulness and Executive Functioning
The Remarkable Effect
The Revenue Takes Care of Itself
The RevOps Playbook: Owner.com CRO’s Secrets to Scaling
The Righteous Mind: Why Good People Are Divided by Politics and Religion
The rise of product-led sales
The Roomates
The SAAS Sales Method: Sales as a Science
The SageMaker Family
The Sales Development Playbook
The Science of Storytelling
The scientific literature of visualization
The Score Takes Care of Itself
The Scout Mindset
The Self as a Center of Narrative Gravity
The Short Case for Nvidia Stock
The Six Fundamental Principles of Design
The Spiderweb Strategy
The Star Principle
The Status Game
The Status Game Insights
The Stepping Stones You're Not Building
The Strange Order of Things
The Strategy-Focused Organization
The Subtle Art of Not Giving a Fuck
The Talent Factory: How To Identify and Develop A-Players for Your Team
The Ten Principles Behind Great Customer Experiences
The Three Greatest Survey Questions Ever
The Toyota Way
The Transaction Costs of Work
THE TROUBLE WITH INCENTIVES: THEY WORK
The Trusted Advisor
The Trusted Advisor Revised Notes (Claude)
The Ultimate Hack: How To Meet Anyone and Make Success Inevitable
The Ultimate Sales Machine
The Undercurrent Skills Maturity Matrix
The unprofitable SaaS business model trap
The Upside of Your Dark Side: Why Being Your Whole Self--Not Just Your "Good" Self--Drives Success and Fulfillment
The value of an activity log
The Virus of The Mind
The War of Art
The Way of The Superior Man
The Way Richard Works
The White Pill Manifesto
theHarvester
Theory of Constraints
Theory of Mind
Things 10X People Do
Things I know at 40 I wish I knew at 20 by Mark Manson
Things That Make Us Smart
Things That Make Us Smart w/ Claude
Think Twice
Thinking and Deciding
Thinking Fast and Slow
Thought Experiments
Three ways to get the most from your Confluence personal space
Through the Language Glass
Tiago Forte
Tim Denning
Tim Ferris
Tim O'Reilly
Time and Watermarks in Confluent Cloud for Apache Flink
Time Asymmetry
Time Management
Time Management Advice for Sales Reps
Tinkertoys
To learn anything well
Tony Robbins
Tool Use v. RAG
Tools
Top 10 Connectors Cheatsheet
Top 7 Leadership Styles
Top Interpersonal Speaking Skills
Top Two Reasons for Churn
Topics to discuss with Life Coach
Traits I Value
Transactional Analysis Frames
Transferring Tacit Knowledge
Transparency is the Key to Accountability
Transport & Client
Triangulating Market Sentiment
Tricks for Introverts
Trigger List
Troubleshooting Issues in MySQL
Troubleshooting Laravel Environment Variables
Trueridge
Trueridge Dossiers
Trueridge: 10X Leverage
Trueridge: Accelerated Influence
Trueridge: Products
Turbolinks vs JS Framework
Turning Desire Into Dollars
Turning Pro
Tutorial Introduction to Streaming Application Development
Tutorials
Twilio
Twint
Twitter Hack of July 2020
Tycoons
Uber
UiPath
Ultimate Business Discovery Questions
Ultimate Organizational Skill List
Ultimate Question Vault
Ultimate Writing Handbook for Nonfiction
Umwelt
Uncapped Podcast
Understanding a forecast call
Understanding Composer
Understanding CORS
Understanding DNS
Understanding Docker-Compose
Understanding EC2
Understanding Environment Variables
Understanding Flexbox
Understanding How People Use The Web
Understanding HTTP
Understanding HTTP caching
Understanding Javascript Environment and Execution
Understanding Javascript Window Object and It's Descendants
Understanding Laravel Service Container
Understanding Laravel Spark
Understanding Media: The Extensions of Man
Understanding Michael Porter
Understanding Michael Porter: The Essential Guide to Competition and Strategy
Understanding Motivations > Marketing Hacks
Understanding MySQL Indexes
Understanding MySQL Statements
Understanding Networking Ports
Understanding OAuth2
Understanding PHP
Understanding Social Network
Understanding Try, Catch, Finally statements in PHP
Unearned Wisdom Notes
Unit
Unit Economics
Unit of Work
Unit of Work with ChatGPT
University of Chicago Writers Lab
Unreasonable Success and How to Achieve It
Use Case Based Sales Pipeline
Useful Array Functions in PHP
Useful Complexity of Thought Management Tools
Useful HTTP Codes
Useful php date tokens
Useful PHP file functions
Useful PHP Unit commands
Useful Prompts
Useful Terms
User Stories
User-defined Functions in Confluent Cloud for Apache Flink
Using Autonomous Agents with Nat Elliason
Using Faker PHP package
Using Jigsaw from Tighten
Using Laravel Eloquent Effectively
Using Nano in terminal
Using Tailwind UI
Using the ideas of Donald Reinersten to Intuit the Triangle (More, Faster, Better)
Using The Trust Equation
Valuation Mastery
Value Add Disease
Value Investing
Values in Therapy
Vaughn Tan
Venkatesh Rao
Virology
Visions, Strategy, Tactics, Execution
Visualization Techniques for High Output
Vivid Visions
Voice of the Customer
Vox Day
Vue
Vyv App
Wanting
Warren Buffet
Way of The Wolf
Ways to present website information
Web 2.0 Framework
Web Analytics 2.0
Web Application Architecture
Website Information Architecture
Weekly/Monthly/Quarterly Knowledge Review
Wenger's communities of practice theory
Wes Kao
What Are AI SuperPrompts And Why They Are Important.
What are some techniques startups can use to initially draw attention to their product?
What are some things about India that foreigners don't believe until they come to India?
What are some top automation tools that entrepreneurs use, things used for organizing life, contacts, deals, finding information, networking, and getting things accomplished?
What are the best landing page builders?
What are ways in which poor children can outperform rich privileged children?
What can cause a great startup to fail?
What drives great entrepreneurs
What great AI Teams do
What is a CDN
What is a Mindset
What is the best detailed advice you'd give to a software or mobile app start-up company?
What is Value
What is your main advice for those starting their own business?
What makes a good rule
What qualities are shared by most successful startup home pages?
What should every aspiring writer know about writing?
What the CEO Wants You To Know
What Theory is Not, Theorizing Is
What to do when your client doesn't know they have a problem
What We Learned from a Year of Building with LLMs
What will be true about data 10 years from now
When trying to decipher information from influence
Which channels should B2B company use to reach potential customers and effectively promote its product?
Which Self
Why Acceptance Works In Behavior Change
Why Buddhism is True: The Science and Philosophy of Meditation and Enlightenment
Why Deadlines Matter
Why Ideas First Approach To Innovation is Misguided
Why Input Goals Matter w/ Claude
Why Search Before Generate
Why you would need your own servers vs Cloud Vendors
Wide Receiver Stats That Matter for Fantasy Football
Will To Power
William Beteet III
William Edwards Deming
Willpower Doesn't Work
Wired for Story
Wisdom by Intellectual Belief
Wisdom of Crowds
Wooden's Leadership Game Plan
Words
Work Principles 2026
Working Backwards
Working The System
Working with Evolo landing page
Working with Laravel Eloquent and dates
Working with Laravel HTTP Responses
Working with Math and Numbers in Javascript
Worst To First
Wrestle Your Devils
Write-Ahead Log
Writing & Communication Theories
Writing Handbook
YNAB
You Aren't Learning If You Don't Close the Loops
You Need More Volume
You Need to Ship Faster
You Should Write An Agent
Your Discomfort Tolerance is a Muscle—And It's Probably Atrophied
Your job is to solve problems, not look smart
Zachary Perret
Zain Kahn
Zero To One
Zinc
Journey to Event Driven
🧠 Free Recall
❓ Quiz
🔍 Cues
🔮 Simulation
🥷 ShadowBox
📐 Encode Cards
🎙️ Generate Documentary
The world is changing. New problems need to be solved. Companies now run global businesses that span the globe and hop between clouds in real-time, breaking down data silos to create seamless applications that synergize the organization. This continuous state of change means that legacy architectures are insufficient or unsuitable to meet the needs of the modern organization. Applications must be able to run 24×7 with 5-9s (uptime of 99.999%), as well as be superelastic, global, and cloud-native. Enter event-driven architecture (EDA), a type of software architecture that ingests, processes, stores, and reacts to real-time data as it’s being generated, opening new capabilities in the way businesses run. Traditional vs Event-Driven At some point, it becomes obvious that we need to go back to basics, back to the first principles of system design, and start again. The common element of all these new world problems is that they revolve around the notion of real-time events. These events drive actions and reactions, and transform between different streams, splitting, merging, and evolving like the pathways of your brain. Importance of Event Driven Architecture To understand the importance of being event-driven, we’ll examine why events have become so pivotal in our thinking today. We will then evaluate the qualities and how events have become a first-class concern for the modern organization, as awareness of events underpins event-first thinking and design. I’ll then extrapolate design concepts against different perspectives of event patterns, such as the event command and event first, and why event-driven programming fulfills foundational requirements when choosing an architecture that supports evolution and elasticity. Overview An opinionated history of “events” – Why do they matter? Adoption journey of the “event” Considerations of the event-driven architecture Transitioning to event-first thinking Event-first versus event-command patterns for event-driven design Event-command pattern The cost of the event-first approach Benefits of the event-first approach To read the other articles in this series, see: Journey to Event Driven – Part 2: Programming Models for the Event-Driven Architecture Journey to Event Driven – Part 3: The Affinity Between Events, Streams and Serverless Journey to Event Driven – Part 4: Four Pillars of Event Streaming Microservices An opinionated history of “events” – Why do they matter? It’s taken the last 25 years to get to the point where we consider the event as a core principle in system design. Throughout that period, much of the world was stuck thinking that remote object calling was the right way of doing things. REST and web services started by exposing the API as a concern, but that was done by a synchronous protocol. In 2002, I built a commercial messaging system that adopted principles from the SEDA: An Architecture for Well-Conditioned, Scalable Internet Services paper—the idea being that we move everything to become asynchronous; local and remote events are then used to drive the intelligence and adaptation of an application. It really shaped the way I understood events to be a core design principle as well as how to think about system design and data in general. There has been a revolution; organizations must become real time; to become real time, they must become event driven It took the era of big data for us to realize that while having lots of data is useful, things get slower as you have more of it. And yet, we collect more. Over the last several years, there has been a revolution; organizations must become real time; to become real time, they must be event driven. This need is fueled by the increasingly digital world that we live in where everything is connected. Events are a fundamental aspect that drives this ecosystem; an organization is but a cog that when viewed at any level needs to act and react to internal and external events. The value of events is that a sequence of related events represent behavior (e.g., an item was added and then removed from a shopping cart, an error recurs every 24 hours or users always clicks through a site in a particular order). A sequence of related events is commonly called a stream. Streams can come from an IoT device, a user visiting a website, changes to a database or many other sources. When thinking of APIs, we start with the event rather than the highly coupled concept of a command, e.g., an event-X has occurred, rather than command-Y should be executed. This thinking underpins event-driven streaming systems. A stream of events captures temporal behavior Adoption journey of the “event” There are many paths to the inception of an event-driven architecture within an organization. For some, it is a natural pattern evolving from domain-driven design (DDD) principles, the related and powerful event-storming practice, decoupled systems design or just event-driven microservices. The point is they can come from any level, whether business or technical, but it will be a conscious adoption that doesn’t just happen by accident. Considerations of the event-driven architecture There are many considerations when evaluating the event-driven architecture. Events initially start out to as atomic and drive reactionary callbacks (functions). As a use case evolves, workflows develop and the criticality of the application generally increases along with the nature in which an event is considered. This raises numerous questions. Is ordering important? Do I want to ensure transactionality? How do I trust the execution? Security? Lineage? Where did the event come from? The key realization for the adoption of event-first thinking is that an event represents a fact, something happened; it is immutable and therefore changes how we think about our domain model The basic attributes of an event include time, source, key, header, metadata and payload. One problem with events is that they are everywhere, and the extreme lack of consistency makes them very difficult to work with at scale. The other consideration is that events do not exist in isolation. Due to their very nature, an event tends to be part of a flow of information, a stream. We define a stream as an unbounded sequence of related events that are associated through the use of an “eventKey,” a key that ties multiple events together. In the real world, the nature of the “event” can be described as: Atomic: something happened (bid on an item, send an email, device temperature) Related: a stream or sequence of events (tracking a pricing change, device metrics changes over time) Behavioral: the accumulation of facts captures behavior Behavioral is the least obvious but most important aspect of event-first thinking. For example, in a shopping cart, if an item was added and removed—and this has occurred among many users—then we have captured a behavior. By analyzing the sequence across many users, it is possible to discern whether they changed their mind due to targeted advertising, finding a cheaper price elsewhere or perhaps because it is close to an annual event like Christmas, a birthday, etc. Ideally, the system should detect the behavior and react to it, as capturing events has a great deal of implicit value. Transitioning to event-first thinking Event-first thinking changes how you think about what you are building The adoption of event-driven architectures tends to result from an “aha” moment, which involves moving from simple, use cases to a deeper understanding of processes, operations and how to reason about the architecture. You may start off creating the event streams required to build an application to fulfill your original design goals, but quickly find that the event streams themselves enable you to build much richer, totally unexpected analysis and functionality. How is the event treated within a system? All of the following questions get asked as the event-driven architecture is developed: Is it observable, and are the flows of streams behaving as expected? Is it trusted, meaning transactional, exactly one or at least once? Will it scale? Is stateless processing, such as filtering, projection, cleaning or enrichment required? Is stateful processing, such as aggregations or stateful sequence processing required? Is a materialized view against the stream required? How many transactions per second are required for a windowed view? Do we want to scale/fan/map out (parallelize), fan in/collect and, build materialized views? Does it support error handling, such as error flows and dead letter queue? Does it send and transform events from one stream into others (stream processing)? Does it react and drive intelligence from the state collected from a stream (stream processing)? In terms of increased adoption, we generally see these patterns as characteristic of an event-driven organization: Data pipelines (ETL, integration) Monitoring and alerting, including log collection and aggregation Event-driven microservices Enterprise wide event-driven microservices IoT Customer 360 Digital transformation Real-time enterprise Central nervous system/digital nervous system By embracing event-first thinking, we naturally inherit the foundations of event streaming platforms like event sourcing, replayability, stream processing and dataflow design, amongst others. We should also incorporate event-first thinking into an architecture that leverages a serverless stack to be event driven, multi-cloud and elastic. There are several ways to be event driven. Without becoming tangled up in the marketing noise, we can boil it down to a couple of approaches. The first reuses messaging principles and sends pure events like item-purchased, while the second reuses the conventional, more familiar approach of sending commands as events, like user.purchaseItem(item). Both can be event driven, but the design principles are fundamentally different. Let’s expand on this thinking to understand the impact of both approaches. The importance of events and event first thinking: Capture facts Capture behavior Provide a representation of the real world Model use cases of how we think Supports repeated evaluation and processing (a time machine) Provide horizontal scaling Speak the same language as the business Event-first versus event-command patterns for event-driven design You can build the same application using either the event-first or event-command approach, but the event-first approach is generally recommended. If we rewind onto familiar ground for an example, we see that traditional REST applications are an event → command pattern. They are coupled in multiple ways: Firstly, the endpoint is known (i.e., the service address). Secondly, the method being called is also known (i.e., an API call to doStuff), and lastly, the calls tended to return a value; they are synchronous. Newer frameworks will allow this call to be handled synchronously or asynchronously—it is called the event-command pattern. Alternatively, with the event-first pattern, the paradigm shift is to discard all of those considerations and just send an event as we would in the traditional messaging sense; don’t do anything else; have no API coupling to a remote service. The approach is unique in that it processes the event as a reaction; the emitter doesn’t call on a specific function; the API has been removed and it instead just sends an event. The emitter of the event doesn’t know which processors (or functions) are going to consume it, and the event becomes the API. This decoupling allows the set of consuming apps to change over time without any upstream changes required in the emitter. Event-first analog: I walk into a room, generate an “entered room” event and the light turns on. This is a reaction to an event. Event-command analog: I walk into a room, flip the light switch and the light turns on. This is a command. In the event-first analog, I have no knowledge and don’t ask for the lights to be turned on;. Instead, a sensor detects my presence; it has the responsibility. In the event-command analog, I have the responsibility of knowing how to turn on the light and also making it happen. The event-first approach forces an inversion of responsibility; it is a fundamental paradigm shift of how applications are developed Let’s apply it to a business function. Event-command pattern In the event-command pattern, the service knows the endpoints and API of the other services and calls them. For example: Event-first pattern With the event-first approach, each service listens for inbound events and outputs zero or more events after performing some (re)action. For example: At this point, the two approaches don’t look that different. If anything, the event-first approach looks more complex, as it has to more moving parts, e.g., publishing/consuming events via streams. The benefit is that these streams provide decoupling. The power of the event-first approach becomes clear when we try to enhance the system. Let’s say we want to add the ability to check inventory levels and reorder stock when levels are low, to perform analysis on the cause of failed purchases and help improve conversion rates. For the event-command-based system, we need to change the main purchasing application to call these new systems. But for the pure event-first solution, we can simply add new processors of the existing events, such as why(item) and checkInventory(). Notice how the event-driven approach allows many processors to react to the same “purchased” event (published via the /user-purchases topic)? This flexibility means functionality can run in parallel and be added, extended, upgraded or replaced without taking the system down. Decoupling is the key. The “event” also affords the opportunity to propagate versioning, security tokens, correlation IDs and other useful information. The cost of the event-first approach The tradeoff of the event-first/event-driven architecture is the amount of scaffolding required to inspire confidence. In the old days when transactional consistency shaped our expectations, and NoSQL pushed us to eventual consistency with CAP theorem tradeoffs, it was known that data wouldn’t (and shouldn’t) get lost. Event orientation requires not only different thinking in replacing the command model but also the ability to support traceability, failure paths, scaling and explanation about why things have gone wrong. These challenges are easily solvable and are also quite fun; I will revisit this topic later on. Benefits of the event-first approach The pure event-first approach described above demonstrates: Decoupling: Processors don’t know anything about upstream or downstream processors Encapsulation: There are clean boundaries between processors. Inverted knowledge: Knowledge and responsibility are reversed. Evolutionary change: The system and events can change over time. Event sourcing: When using a log and log-aware stream processors, we gain the ability to potentially rebuild and restore application state. It’s not a free lunch; the application state needs to be captured and managed. Evolutionary architecture is a natural benefit from event-first thinking and event-driven architectures When you use the pure, event-driven approach, the architecture can change over time as different processors may react to events, which can be reprocessed while the data model evolves simultaneously. Perhaps the domain model has changed, or functionality is being extended. None of the originating events are lost, and the behavior is captured in the stream. With these foundations, you then have a system that supports architectural evolution as well as data and domain evolution. . To support the event-first approach you need a suitable platform. The ideal solution is one where the stack is simple, the surface area is small and I the developer retain control. Event-driven, reactive architecture Simple event-driven architectures were introduced many years ago. We first saw them gain mainstream popularity as part of the ESB phase. The approach of this model is to send messages (events) to different services that can react and execute logic. It serves as a conduit to drive distributed logic (event processing), and messaging is a remote invocation layer. The actor model is a variation on this idea where it is a means of distributed computation. The event-driven, reactive model was further standardized and adopted when the Reactive Manifesto was in full swing. Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback. Reactive Manifesto, 2014 The Reactive Manifesto has influenced many frameworks and platforms, including Akka (an actor-based library circa 1973), Vert.x (reactive microservices) and Lagom (an opinionated, reactive microservice framework). Although the principles behind event-driven frameworks are sound, those behind event sourcing, CQRS and hydrating application state are separate concerns so we often see them handled explicitly as an orthogonal concern (e.g., operational processes) or externally (think GitHub for your applications state). Scaling mechanism The Akka scaling mechanism uses a cluster service which pools actors from remote nodes that join as cluster members. Inactive actors are persisted to disk to minimize idle resource requirements. The cluster is elastic, provides resilience and provides the distributed runtime for making the Akka system scale. Scaling actors is achieved by increasing the number of actors—effectively increasing the event processing capability of the application, not the data. Persistent actors will store their set of events to a journal (log). Akka Streams then changed tact as streaming became the core mechanism to drive processors in a more data-centric manner. Event-driven, streaming architecture With the event-driven streaming architecture, the central concept is the event stream, where a key is used to create a logical grouping of events as a stream. We think of streams and events much like database tables and rows; they are the basic building blocks of a data platform. Streams represent the core data model, and stream processors are the connecting nodes that enable flow creation resulting in a streaming data topology. Stream processor patterns enable filtering, projections, joins, aggregations, materialized views and other streaming functionality. Unlike the previous model, events are front and center. The event streaming platform is effectively a data platform and therefore behaves accordingly. Data models need to be developed in relation to use cases. A streaming application can be thought of as a dataflow system. For example, a stream can be used to capture patterns such as a user’s clickstream, a set of events against a transaction, shopping cart behavior, etc. In this case, “events” drive the event stream. An event streaming application depicting auction-bid functionality The streaming topology shows a flow of data through an organization, representing the real-time DNA of your business. A proven approach is to capture domain knowledge as events using domain-driven design (DDD) and event storming. This approach works well because the events-centric view forces the use of a ubiquitous language; the business, technologist, developers and ops all have a common understanding of the system’s functions. An event streaming app: streams and stream processors modeling an auction platform bid functionality Stream processors can also be used to materialize tables from the stream of events to enable a view of the data (e.g., how much money was in my account at time X). The term is called turning the database inside out. Stream processors are used for constructing the flow from other streams in various patterns, either executing and reacting to logic or splitting, merging and maintaining materialized views, such that when they are all combined (fan in), they represent a domain model in the form of a digital nervous system. Like database transactions, stream processors can also transact against the event log, support correctness semantics like ordering, exactly once semantics (EoS), idempotence, temporal reasoning and more. Unlike a traditional database, the platform scales horizontally to thousands of processors, observe real-time events, replay streams on demand to perform historical event processing and catch up with the live, data-in-motion view. Materialized views scaling against a stream Streams processors store their fair share of data locally; in combination, they form a distributed data layer The stream is like a database table, whereas the event streaming platform is a data platform. As such, we model the domain with event-first thinking. A common use case that trips up those who are new to the concept is payment processing. A traditional OLTP system uses a two-phase commit to move money from a debit account to a credit account. It is very simple but presents scalability challenges. In the event-driven world, we’d build a scalable model where the event streams flow between event processors. By the end of the flow, the payment is transacted. Event-driven payment processing Let’s walk through the flow of the above diagram: Payment requests flow from the /payment-inflight topic into the balance in-flight processor. It maintains a view of the total balance, including those currently being processed, similar to a read-uncommitted view. It sends the payment request into the /payment topic, keyed by the “from” account and setting the event type to DEBIT. The payment processing picks up the DEBIT request and validates that the payment can be processed, updating the user’s balance in the materialized view. It then emits another event, keyed against the “to” account and setting the event type to CREDIT. The payment processor receives the CREDIT event, updating the user’s balance in the materialized view, and passes on the payment-complete event. The Balance Conf’d stream processor updates the total confirmed balance similar to the read-committed value. The two balance processors are different instances of the same stream processor. The difference is that while one is aggregating the system payment, balance as a total, the in-flight processor is consuming the payment-complete values. The balance processor tables can be queried using interactive queries, and the difference is the current amount being processed by the system. Scaling mechanism Scaling is the opportunity to send concurrent streams from thousands of producers to thousands of consumers. Populating a stream with real data as shown below lets us understand how the data is distributed in order to support horizontal scaling. To achieve scaling the underlying event streaming platform will use partitioning (sharding) to act as buckets for streams to be stored in. The broker sizing is a function of the total sum of partitions across the number of servers and replicas. To map a stream of events in a single partition we use an eventKey. The eventKey acts to identify a set of related events as a stream. Events never occur in isolation. There is always a context for triggering the event, and the eventKey captures this identifier. An example might be an IoT device, transaction-id or some other natural key. To determine which partition is used for storage, the key is mapped into a key space. This key mapping uses a partition-assignment strategy (the default provider uses a hashing function). It is important to note that a partition can only be consumed by a single consumer; however, a consumer can consume from multiple partitions. Consumers in this context are anything that requests data; they could be stream processors, Java or .NET applications or ksqlDB server nodes. Horizontal scaling is achieved via partitions. Each partition will hold multiple streams (streams are color coded). I won’t go into this topic any further, but suffice it to say, key space is of fundamental importance (as well as having sufficient partitions). While we see partitions becoming cheaper, the number of partitions (shards) should always be much greater than the number of stream processors or FaaS functions required to support scaling of unexpected workloads. Comparing persistence models Persistence with the streaming model is significantly different to other approaches (actor, reactive, external DB). In non-event-streaming platforms, the persistence model is part of the framework or is a deliberate intent to interact with an object. For example, with Akka there is the “actor entity” (using a persistent actor or distributed data). In this approach, you program an entity, and there is a binding to the underlying persistence layer, such as the following: creditCardActor.get(123).deposit(456). The actor can also emit an event to a view layer thereby enabling CQRS. The streaming model doesn’t use an entity as a programming model in the same way. It’s more in line with a data processing approach, where the incoming stream represents events. The event processor updates the local state accordingly and emits related events. For example: /deposits-topic { card:123 deposit:456 } → cardProcessor.updateCard(123).deposit(456) → /card-balance-topic topic event:{ card:123, balance:456} The entity state is maintained by the event processor using the the incoming stream, and updates are sent to the output stream. The entity is implicit in the stream, and the materialized views provide a particular view against the stream, such as min, max, avg and current value. With stream processing, the log stores the truth for the entity; it is organized as a stream. The log (stream) also stores every version of the entity. Let’s summarize the persistence aspects: The event captures facts about an entity within the domain. The event stream is a journal of events, it is the transaction log. The event stream captures behavior. Event streams provide a model for scaling horizontally as well as performing local processing. Materialized views let the processor maintain a local state. Jay Kreps provides an in-depth view and rationalization on how this works with streaming. External sources can be materialized using connectors providing yet another streaming source of data accessible by the same data plane (streams and stream processors). Because the orientation of the event streaming platform is event data, it brings with it a wealth of other functionality that I would encourage the interested reader to research further: Streams can be queried using SQL (ksqlDB); stream processors can perform data-local processing (colocated microservices and data) to support throughput and everything becomes observable by leveraging other streams (metrics, logs). I’m limited to space so will briefly mention Confluent Schema Registry, data evolution (schema evolution), change data capture (data virtualization), event collaboration and coordination primitives, streaming patterns, evolutionary architectures, disposable architectures and event tracing (correlation IDs). Do I need to use a microservices framework? Many people start looking at stream processing through the lens of microservices. They believe that streaming should accompany their existing microservice framework. This is not the case; the event streaming platform will replace it. We think of stream processors, producers and consumers as microservices. The event streaming platform provides the means of storing data as a stream and streaming events at scale. In order to facilitate this functionality the underlying protocol needs to ensure qualities such as offline status, different consumer rates, high throughput, low latency and elasticity (amongst others). The consumer model is one which exposes the protocol to the developer; this means the consumer will have the opportunity to ACK, NACK message receipt and interact with the correctness of accepting a message payload. Stepping through an example of an event streaming app Let’s combine all of the preceding concepts into a solution architecture. I‘m going to present a single use case that captures the essence of everything discussed thus far—namely, how I compose a business function of streams and stream processors. This approach addresses: Core function: Building an event streaming model for item bid activity and placement Trust: Run it on rails with instrumentation and throughput monitoring Control: Offline and rolling restart 1. Core function: Building the event streaming model for item bid activity and analytics A user bidding app, which is part of the auction platform Let’s step through the above event streaming application: This FaaS function will enrich, filter, geo-encode and validate the item before it is accepted into the items stream. FaaS is a good fit because it is at the edge, and there won’t be competing events, i.e., the same user won’t submit the same item within milliseconds of each other. Once submitted, we enter the world of streaming. A stream processor instance is running a queryable KTable of items that can be used to query against available items. Our next flow is the bidding against certain items. At this point, the client has queried the available items and is submitting bids to the /auctions/bids topic via a FaaS, which enriches the event to a geo-IP grid or provides address validation. The stream processor joins this stream with the items, creating an audit of bidding history stored on the /auctions/bids/history topic. To determine when an item has expired (sold, unsold, reserve not met), each stream processor runs a future against its locally held item table (materialized view) so that upon completion, the original item is updated to break the join between steps 1 and 2 (i.e., join where item.status != complete). The change of item condition emits an new event to /auction/items-complete that executes the item-complete processor. It looks at the bidding history where a series of FaaS events are triggered. The FaaS analytic function group in the top right of the diagram receives the entire history of related events, generates bid offer spread analytics and notifies the users of how the auction played out. The notification FaaS function simply emails the bidding users in response to the initial set of success or failure events. In other words, you either purchased this item or you were outbid. This functionality can be extended in many ways. We can leverage the live bidding stream for ad placement to attract bidders to similar items as the bidding time comes to a close, or set their expectations about the historically successful price range of similar items. 2. Trust: Run it on rails with Instrumentation and throughput monitoring It’s always important to understand if the event streaming application is performing, if it is meeting throughput requirements and provides sufficient insight about how it is meeting business SLAs. More importantly, many newcomers to event-first design get extremely concerned about knowing that an asynchronous application is actually performing, failing or just working as expected; they don’t trust it. This is because event streaming apps need to be “run on rails.” You not only monitor the happy path but also track all other aspects like error handling with dead letter queues, business metrics and flow metrics. Instrumentation plane tracking application-wide metrics Business metrics are collected by stream processors to aggregate the data patterns and mapping them onto end-to-end business flows; these flows are identified by the source and elapsed milliseconds. Outliers are identified by tracking end-to-end latencies and drilling down to flow level metrics. Flow metrics are the tracking individual components (microservices) where outliers and other analytics can be identified. Dead letter queues are just queues that are used where data quality or corrupt messages are detected. In cases where event formats evolve, the dead letter queue might be used in back testing to understand compatibility issues. 3. Control: Offline and rolling restart Restarting stream processing microservices Offline Streaming apps tend to run continuously. It is critical that events are not missed, and that any stateful operations are resumed without compromising the output stream. Event streaming platforms support the ability to allow consumers to be turned off while the producer still generates messages; they are stored in the log. Upon resuming processing responsibility, the consumer’s process will pick up from where it left off. Stateful operations will also be resumed using the event sourcing model, and state will be pushed into the changelog streams. The appealing aspect of the event streaming platform is that not only are all streams replicated across multiple locations on the backend broker infrastructure but also that all paths of failure and accuracy are catered for. Offline resilience means that replacement containers can be spun up in a new location with a new application version, and they will simply resume processing. Rolling restart Maintenance and operational requirements mean that the applications will inevitably be redeployed and updated. In a 24×7 environment, we leverage the event streaming platform’s consumer group protocol. This protocol ensures that members (consumers) who join and leave the group are tracked and that partitions within a stream will be redirected or rebalanced amongst the consumers as the population changes. As mentioned previously, stateful operations are also persisted as streams at the partition or event-key level. Flexing consumers up and down, or cycling through a set of consumers on a controlled fashion like a Kubernetes operator means that rolling restart and elastic scaling are supported natively. As in the offline scenarios, the new consumer processors simply event source the related state and carry on processing. Being event first or event driven is about recognizing the value of events. It’s about going back to first principles, challenging every preconceived idea of how to build distributed systems. Being event first means we change our methodology to an interplay between modeling real world events as DDD, modeling events to capture those use cases and implementing the dataflow of those events for individual use cases. We also develop our monitoring and instrumentation as part of the implementation in a different event plane. All of these elements compound upon each other with the repeated notion that the event captures a fact, a series of related events is a stream and that a stream tells a story. This is how we think about system design and architecture. Streams capture events; a series of events capture behavior; they tell a story Data evolution Another benefit of the event streaming systems is that we can continuously extend the functionality. We can add new processors to extract different sets of intelligence stored within the event streaming patterns. This might be backtesting ad placement, driving and calibrating machine learning, identifying user behavior by geography or even tracking and identifying malicious users (HammerSnipe/auction stealing). By storing only the events and never the commands, we have a wealth of capability that not only allows the system to be refined, extended and proven but also supports evolutionary change. As the domain or requirements change over time the platform can support the evolution of the events where new fields are added, stream processors might be updated or scaled and the architecture might change the event stream, which brings us nicely to the future state where we see streaming in the cloud. The future of programming Evolutionary architectures represent the next generation of thinking about cloud. The ability to compose data-driven, reactive architectures that leverage FaaS and elastic stream processing while pushing down infrastructure concerns is the journey we are on. There are many facets to this journey, but this story is one which will take time to unfurl and become clear. We have seen many architecture revolutions in the past (e.g., big data and NoSQL), but it’s only when the principles of being event first are correctly applied to the data platform do the qualities of evolvability become attainable. Only then does it become possible for data and logic to change independently without compromising the future runtime. We have now baked into our ideology that events are the future. Making this a reality is fun, but we are on a journey, one which will unfold as we continue to discover renewed value of going back to first principles of distributed computing. FaaS as part of the event-driven, streaming architecture Fundamentally speaking, you can leverage AWS Lambda integration with Amazon Kinesis or the Kafka Connect AWS Lambda Sink Connector to trigger events from streams. So it depends on the orientation of your development methodology. Do you want to stick to the cloud vendor platform or adopt a vendor-agnostic approach? Many organizations favor the latter, which is the approach I will use. The above event stream shows FaaS functions on the edge processing part of our application. Real-time stateful operations are handled by stream processors; they interact with the log and with correctness guarantees due to the underlying streaming platform protocol. This model ensures temporal guarantees of stream-table joins, i.e., event time correctness. Let’s step through the data flow above and focus on the FaaS functionality: When item events are sent to the system, they are received via a FaaS function. This function will validate, enrich and either reject the event, or write it into the /auction/items stream Similarly, bidding events enter the system via a FaaS function whose job is to validate, enrich and then store the event in the /auction/bids stream As events pass through the dataflow, an item-complete event is eventually emitted. This triggers a join reaction, and the output is a series of events to notify bidders and calculate analytics. The synergy of FaaS and the event streaming platform is a natural fit when we think about domain modeling and organizational needs as they change over time. Whether it’s business processes, data models, technology, cloud or just the organization itself, evolution is inevitable and needs to be embraced. We aren’t quite there yet, but it’s undeniable that FaaS is moving at a fast pace, along with streaming and cloud. In the context of building event-driven microservices with Kafka or event streaming apps; they are all names for the same thing. The core concept that enables the functionality is the “event” and the ability to record, replay and react to events. Building systems around this principle is fine for streams processors and clients that speak the event streaming platform protocol; however, FaaS doesn’t. As such, we need to ensure that we FaaS functions are operated in such a way so as not to compromise the stream of events but instead be used for the right type of data workloads. Hence, I developed the Faas principles above. It is not uncommon for those embarking on the journey to event-driven, asynchronous architecture to ask: “Hey, so I’m writing these events, how do I know what’s happening and whether they’re working as intended? I don’t trust my application when it is asynchronous—I really want transactions.” Let’s explore what this really means. We need to build something real, such as a payment system. Why a payment system, you ask? Well, pretty much every business out there needs to get paid, so it seems like a very common use case. It is easy to understand but also scary for developers who must trust an action that moves money from one account to another only using a transaction. Transactions give you all or nothing (atomic) behavior. They provide a guaranteed level of trust; they are simple. When we do replace transactions with events, it can seem complicated. Yes, we can transact across partitions in Apache Kafka®, and with traditional database transactions you get many “trust” semantics for free; however, they are pushed down into the database runtime. The problem is that many traditional OLTP databases are also relatively slow when they need to scale. ? Not only does the event streaming model expose the developer to building transactional semantics, scaling and error handling, etc., but it also means that they have more control, a richer ability to extend and enrich the system. Although this sounds like it adds complexity, the opposite is true. We also have the opportunity to add layers of functionality to the payment system as it evolves. Some banks run up to 30 processing stages, which stretches well beyond the realms of a single, atomic transaction, “We believe that the major contributor to this complexity in many systems is the handling of state and the burden that this adds when trying to analyse and reason about the system” Four pillars of event streaming Recognizing architectural pillars and patterns allows us to move away from complexity. To adopt event-first thinking, we need to stop, take a breath and deeply understand the world of transaction processing, which we often take for granted, and then map its mechanics to the event-driven streaming world. (Note: We view event streaming as the next generation of event driven.) There are many orthogonal concepts we also need to understand, let alone the core business function of moving the money: How much money is being transferred? What is the latency? How do I upgrade or evolve microservices? Can I scale it up and down? What happens to bad payments? Can it be extended for different payment types? Which teams are going to run my system? Where is it going to run? For this reason, I’m not only going to focus on the payment processing pipeline but also work through the other functionality required to architect a production-worthy solution. By nature anything that is event driven provides loose coupling. With event-first design, the data becomes the API which, like any production system, needs to support change and evolution (i.e., Avro or Protobuf). Furthermore, in embracing loose coupling, we inherit a clean separation of concerns (SoC), which provides the ability to develop and operate various aspects of the system architecture independently. These aspects can be organized into a set of complementary pillars: Business function: The payment processing pipeline Instrumentation plane: How much money is transferred? How quickly are payments processed? Control plane: Patterns to start, stop, pause, coordinate and autoscale Operational plane: Dead letter queues (DLQs), error tracking & handling, logging and NoOps 1. Business function The business function represents the core functionality being built. It provides business value that is immediate and beneficial to the organization. Examples include payment processing, logistics, data processing (ETL) and so on. This function can be developed as a set of events and related dataflows across one or more bounded contexts. 2. Instrumentation plane The role of the instrumentation plane is to capture metrics that prove that the business function is performing sufficiently. Metrics may have a variety of uses—they might be used to drive alerts, assist in capacity planning or drive infrastructure automation functions such as auto-scaling. In our case, business level monitoring is the ability to track metrics such as, payments in progress, failed payments and payment throughput. These could also be mapped onto application metrics, including the supporting dataflow volume, latency tracking and throughput. In the next level down, they can be mapped to the underlying broker infrastructure metrics, such as consumer lag, throughput per topic and partition hotspots, in addition to operating system metrics like CPU, network I/O, disk I/O, load average, etc. 3. Control plane An often overlooked aspect of many systems is its ability to control the flow of events. Unlike batch systems, event streaming applications continuously process data. This means that while it might be possible to perform rolling upgrades, the system sometimes needs to halt processing, perform an action, such as an upgrade or logic change, and then resume processing. The control plane becomes essential when outages have occurred and a large-scale system must get back online in a coordinated fashion, perhaps with incremental, restricted functionality. In the context of a payment system, you might need to drain the current set of payments for a topology change. But what if there is a regional outage—how do you bring the system back online without overloading downstream systems? 4. Operational plane Developing the system for the “happy path” is easy—it’s catering for the remaining paths when simplicity can become compromised. Relying on pushdown semantics of container “restart on failure,” workload feedback cycles to drive elasticity and other underlying functionality—we need to understand all of this and more. We need to build a model for capturing operational processes, such as rolling restarts and wipe and update processes, and develop these in automation scripts to drive the infrastructure automation. Ansible has emerged as a leading automation language and provides a wide range of plugins for configuration management, orchestration as well as anything else that might be needed when working with physical servers. For those with a Kubernetes ecosystem, the use of Helm, Helm Charts and Operator scripts is quite popular. The most important aspect of operations is not that you have dead letter queues or the like, but rather that you have trusted processes. These processes must be deterministic; they must be reliable. The only way of validating operational processes is to use automation and testing. Testing requires appropriate instrumentation that serves as a validation mechanism. Testing operational processes becomes a lot easier when the systems being operated are decoupled and, most importantly, have all its events captured in Kafka. This means that Kafka is used not only to store and emit events but also playback scenarios, so you can pinpoint when things started going wrong. Pillar 1 – Business function: Payment processing pipeline Goal To solve the business problem/objective(To handle millions of payments) Requirements Although I normally write these as user stories, I’m just going to cut to the chase with a collection of fictional requirements. The system needs to report how much money is inflight, process both sides of the payment and also confirm the total amount of payments successfully processed. In other words, it must: Scale to millions of payments Perform asynchronous processing Track payments inflight (total value of payments being processed) Remove/debit money from an account when handling a debit event Add/credit money to an account when handling a credit event Track payments confirmed today (total value of payments successfully processed) . Enhancements The purpose of the demo is to demonstrate the four key architectural principles in practice. It can be improved with regard to: Error handling: Implement sagas to handle unwinding on failed payments, perhaps when corrupted or fraudulent activity is detected Pre-payment validation: Add a preliminary stage to support scenarios such as detecting and handling suspicious or fraudulent activity Restrict dependent payments: When it makes sense, only allow a single debit payment for a single account to be inflight at any point in time Limits: Introduce limit checks against accounts with low balances Pillar 2 – Instrumentation plane: Business metrics There are a plethora of monitoring tools that provide valuable functionality. Most of them are great for bottom-up metrics or infrastructure metrics. Operating system and application infrastructure metrics are useful for overall knowledge, but the most important question to answer is: Am I meeting business goals? The goal for our instrumentation plane is tracking business metrics. We need to know with certainty that the system is performing correctly and how system performance impacts the business. Are our users happy? Are we responding quickly enough to meet demand? Behavioral problems can often be identified through these business metrics because they tend to result from a repeated series of underlying interactions that comprise the function, the flow of events. Another aspect is that business metrics can be used to drive adaptive behavior. Examples include scaling up the processing capability, applying backpressure and modifying system SLAs. Goal To meet the system’s business goals/key results/measurable goals Requirements Let’s assume we have the following requirements, some of which should be quite obvious: Process payments in < 200 milliseconds (latency) Throughput > 1,000 per second Report the total count and dollar amount (the demo code uses a one-minute window) Event flow model Pillar 3 – Control plane: Flow control, start, pause, bootstrap, scale and rate limit Goal To gracefully control the business system (Start, Stop, Pause, Restart) (To pause and resume payment processing) Requirements Pause processing and allow existing payments to be completed (drained) Resume processing from the paused state Event flow model Pillar 4 – Operational plane: Event logging, DLQs and automation Application logs: Each microservice will use a log appender to selectively send log messages to a specific topic that is relevant to the application context. The log message will also contain metadata about the runtime, perhaps including the input topic and output topic, consumer group as well as the source event information. These logs are relevant to business events and should be tied to the bounded context. Error/warning logs: Similar to above, but the focus is on error/warning log events and sending to the relevant topic. It is also useful to build a log context that accumulates relevant information to enrich the log message if an error/warning does occur. Audit logs: Each microservice will capture a security context (e.g., user, group, credential or reason) as well as event context (i.e., event ID, event origin, source and destination topic) and emit to a relevant, contextually determined audit log topic. Lineage: Similar to above, except that the event will contain trace information about its journey—for example, each processor, or the context it has accessed or modified on its dataflow. Dead letter queues: These provide a place to store raw events that cannot be processed. Processing failure can be due to any number of reasons, from deserialization failure to invalid values or invalid references (join failure, etc). In any case, the purpose of dead letter queues is to make you aware of the error so you can fix it. The dead letter queue is the last line of defense and might indicate a failing CI/CD process, in which a scenario has occurred that was not catered for. The dead letter queue should always be empty. In some cases, a saga pattern is needed to unwind the preceding state that caused the error. Remember, events must be processed idempotently. These patterns all need to be associated with the bounded context in which they occur. I started this post by talking about complexity. Complexity in system design is inevitable in any serious, large-scale system. To tackle complexity, you need control. To have control, you need to observe. To observe, you need to instrument. While control, observability and instrumentation are commonplace in many traditional systems, their implementation is subtly different in the world of events. We demonstrated this by reimagining a traditional payment system as a set of discrete stream processors. We saw how, despite being stateful, such a system could be scaled to accommodate digital-native workloads. Moreover, we saw how to layer control and observability over systems of this type, identifying four key pillars in the process—pillars that not only apply to payment processing but also to any event streaming system we may choose to build. These pillars are: Core business flow: business functionality Instrumentation plane: metrics and observability Control plane: start, stop and scale Operations plane: application support, error handling and dead letter queues
Unstarred
Dunk (exclude from study)
Tags
General
Learning
Life
Strategy
Planning
Training
Risk
Problem Solving
Behavior Change
Business
Financial Planning
Startups
Personal Finance
Relationships
Financial Strategy
Finance
Software
Software Development/Design
Diet/Fitness
Games
Thinking
Investing
Self-Esteem
Sales
Physiology
Emotion
Writing
Creativity
Narratives
Time
Working
Pickup
Social Dynamics
Negotiation
Parenting
Marketing
Databases
Scaling
Software Security
Software Architecture
Interrogation
UI/UX
Fantasy Football
Grooming
Future Planning
Products
Cognitive Behavioral Therapy
Networking
Comedy
Web Design
Naval
Decision Making
Systems Thinking
Mindsets
Math
Analytics
Careers
Goal Setting
Culture
Habits
Resistance
Kafka
Docs
wri
Copywriting
Frameworks
Checklists
Digital Strategy
Data
Digital Transformation
Information Science
Product
Critical Thinking
Content Marketing
SEO
Rory Sutherland
Psychology
Content Creation
Differentiation
Capital Allocation
Distributed Systems
Storytelling
Systems
Behavior
Effectiveness
Big Data
Integrity
Productivity
Work Ethic
Discipline
Questions
Interviews
Life Planning
Failure
Success
Expertise
Positioning
Dating
Betting
Frames
Power
Office Politics
Growth
Personal Growth
Data Engineering
Rules
Microservices
Reading
Laravel
Organizations
Product Development
Ideation
Communication
Design
Wealth
Entrepreneurship
Customer Development
Writ
Recipes
Health
Mastery
Management
Product-Led Growth
Tech
Stream Processing
Time Management
Prioritization
produ
SaaS
Confluent
Customer Success
Mindfulness
Leadership
Operator
Network Theory
UAI
HTBAGASPB
MOTHA
MOTHA-U
HTBAGASPB-O
MOTHA-A
HTBAGASPB-P
HTBAGASPB-S
MOTHA-I
HTBAGASPB-M
Sex
Project Management
Leverage
knowledge|1195
knowledge|1033
knowledge|442
knowledge|938
knowledge|358
knowledge|875
Process
statistical proccess control
Chess
Performance
Focus
Screenshot Essay
AI
Prompting
Reasoning Through Feeling
Virtues
AI Agents
Economics
Identity
Evolution
Execution
Philosophy
Trueridge
Agents
Cancer
Trading
Stock Market
Neuroscience
Pain
Discomfort
ADHD
Creative
Art
Rating
Great
OK
Incomplete
Get Help
Ask a Question
Submit
Previous Answers
Review Questions
help questions
Submit
Todos
Submit
Sensemaker
Sensemaker
× Close