Fawad H Syed

1.9K posts

Fawad H Syed banner
Fawad H Syed

Fawad H Syed

@fawadhsdev

Analyst & Software Engineer. Designing and building AI and analytics systems to support reliable decision-making.

Geneva Katılım Ocak 2026
1.7K Takip Edilen1.2K Takipçiler
Sabitlenmiş Tweet
Fawad H Syed
Fawad H Syed@fawadhsdev·
💻 Analyst & Software Engineer Interested in Artificial Intelligence, analytics, and building useful technology. Follow me for thoughts on: • Artificial Intelligence • Data and analytics • Software development • Technology trends 🤝 Tech professionals — let us connect. I follow back. Geneva, Switzerland 🇨🇭 🔗 fawadhs.dev #AI #Data #Technology
English
4
2
32
2.8K
Fawad H Syed
Fawad H Syed@fawadhsdev·
While building an art auction platform, I realized the importance of persistent storage. The backend uploaded and converted images into various formats and sizes for different devices, generating originals, thumbnails, previews, WebP, zoom images, and mobile versions. This process showed that storing large binaries in the database isn't scalable. Using dedicated storage separates media from transactional data, simplifies CDN delivery and caching, supports async workflows, and keeps backups manageable. The database handles metadata, while storage efficiently manages the media workload.
English
0
0
2
89
Captain-EO 👨🏾‍💻
As a developer, have you ever asked: Why does every major app store images in S3 instead of a database?
English
130
25
1.1K
311.5K
Fawad H Syed
Fawad H Syed@fawadhsdev·
P50 is the median, indicating typical system performance with balanced responses. P75 indicates performance beyond average load, highlighting potential workload issues. P90 reveals increased operational pressure and inefficiencies, such as slow queries or delays, affecting some users. P95 captures stress points where bottlenecks are critical, often used for Service-Level Objectives (SLOs) to ensure reliability under realistic traffic. P99 highlights tail latency, exposing architectural failures such as queue saturation or dependency issues that can make the system unreliable despite good average performance. P99.9 concerns rare failures and extreme delays, critical at large scale, affecting millions of interactions. Percentiles reveal the distribution, unlike averages, which mask delays and failures. Mature engineering focuses on optimizing for consistency and stability during stress, measuring resilience by how systems perform at their worst, not just their best.
English
0
0
3
25
Fawad H Syed
Fawad H Syed@fawadhsdev·
Go excels in its testing model, which aligns with its system design approach. Interfaces act as small, explicit contracts, enabling dependencies to be injected rather than imported and patched at runtime. This reduces indirection in unit tests and simplifies behavior isolation without needing databases, Redis, or network calls. Interestingly, this simplicity influences service architecture. In Go, if testing is hard, the abstraction is often too tightly coupled. Testing becomes a feedback loop for better design, not just a validation step.
English
0
0
2
81
DevDanny👨‍💻
DevDanny👨‍💻@dannyclassi_c·
Writing tests in Go after coming from TypeScript is an eye-opener. In TypeScript, mocking is a fight. You need Sinon stubs, spies, esmock to intercept ES module imports, and half the time you're wrestling the tooling more than testing the logic. In Go, you define an interface. You write a mock struct that satisfies it. You swap it in. Done. Today I wrote tests for the user endpoint that checks auth enforcement, cache hits vs misses, and verifies the cache gets bypassed when disabled. Used testify/mock for call tracking (AssertNumberOfCalls, AssertNotCalled) which is basically Go's version of Sinon spies. The test authenticator generates real JWTs with a test secret. Mock stores return controlled data. No database, no Redis, no network. Pure unit tests. Interfaces in Go aren't just a language feature, they're the entire testing strategy.
DevDanny👨‍💻 tweet mediaDevDanny👨‍💻 tweet media
English
7
9
127
6.5K
Fawad H Syed
Fawad H Syed@fawadhsdev·
@sudox7 Using two pointers shifts your approach to the problem. Instead of analyzing each pair one by one, you utilize the array's order to determine your next step. This method improves efficiency because both pointers advance, avoiding redundant checks of the same values.
English
0
0
0
240
SudoX7
SudoX7@sudox7·
two pointers is one of those tricks that feels like cheating once you see it. O(n²) becomes O(n) by never going backwards. one pointer starts at the front. one at the back. they walk toward each other. array never scanned twice.
SudoX7 tweet media
English
5
5
120
8.2K
Fawad H Syed
Fawad H Syed@fawadhsdev·
void * is a generic pointer to an object, but void ** is not a generic “pointer to any pointer.” If void **c = &b; were allowed, then through c you could assign a different void * value into b, silently changing an int * object via the wrong pointer type. 
 Example: void **c = &b; *c = &some_double; would store a double * into b, which is declared int *. The extra level of indirection makes this unsafe, so C only permits the void * conversion at the object-pointer level, not covariantly through T **.
English
0
0
24
2.9K
Тsфdiиg
Тsфdiиg@tsoding·
This is the part of pure C I never understood. Why isn't void** compatible with int**? void* is compatible with int*, sizeof(void*) == sizeof(int*). So the covariant compatibility of void* across several levels of indirection makes perfect sense to me. Am I missing anything?
Тsфdiиg tweet media
English
75
30
972
105K
Fawad H Syed
Fawad H Syed@fawadhsdev·
Nice explanation. Small clarification: dup2() doesn’t copy files; it redirects fd 1 (stdout) to the same open file description. int fd = open("file.txt", O_WRONLY|O_CREAT, 0644); dup2(fd, STDOUT_FILENO); execvp("ls", args); The ls command doesn't know that stdout has changed; it just writes to fd 1 normally. The key point is that file descriptors persist across exec() calls unless marked with FD_CLOEXEC.
English
0
0
10
696
trish
trish@TrisH0x2A·
when you type ls > file.txt in bash, this is what's actually happening bash calls fork() and in the child before exec it opens file dot txt then calls dup2() to copy that file descriptor onto fd 1 which is stdout ls has no idea anything changed and writes to fd 1 like always but fd 1 now points to your file there is no special redirect syscall dup2 is the whole mechanism
trish tweet media
English
4
22
179
11.7K
Fawad H Syed
Fawad H Syed@fawadhsdev·
Start with a full spec. Not giant enterprise documents, but it should include goals, constraints, architecture, interfaces, acceptance criteria, and edge cases before I begin prompting. AI agents tend to amplify ambiguity, so if the guidance is vague, they may confidently optimize for the wrong objectives, leading to more time spent steering rather than building. While I still iterate regularly, it’s mainly on tasks and implementation rather than redefining the entire product each time. Small, incremental adjustments work well for prototypes and exploration, but production systems greatly benefit from a clear, comprehensive spec from the start.
English
0
0
0
10
Jan-Niklas Wortmann
Jan-Niklas Wortmann@niklas_wortmann·
Honest question for anyone using AI coding agents daily: Do you write a full spec before prompting, or do you iterate in small steps and correct as you go? I am just not organized enough to do a proper spec-driven workflow
English
43
0
11
6.2K
Fawad H Syed
Fawad H Syed@fawadhsdev·
Bun moving parts to Rust indicates that when a project grows large, ecosystem depth outweighs language elegance. Rust offers stronger memory safety, better concurrency tools, mature libraries, and a larger contributor base, with advantages that compound at scale. Zig remains an interesting low-level language with excellent C interoperability, explicit memory model, and minimal abstraction. However, Bun revealed that being a great systems language isn't enough; widespread adoption, tooling maturity, and ecosystem support are also crucial. Rust currently has this; Zig does not.
English
0
0
0
265
Adam Rackis
Adam Rackis@AdamRackis·
Now that Bun is moving off Zig ... will we ever hear about that language again? Bun was the only thing I'd ever heard of using it, and it's moving to Rust. Hard to imagine anyone being eager to build on Zig at this point. Am I missing something?
English
114
5
714
102.4K
Fawad H Syed
Fawad H Syed@fawadhsdev·
@Adriksh ungetc() doesn’t “undo typing” — it only pushes a byte back into the stdio stream buffer so the next read gets it again. The example is valid, though the C standard only guarantees one character of pushback. Commonly used for lexer/parser lookahead.
English
0
0
6
242
Adriksh
Adriksh@Adriksh·
In C, you can literally undo an input read. ungetc() pushes a character back into the stream so the next read sees it again like nothing happened.
Adriksh tweet media
English
7
12
150
7.9K
Fawad H Syed
Fawad H Syed@fawadhsdev·
I was not reiterating the memory overhead point; instead, I was clarifying that the comparison combines two different abstractions: a fixed-size primitive in C versus an arbitrary-precision object in Python. I also mentioned NumPy because it's the practical way to achieve C-like contiguous integer storage in Python applications.
English
0
0
1
152
E
E@trycatchfinl·
@fawadhsdev @sudox7 what value did you add other than repeating the tweet?
English
2
0
13
480
SudoX7
SudoX7@sudox7·
something that bothers me every time I think about it: a Python integer takes 28 bytes of memory. a C int takes 4. it's not a Python bug. it's the price of dynamic typing. every Python object carries a reference count, a type pointer, and size metadata. a million integers in Python costs 28MB same in C costs 4MB.
SudoX7 tweet media
English
56
46
692
95.4K
Fawad H Syed
Fawad H Syed@fawadhsdev·
What’s the fun in anything if you don’t build it, shape it, and go through the process yourself? The process is where the meaning is.
English
2
0
3
30
Fawad H Syed
Fawad H Syed@fawadhsdev·
LLMs are already decent junior engineers. Agents are junior engineers with terminal access. Production systems still require a high level of engineering discipline.
English
1
0
5
73
Fawad H Syed
Fawad H Syed@fawadhsdev·
@LewisCTech We already have most of this: ESM + JSDoc typings + checkJs + import maps. The web ecosystem refuses to stop rebuilding webpack with extra steps.
English
0
0
1
24
Lewis Campbell
Lewis Campbell@LewisCTech·
The web people should invent a thing where you can download typescript packages from npm as a single file where all the exports have jsdoc type annotations so you can do no buld with static type checking.
English
6
1
17
2K
Fawad H Syed
Fawad H Syed@fawadhsdev·
Hot take: bigger context windows may be slowing progress toward real AI intelligence. Memory governance and causal retrieval matter more than dumping millions of tokens into a model.
English
0
0
4
29
Fawad H Syed
Fawad H Syed@fawadhsdev·
Long-term reasoning failure is often a temporal reasoning failure.
English
0
0
2
28
Fawad H Syed
Fawad H Syed@fawadhsdev·
Most AI memory systems largely rely on semantic similarity, vector proximity, and keyword overlap for retrieval. However, human recall operates differently. Humans access contextually relevant experiences, causally useful analogies, and strategically applicable lessons, not just similar text. This fundamental difference could shape the development of the next generation of AI agents.
English
0
0
5
58
Fawad H Syed
Fawad H Syed@fawadhsdev·
Forgetfulness is a feature, not a bug.
English
0
0
4
24
Fawad H Syed
Fawad H Syed@fawadhsdev·
Reflection converts memory from archival storage into behavioral optimization.
English
0
0
4
23