TechVibe
1.1K subscribers
824 photos
82 videos
38 files
361 links
I'm Eyob, a self-taught dev sharing my Tech journey, technical tips, tools, and real-world projects.

DM @alnova19

Personal site: https://eyobsimachew.vercel.app
My Github: https://github.com/Eyob-smax
LinkedIn: https://linkedin.com/in/eyob-simachew
Download Telegram
Watching Netflix and cooking something, see work life balance😁

@devwitheyob
#TechVibe #random
❀1πŸ”₯1
Some people should understand this, fr😭

@devwitheyob
#TechVibe #Gumball
πŸ’―1
I literally forgot how fun it was watching Cartoon Network growing up.

I'm watching Gumball, and it's fire. I feel like we're the last generation that truly got to experience growing up with cartoons like this before this TikTok era. 😊

@devwitheyob
#TechVibe #nostalgia #cartoon
πŸ”₯7πŸ’―2
TechVibe pinned Β«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…»
TechVibe pinned Β«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…»
Cyber Guardians
Which database design do you guys prefer for a multi tenant application?

--> Shared database + shared tables

--> Shared database + separate schemas

--> Separate database per tenant
I think tenant isolation should be enforced in both the application and the database.

The application handles business logic and permissions, but the database should be the last line of defense. If a developer forgets a tenant_id filter or introduces a bug, RLS(Row Level Security) still prevents data from another tenant from being returned. Also every developer has to remember to put that where filter and that is risky

The performance cost of RLS is usually minimal with proper indexing, and the extra security is worth it. Most production SaaS systems use this, application-level authorization + database-level RLS. It's much safer than relying on the application alone.

@devwitheyob
#TechVibe #MultiTenant #databases #Security
πŸ”₯3
Article of the day

Docker layer caching

One of Docker's biggest performance optimizations is layer caching.

Every instruction in a Dockerfile (FROM, COPY, RUN, etc.) creates a new image layer. When you build the image again, Docker doesn't blindly execute every instruction, it checks whether it can reuse previously built layers.

For example, consider this Dockerfile:
FROM node:22

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

CMD ["npm", "start"]

On the first build, Docker executes every instruction. But if you only change server.js and rebuild, Docker reuses all the cached layers up to RUN npm install and only rebuilds the final COPY . . layer. This means your dependencies aren't installed again, making the build significantly faster.

However, if you modify package.json, Docker must rebuild the COPY package*.json layer, the RUN npm install layer, and every layer after them. A change to one layer invalidates that layer and all subsequent layers.

This is why Dockerfile order matters. Place instructions that change rarely (like installing dependencies) near the top, and instructions that change frequently (like copying your application source code) near the bottom. A well-structured Dockerfile can reduce build times from minutes to just a few seconds during development.

Read Full article πŸ‘‰ [ LINK ]

@devwitheyob
#TechVibe #ArticleOfTheDay #Docker #Caching #DevOps
❀6πŸ‘2
Who is gonna be my last guest😁

Let's go to 2kπŸ”₯

@devwitheyob
#TechVibe #subs
❀8
Currently working on this LMS, I only have 5 days to deliver

@devwitheyob
#TechVibe #LMS #project
πŸ”₯11❀4
TechVibe pinned Β«Article of the day Docker layer caching One of Docker's biggest performance optimizations is layer caching. Every instruction in a Dockerfile (FROM, COPY, RUN, etc.) creates a new image layer. When you build the image again, Docker doesn't blindly execute…»
Start reading the terms and conditions when u signing up, guys😁

@devwitheyob
#TechVibe #random
😁12
This media is not supported in your browser
VIEW IN TELEGRAM
When you're trying to impress with your tech, but it failed😁

@devwitheyob
#TechVibe #random
😁7😭3
Forwarded from EKD Designs
Introducing Lockd-in

Lockd In is a minimalist productivity web application built to help users manage their time and maintain deep focus.

Built Lockd-in when I was stressing for exit exam & design work overloads back in uni.

After weeks of beta testing, Lockd-in is officially live πŸŽ‰πŸŽ‰πŸŽ‰

Thanks to everyone that gave me feedbacks, almost all feedbacks have been reviewed & edited into this version πŸ™

Features:
πŸ”₯ Streaks
πŸ“Έ Focus Cards
⏳ Pop Out (PiP) Timer
↗️ Session logs & Productivity Chart

All local, no login or sign up needed


If you've been meaning to build something but keep burning out halfway through, this is definitely for you.

πŸ”— https://lockd-in.pages.dev/ (PC RECOMMENDED for now)

I'm not a developer, so there may be imperfections. If you find a bug, want a feature added, or wish to express your feelings, my comments and DMs are open.

Lock in. Outwork. Outlast.
@ekddesign
Please open Telegram to view this post
VIEW IN TELEGRAM
❀4
Article of the day

Advanced git

Before pushing to main, make it a habit to sync your branch with the latest changes by rebasing on top of main. This helps you resolve conflicts early and keeps your commit history clean. If your branch has a lot of small "fix" or "oops" commits, use an interactive rebase to squash them into a few meaningful commits. A clean history makes reviewing code and debugging much easier later.

Before every push, review your changes with git diff and scan for anything that shouldn't be in the repository, such as API keys, tokens, passwords, or temporary debugging code. Then run your tests locally to make sure nothing is broken. Catching an issue before it reaches the remote repository is always easier than fixing it after deployment.

If you've rebased your branch, avoid using git push --force. Instead, use git push --force-with-lease, which checks whether someone else has updated the remote branch before overwriting it. Finally, tag important releases with versions like v1.0.0 or v2.1.0. Release tags make it easy to identify deployments, track changes between versions, and roll back quickly if something goes wrong in production.

read more advanced git concepts πŸ‘‰ [ LINK ]

@devwitheyob
#TechVibe #git #ArticleOfTheDay
πŸ”₯5
Git in CI

CI runners clone your repo on every job. For a 200 MB monorepo with 50k commits and 10k refs, a naive git clone burns 30-60 seconds per job before any test runs. Across a 40-job pipeline that is 30 minutes of pure clone wait per pull request. The fix is not "throw a faster runner at it", it is matching the clone strategy to what each job actually needs.

Shallow clone is the lazy fix. It downloads only the most recent commits, skipping history.

git clone --depth=1 https://github.com/org/repo.git

read more advanced git concepts πŸ‘‰ [ LINK ]

@devwitheyob
#TechVibe
Git in CI

While shallow clones (depth=1) are fast, they break commands that rely on Git history like git log, git blame, git merge-base, changelog generators, and release tools.

A better option is a partial clone, which downloads the commit history but only fetches file contents when they're actually needed. This keeps history available while making clones much faster and smaller.
# Download history, fetch file contents on demand
git clone --filter=blob:none https://github.com/org/repo.git

# Skip blobs larger than 1 MB
git clone --filter=blob:limit=1m https://github.com/org/repo.git

For medium and large repos, especially monorepos, partial clones can significantly reduce clone time and disk usage without losing access to Git history.

read more advanced git concepts πŸ‘‰ [ LINK ]

@devwitheyob
#TechVibe #git #GitInCI
❀1πŸ‘1
TechVibe pinned Β«Article of the day Advanced git Before pushing to main, make it a habit to sync your branch with the latest changes by rebasing on top of main. This helps you resolve conflicts early and keeps your commit history clean. If your branch has a lot of small…»
Prompt of the day

"Build Windows 12 and make no mistake"

LOL😁

@devwitheyob
#TechVibe #random
😁10