Nic Barker
nicbarker.com
Nic Barker
@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
Pinned
If you're not familiar with my work, I maintain an open source high performance UI layout library written in C 🙂
github.com/nicbarker/cl...
#cprogramming #c #ui
GitHub - nicbarker/clay: High performance UI layout library in C.
High performance UI layout library in C. Contribute to nicbarker/clay development by creating an account on GitHub.
github.com
When I was growing up, software shipped in discrete versions. You purchased "Thing 1.0", and later, the company might release 2.0. The market could then decide if 2.0 was a success or failure. Now, you're forcefully upgraded to 2.0, the old 1.0 is gone, and with it, the incentive to improve.
December 12, 2025 at 12:10 AM
I ended up getting nerd sniped into making an interactive version of this graphic on virtual scrolling I made the other day, you can take a look here:
nicbarker.com/virtual-scrolling
December 9, 2025 at 5:15 AM
Maybe I'm missing something, but does anybody actually still use the standard text UI feature of "click & drag selected text to cut & paste it somewhere else"?
I've done it thousands of times and literally every single one has been accidental.
December 9, 2025 at 1:55 AM
I've explained the concept of "virtual scrolling" in UI several times recently, so I decided to put together a small graphic. If you have a scrolling list of items that are all the same height, you can use a simple calculation to only process the ones currently on screen.
December 8, 2025 at 5:09 AM
A very common programming case is "I need a second, slightly different version of this thing", which creates an immediate temptation to build a shared abstraction.
IMO the better approach is to copy paste the whole thing, modify and get it working, and then decide if you need it.
December 5, 2025 at 2:06 AM
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
Recursion, Explained Simply
YouTube video by Nic Barker
youtu.be
May 31, 2025 at 10:41 PM
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 😁
May 27, 2025 at 12:18 AM
It's kind of funny how a megabyte is either tiny or massive depending on who you ask
May 16, 2025 at 12:33 AM
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"
May 14, 2025 at 12:44 AM
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.
May 13, 2025 at 12:35 AM
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.
May 8, 2025 at 1:56 AM
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
May 7, 2025 at 9:59 AM
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.
May 5, 2025 at 1:18 AM
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.
April 23, 2025 at 9:04 AM
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 🥲
April 9, 2025 at 11:54 PM
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.
April 7, 2025 at 10:15 PM
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?
April 6, 2025 at 10:03 PM
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.
April 4, 2025 at 7:51 AM
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
March 30, 2025 at 10:54 PM
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!
March 27, 2025 at 12:35 AM
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?
March 26, 2025 at 12:36 AM
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.
March 25, 2025 at 3:06 AM
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
March 24, 2025 at 3:19 AM
I suspect "what do you think about global variables?" would be quite an enlightening interview question.
March 23, 2025 at 8:32 AM
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!
March 22, 2025 at 7:40 PM