Most apps only store the current state.
Balance: XAF 15,000. Tomorrow it's XAF 30,000. You update the record. Fine for most apps.
But for fintech, banking, inventory, logistics, trading platforms, hospital systems, storing only the current state isn't enough.
Because the real question isn't "what's the balance now?" It's "how did it get here?"
That's where event sourcing comes in.
๐๐๐ฒ๐ป๐ ๐๐ผ๐๐ฟ๐ฐ๐ถ๐ป๐ด: ๐๐๐ผ๐ฟ๐ฒ ๐๐ต๐ฒ ๐๐๐ผ๐ฟ๐, ๐ป๐ผ๐ ๐ท๐๐๐ ๐๐ต๐ฒ ๐ฟ๐ฒ๐๐๐น๐.
Instead of storing "balance: XAF 30,000," you store: account created โ XAF 50,000 deposited โ XAF 20,000 withdrawn. Add it all up, and you get XAF 30,000.
Think of El Clรกsico. Ask who won, someone says "Barcelona demolished Real Madrid, 4โ0." ๐ (@10Ronaldinho is why I fell in love with this club.) That's current state.
Event sourcing is minute-by-minute: goal at 12', goal at 38', goal at 61', goal at 85', Madrid never even got a shot on target. Now you know exactly how the beatdown happened, not just the final score.
When a customer asks "why did my balance drop?" you don't guess. You check the events. Money in here, transfer out there, fee deducted here, reversal there. Your system has memory, not vibes.
๐๐ค๐ฅ๐ฆ: ๐๐๐ผ๐ฝ ๐ณ๐ผ๐ฟ๐ฐ๐ถ๐ป๐ด ๐ฟ๐ฒ๐ฎ๐ฑ๐ ๐ฎ๐ป๐ฑ ๐๐ฟ๐ถ๐๐ฒ๐ ๐๐ผ ๐๐ต๐ฎ๐ฟ๐ฒ ๐ฎ ๐บ๐ผ๐ฑ๐ฒ๐น.
Command Query Responsibility Segregation. Big name, simple idea: separate the side that writes data from the side that reads it.
Commands are actions โ create account, place order, send money, approve loan. They need validation, business rules, security, consistency.
Queries are questions โ get balance, fetch order history, show dashboard. They need speed, filtering, search.
Small apps can use one model for both. Fine. But at scale, forcing reads and writes into the same structure just slows everything down.
It's a kitchen and a serving counter. The kitchen (writes) is where the strict, careful work happens. The counter (reads) is where customers grab what they need, fast. Force everyone through the kitchen, and the whole place backs up.
๐๐ผ๐บ๐ฏ๐ถ๐ป๐ฒ ๐๐ต๐ฒ๐บ, ๐ฎ๐ป๐ฑ ๐๐ต๐ถ๐ป๐ด๐ ๏ฟฝ๏ฟฝ๏ฟฝ๏ฟฝ๐ฒ๐ ๐ถ๐ป๐๐ฒ๐ฟ๐ฒ๐๐๐ถ๐ป๐ด.
Write side stores events: order placed โ payment received โ order packed โ shipped โ delivered.
Read side builds different views from the same events: a customer sees "your order is on the way," admin sees "243 orders shipped today," finance sees "XAF 18M received this week," logistics sees "27 packages pending."
Same events. Different views. That's the power.
But don't misuse this.
Don't bring event sourcing and CQRS to a to-do app. If your system just needs create, read, update, delete โ plain CRUD is enough. Use it and sleep well.
The skill isn't knowing these patterns exist. It's knowing when they actually earn their complexity.
Where's the line for you, when does a system stop being "CRUD is fine" and start needing its full history?
Every startup has that one dependency that, if it goes down, takes the whole product with it.
One payment provider. One AI API. One SMS gateway. One email service. One cloud storage. One npm package installed because @StackOverflow said so.
Everything works. The demo is smooth. Investors clap.
Two weeks later: the SMS provider goes down. The payment webhook starts delaying. The AI API returns garbage. The email provider blocks your domain. That npm package gets compromised. Cloud storage says "degraded performance."
Degraded performance for them. Cardiac arrest for you.
That's the moment you realize: your architecture was never a system. It was a prayer request.
If one dependency going down can send your entire product to the grave, you didn't integrate a service, you married your destiny to another company's uptime. That's not partnership. That's technical bondage.
๐๐ผ๐ ๐๐ผ ๐ฎ๐ฐ๐๐๐ฎ๐น๐น๐ ๐ฏ๐๐ถ๐น๐ฑ ๐ณ๐ผ๐ฟ ๐ถ๐:
๐ญ. ๐๐ฒ๐๐ถ๐ด๐ป ๐๐ถ๐๐ต ๐ณ๐ฎ๐ถ๐น๐๐ฟ๐ฒ ๐ถ๐ป ๐บ๐ถ๐ป๐ฑ
Every dependency can fail, payment provider, AI model, Redis, database, email. Treat failure handling as part of the product, not an afterthought.
๐ฎ. ๐๐๐ผ๐น๐ฎ๐๐ฒ ๐ฒ๐ ๐๐ฒ๐ฟ๐ป๐ฎ๐น ๐ฑ๐ฒ๐ฝ๐ฒ๐ป๐ฑ๐ฒ๐ป๐ฐ๐ถ๐ฒ๐
Don't let a vendor's SDK scatter through your entire codebase. Build your own wrapper, a payment service, an email service, an AI provider service. Your app talks to your interface; your interface talks to the vendor. If the provider fails you tomorrow, you swap the wrapper. You don't rewrite the company.
๐ฏ. ๐ง๐ถ๐บ๐ฒ๐ผ๐๐๐, ๐ฟ๐ฒ๐๐ฟ๐ถ๐ฒ๐, ๐ฐ๐ถ๐ฟ๐ฐ๐๐ถ๐ ๐ฏ๐ฟ๐ฒ๐ฎ๐ธ๐ฒ๐ฟ๐
Non-negotiable for anything you don't control.
๐ฐ. ๐ค๐๐ฒ๐๐ฒ ๐ฒ๐ ๐๐ฒ๐ฟ๐ป๐ฎ๐น ๐๐ผ๐ฟ๐ธ
Sending email, SMS, or a slow job? Accept the request, store the state, process in the background, retry when needed. Your user's experience shouldn't collapse because a vendor is slow.
๐ฑ. ๐ ๐ฎ๐ธ๐ฒ ๐ผ๐ฝ๐ฒ๐ฟ๐ฎ๐๐ถ๐ผ๐ป๐ ๐ถ๐ฑ๐ฒ๐บ๐ฝ๐ผ๐๐ฒ๐ป๐
If the same operation runs twice, it shouldn't cause double damage. Period.
๐ฒ. ๐๐ฎ๐น๐น๐ฏ๐ฎ๐ฐ๐ธ๐ ๐ฎ๐ป๐ฑ ๐ด๐ฟ๐ฎ๐ฐ๐ฒ๐ณ๐๐น ๐ฑ๐ฒ๐ด๐ฟ๐ฎ๐ฑ๐ฎ๐๐ถ๐ผ๐ป
Always have one. Always.
๐ณ. ๐ ๐ผ๐ป๐ถ๐๐ผ๐ฟ ๐๐ผ๐๐ฟ ๐ฑ๐ฒ๐ฝ๐ฒ๐ป๐ฑ๐ฒ๐ป๐ฐ๐ถ๐ฒ๐
Track latency, error rates, timeout rates. Your system should know a vendor is sick before your users tell you on Twitter.
๐ด. ๐ฃ๐ฟ๐ผ๐๐ฒ๐ฐ๐ ๐ฎ๐ด๐ฎ๐ถ๐ป๐๐ ๐ฐ๐ผ๐บ๐ฝ๐ฟ๐ผ๐บ๐ถ๐๐ฒ๐ฑ ๐ฑ๐ฒ๐ฝ๐ฒ๐ป๐ฑ๐ฒ๐ป๐ฐ๐ถ๐ฒ๐
Review packages. Use lock files. Run dependency scans. Remove what you don't need. Least privilege. Keep secrets out of your code. "We trust this package" is not a security strategy.
๐ต. ๐๐ผ๐ฐ๐๐บ๐ฒ๐ป๐ ๐๐ผ๐๐ฟ ๐ฒ๐ ๐ถ๐ ๐ฝ๐น๐ฎ๐ป
Before you depend heavily on any provider, ask: Can we export our data? Switch API keys? Route to another provider? Change the implementation without breaking the product? Every serious dependency needs an exit door.
Trust providers, but don't worship them.
Integrate dependencies, but isolate them.
Use external services, but protect your own core.
Automate retries, but avoid duplicate damage.
Monitor everything. Plan for failure.
If one dependency can take down your whole product, that dependency is no longer a tool. Now it's your co-founder.
And some co-founders resign without notice.
What's the one dependency your product would not survive losing tomorrow?
collecting for a birthday, a trip, or a shared expense?
create a pot. share the code.
SplitChat tracks who paid and who hasn't.
money releases when you hit your target.
no chasing. no drama.
#SendSasa#SplitChat#MobileMoney
the address book holds 20 contacts.
after that, older ones disappear.
SasaNames has no ceiling.
claim [yourname].sasa, anyone pays you, no number, no list, no limit.
#SasaNames#SendSasa#MobileMoney
3/ So we built past it.
SasaNames โ claim [yourname].sasa
โ Anyone types your name to pay you
โ They don't need your number
โ They don't need to be in your contacts
โ No ceiling. No list. No limit.
2/ After 20, older contacts start falling off the list.
Fine for most people.
Not fine if you're a merchant with 50 regulars.
Not fine if you're a freelancer with 30 clients.
Not fine if strangers pay you daily at a market stall.
1/ The address book is one of the best features in SendSasa.
Save "Mom." Save "Landlord." Save "Boss."
One tap. Transfer done.
But it has a ceiling โ 20 contacts.
She's "Mama" in your phone. Not "+237 678 901 234."
Your transfers should know that too.
โ Save names, not numbers
โ Lock in your amounts
โ Send in one message
Smart Address Book โ SendSasa ๐โก
Patrick is in Montreal. His crew is in Douala.
Every Friday he calls his brother to hand out cash โ because no Canadian bank reaches MTN MoMo.
We're building the fix inside WhatsApp.
Type. Approve. 8 wallets credited in Douala. From Canada.
SendSasa ๐
#Fintech#MobileMoney
African SMEs don't have a talent problem.
They have a "how do I invoice my client in Texas" problem.
We're solving it, inside WhatsApp. No bank. No app. No terminal.
Just a message. A link. And money in your mobile wallet.
SendSasa ๐
#Africa#Diaspora#Fintech#MobileMoney
Send money home faster than typing "I love you" ๐
No app. No bank account. No crypto knowledge.
Just open WhatsApp, type the amount, and your family has it in 60 seconds.
https://t.co/0s3lf66hI6
#SendSasa#Remittance#Africa#WhatsApp#Stellar#Fintech
We just got accepted into The Aquarium residency in Paris.
12 weeks to build what traditional finance fears most:
- WhatsApp remittances in 60 seconds (<1% fees)
- Crypto ATMs across Africa (BTC, ETH, USDT, SOL)
March 27th, we launch. ๐จ๐ฒ๐
#XRPL#Crypto#Africa
@Eyob_Geremew_ @BlockchainMonk_@theresidency Thanks! ๐ฅ
Week 1 challenge: testing if our one-liner works for people who've NEVER heard of sign language accessibility.
Does it intrigue them? Or just confuse them?
That's what we're validating this week.
How are you testing yours? Let's compare notes! ๐ช
Michael Seibel on how to create a great startup pitch
In the clip below, former Y Combinator CEO Michael Seibel breaks down the two types of pitches every startup founder needs: a 30-second elevator pitch and a two-minute pitch for investors.
โA lot of people practice 10-minute, 30-minute, hour-long, pitches. I think thatโs all garbage. I think you can get all of your points across in two minutes. And one thing I like to tell founders is that the more you talk, the more you have an opportunity to say something that people donโt like.โ
30-Second Elevator Pitch:
You should be able to explain to anyone you come across what your company does in 30 seconds.
This should be three sentences:
1. What does your company do? Assume the person youโre talking to knows nothing. This should be a 1-sentence explanation that your mom or dad can understand (e.g. โWeโre Airbnb and we allow you to rent out the extra room in your houseโ NOT โWeโre Airbnb and weโre a marketplace for spaceโ).
2. How big is the market? Do a couple hours of research so that you can give investors a rough approximation of the size of the market youโre in (e.g. Airbnb might give the size of online hotel booking market)
3. How much traction do you have? Ideally you can say something like: โWe launched in January and weโre growing 30% month over month. We have $ X sales and Y users.โ If youโre pre-launch, you need to convince investors that youโre moving quickly (e.g. โthe team came together in January. By March we launched our beta. By April we launched our product.โ).
Two-Minute Pitch:
This pitch is for people youโre actually trying to convince of something (e.g. investors, potential employees, etc.). You basically want to simply explain what you do and then ask for money.
There are 5 key components:
1. Clear 30 second pitch (everything mentioned above)
2. Unique insightโwhat do the biggest players in your market not understand? This should be 2 sentences.
3. How do you make money?
4. Team. If your team has done something that has made investors money, you should mention that (e.g. โweโre the founders of PayPalโ). If you havenโt, donโt go on about the awards youโve won or PhDs you hold. What investors want to hear is: how many founders? (hopefully 2-4) how many of the founders are technical? (hopefully 50% or more engineers) How long have you known each other? (ideally youโve known each other either personally or professionally for at least 6 months) Are you all full-time?
5. The Big Ask ($$$). You have to know what youโre talking about when you ask for money. Are you raising on a convertible note or a SAFE? Whatโs the cap of the SAFE? How much money are you raising? Whatโs the minimum check size? If you donโt know these things, investors wonโt think youโre serious or that you havenโt done your homework.