Nic Barker
@nicbarkeragain
Followers
5K
Following
6K
Media
581
Statuses
3K
Open source & programming educator. Clay UI - https://t.co/bT5JH4eDA5 Programming videos - https://t.co/Zp253yBZ1o prev @canva @cerebralfix
Sydney, Australia
Joined October 2019
So happy to finally share something I've been working on for some time. I'm releasing a new low level programming fundamentals course! It's called "The Simple Joy Of Programming", and you can find out more in this video:
17
24
390
Apparently Patreon (and recurring subs in general) have issues in India because of RBI requirements. Anyone have any advice or alternative ideas for helping people in India get access to Patreon? I've seen people accept ad hoc payments through paypal but that seems non ideal.
3
0
4
The more I read of Dijkstra's writing, the more it becomes clear that he would have been an absolute menace on programming twitter
49
155
3K
Life is funny. You watch one piece as a kid and imagine yourself as luffy, zoro, sanji. Then you grow up and realise you are, in fact, usopp.
7
0
28
I’ve finally realised why the Americans love Halloween. It’s a necessary evil to prevent the Christmas decorations going up too early, like wolves controlling the deer population in Yellowstone.
1
0
42
In the programming course I'm publishing, we build a small ISA / virtual machine from scratch, and we've just reached backwards jumps which means loops! Here's the sandbox implementation computing iterations of the collatz conjecture, it's fun to watch
11
47
589
It's surprising to me that there isn't really a ubiquitous term like "array" that we use to describe contiguous elements that are variable width. I know arrays end up being the vast majority use case, but still. We have agreed upon terminology for much more obscure things.
44
0
74
Don't get me wrong it's important to understand bitfields / flags / sub byte formats, but I personally think I would have found byte addressability, endianness, booleans "not actually being 1 bit" etc much more straightforward starting at bytes and then zooming in later.
3
0
25
I'm unironically starting to think it makes more sense to teach computing as intrinsically base 256 first rather than base 2. In my experience students tend to latch onto the concept of bits, to the detriment of their understanding of bytes as the base addressable unit.
22
3
149
I think if a programmer had been in charge of the original design of timezones, we would have ended up with just one global timezone for everyone (california), and if it happened to be midday at 1am in your country, tough luck
97
13
813
Somewhere that I could see there being innovation in a modern programming language is better tooling for data layout & visualisation. Most languages feel overly focused on operations, whereas data layout, structures & types are just as (if not often more) important.
12
7
106
It's also one of the things that makes the most sense to me about Rust as a C person. My data lifetimes are very clear in my own C projects, but when publishing an open source library like Clay, being able to enforce the lifetime on user data would solve a lot of headaches.
0
0
7
In garbage collected languages this simply doesn't happen. If the library retains a reference to an object, it won't get de-allocated. Neither the user or the library maintainer often even thinks about the lifetime of shared data / objects.
1
0
4
One of the absolute classic examples is when retaining a pointer passed in by the user. While of course we try to avoid internal state where possible, in reality this happens often. And there's no way to prevent a user from accidentally passing a pointer to a stack variable.
1
0
3
This is especially obvious in C. C is a beautiful language for solo and team dev, as long as you're able to establish and follow some conventions. But it lacks language features to actually enforce a number of critical implicit rules, especially wrt memory and lifetimes.
1
0
4
As you go from solo dev -> open source lib, the effectiveness of those implicit rules drops significantly. You have a good chance of teaching & enforcing rules on a well disciplined team, for an open source lib, you can expect users to make mistakes immediately.
1
0
6
When designing those rules for usage of your code, there tends to be three distinct situations: - Solo dev (you are the only user) - Multi dev "team" - (you know the users personally) - Open source / library maintainer (you don't know who the users are)
1
0
4
When re-using code or interacting with a library, there are rules that need to be followed for that code to work correctly. Some are explicit and enforced by the compiler ("the function takes these arguments"), some implicit / learned ("you must call the functions in this order")
1
1
21
Might be a hot take, but after seeing the awesome work @its_bvisness has done here, I strongly feel like Unreal blueprints (and node graphs in general) should be automatically laid out, and not allow the user to move things arbitrarily. IME you get used to auto format quickly.
The write-up of my new graph layout algorithm for SpiderMonkey is now live. We built a custom layout algorithm for JS and WASM that follows the structure of the source code. No more spaghetti nightmares from Graphviz, and thousands of times faster.
10
5
155