Please recommend a really good app to track daily Ficus care times. I used the basic Windows Timer app, but it resets if you skip a day, you can't see history, and there are other issues so tell me if there is a good tool or should I build one instead?
@devwitheyob
#TechVibe
@devwitheyob
#TechVibe
π3π¨βπ»2
So I'm going to start another challenge to post daily tech concepts about backend, DevOps, systems architecture, and automation every single day, as I used to. This will make me read technical articles and understand tech in detail.
Last time, I stopped reading articles because of all the jobs now I can give it 30 min we'll be back to it again.
@devwitheyob
#TechVibe #ArticleOfTheDay #TechArticles
Last time, I stopped reading articles because of all the jobs now I can give it 30 min we'll be back to it again.
@devwitheyob
#TechVibe #ArticleOfTheDay #TechArticles
π₯13
Well if you love this I gonna be consistant on it...hope everyone gets somethingπ₯
@devwitheyob
#TechVibe #TechArticle #DailyArticles
@devwitheyob
#TechVibe #TechArticle #DailyArticles
π₯9
All these auth libraries make OAuth(Open Authorization) look like a lot of work and something hard to understand. But behind the scenes, for providers like GitHub or Google, it's mostly just some API requests back and forth, exchanging a code for an access token, and creating your own session. π
I still remember me adding Supabase OAuth to a small expense tracker app instead of implement it myself π
@devwitheyob
#TechVibe #OAuth
I still remember me adding Supabase OAuth to a small expense tracker app instead of implement it myself π
@devwitheyob
#TechVibe #OAuth
π₯2π―1
Funny enough, remember the project I built and deployed in just 24 hrs.
The very next day, someone from Upwork reached out and asked if I'd be interested in working as an automation and data pipelines engineer for their company. They asked me to send over my automation portfolio, so I shared 4β5 production projects I'd built for clients.
Out of all of them, they picked this CRM automation platformβthe one I had just finished. Since it was the second interview, the questions got pretty technical, and we spent a good amount of time discussing the architecture, design decisions, and implementation. He was impressed, and we ended up scheduling the final interview for tomorrow.
The moral of the story, you never know when a project will open a door for you. Don't stop building. Polish your projects, deploy them, and make sure they solve real-world problems. You might need them sooner than you think.
@devwitheyob
#TechVibe #TechVibe #upwork #automation
The very next day, someone from Upwork reached out and asked if I'd be interested in working as an automation and data pipelines engineer for their company. They asked me to send over my automation portfolio, so I shared 4β5 production projects I'd built for clients.
Out of all of them, they picked this CRM automation platformβthe one I had just finished. Since it was the second interview, the questions got pretty technical, and we spent a good amount of time discussing the architecture, design decisions, and implementation. He was impressed, and we ended up scheduling the final interview for tomorrow.
The moral of the story, you never know when a project will open a door for you. Don't stop building. Polish your projects, deploy them, and make sure they solve real-world problems. You might need them sooner than you think.
@devwitheyob
#TechVibe #TechVibe #upwork #automation
β€15π5β‘2
For some strangers who see us posting all day on Telegram, they think we get paid by view lolπ... we just doin' it for the love of the gameπ
@devwitheyob
#TechVibe #TechVibe
@devwitheyob
#TechVibe #TechVibe
β€5π€2
Let me tell you something, fam...I promise this will be my last post for the day. π
All these successful (kinda successful) ppl you see online that you want to work with, ask for advice, or even get a job from haven't really been in the game for that long probably 2 yrs tops. Most of them just dedicated themselves to that thing. Imagine this, 2 years ago or even less, they were just like us.
I see people talking about them like they're doing something extraordinary. Stop that. It is pretty normal for hard working ppl to get a good income to create your own business. Start creating it yourself.
Hope it helps. Good night, fam. βοΈ
@devwitheyob
#tips
All these successful (kinda successful) ppl you see online that you want to work with, ask for advice, or even get a job from haven't really been in the game for that long probably 2 yrs tops. Most of them just dedicated themselves to that thing. Imagine this, 2 years ago or even less, they were just like us.
I see people talking about them like they're doing something extraordinary. Stop that. It is pretty normal for hard working ppl to get a good income to create your own business. Start creating it yourself.
Hope it helps. Good night, fam. βοΈ
@devwitheyob
#tips
π₯17π―6β€2
TechVibe
This actually worksπ³ @devwitheyob #tips
About that hack I shared earlier... I just discovered another use case. π
You can connect your phone to a big speaker and use your phone as the microphone. That means you don't even need a dedicated mic to speak at an event.
It's also perfect for practicing public speaking or presentations.
Just connect to a big speakers you can aplify your sound from your phone. This is actually crazy.
@devwitheyob
#TechVibe #tips
You can connect your phone to a big speaker and use your phone as the microphone. That means you don't even need a dedicated mic to speak at an event.
It's also perfect for practicing public speaking or presentations.
Just connect to a big speakers you can aplify your sound from your phone. This is actually crazy.
@devwitheyob
#TechVibe #tips
π4π1
Article of the day
Idempotency pattern
A payment request can time out even after the server has successfully processed it. Since the client can't tell whether the operation completed, it retries the request. Without idempotency, that retry can result in the customer being charged twice.
The solution is an idempotency key. For every payment, the client generates a unique identifier (typically a UUID) and sends it with the request. The server stores that key and the payment result within the same database transaction. If the client retries using the same key, the server returns the previously stored response instead of executing the payment again.
Idempotency keys shouldn't be stored forever. They should remain valid for at least as long as clients are expected to retry. A 24-hour TTL is a common default, balancing protection against duplicate requests with storage efficiency.
For production systems, every state-changing endpoint should require an idempotency key. Replayed requests should be checked before rate limiting since they're retries rather than new operations. Expired keys should be cleaned up periodically using a TTL, with an index on the expiration column to make cleanup efficient. The idempotency record should also maintain states such as PENDING, COMPLETED, and FAILED to handle retries and failure scenarios correctly. Finally, a reaper can safely remove requests that remain in the PENDING state beyond the expected request timeout, preventing abandoned operations from blocking future retries.
Read full article π [LINK]
@devwitheyob
#TechVibe #ArticleOfTheDay #IdempotencyPattern #DistrubutedSystems
Idempotency pattern
A payment request can time out even after the server has successfully processed it. Since the client can't tell whether the operation completed, it retries the request. Without idempotency, that retry can result in the customer being charged twice.
The solution is an idempotency key. For every payment, the client generates a unique identifier (typically a UUID) and sends it with the request. The server stores that key and the payment result within the same database transaction. If the client retries using the same key, the server returns the previously stored response instead of executing the payment again.
Idempotency keys shouldn't be stored forever. They should remain valid for at least as long as clients are expected to retry. A 24-hour TTL is a common default, balancing protection against duplicate requests with storage efficiency.
For production systems, every state-changing endpoint should require an idempotency key. Replayed requests should be checked before rate limiting since they're retries rather than new operations. Expired keys should be cleaned up periodically using a TTL, with an index on the expiration column to make cleanup efficient. The idempotency record should also maintain states such as PENDING, COMPLETED, and FAILED to handle retries and failure scenarios correctly. Finally, a reaper can safely remove requests that remain in the PENDING state beyond the expected request timeout, preventing abandoned operations from blocking future retries.
Read full article π [LINK]
@devwitheyob
#TechVibe #ArticleOfTheDay #IdempotencyPattern #DistrubutedSystems
π8β€2π₯2
Article of the day
Composite Indexes, Equality-First Ordering & Covering Indexes
Most developers think adding an index automatically makes a query fast. In reality, the order of the indexed columns matters just as much as having the index itself. A poorly ordered composite index can force PostgreSQL to scan thousands of unnecessary entries before finding the rows you actually need.
A composite index stores multiple columns in a specific order. PostgreSQL always starts searching from the leftmost column, so the index should be designed to match how your queries filter data. This is known as the leftmost prefix rule.
When designing composite indexes, always put equality (
A covering index goes one step further. By using the
Read full article π [ LINK ]
@devwitheyob
#TechVibe #ArticleOfTheDay #PostgreSQL #Indexing
Composite Indexes, Equality-First Ordering & Covering Indexes
Most developers think adding an index automatically makes a query fast. In reality, the order of the indexed columns matters just as much as having the index itself. A poorly ordered composite index can force PostgreSQL to scan thousands of unnecessary entries before finding the rows you actually need.
A composite index stores multiple columns in a specific order. PostgreSQL always starts searching from the leftmost column, so the index should be designed to match how your queries filter data. This is known as the leftmost prefix rule.
When designing composite indexes, always put equality (
=) conditions first and range (>, <, BETWEEN) conditions last. Equality filters drastically reduce the search space, allowing PostgreSQL to jump directly to a small subset of rows before scanning the requested range. Reversing this order often results in many unnecessary index scans and filtered rows.A covering index goes one step further. By using the
INCLUDE clause, PostgreSQL stores additional columns inside the index itself. If the query only needs those columns, the database can perform an Index Only Scan, returning results directly from the index without reading the table. This eliminates heap fetches, reduces disk I/O, and significantly improves query performance. For production systems, design indexes around your most frequent query patterns, not around individual columns. Verify every index with EXPLAIN ANALYZE, look for high Rows Removed by Filter, place equality columns before range columns, and use covering indexes for high-traffic read queries to eliminate unnecessary table access.Read full article π [ LINK ]
@devwitheyob
#TechVibe #ArticleOfTheDay #PostgreSQL #Indexing
β€6
Forwarded from AWS User Group Addis Ababa
π Want Free AWS Training? Your Journey Starts This Friday!
We're excited to announce that attendees of our upcoming Cloud Blueprint: Navigating the AWS Solutions Architect Journey & Bootcamp Sneak Peek! session will have the opportunity to join an exclusive AWS Solutions Architect Bootcamp designed for our community.
π― What's in it for you?
β FREE AWS Solutions Architect Bootcamp training
β Access to a temporary AWS cloud environment for hands-on learning and experimentation
β Guided learning path and practical cloud experience
β Opportunity to learn alongside fellow community members
β Support in building real-world AWS skills
π’ Important: Attendance at this Friday's event is a prerequisite for bootcamp eligibility.
If you're serious about building cloud skills, earning AWS certifications, or pursuing a career in cloud computing, this is your opportunity to get started with the support of the AWS User Group Addis Ababa community.
π Featuring: Simon Gebreselassie, Solutions Architect @ AWS
π Friday, June 26, 2026
π 6:00 PM EAT
π» Online Event
During the session, we'll discuss the Solutions Architect journey, share details about the bootcamp roadmap, and explain how participants can qualify for the program.
Don't miss the first step toward your cloud career.
π Register
@AWSUserGroupAddisAbaba
We're excited to announce that attendees of our upcoming Cloud Blueprint: Navigating the AWS Solutions Architect Journey & Bootcamp Sneak Peek! session will have the opportunity to join an exclusive AWS Solutions Architect Bootcamp designed for our community.
π― What's in it for you?
β FREE AWS Solutions Architect Bootcamp training
β Access to a temporary AWS cloud environment for hands-on learning and experimentation
β Guided learning path and practical cloud experience
β Opportunity to learn alongside fellow community members
β Support in building real-world AWS skills
π’ Important: Attendance at this Friday's event is a prerequisite for bootcamp eligibility.
If you're serious about building cloud skills, earning AWS certifications, or pursuing a career in cloud computing, this is your opportunity to get started with the support of the AWS User Group Addis Ababa community.
π Featuring: Simon Gebreselassie, Solutions Architect @ AWS
π Friday, June 26, 2026
π 6:00 PM EAT
π» Online Event
During the session, we'll discuss the Solutions Architect journey, share details about the bootcamp roadmap, and explain how participants can qualify for the program.
Don't miss the first step toward your cloud career.
π Register
@AWSUserGroupAddisAbaba
β€3
There is a new project on AfterQuery, you just need to upload a repo with good code quality
[ LINK ]
@devwitheyob
#TechVibe #AfterQuery #Jobs
[ LINK ]
@devwitheyob
#TechVibe #AfterQuery #Jobs
β€1π₯1