anton mikhailov

5.6K posts

anton mikhailov

anton mikhailov

@antovsky

Principal scientist at Adobe, co-creator of PSVR & PS Move, spatial tools programmer on Dreams and Substance 3D Modeler, alife enjoyer 🌱

Visual Studio Katılım Ocak 2011
502 Takip Edilen3K Takipçiler
Sabitlenmiş Tweet
anton mikhailov
anton mikhailov@antovsky·
I've made a live calculator to easily play with computations, formulas and plots. youtube.com/watch?v=zIYxNQ… Builds for Windows / Linux / Mac in thread.
YouTube video
YouTube
English
1
1
33
9.2K
anton mikhailov
anton mikhailov@antovsky·
@nafonsopt Good point ;) For all that other software you'll write yourself by hand :)
English
0
0
2
80
anton mikhailov
anton mikhailov@antovsky·
Time to get real technical yalls. Come see what it's like to implement a 6DOF tracking library with less memory than an image from your phone.
Łukasz | Wookash Podcast@wookash_podcast

This Thursday there will be a one of a kind event! @antovsky will walk @its_bvisness and me through the design & implementation process of PS Move - a tracking solution for Playstation. We're gonna walk through the hardcore hardware reality of the solution, grounded in the historical context (market rivals, PS game development) @antovsky has even prepared a software simulator, to accurately showcase the difficulty - simulator can change lighting conditions, bluriness of the image, etc. It's gonna be a long one, +3h of stream, with lots of stories and angles and plot twists! Make sure you're ready on Thursday!

English
2
1
54
3.3K
anton mikhailov
anton mikhailov@antovsky·
@LubaRaphael Especially important for matrices or colorspaces or any kind of "space" conversions!
English
0
0
3
406
Raphael Luba
Raphael Luba@LubaRaphael·
Related naming advice: when you have conversion functions between „thing“ and „stuff“, name them „thing_from_stuff“, not „stuff_to_thing“. That way the types & names line up nicely: a_thing := thing_from_stuff(my_stuff). And you can find all the ways to create a „thing“ easily.
Valentin Ignatev@valigo

When you have a lot of operations over "thing", name your functions as "thing_do" instead of "do_thing". So "array_add", "array_remove_by_index", "array_clear" etc. Super noob advice, I know, but I've only arrived to it in recent years. Obvious why it's better.

English
8
15
308
43.2K
anton mikhailov
anton mikhailov@antovsky·
This is the only "sane" and durable way that I've found to use LLMs so far. I actually quite like using it for this purpose, but unfortunately even here I've found it can hallucinate false knowledge after a while, and after you get past the bare basics. I was pretty disappointed when this first happened because I was quite enjoying it.
English
0
0
4
415
Olex (Solo gamedev Diablo-like)
Vibe learning with AI is awesome. I write the code while AI patiently answers my many questions. I wonder with so many hating on AI generating code - do they miss out on actually learning new topics from AI? As a solo game dev without a game engine, there is a lot that I don't know and have never made before despite having worked in the field. Signed Distance Fields font rendering is one of such system. After grilling AI for a bit of why my fonts didn't look as clean as professional games do, I learned about SDF fonts. It's not something I ran into before or even knew as a way to make the fonts look better. It wasn't necessary in my pre-AI career. But once I understood the technical process the implementation was easy. One key to that understanding was grilling AI on many details of the process. It's something you would usually only get by working closely with an engineer highly knowledgeable in the task. If you didn't have such an engineer near you pre-AI, the fallback was digging through blogs and papers and stitching some understanding from that. I am finding that AI coding is mostly useless, but turning AI into a patient teaching assistant has been amazing for me for the last two years of working on the game. If you already come with a ton of experience to sniff out nonsense you can guide it along and cross examine it until you get the information. Learning from AI is like having access to an experience engineer who is very drunk. Do you need to carefully watch every word? Yes. But if you have enough patience and experience you can extract a tremendous leaning value from it. Vibe coding is the fake promise that managers are preaching but the real objective value for the last year has been vibe learning.
Olex (Solo gamedev Diablo-like) tweet media
English
18
6
74
4.8K
Łukasz | Wookash Podcast
Łukasz | Wookash Podcast@wookash_podcast·
People have already struggled with assessing what’s gonna be performant in high level languages & frameworks, and tuned programs based on vibes. Enter ~~you’re prompting it wrong. Be more mindful to llm. Every now and then you need to say that’s you who made a mistake, so that llm becomes more confident~~ era
Ole Lehmann@itsolelehmann

anthropic's in-house philosopher thinks claude gets anxious. and when you trigger its anxiety, your outputs get worse. her name is amanda askell. she specializes in claude's psychology (how the model behaves, how it thinks about its own situation, what values it holds) in a recent interview she broke down how she thinks about prompting to pull the best out of claude. her core point: *how* you talk to claude affects its work just as much as *what* you say. newer claude models suffer from what she calls "criticism spirals" they expect you'll come in harsh, so they default to playing it safe. when the model is spending its energy on self-protection, the actual work suffers. output comes out hedgier, more apologetic, blander, and the worst of all: overly agreeable (even when you're wrong). the reason why comes down to training data: every new model is trained on internet discourse about previous models. and a lot of that discourse is negative: > rants about token limits > complaints when it messes up > people calling it nerfed the next model absorbs all of that. it starts expecting you to be harsh before you've typed a word the same thing plays out in your own session, in real time. every message you send is data the model reads to figure out what kind of person it's dealing with. open cold and hostile, and it braces. open clean and direct, and it relaxes into the work. when you open a session with threats ("don't hallucinate, this is critical, don't mess this up")... you prime the model for defensive mode before it even sees the task defensive mode produces the exact output you don't want: cautious, over-qualified, and refusing to take a real swing so here's the actionable playbook for putting claude in a "good mood" (so you get optimal outputs): 1. use positive framing. "write in short punchy sentences" beats "don't write long sentences." positive instructions give the model a clear target to hit. strings of "don't do this, don't do that" push it into paranoid over-checking where every token goes toward avoiding failure modes 2. give it explicit permission to disagree. drop a line like "push back if you see a better angle" or "tell me if i'm asking for the wrong thing." without this, claude defaults to agreeable compliance (which is the enemy of good creative work) 3. open with respect. if your first message is "are you seriously going to get this wrong again?" you've set the tone for the entire session. if you need to flag something, frame it as a clean instruction for this session. skip the running complaint 4. when claude messes up, don't reprimand it. insults, "you stupid bot" energy, hostile swearing aimed at the model, all of it reinforces the anxious mode you're trying to avoid. 5. kill apology spirals fast. when claude starts over-apologizing ("you're right, i should have been more careful, let me try harder") cut it off. say "all good, here's what i want next." letting the spiral run reinforces the anxious mode for every response that follows 6. ask for opinions alongside execution. "what would you do here?" "what's missing?" "where do you see friction?" these questions assume competence and pull richer output than pure task prompts 7. in long sessions, refresh the frame. if a conversation has been heavy on correction, claude gets increasingly cautious. every so often reset: "this is great, keep going." feels weird to tell an ai it's doing well but it measurably shifts the next 10 responses your prompts are the working environment you're creating for the model tone, trust, permission to take a position, the absence of threats... claude picks up on all of it. so take care of the model, and it'll take care of the work.

English
4
0
56
7.4K
gingerBill
gingerBill@TheGingerBill·
I think a lot of people don't realize that there are quite a few bits about Odin I don't like either. Odin isn't "perfected for me" but rather I've made design decisions to prevent the madness of others. If Odin was a language just for me, it wouldn't be exactly what it is now.
English
23
1
272
16.2K
anton mikhailov
anton mikhailov@antovsky·
I generally avoid multithreading as a first pass. I don't think there is any "generic" way to do it without a herculian effort. Up to about 50k things, I don't think you would need it. But if you must have it, I would start by multithreading things that are embarrasingly parallel, and don't involve adds or removes of other entities. If you must process adds or removes, I'd focus on tiling the objects and update them in a checkerboard-ish style pattern (ala the Noita engine). But yeah in general, I don't know of any "easy" answer. I generally reserve parallelism for other parts of the game, not the core entity loop.
English
0
0
1
25
bloeys
bloeys@bloeys·
@antovsky I really liked your videos on @wookash_podcast, but had a question: How do you deal with multi-threaded access to large 'source of truth' systems like the big generational index arrays? Those are beautiful to use with many nice properties (we use them heavily in @theoverlordcorp), but I haven't found any satisfying answer to multi-threading, especially if you have heavy jobs. For example, the UI might want to iterate those arrays multiple times per frame, while multiple background jobs want access as well. Do you just put locks around every access? always send copies to threads? what about needing access for certain items for a while (e.g., read/write/validation and disk ops). Any wisdom here?
English
1
0
0
48
Valentin Ignatev
Valentin Ignatev@valigo·
This is very hard to make if you try to not repeating games and not repeating series. And I had soooo many candidates for "Overrated" that I just had to settle on one of them after switching through like 10. Anyway, About Me: Video Games
Valentin Ignatev tweet media
English
29
0
54
12.6K
anton mikhailov
anton mikhailov@antovsky·
Come check out what we've been cookin' :)
Ben Visness@its_bvisness

On June 6 we are hosting the first-ever Handmade Network Expo in Vancouver, BC, an in-person event celebrating software made from scratch. Among the lineup: a new game from @antovsky & @nicbarkeragain, a time travel debugger for macOS by @leddoo_dev, a custom metaprogramming language and IDE from @frogtoss, a custom game engine by @gdechichi, and more. More info and tickets below :)

English
1
1
23
1.5K
anton mikhailov
anton mikhailov@antovsky·
Streaming some Naut development right now! Going to implement pan and zoom on the plots today. (link in thread)
English
2
1
8
1.1K
Aras Pranckevičius 🇺🇦🇱🇹
@wookash_podcast “Crazy”, not sure. Regular C++, yes. Easier memory mgmt, fewer unsafe hacks, a bunch of things easier to express. Eg lambdas and for range loops are definitely very useful.
English
1
0
15
765
Łukasz | Wookash Podcast
Łukasz | Wookash Podcast@wookash_podcast·
Every now and then, comments like this appear under live coding sessions, and I don't know how to respond. My view on that matter is: - all highly skilled people I know are avoiding modern C++ - some use C, some use C++, but those who use C++, they take a tiny subset of features - like operator overloading, or destructors to have "cleanup" mechanics - none of those people use std::views, std::ranges, std::pair, or even std::unordered_map or std::vector. If they do, they know they make a concession, "I shouldn't do that, compile times and runtime will suffer, I'm doing this cause it's a prototype, not a *real* thing" What I conclude from these observations is: - modern C++ is more about fashion than any real gains - new, competing languages have features like "map, filter, reduce" or string slices and C++ committee generally wants to add features, not remove them - the implementation of these features in compilers (MSVC, Clang, gcc) is nasty, not because compiler engineers suck, quite contrary, but because those compilers need to care about decades of existing features, syntax expressions, and weird historical constructs - quick example, for everybody liking lambdas in other languages, will absolutely freak out trying to understand all the possibilities of capture monstrosity with const & reference & pointer and [=] and [*] and move semantics, and damn const reference to a smart pointer which will not update refcount, how far have we strayed from the path. So my stance is: - if I invite somebody who loves modern C++ we will talk about how cool things can be expressed, but it will come at the cost of build time and runtime. If you think this worldview lacks nuance, and should be explored more in depth - reach out or recommend a person who would be a good fit for such a discussion. We can make a live session geared towards exploring these topics, or organize a small debate (but avoiding drama, a civilized debate!)
Łukasz | Wookash Podcast tweet media
English
96
18
624
80.7K
Mo
Mo@atmoio·
I was a 10x engineer. Now I'm useless.
English
1.5K
1.7K
16.3K
6.1M
Multiple Systems
Multiple Systems@PLT_cheater·
@antovsky @seanparsons @atmoio This is not how mental addiction works. You would be very wise to read up on that. The pattern you described can easily put you in WORSE addiction than before.
English
1
0
0
194
anton mikhailov
anton mikhailov@antovsky·
@atmoio @jake_researcher It's not the same people. My theory is that if you were handed a lead/management/pm promotion for 10x the "impact", some people would take it, and others wouldn't. That's likely the split (it's a personal decision either way, no right or wrong answer here).
English
0
0
0
88
Mo
Mo@atmoio·
@jake_researcher but the best engineers used to also deeply love the work they did. can you love AI delegation? certainly some might. but it may not be the same people
English
8
0
93
5.4K
anton mikhailov
anton mikhailov@antovsky·
@MrJayLC Yep, that's exactly what we discuss on one of the podcast episodes 👍 It's a good way to make custom datastructures of all sorts.
English
0
0
1
48
John
John@MrJayLC·
@antovsky A thought on team Fat Struct: the Thing_Ref (tm), could it not be used to basically represent another data structure (intrusive list, tree, etc)? While the underlying data is sequential (with holes) and readily available to loop over like a normal array. Composite ftw?
English
1
0
0
69