Eskil Steenberg Profile Banner
Eskil Steenberg Profile
Eskil Steenberg

@EskilSteenberg

3,706
Followers
246
Following
127
Media
2,070
Statuses

C, Game design, Story telling, and progress. Work @quelsolaar

Joined October 2014
Don't wanna be here? Send us removal request.
Pinned Tweet
@EskilSteenberg
Eskil Steenberg
4 years
I'm delighted by the feedback I have been getting on my talk about creativity. Its probably what I consider my best talk, despite being just me and a web cam. Huge thanks to everyone who have been watching!
1
4
49
@EskilSteenberg
Eskil Steenberg
2 months
You want to do what? Why??
Tweet media one
90
1K
27K
@EskilSteenberg
Eskil Steenberg
2 months
"Na, You got it all wrong, man. Be'ing a message service for an E-Commerce site is just to pay the bills, What I really fancy is knob tweaking phat acid beats on that 303 of yours."
5
31
2K
@EskilSteenberg
Eskil Steenberg
8 months
Its hard to write abstractions in C, because its so painfully clear what the cost of abstractions are. In other languages abstractions appear to be free, because there is already so much stuff going on behind you back you don't notice te difference.
28
58
626
@EskilSteenberg
Eskil Steenberg
1 year
People will tell you "Don´t try to make your own OS/Compiler/GameEngine/Browser/Threading/Language.... Its hard". I say: Learn hard things by doing hard things. The world values, hires and needs people who can do hard things.
21
86
616
@EskilSteenberg
Eskil Steenberg
4 years
I spent way too long last night writing an explainer about the legal issues in Epic V. Apple/Google, for a private mailing list, not to also post it publicly. I hope someone finds it useful #FreeFortnite #Apple #Epic #Google #antitrust
Tweet media one
Tweet media two
Tweet media three
Tweet media four
13
171
442
@EskilSteenberg
Eskil Steenberg
1 year
I made a video on what modern C development is like in Visual Studio. This is intended for anyone who thinks a text editor, command line, make, and printf is the state of the art in C development and debugging.
17
42
305
@EskilSteenberg
Eskil Steenberg
2 years
Why I prefer unsigned 32 bit indices:
Tweet media one
8
24
228
@EskilSteenberg
Eskil Steenberg
1 year
I’m building a new tool: MakeMake. Its a command line tool that scans my C source directory for all function definitions/declarations/includes. You give it the C file with ‘main’ and then it generates a makefile, with all required dependencies to build the application.
17
9
227
@EskilSteenberg
Eskil Steenberg
4 years
People keep asking me, "Why did you waste time implementing X, when Y already exists?". It seams like no one ever considers that I love programming, and doing what I love is not a waste of time. If my goal was to avoid programming, for starters I wouldn't be a programmer.
14
27
206
@EskilSteenberg
Eskil Steenberg
4 years
<RANT> Android is a truly terrible software development platform. I often have trouble understanding it, because i cant imagine anyone would design a system so poorly. Here are some baffling discoveries:
4
32
178
@EskilSteenberg
Eskil Steenberg
6 years
Tweet media one
4
24
168
@EskilSteenberg
Eskil Steenberg
3 years
@marcwrogers @dakami I had dinner with Dan once, he ”social engineered” me and claimed he forgot to bring money. I knew what he was doing, but also knew that if picking up the tab was the price i had to pay for getting to hang out with him, I got the better end of the Deal. Rest In Peace
0
2
159
@EskilSteenberg
Eskil Steenberg
4 months
Here are a few ideas I have for a gameplay engine: Multi threading: Each entity, runs a main loop, and can read the previous state from all entities, but only write to its own state, the can however send messages to the next frame of other entities.
23
7
166
@EskilSteenberg
Eskil Steenberg
5 years
I recently paid someone to help me explain some math for me. Why am I not doing this more often? Why isn't everyone? Also, I would love to have someone I can refer to as "My scientist" or "My mathematician" the way people say "My therapist" or "My PT". #DareToSTEM
5
13
151
@EskilSteenberg
Eskil Steenberg
6 months
@bmcnett In 2023, a crack programming unit was sent to prison by a Rust mob for a crime they didn't commit. These men promptly escaped from a maximum security stockade to the Internet underground. Today, still wanted by the government, they survive as system developers. If you have a
3
39
127
@EskilSteenberg
Eskil Steenberg
10 months
My Boolean operation algorithm is stabilizing and its becoming a lot of fun to play with. Having a really fast CSG implementation for poly soups, is a bit of a dream, and could be the base of really cool tools and games. Too bad i have no plans to build anything with it. :-/
5
8
116
@EskilSteenberg
Eskil Steenberg
11 months
I'm starting to think we need a Common-C Dialect. A small subset of C that is what is commonly used, widely understood, and easy to implement. It should have a open specification, and reflect how classic C used in modern programming.
13
6
102
@EskilSteenberg
Eskil Steenberg
4 years
I sometimes fantasize about being in a version of Gordon Ramsays Kitchen nightmares, where I get to visit large, well funded software companies and scream at their developers about their useless software design.
2
11
93
@EskilSteenberg
Eskil Steenberg
6 months
In C I’m consciously starting to avoid imposing data storage structures on interfaces. Instead of: typedef struct{ float red; float green; float blue; }Color; void color_set(Color c); Or: void color_set(Color *c); Or: void color_set(float *c); I prefer: void
23
6
92
@EskilSteenberg
Eskil Steenberg
9 months
While you where out playing around with Signed distace fields and Voxels, I studied the Triangle blade.
5
4
90
@EskilSteenberg
Eskil Steenberg
3 months
Binary search trees are not ideal on modern hardware, because they create too many branches and cache misses. At minimum a branch structure should be the size of a cache line. A 32byte cache line fits 4 64bit pointers, thats 2 bits of branching.
9
5
90
@EskilSteenberg
Eskil Steenberg
8 months
Obviously example: You can write a nice clean text processing API in C, but to do so you will end up with a lot of unnecessary copying and allocating under the hood, so you avoid it. Or, you can write a less elegant and harder to use API that is fast, and even then you will
8
2
85
@EskilSteenberg
Eskil Steenberg
4 months
I have come to the very Painful conclusion that my approach to Boolean geometry isnt going to work. 4-5 months of work down the drain. Maybe I could still solve the problem, but at minimum its a huge re-write with no guarantee of success. It sucks.
11
3
86
@EskilSteenberg
Eskil Steenberg
3 years
My best career advice: 1 -You will never find an obstacle as big as yourself. If you can just overcome your own apathy, and be relentlessly driven, most things can be overcome.
2
11
85
@EskilSteenberg
Eskil Steenberg
2 years
Now that I bring my son almost everywhere, I have discovered what it must be like to be really Pretty. Everyone smiles at you, holds doors, wants to talk to you and assumes you are a good person. I could get used to this. Service is great!
Tweet media one
4
0
79
@EskilSteenberg
Eskil Steenberg
4 years
A 10X programmer is not someone who can implement an algorithm in less then 10 minutes, Its someone who can implement an algorithm so that no one has to touch it in more then 10 years.
0
14
80
@EskilSteenberg
Eskil Steenberg
9 months
I'm releasing MakeMake, Its my tool for generating makefiles from C code. Big thanks for Felix Klinge () for adding Android support! (And maybe ios soon?) MakeMake make parses the .c and .h files of a directory in order to determain what is needed to
5
8
76
@EskilSteenberg
Eskil Steenberg
10 months
I wrote a proposal for the next version of C. It will not be the next version of C.
7
10
73
@EskilSteenberg
Eskil Steenberg
2 years
Here is a small guide to triaging, and managing out-of-bounds memory bug symptoms in C. (OOB read/writes are NOT bugs, they are SYMPTOMS of bugs: bad pointer arithmetic, missed NULL check, bad indexes, so on) Different OOB give symptoms that make them easy or hard to diagnose.
5
9
73
@EskilSteenberg
Eskil Steenberg
11 months
@awesomekling C, but only because it has no community.
4
1
72
@EskilSteenberg
Eskil Steenberg
2 years
Time to build a new computer. Thank you @IntelGraphics ! #intelinnovator
Tweet media one
6
3
70
@EskilSteenberg
Eskil Steenberg
6 months
@AndyJessop33500 You can do this in C too. My mind is not blown. struct{char *x; char *y;} swap(char *x, char *y) { struct{char *x; char *y;} output; output.x = y; output.y = x; return output; }
8
1
68
@EskilSteenberg
Eskil Steenberg
4 years
Wow, I just noticed that my talk "How I Program C" just passed a quarter million views on Youtube. Thats pretty crazy! Thanks to everyone who have been watching!
3
4
67
@EskilSteenberg
Eskil Steenberg
1 year
Strings in C are not NULL terminated, they are Null character terminated. The Null character must have all bits set to 0, Null does not. void *a = NULL; char b[2] = {'A', (char)a}; b is not a terminated string.
8
4
68
@EskilSteenberg
Eskil Steenberg
7 years
Dear @leolaporte Please, don't tell parents their kids don't need PCs. Its important.
Tweet media one
0
29
66
@EskilSteenberg
Eskil Steenberg
9 months
Why do people consider Code quality == Maintainability? The word "quality" in the rest of the world means that something doesnt break. A car/house/fridge that requires constant maintainence, but is easy to take apart wouldent be considerd "high quality". It would just suck. Good
14
10
64
@EskilSteenberg
Eskil Steenberg
3 years
I'm having fun with GPU particles. Ive been thinking about making GPU particle systems, that do screen space froxel fluid sims. Each frame you would paint particle vectors in to a froxel space, sim the fluid, and then have particles sample back the vectors. #madeWithNotch
3
8
60
@EskilSteenberg
Eskil Steenberg
1 year
Hot take: The Apple #VisionPro , is not a AR device, its a display. Hear me out: All demos are in-doors, and about giving you access to the same functionality as a Tablet, Computer or TV. Yes its stereoscopic, but so are some TVs. Yes you can take pictures but so can a tablet or
7
9
60
@EskilSteenberg
Eskil Steenberg
6 years
This is the Mother of all multiplayer level designs. This is the basic connection graph of so many Counter-strike, Quake and MOBAs levels. It has the right amount of choices, complexity and strategy. Its amazing how much play can come from something this simple.
Tweet media one
9
20
58
@EskilSteenberg
Eskil Steenberg
4 years
I'm devastated to hear that @jtnimoy has passed away. She was a dear friend, who got caught in the homeless crisis, after experiencing a difficult transition. Most of you probably know her from her work on Tron Legacy. Work that inspired a lot of my work.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
3
14
55
@EskilSteenberg
Eskil Steenberg
7 months
Im on my way to Paris, and then Strasbourg for my first in-person ISO C WG14 meeting. Im looking forward to seeing a lot of people Ive only interacted with online, but I am also very concerned for the future of the C language. ISO C, is inching further away from being the
5
4
59
@EskilSteenberg
Eskil Steenberg
2 years
Some of my thoughts on Rust, copied from a mailing list I'm on.
Tweet media one
12
3
57
@EskilSteenberg
Eskil Steenberg
1 year
@stevesi @SeamusBlackley Lets be fair, Technology brought us bittorrent, it was business that brought us subscription fees.
3
0
56
@EskilSteenberg
Eskil Steenberg
4 years
PS If any Apple fanboys want to use the above rant as proof for why iOS is better, you should be careful not to tempt me in to putting in to words my feelings about iOS, because you may not like what i have to say.
11
3
55
@EskilSteenberg
Eskil Steenberg
2 years
I'm super happy to see the reviews of #IntelARC are so good. Cant wait to get my hands on it. No matter if you are a fan of team Red, Green, or blue this is great for the graphics industry and for gamers. Congrats to @RajaXg , @PGelsinger and everyone at @IntelGraphics !
3
7
57
@EskilSteenberg
Eskil Steenberg
8 months
If you're havin' C problems, I feel bad for you, son I got 99 problems, but a dangling FILE pointers ain't one. Full source:
Tweet media one
3
3
54
@EskilSteenberg
Eskil Steenberg
7 months
Friendly reminder: The test for any VR/AR device is not ”Did you enjoy exploring all the cool demos and capabilities when you bought it?”, its “Did you still use it every day 3-6 months later?”. I have yet to see a first encounter with VR that haven’t impressed.
5
8
56
@EskilSteenberg
Eskil Steenberg
1 year
@telmudic GDB has every capability imaginable, and an interface guaranteeing they stay inaccessible.
4
2
54
@EskilSteenberg
Eskil Steenberg
1 year
… I’m also planning on creating a shell script called MakeMakeMake to make MakeMake…
3
0
54
@EskilSteenberg
Eskil Steenberg
8 months
What I want is a dependable C. I want the subset I can depend 100% on. I care about the spec, but if implementations don't follow the spec, then I need to know in what way. If a workaround is dependable, but the spec isn't, the workaround wins. The spec has things in it, that no
9
2
49
@EskilSteenberg
Eskil Steenberg
3 years
I have been thinking about various patterns for managing memory in C. Here is one to make C structures that can be saved to disk and then loaded back with all memory re-allocated and pointers updated automatically.
Tweet media one
4
3
50
@EskilSteenberg
Eskil Steenberg
4 years
Choosing to build a OS around a language is stupid, choosing java is worse. Low powered devices should not run code in virtual machines. Android is a layered architecture where they skipped writing the foundation layers.
3
2
50
@EskilSteenberg
Eskil Steenberg
6 months
Now in wg14: Why don’t we define return type after parameters in the next version of C? I sincerely don’t know if I should laugh or cry.
14
2
50
@EskilSteenberg
Eskil Steenberg
6 months
People want an expansive standard library with lots of utilities they can depend on, what they fail to grasp, is that for a language like C, where there are many many implementations, these implementations vill never exhibit the exact same behavior. People will inevitably read
6
4
52
@EskilSteenberg
Eskil Steenberg
2 years
For a number of years I have been stressing the importance of owning your computing hardware, software stack and infrastructure. I just realized that I've been stressing the importance of seizing the means of production in the digital age.
0
5
51
@EskilSteenberg
Eskil Steenberg
1 year
A shocking discovery Iv made about manufacturing CAD/CAM is that they use STL files that are just Polygons! I was so convinced every one was using some super advanced curve representation! No, apparently rockets and reactors are defined using the same stuff we use to make Gumbas.
7
2
47
@EskilSteenberg
Eskil Steenberg
2 years
This is my Nirvana.
Tweet media one
2
0
46
@EskilSteenberg
Eskil Steenberg
3 years
A friend asked me if I could help her become a parent, so after some rounds of IVF, last night I got to witness the birth of my son “Quentin” (working title). Not the way I would have imagined becoming a dad, but everyone is happy and healthy. I cant wait to get to know this guy.
Tweet media one
6
1
43
@EskilSteenberg
Eskil Steenberg
3 years
Big announcement: the light control application Stellar I have developed is being spun out in to a startup! We just revived our first round of VC backing and are working with hardware partners. Say hello to !
4
4
45
@EskilSteenberg
Eskil Steenberg
4 years
@ID_AA_Carmack Text editing is easy, debugging is hard. I go where the best integrated debugger lives, at the moment Visual Studio. Developers should value debuggers, more then editors or languages. Good debugger is a game changer.
4
0
45
@EskilSteenberg
Eskil Steenberg
2 years
Today I remote instructed a non C programmer over voice Skype how to debug a race condition, while managing a bored toddler on a train. My training is complete.
2
0
44
@EskilSteenberg
Eskil Steenberg
8 months
@martin_uecker The point is that its not syntactically hard, its emotionally hard.
3
1
42
@EskilSteenberg
Eskil Steenberg
3 years
”Don’t you want more relevant ads?” No I want as irrelevant ads as possible, so that they are as easy as possible to ignore.
2
3
41
@EskilSteenberg
Eskil Steenberg
2 years
Here is a pattern I use all the time: use for loops to search: for(i = 0; i < list_length && list[i] != x; i++); if(i < list_length) // x is in list at element i ... Its super obvious, but i don't see it being used or taught very often.
3
6
41
@EskilSteenberg
Eskil Steenberg
9 months
@vkrajacic I prefer: typedef struct{ size_t length; unsigned char[1]; }String; The last member is a C89 compatible flex array. Your string is now a single continuous memory block, so you get rid of a cache miss. Because cache misses matter so much on modern hardware, null termination can
4
4
41
@EskilSteenberg
Eskil Steenberg
1 year
@iquilezles As a member of the C standard working group I have a lot of discussions about code no one should ever write. Showing off weird syntax tricks in your code, does not make you a good programmer. Focus on the problem, not the language.
1
0
38
@EskilSteenberg
Eskil Steenberg
3 years
I've been working on my book about programming and I have realized that while there are many neat tricks, what I really want to teach, like all teachers, Is a serious mature attitude. You can learn that from cooking, making, a trade, martial arts, programming, or really anything.
2
2
38
@EskilSteenberg
Eskil Steenberg
5 years
I tested #stadia on the #GDC show floor an I was surpriced how laggy it felt even in a controlled environment. People can argue that streaming is the future, but this isnt it, this is permanent rubberbanding.
2
11
38
@EskilSteenberg
Eskil Steenberg
2 years
You need to be audacious enough to believe that your are the one who can do the big things, and at the same time also self critical enough to course correct yourself constantly to reach that goal. Either is easy, the combination is rare.
1
2
37
@EskilSteenberg
Eskil Steenberg
4 years
If i was put in charge of Android, I doubt 80% of the team would still have jobs by the end of first week. This is a staggering level of incompetence for a software development team. Give me 50 developers and I would build a platform that would crush Android.</RANT>
3
1
35
@EskilSteenberg
Eskil Steenberg
5 years
@lorenschmidt @jeruyyap Yes. I should re-release Love some day.
Tweet media one
Tweet media two
Tweet media three
Tweet media four
8
4
36
@EskilSteenberg
Eskil Steenberg
10 months
@awesomekling There are people who know what they are doing, but really good people are not satisfied doing what they already know how to do, so they constantly push beyond what they know, because that how you discover new things.
0
3
37
@EskilSteenberg
Eskil Steenberg
6 months
The new polygon generation in EXO level editor.
2
2
37
@EskilSteenberg
Eskil Steenberg
3 years
For environmental reasons, Its time to outlaw crypto mining.
3
3
35
@EskilSteenberg
Eskil Steenberg
2 years
Happy new year everyone! Here is my annual roundup of things worth noting from last year:
2
4
34
@EskilSteenberg
Eskil Steenberg
1 year
Today my son turns 2. He knows all letters, he can read the names of his classmates, he can count to 11 (this one goes to 11) and speaks long sentences. As a dyslexic I know I had nothing to do with his talents, and I strongly suspect he is actually a lizard. Love you buddy!❤️
Tweet media one
Tweet media two
1
0
32
@EskilSteenberg
Eskil Steenberg
1 year
Abstractions in programming are usually built on the premise that the user don't want to know or care what is going on. I need to know if its a function or macro, I need to know if the type is a value a pointer or a struct, so abstractions are just shit i have to dig thrugh.
5
0
30
@EskilSteenberg
Eskil Steenberg
4 years
You pretty much can't write clean C/C++ applications for Android. You need to use JNI to access lots of basic things. JNI is ugly, not thread-safe, and different for C and C++. Cant Google hire an engineer to wrap their APIs? Why do I have to do it?
2
0
32
@EskilSteenberg
Eskil Steenberg
4 years
Imagine how bad your documentation is, when your competitor documents your software better then you do.
1
0
31
@EskilSteenberg
Eskil Steenberg
4 months
When i first heard of “self sabotage”, I thought it was something only a truly crazy person would do. Then as I got older I started recognizing the behavior in a lot of normal people. Now I’m constantly suspecting that I’m doing it too.
4
3
33
@EskilSteenberg
Eskil Steenberg
5 years
Being an exclusive C programmer, means you can't read or even call almost anyone else's code. Almost no one writes C code without dependencies, but everyone is overjoyed when they find out the code they need to integrate is C code without dependencies.
0
4
31
@EskilSteenberg
Eskil Steenberg
7 months
I think Funko Pop, represent the worst of the comodification of culture. Its characters striped of any of the meaning or depth that orinaly made them compelling and turned in to empty brands. They are to be bought and collected, as token of fandom. Its like people who wear
1
3
31
@EskilSteenberg
Eskil Steenberg
9 months
@timClicks All these issues are trivial to find and fix if you just bother to run your code. Hard bugs are when your code, is entierly valid, looks like it works, just gives the wrong output in rare cases. A compiler can never solve that, only a debuger and tests.
1
1
31
@EskilSteenberg
Eskil Steenberg
3 years
Today I was in a store with my son on one arm, and a stroller in the other, and someone offered and then proceeded to tie my shoelaces that had come undone. People are awesome.
1
0
29
@EskilSteenberg
Eskil Steenberg
3 months
Why has no game tried to monetize by fining toxic behavior?
28
3
30
@EskilSteenberg
Eskil Steenberg
3 years
Happy new years! Here is my annual list of stuff from the last year I liked. Have a great 2022 everyone!
0
3
29
@EskilSteenberg
Eskil Steenberg
7 years
C++ is a Language that looks like it was designed by someone with a very superficial knowledge of C, and every time they came up against something they didn't know how to do, they added a language feature instead of learning how to use C. Like thinking C++ > C is true.
2
5
28
@EskilSteenberg
Eskil Steenberg
4 years
Thought experiment: Imagine we limit all development teams to one. A lot of software would not be possible. So then imagine what would we need to make it possible to develop the things we need by only one person. We would need better tools and lib's.
2
4
29
@EskilSteenberg
Eskil Steenberg
4 months
I am seriously considering rewriting EXOs engine. Its really not much of an engine, and it is severely hampered by being data driven. The rule usually is: Never change engine during development. But on the other hand another rule is: Rewrite once you know what you are making.
2
2
26
@EskilSteenberg
Eskil Steenberg
3 years
After announcing the funding for my mailbox if full of spam from companies offering office furniture, questionable loans, and promises to "optimize my funnel". What we really need is C programmers, who want to do low level coding, and save the planet.
1
7
28
@EskilSteenberg
Eskil Steenberg
4 years
Installing a development environment and connecting it to a device is a mess of broken links, poor integration and company turf wars. I managed to get a working environment on the third computer I did a clean install on.
1
0
26
@EskilSteenberg
Eskil Steenberg
2 years
@meganerid Maybe check out ? No AI, just a very persistent former UV mapper, implementing every trick he knows in code. DM me and ill get you a Trial license.
4
4
27
@EskilSteenberg
Eskil Steenberg
4 years
Google designers: "By storing it in an APK file everything gets zipped and uses less storage!" Reality: You now need to storing your files twice, taking double the space. Bravo!
2
0
26
@EskilSteenberg
Eskil Steenberg
3 years
I've been working on a secret side project.
Tweet media one
7
1
25
@EskilSteenberg
Eskil Steenberg
6 years
Tweet media one
1
4
24
@EskilSteenberg
Eskil Steenberg
8 months
@RajaXg C is the English of Shakespeare.
3
2
24
@EskilSteenberg
Eskil Steenberg
3 years
10 -What ever happens, always prioritize being a good person. Care for others. Stand up for people. Support the vulnerable, and know that everybody can be vulnerable sometimes.
0
2
26
@EskilSteenberg
Eskil Steenberg
8 months
Happy 2024 everyone! Here is my yearly roundup of all things that made up my 2023:
3
4
26
@EskilSteenberg
Eskil Steenberg
2 years
Safety and security critical software written in all languages were sent out in to battle. Only software written in C returned, but some had suffered buffer-over run bugs. Conclusion: buffer-over runs make C is unfit for safety and security oriented software. ;-)
Tweet media one
0
3
26