gingerBill Profile Banner
gingerBill Profile
gingerBill

@TheGingerBill

5,692
Followers
1,096
Following
588
Media
6,131
Statuses

I'm a Ginger thus I have no soul. Creator of the Odin Programming Language Working with @JangaFX on EmberGen

Ginger Land
Joined May 2009
Don't wanna be here? Send us removal request.
Pinned Tweet
@TheGingerBill
gingerBill
3 years
We are proud announce the brand new documentation site for all the official library collections (`core` and `vendor`): .
Tweet media one
7
8
113
@TheGingerBill
gingerBill
15 days
"Hot" take: Most people who default to regex for a lot of things do not know how to do basic tokenization, let alone general parsing. A basic tokenizer would a much better option that defaulting to regex everywhere, faster, and much better error handling.
53
29
654
@TheGingerBill
gingerBill
24 days
People do ask me why Odin's struct fields are ordered lik C rather than reordered to minimize padding (which is what a lot of new languages like Rust do). This comment from Russ Cox in 2015 is a good answer as to why Go doesn't do any reordering either:
Tweet media one
26
32
501
@TheGingerBill
gingerBill
4 months
Why the heck are C++ iterators so bad?! Did no one ever implement a hash map before and thought "I'd like to iterate over this"? Why the heck did the `begin`/`end` nonsense have to become the standard?!
28
6
288
@TheGingerBill
gingerBill
2 months
I've been saying this for a few years now but can people please stop using things like ChatGPT as a search engine?! It's literally trained to be a Bullshitting Engine. It is trained to given an answer that "looks correct". It has no idea if it actually is.
27
28
236
@TheGingerBill
gingerBill
1 month
Esoteric? No. Impractical? No. The managerial class has ruined computer science. But Pascal in 1970 got them right, which is what I did in Odin: bit_set[Enum_Flag; u32]
@tsoding
Тsфdiиg
1 month
WebDevs discovering Bitmasks
Tweet media one
237
284
6K
9
15
229
@TheGingerBill
gingerBill
2 months
I am considering writing an article on how Handle-based systems work and how to implement one. A brilliant article on this is @FlohOfWoe 's "Handles are the better pointers" However, sometimes showing a concrete code example helps with understanding it.
10
12
207
@TheGingerBill
gingerBill
1 month
Monads in Go? I present to you: Gonads
Tweet media one
5
18
195
@TheGingerBill
gingerBill
20 days
Vanilla JavaScript + Vanilla CSS >>>>> Not even a single framework of any kind.
@MelkeyDev
Melkey
21 days
Vite + React + react-router + Tailwind + Zustand >>>
168
72
2K
15
6
194
@TheGingerBill
gingerBill
5 months
Many people may not know this but this video by Sean Barrett @nothings is partially the reason why I made the Odin programming language. And I'll explain what insights it gave me in this thread🧵
6
22
190
@TheGingerBill
gingerBill
23 days
I need to write an article on the main issue I have with this but it'll probably become half a book: Package managers for programming languages are inherently bad. Essentially: some things should not be easier to do, and embracing the complexity of dependency hell is evil.
@TheGingerBill
gingerBill
23 days
JavaScript programmers need to be stopped. Only webdevs could think importing a file over internet was a good idea. No wonder the web is an absolute mess. SERIOUSLY? "got wrong" is even thinking it was a good idea in the first place.
15
14
171
33
10
189
@TheGingerBill
gingerBill
5 months
Mini-Rant: Rust was not built to be a fast language, it was built to be a memory safe language. Rust is compiled & that usually implies it will be faster than non-compiled languages. But that doesn't mean it is fast compared to other languages designed for performance.
25
7
184
@TheGingerBill
gingerBill
26 days
Sadly the state of affairs. For languages that are trying to be evolutionary (like Odin and C3) rather than revolutionary (pretty much everything else, i.e. things with a "killer feature"), even attempts to market them is harder as they are not hypeable by their very nature.
@tsoding
Тsфdiиg
26 days
@neogoose_btw It's very unlikely since in the current playing field the adaption of a language depends on the amount of propaganda you are able to pump into social media. It's best to just stay above all of this bullshit and just enjoy Recreational Programming in a decent language.
14
15
329
10
8
179
@TheGingerBill
gingerBill
1 month
Can people please stop designing NEW file-formats/protocols that use big endian anything? You don't have to use big-endian just because that's "network-endian". The network doesn't care: it's all just bytes. Pretty much all machines use little-endian, so design around that.
11
10
175
@TheGingerBill
gingerBill
1 month
I have no idea if this tutorial is good or not, but I do agree that everyone should learn how to write a HTTP server. HTTP 1.1 is a very simple protocol that everyone should understand, even if you are not in the webdev world.
@Madisonkanna
Madison
1 month
the "build Your own HTTP server" challenge on @codecraftersio is free this month trying something fun. who wants to build this project as well and hold each other accountable to finishing it? challenge can be done in Go, TS, C, etc. details below!
Tweet media one
41
120
1K
5
11
173
@TheGingerBill
gingerBill
1 month
@FreyaHolmer Honestly, this is actually THE BEST way of doing it. Showing that you just copy it to the Applications folder also implies that uninstalling it means you delete it from that folder. This is one of the things OSX/macOS got correct.
8
6
169
@TheGingerBill
gingerBill
23 days
JavaScript programmers need to be stopped. Only webdevs could think importing a file over internet was a good idea. No wonder the web is an absolute mess. SERIOUSLY? "got wrong" is even thinking it was a good idea in the first place.
15
14
171
@TheGingerBill
gingerBill
1 month
Odin code with Terry Davis as the background? Well that's something🤣
@yotzol
jorge
1 month
Tweet media one
61
777
8K
6
3
162
@TheGingerBill
gingerBill
3 months
@cmuratori Wait... So it's not just Wirth's Law[1] in effect but also the hardware is not becoming faster as quickly because the software developers cannot utilize it well yet?! That's a vicious feedback loop! [1} software is getting slower more rapidly than hardware is becoming faster
5
3
141
@TheGingerBill
gingerBill
4 months
I've been thinking about why C won out over Pascal over the years. These are my general thoughts 🧵: (1) There were way too many variants of Pascals out there, compared there being very few C variants (2) Pascals were more verbose to type (even if you read more than write)
17
8
154
@TheGingerBill
gingerBill
2 months
odin build . For the vast vast majority of things, you don't need a build system. Odin's foreign import system defines all of the linking aspects directly in the source code and only links with stuff that you actually use too.
@ThePrimeagen
ThePrimeagen
2 months
for all of those that want to learn C try zig reasons 1. its build system is much better 2. it has testing built in 3. it will teach you everything that c will teach you other than a couple of base concepts that are not hard to learn without all the suck it really is awesome
183
122
3K
9
4
149
@TheGingerBill
gingerBill
2 years
🧵 I have a huge gripe when I read articles/tutorials on OpenGL: most people have no idea what they are talking about when it comes to coordinate systems and matrices. Specifically: OpenGL is NOT right-handed; the confusion over column-major "matrices".
2
20
150
@TheGingerBill
gingerBill
3 years
Metal in Native Odin!!! No need for Objective-C or Swift any more it seems. (I had to do the obligatory RGB triangle) This means that Odin will ship out of the box with Metal, Vulkan, and OpenGL, and libraries such as GLFW and SDL! Only D3D to go!
Tweet media one
7
13
136
@TheGingerBill
gingerBill
6 months
I do dislike people (incorrectly) quoting Knuth about "premature optimization". I think a much better variation on the phrase for a different thing is much more applicable in virtually all cases: Premature generalization is the root of all evil.
4
12
126
@TheGingerBill
gingerBill
1 year
Procedures operating on structs is Object "Oriented" Programming? Now that's a take which literally makes the term OOP meaningless. Where is the encapsulation? Data abstraction? Polymorphism? Composition? Inheritance? SOLID?
@unormal
🐔 Brian Bucklew 🐔 ₑͤ>∿<ₑͤ ∞🌮
1 year
Guys like this will complain forever about oo programming and then write a shitload of C functions that all start with a struct pointer thay they operate on
42
41
745
16
5
124
@TheGingerBill
gingerBill
2 months
Amazing to see people are now teaching gamedev with Odin+Raylib. Always a pleasure to see.
@falconerd
Dylan Falconer
2 months
120 programmers signed up to the free Odin Raylib course in the past few days I hope you are all enjoying it thus far Get it:
1
2
65
1
5
122
@TheGingerBill
gingerBill
15 days
@Hasen_Judi They want a functional language rather an imperative procedural one. But if that call is only used once, that inline switch is clearer to read too. Why make the user jump around the code?
12
2
121
@TheGingerBill
gingerBill
3 years
🧵I want to clarify my position on "Undefined Behaviour" (UB) in programming languages and why @odinlang will not have any UB. It's a pretty simple position: the specification for the language will states who defines what, and then that thing defines it. 1/7
1
5
120
@TheGingerBill
gingerBill
2 months
The Odin Discord has reached over 5000 members! Thank you to all who have joined, contributed, and made our community worthwhile!
Tweet media one
1
5
116
@TheGingerBill
gingerBill
1 year
Windows 11 is so great that having installed Python, adding it to the path, and then trying to run it from cmd.exe, it tells me to download it from the Microsoft Store instead...
19
7
113
@TheGingerBill
gingerBill
1 year
Thank you very much for having on the stream, @ThePrimeagen , it was absolute pleasure and very fun.
5
2
111
@TheGingerBill
gingerBill
5 months
In my fork of the RadDebugger, I've added support for two View Rules: `slice` to view slice-like data structs (I cover most cases that people would have), and `odin_map`. `odin_map` is for viewing a `map` from Odin.
3
7
111
@TheGingerBill
gingerBill
1 year
I'll be having a chat with @ThePrimeagen this Thursday @ 10am PT / 6pm BST, live on Twitch! I hope to see you there in the chat 😎
6
11
112
@TheGingerBill
gingerBill
1 year
I'm not even sure why the Rust Foundation made this decision. It's absolute pure insanity. For Odin, do whatever you want with it. The compiler has the BSD 3-clause licence for this reason! It's also why I made Odin; I wanted the freedom of choice of language to do what I want!
@ThePrimeagen
ThePrimeagen
1 year
honestly, i don't know what to do with this rust foundation business... they really have made me lose a lot of faith in them
98
29
955
8
6
110
@TheGingerBill
gingerBill
3 months
This is the BEST PR I have ever seen (at least for Odin). The amount of time that has gone into this, let alone the code itself, is impressive and honourable. It's got GIFs, tables, detailed explanation to the rationale, modifications, and so much more.
4
6
111
@TheGingerBill
gingerBill
2 months
I've changed my mind on automatic code formatters over the years. I used to like them because I "believed" they reduced my mental overload of doing the formatting. Then changed my view to "enforce _a style_ regardless of whether I like it or not". Now I find them insulting.
10
1
107
@TheGingerBill
gingerBill
6 months
To quote what I said earlier: Premature generalisation is the root of all evil. This is what I mean. This is someone who made an extremely generic thing, and I bet it wasn't even needed ever. Anyone who does this should be fired out of a generic proverbial cannon.
@ThePrimeagen
ThePrimeagen
6 months
if you committed this to a codebase i worked in, i would do everything in my power to replace this with a couple asserts and see to it you leave my team please for the future you do not commit code you don't understand
224
374
6K
7
6
102
@TheGingerBill
gingerBill
5 months
This month's release is a BIG ONE. Loads of compiler and package improvements, but also probably the last "feature" to be added to Odin: `bit_field`.
5
11
104
@TheGingerBill
gingerBill
1 month
The end frame of this evening's stream. It was a very fun stream! I made a card game that had a good mix of randomness and skill to it. Stay tuned for the recording to be uploaded to YouTube!
Tweet media one
@TheGingerBill
gingerBill
1 month
More random game dev? I wonder what type of game this one will be!
0
0
28
1
2
99
@TheGingerBill
gingerBill
4 months
As I cannot see the rest of the code, and I will assume it is all like this, what is wrong with it? Seriously. It's doing a name check, and then doing a bit of specific non-generalizable logic per check, and then doing non-generalizable logic for the final value.
12
3
95
@TheGingerBill
gingerBill
22 days
Ah yes... even longer compile times and even more convoluted code.
@timClicks
Tim McNamara
23 days
You know what would be a good addition to #rustlang ? Compile-time reflection
17
4
82
1
0
92
@TheGingerBill
gingerBill
7 months
We have a brand new project in the Odin Showcase: CAT & ONION A cozy and whimsical short cat adventure game! It is fully written in Odin with @raylibtech , created by @karl_zylinski .
Tweet media one
3
13
89
@TheGingerBill
gingerBill
6 months
@tsoding Linked lists can be fine if you allocate them correctly in contiguous localized memory. The problem is usually due to people using `malloc` and that allocates it all over the place.
10
2
89
@TheGingerBill
gingerBill
1 month
I tweaked the card game from last night to use the full deck + an extra set of court/face cards. This is unironically a fun "solitaire" game for saying it was designed and made in ~2 hours and then partially polished in ~2 hours. GO MAKE GAME PROTOTYPES!
Tweet media one
0
4
90
@TheGingerBill
gingerBill
4 months
I know programming is "just a job" for many people. I originally pursed physics, specifically metrology (quantum and micro). Physics has a massive place in my heart, and I still do it in the computational sense, but I do love the joy that programming gives me—my career now.
@ThePrimeagen
ThePrimeagen
4 months
i wonder how many people have quit pursuing a career in software because they never learned the joy of programming or how to foster it
139
104
2K
3
3
89
@TheGingerBill
gingerBill
1 month
Fact: All good games must have a crate and/or barrel in it.
11
4
87
@TheGingerBill
gingerBill
4 months
I've just added proper support for Big Endian `bit_field` types in Odin. It's probably a rare use case, but it is now at least feature complete.
Tweet media one
2
4
86
@TheGingerBill
gingerBill
1 year
@supahvee1234 @cmuratori Do you think you are being honest or are you actively lying? Your code has separate arrays of specific types not than a single array of multiple types. You've literally done an AOS to SOA transformation as an optimization. You've just proven Casey's point about performance.
3
0
83
@TheGingerBill
gingerBill
2 months
What really annoys me about the design of the these iterators is that they are overly complicated for very few good reasons. I understand why it is are designed the way it is, but this is not how I'd want to design it at all. This is what I'd do as a language designer.
Tweet media one
@ohmypy
Anton Zhiyanov
2 months
I'm sorry, but Go is going in the wrong direction with range over functions, iterators, etc. The core promise of the language was simplicity. Why the Go team is so eager to flush it down the drain is beyond me. I never signed up for this crap.
Tweet media one
128
73
848
6
5
86
@TheGingerBill
gingerBill
2 years
I was brought attention to this article, and specifically this table, on this site: Except for the "Examples" row, NONE of the rows are correct. My favourite being that "Procedural programming is based on the _unreal world_". 🤣
Tweet media one
13
14
81
@TheGingerBill
gingerBill
24 days
Minimizing padding does seem like a good idea in that it does make structs smaller. However, and this might be an experience bias, I just naturally pack structs and arrange fields in the order that they get accessed together with most of the time.
4
0
83
@TheGingerBill
gingerBill
3 months
I thought I'd briefly actually explain where Odin's style of tagged unions come from: ALGOL68. Yes, you read that correctly. When people think of "proper unions", they want ML-style, but there are a few different traditions out there. ALGOL68, Pascal, ML, and hybrids.
Tweet media one
3
4
81
@TheGingerBill
gingerBill
1 month
I don't know how many times I have to repeat this but: DO NOT USE LANGUAGE BENCHMARKS AS A WAY TO COMPARE LANGUAGES! They are all bogus. This website particularly: And my previous rant:
2
3
79
@TheGingerBill
gingerBill
2 months
This is an After Effects plugin created by "graphisco" from the Odin Discord server, and it is 100% written in Odin (except for third party licensing libraries). I wanted to plug this as it is now available to purchase and looks absolutely amazing!
2
6
77
@TheGingerBill
gingerBill
6 months
Does anyone know why there are not many languages that support fixed-point arithmetic as a native data type? I know floating-point has kind of won, but there are many benefits to fixed-point. Did floating-point win because languages natively supported with syntax?
31
6
73
@TheGingerBill
gingerBill
21 days
Friends of mine have just launch a new multiplayer game on multiple platforms (iOS, Windows, and Mac), using a fully custom game engine. It's a nice selection of games to play, and even more to come soon! I highly recommend people to check "All Out":
2
5
75
@TheGingerBill
gingerBill
3 years
I got Metal working natively in @odinlang the other day. I've now gone and got D3D11 and D3D12 working in Odin! Odin shipping out-of-the-box will all of major graphics APIs: Metal, D3D11, D3D12, Vulkan, OpenGL, and WebGL!
4
8
74
@TheGingerBill
gingerBill
9 months
My talk at Handmade Seattle for the the folks who didn't catch it live: Starts at 32m52s, ends around 1h27m20s
4
4
71
@TheGingerBill
gingerBill
7 months
I don't know if I have "ranted" about this here before but: I absolutely HATE comparing programming languages with "benchmarks". Language benchmarks _rarely_ ever actually test for anything useful when comparing one language against another. This goes for ANY language.
7
9
67
@TheGingerBill
gingerBill
2 years
The annotated profiler for the Odin compiler on a large project. 90% of the time is out of our control (LLVM and Linker). The frontend is taking about 500ms for a ~150 KLOC Odin project (equivalent to 0.5MLOC of C effectively), so not bad in terms of type checking. Hell is LLVM
Tweet media one
1
3
71
@TheGingerBill
gingerBill
2 years
🧵 Why Odin was not designed as an OOP language: I have been asked numerous times before about the reasoning for not having methods (member procedures) in @odinlang , and why it only has stand-alone procedures. 1/9
1
10
66
@TheGingerBill
gingerBill
21 days
@RGBCubed file := open(path) or_return defer close(file) return read(file)
4
1
66
@TheGingerBill
gingerBill
1 year
Can someone explain to my why people believe that C-style for loops should not be in a "modern programming language"? If the argument is "ranges or iterators replace the need", in the latter case: please show me the generated machine code (especially without optimizations).
15
1
66
@TheGingerBill
gingerBill
3 months
If "middleware" in the web world is called that because it is in the "middle" of the pipeline, does that mean there is such thing as "beginware" and "endware"? If not, I am now coining those terms.
15
2
64
@TheGingerBill
gingerBill
8 months
The Actor Model and CSP are mathematical duals of each other, or just exact opposites of one another by default. I'll start explaining both concurrency models in terms of a graph of threads and communication.
2
6
65
@TheGingerBill
gingerBill
1 year
Tweet media one
5
11
63
@TheGingerBill
gingerBill
1 year
I've been implementing the new and improved search facility for the Odin Package Documentation
2
4
60
@TheGingerBill
gingerBill
1 month
I am unironically still playing that card game I made on Twitch: I've added 3 different difficulties, the ability to reset a game, and some basic animations.
4
4
60
@TheGingerBill
gingerBill
2 months
I did a experimental test today with a colleague about storing the `context` pointer in a thread local variable instead of passing it implicitly to all procedures to see if would be better for performance. TL;DR it was identical in performance (within experimental bounds)
4
0
62
@TheGingerBill
gingerBill
1 year
I'm current experimenting with making -verbose-errors the default in Odin and added ANSI colors if the terminal supports it. Here is what it looks like cmd.exe on my machine:
Tweet media one
6
2
61
@TheGingerBill
gingerBill
2 months
I pretty much hate do-while loops in C, but implementing Radial/Half Edge data structures is pretty much the only case where a do-while is the bee's knees. I've been having to emulate it in Odin with: for { ...; (cond) or_break } I am still never adding do-while to Odin.
14
2
63
@TheGingerBill
gingerBill
2 months
@DanielcHooper Luckily most of the APIs I care about are still implemented in Objective-C. And because of that, I added direct support of Objective-C in Odin so I never need to use Swift. It's actually nicer to use Metal in Odin than both Objective-C and Swift.
2
1
59
@TheGingerBill
gingerBill
1 year
raylib 4.5 is now officially supported with @odinlang Code: `import rl "vendor:raylib"` Source: Docs: Examples:
Tweet media one
4
4
59
@TheGingerBill
gingerBill
9 months
This is not "deeply insane" nor an "optimization" (on itself). The problem exists in C++ too with `const &` stuff. This is just passing parameters implicitly by pointer, which so many languages do. This approach exists for a reason in many languages.
@mycoliza
neural oscillator of uncertain significance
9 months
this is a deeply insane optimization for a self-professed “systems language” to do by default!
11
14
319
4
3
58
@TheGingerBill
gingerBill
4 months
Why are they two naming traditions for this: Marshalling/Unmarshalling Serializing/Deserializing I know some people make a distinction between the two, and say that serialization is a part of marshalling, but I've always treated them as if they were the same.
24
1
57
@TheGingerBill
gingerBill
3 years
Odin is getting NATIVE Metal support very soon! And it is even cleaner than writing it in Objective-C!
Tweet media one
4
1
59
@TheGingerBill
gingerBill
2 years
Interested in Metal and @odinlang ? We've just released 10 self-contained code examples ranging from creating a window, to instanced rendering, and even compute shaders all in native Odin!
Tweet media one
2
8
57
@TheGingerBill
gingerBill
8 months
Merry Christmas, Everyone!
4
0
57
@TheGingerBill
gingerBill
2 years
Tweet media one
8
4
57