Profile avatar
nicbarker.com
Open source developer & programming educator. github.com/nicbarker for my projects. https://www.youtube.com/@nicbarkeragain for programming videos. ex engineering @canva & game dev @cerebralfix
459 posts 566 followers 203 following
Regular Contributor
Active Commenter

After a lot more work than I expected, my video about Recursion is done. Hope you enjoy the journey down the rabbit hole ꩜ youtu.be/YuaJ8x_NcLw

I have a game side project that uses algebra, so I built a small computer algebra system that can manipulate equations. Would anyone be interested in a video walkthrough of how the code works for something like this? I think it's quite interesting 😁

It's kind of funny how a megabyte is either tiny or massive depending on who you ask

A frustrating side effect of search becoming "smarter" in general is that we seem to have lost the capability to just match on a substring. Across the various search boxes I use daily (apple spotlight, google search, github search) they all now fail to find "bar" in "foobar"

I've recently had to write a significant amount of code in the tools that I use for making videos - with no auto complete, no syntax highlighting, no error squiggles, nothing. And I've noticed that the next time I write actual code, I'm way more likely to 1 shot it correctly.

Odd to think that there is now a “vintage” of college degrees that were earned before ChatGPT existed. I honestly wouldn’t be surprised if most companies dropped degrees from hiring requirements before the end of the decade if nothing drastic changes.

Spend enough years working on an artistic or scientific pursuit and you start to realise that the bell curve meme is actually the sine wave meme

When I first released Clay the README was around 2x the line count of the actual library itself. I personally believe that open source, for all it's amazing benefits, has also created enormous pollution in the form of wasting people's time. The issue is complex and has two sides.

I know it's easy to hate on the web as a software platform but every so often I have to fill out one of those turing complete PDFs for some government service in acrobat and it reminds me that there was more than one circle in Dante's inferno.

Nothing quite like the adrenaline rush of undoing 100+ steps and veeeery carefully copying some old code then redoing 100+ steps into the future again. We've all been traumatised by that one time fat fingering ctrl+x and having to redo everything 🥲

There is an insidious idea that has crept into software through the open source movement, which is that software no longer being modified is "abandoned". It's very possible - even desirable - for software to simply be "finished". To serve its purpose reliably, as a tool should.

I find it interesting to think of the work a compiler does as similar to the concept of "simplifying" an algebraic expression - searching for redundancy, combining like terms, replacing identities, etc. Anyone have any academic terms / links for me to have a dig in this space?

The problem with programming language debates is that the critics present the worst possible thing a language is capable of, the supporters present the best possible thing, and precisely 0% of real world projects using that language are either of those things.

Anyone know the name of this phenomenon in human endeavor? Gen 1: Spends career mastering difficult process Gen 2: Learns with difficult process, invents tools to greatly increase productivity Gen 3: Learns with new tools, similar or reduced productivity vs Gen 1

There is so much "mitochondria are the powerhouse of the cell" type trivia in programming - one is that "the stack grows downwards" is always mentioned immediately in stack vs heap discussions. Functionally useless in practise, but a very common question for comp sci exams!

Does anyone know of a "sandboxed real mode" style system, i.e. machine is still running in protected mode, but within each process you have free reign over the entire address space, and peripherals and IO are mapped into special fixed memory regions rather than being syscalls?

You know how explorers love to put their names on things like mountains and rivers? Turns out academics do the same thing, but for ideas. Problem is, inevitably 10 people think of the same idea independently, and then students get taught 10 words that mean the same thing.

Programming jargon can seem intimidating until you figure out that a fancy term like "immutable variable" means "unchanging changeable", and it becomes clear that technical language is just a crowd sourced API design with serious backward compatibility issues

I suspect "what do you think about global variables?" would be quite an enlightening interview question.

I totally agree with the current sentiment of “use a profiler before you try to optimise” - but it’s also important to remember that a profiler won’t reveal quadratic loops, resource contention problems etc that only appear under certain circumstances. Intuition matters too!

Might sound counterintuitive but I think the best advice for improving your high performance programming is to get a much worse computer. It's so easy to commit crimes on an apple M series that you could never get away with on the type of machine most people in the world are on.

It's amusing to me to think that other disciplines like mathematics must have the same type of tribalism as software - there must be an equivalent of the C people, the Rust people, the Haskell people etc in math research