Fahim khan
morfes.bsky.social
Fahim khan
@morfes.bsky.social
11 followers 5 following 42 posts
Senior Software Developer | Full stack developer | MEAN | MERN | Golang | Rust | Javascipt | Typescript | Nodejs | Nestjs | React | Angular | Nextjs | Expressjs | AWS | Psql | Mongo | Neo4j | Backend | Frontend | Web3 |
Posts Media Videos Starter Packs
One of the key components of designing a distributed system is deciding when the “distributed” part is actually unnecessarily complex.
#SystemDesign #DistributedSystems #SoftwareArchitecture #TechLeadership #EngineeringDecisions #SimplicityMatters #DesignTradeoffs #ComplexityManagement
Which old sayings are true and which are myths?
Do snice guys finish last? Or first?
A quitters never win? Or is stubbornness the real enemy?
Does confidence rule the day? When is it just a delusion?

#LeadershipMyths #SuccessTruths #ConfidenceVsDelusion #CareerWisdom #MindsetMatters #GrowthMindset
ETag in HTTP empowers smarter caching! By allowing servers to signal resource changes, it prevents redundant downloads and saves bandwidth for both users and providers. Optimize your APIs with ETags for speed and efficiency. #WebDevelopment #HTTP #APIPerformance
So I can't cash my service that responds with
status: 200
body: error

🥲

/s
RPS from 1,000 RPS to 2,000 RPS. To understand why this is true, you can see that of the 2,000 inbound requests, 1,000 (50%) can be serviced by the cache, leaving 1,000 requests to be serviced by your serving layer.
Imagine, if you will, that you have a request-serving layer that can handle 1,000 RPS. After 1,000 RPS, the system starts to return HTTP 500 errors to users. If you place a cache with a 50% hit rate in front of this request-serving layer, adding this cache increases your maximum
Placing a cache in front of your service can double capacity with just a 50% hit rate. A system that supports 1,000 RPS can now handle 2,000 RPS—half the load served by the cache, half by the backend. A simple design choice, big scalability gains.
#SystemDesign #Caching #Scalability
You can treat a buffer as a file in Rust using std::io::Cursor. This lets you read from and write to bytes just like you would with a file, making buffer manipulation seamless and more intuitive. Great for working with in-memory data! #RustLang #IoCursor #SystemsProgramming
Every programming language has some flaws: it either has macros or it doesn't. #Programming #CodeLife #DevThoughts
🚀 CSS @function lets you write custom functions for dynamic, reusable styles—like variables, but parameterized! Supported in Chrome 139+ only. It’s a game changer for design systems and utility CSS! #css #frontend #webdev #cssfunctions
Read more:
w3.org/TR/css-mixins-1/
una.im/5-css-functions/
In Javascript You can enhance functions in two powerful ways: Proxies let you intercept calls dynamically, while decorators pattern wrap functions for extra behavior like logging. Both offer flexibility—choose based on your needs! #JavaScript #TypeScript #Decorators #Proxies #WebDev
"Every line of code represents an ethical and moral decision."
—Robert C. Martin (“Uncle Bob”), from the chapter "Who Are We?" in We, Programmers: A Chronicle of Coders from Ada to AI
#CodeEthics #SoftwareCraftsmanship #UncleBob #WeProgrammers
Made config changes in a running Docker container? Use docker commit to take a snapshot and create an image from its current state. Not ideal for production, but handy for quick backups and sharing tweaks in a pinch! #Docker #DevOps #Container #Snapshot #dockercommit
Combine Docker’s HEALTHCHECK with the --restart flag for robust container monitoring! HEALTHCHECK tracks app status, while --restart always ensures automatic recovery—keeping services online with minimal effort. Perfect for seamless uptime! #Docker #Healthcheck #Restart #DevOps #Containers
CSS if() empowers you to run logic checks and conditionally style elements based on any property or attribute—like data-status—right in your CSS. Achieve dynamic UI states (error, pending, complete) without JS, making your styles smarter and context-aware! #css #logic #webdev
Unlock union types in TypeScript by using the all-powerful number keyword with array types! 🧠 Map any array's element types into a union, enabling flexible, type-safe utility functions. Level up your TS game! 🚀 #TypeScript #CodingTips #DevHacks #TypeSafety
TypeScript’s type system lets you extract inner types using infer and guide logic with conditional types. Think pattern matching for types! Combine both for powerful compile-time type transformations. 🔍💪 #TypeScript #Infer #ConditionalTypes #TypeLevelMagic #TSFeatures #DevTips
With TypeScript’s infer and mapped types, you can extract hidden types to make type-safe helpers for ORMs instead of using any. This helps create safer, smarter filter params. #TypeScript #infer #MappedTypes #TypeSafety #ORM #DevTips
Mapped types: transform generic object keys into new types using key mapping and template literals. Recursively create new signatures per object key. Enables scalable, type-safe contracts at the type level. (see image)

#TypeScript #StaticTyping #MappedTypes
Bitwise logic cuts through noise.

Checks if `x` is a power of 2.
No loops. No divisions. Just truth in bits.

#programming #bitwise #javascript #softwareengineering #devthoughts #computerscience
Directories in Linux are just files with a clever purpose: each contains pointers to other files and subdirectories, not “stuffed folders.” It’s all about data structure, not storage. Every time you ls, you’re just reading a file mapping, not opening a real container. #Linux #Tech
Engineering is not about building for building's sake. It's the art of problem-solving, where building is merely the path—not the purpose.
#Engineering #Innovation #ProblemSolving #STEM #Quotes #Motivation #Technology #Inspiration
"It is not worth the bother of killing yourself, since you always kill yourself too late."
— Emil Cioran, The Trouble with Being Born