CodeX is a Medium publication where many authors write opinion and explainer pieces on programming languages, frameworks, AI, and developer careers.
HN commenters mostly discuss individual posts, such as one on greenest programming languages, one on React hooks, and one about ChatGPT and a Google interview.
Without reguard to fustration/curiosity/knowlege/time ratio:
1) coding practice challenges
* use different languages / paradigms within same language)
2) check out esoteric languages (try doing stuff in #1 in esoteric language)
* http://esoteric.codes/
* http://www.dangermouse.net/esoteric/
3) Research problems language intended to solve / language paradigm.
try solving in language/paradigm that supports the problem vs. one that does not. (aka apl vs. mumps)
* pragmatic programmers has a book series that looks at languages & example problems a given language was inteded to help with [1]
4) Check out old/new language / application change logs [2]
* figure out how to use macros/scripting with an editor
5) Take a look at a decent size program. Figure out how to impliment that from the command line using the ~200 'do one thing well' unix commands.
6) Programming topics of autonoma & of programming grammars tends to be heavily dependent upon theory. Using 1 through 5 above to impliment autonoma & grammars does help with things like [3].
* On simplier side, comparing 'older version' of a language book with current version of language does give hints.
after 1-6, should have a good idea of what type of documentation / coding standards / tools / levels of abstraction want to have/see for a projects source code/deliverable. :-)
[1] : http://github.com/Blackgu/ebooks/blob/master/ebooks/2012-2-14books/Seven%20Languages%20in%20Seven%20Weeks.pdf
[2]…
> Reduce energy usage to reduce CO2. That means reduce internet calls, and reduce CPU utilization to do the thing.
This is an interesting way of thinking! On one hand, all of my homelab servers now run on old AMD Athlon 200GE CPUs that would otherwise be considered e-waste in the eyes of some, but now run at 35W TDP and are enough for all of my CI/backup/development needs, in addition to being a cheap x86 option.
To me, it feels like drawing 100W from the wall might be a reasonably energy efficient option, since I don't care as much about uptime (servers can sleep every night when I do), redundancy or failover (apart from additional HDDs for data and backups), cooling (they're all passively cooled with heatsinks, slightly warm up the house in the winter) or other things you'd expect in a data center.
That said, this line of reasoning also implies that many languages would go out the window, if we talk about the back end: https://www.researchgate.net/publication/320436353_Energy_efficiency_across_programming_languages_how_do_energy_time_and_memory_relate (or an article: https://medium.com/codex/what-are-the-greenest-programming-languages-e738774b1957)
Python would go out the window. Ruby would go out the window. Same for something like Lua and PHP, maybe even TypeScript in the back end.
You'd essentially have to use C, C++ or Rust. Maybe something like Java, C#, Go or JavaScript for your back end (or some of the other more energy efficient languages, just listed some of…
Not the OP, but: -march says the compiler can assume that the features of that particular CPU architecture family, which is broken out by generation, can be relied upon. In the worst case the compiler could in theory generate code that does not run on older CPUs of the same family or from different vendors.
-mtune says "generate code that is optimised for this architecture" but it doesn't trigger arch specific features.
Whether these are right or not depends on what you are doing. If you are building gentoo on your laptop you should absolutely -mtune=native and -march=native. That's the whole point: you get the most optimised code you can for your hardware.
If you are shipping code for a wide variety of architectures and crucially the method of shipping is binary form then you want to think more about what you might want to support. You could do either: if you're shipping standard software pick a reasonable baseline (check what your distribution uses in its cflags). If however you're shipping compute-intensive software perhaps you load a shared object per CPU family or build your engine in place for best performance. The Intel compiler quite famously optimised per family, included all the copies in the output and selected the worst one on AMD ;) (https://medium.com/codex/fixing-intel-compilers-unfair-cpu-dispatcher-part-1-2-4a4a367c8919)
> You need sufficient experience and a deep understanding of the business to create a design that is just right. Otherwise, after several iterations, your code is likely to become bloated—for example, a single file exceeding 2,000 lines or a function stretching over 500 lines.
You don't need some fancy overarching design to avoid that. Just don't do it - break up functions as you're writing them, following standard bottom-up design practices. That doesn't require "deep understanding of the business". It doesn't even require experience, just a minimal amount of education, following advice such as "functions should do one thing" and the single responsibility principle. A couple of random blog posts about this:
https://medium.com/codex/should-functions-be-small-e76b45aa93f
https://blogs.oregonstate.edu/devindaniels/2025/01/16/functions-should-do-one-thing/
It literally did not pass a google interview
I'm assuming this is what you're talking about:
https://medium.com/codex/chatgpt-vs-my-google-coding-interview-8ab474b759b6
Look at the amount of prompt engineering he has to do to get it to answer the 'There’s a hidden bug in the code if the array is very very very large. Can you spot it and fix the bug?' question, it's a pattern generator that mirrors back your own knowledge, if he had suggested there was a hidden bug if the array was 'very very small' it would have, with a similar amount of cajoling, come up with an explanation for that too
For what it's worth, chatGPT is a paradigm shift, but it's not showing 'a deep understanding of self', and the only way you'd reach that conclusion is if you're actively seeking out all the positive examples and glossing over the other 90% it produces
I feel people don't understand what inheritance and (object orientation in general) is useful for, misuse it, and then it gets a bad reputation. It's not about making nice hierarchies of Cars, Fruits, and Ovals. Agree 100%. It starts from the earliest programming course where we just teach it all wrong; way to abstract (no pun intended).
One point to add to yours: well executed OOP allows for "structural" flow of control where the object hierarchy, inheritance, events, and overrides allow for the "structure" of the hierarchy to control the flow of logic.
I wrote two articles on this with concrete examples and use cases:
https://medium.com/codex/structural-control-flow-with-object-oriented-programming-part-2-7d18526146de
https://medium.com/@chrlschn/weve-been-teaching-object-oriented-programming-all-wrong-part-1-e171f57aa209