whyandgrowth
Joined 1 year ago
Joined 1 year ago
Partially, yes. If your portfolio is 5 small web applications or Python scripts that AI can make in half an hour, their weight as a “demonstration of skills” drops.So, the fact that you can do it manually is no longer impressive.
What becomes important now: Architecture at scale — AI does not yet know all the nuances of large systems, distributed services, performance optimization, and security.
Business logic integration — understanding how the business actually works, where the pain points are, how users interact with the product.
Creativity and unique concepts — AI can create boilerplate, but it doesn't always understand that it is creating something fundamentally new.
Moral: AI takes away the “simple feats” but opens up new space for true engineering mavens. If you can do something that AI can’t easily replicate, your portfolio gets even cooler.
Maybe I don't understand something, so please explain?
1. Zone name storage – right now you store a raw char. If it points to a stack/local string it can blow up . Better to use const char (if always literals) or strdup.
2. Thread-safety – the global arrays (prof_zones, prof_zones_stack) aren’t protected. In multithreaded workloads everything breaks. You could make them thread_local.
3. Cycles vs time – __rdtsc() isn’t always stable (TurboBoost, NUMA, CPU scaling). clock_gettime() is more portable. Might be nice to let the user pick via a macro.
4. Output – the printf("[%16s]...") is old-school. Sorting zones by total_secs or total_cycles would make hot spots pop out immediately.
5. Limits – PROF_MAX_NUM_ZONES = 256 is small for bigger projects. Could malloc and grow dynamically.
6. Overhead – the profiler doesn’t subtract its own overhead (push/pop, clock reads), so absolute numbers are inflated. Relative numbers are still valid, though.
Bonus idea: add a macro like
#define PROF_SCOPE(name) for (int _i = (prof_begin(name), 0); !_i; prof_end(), _i++)
so you can just write:
void foo() { PROF_SCOPE("foo"); // code... }