{"version":"https://jsonfeed.org/version/1","title":"Micro.blog - Jan Ekholm","home_page_url":"https://micro.blog","feed_url":"https://micro.blog/posts/chakie@toot.community","_microblog":{"about":"https://micro.blog/about/api","id":"233480","username":"chakie@toot.community","bio":"Software stuff. Mostly a loser ranting about everything shit in the (tech) world.","pronouns":"","is_following":false,"is_you":false,"following_count":5,"discover_count":0},"author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://micro.blog/photos/200/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg"},"items":[{"id":"93422259","content_html":"<p>Added an Ukrainian translation to my app. This is the new Catalyst Mac version which will make its debut in 5.7. I have no idea of the quality of the translation, but other translations have been pretty good. I used Claude to help with the translation work. </p><p><a href=\"https://toot.community/tags/indiedev\" class=\"mention hashtag\">#<span>indiedev</span></a> <a href=\"https://toot.community/tags/iosdev\" class=\"mention hashtag\">#<span>iosdev</span></a> <a href=\"https://toot.community/tags/myapp\" class=\"mention hashtag\">#<span>myapp</span></a> <a href=\"https://toot.community/tags/claude\" class=\"mention hashtag\">#<span>claude</span></a> <a href=\"https://toot.community/tags/borg\" class=\"mention hashtag\">#<span>borg</span></a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F861%2F440%2F958%2F322%2F709%2Foriginal%2F9d5eb4e599b8cef3.jpeg\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://toot.community/@chakie/116861460757705192","date_published":"2026-07-04T11:26:19+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-04 11:26","date_timestamp":1783164379,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"93394528","content_html":"<p><span class=\"h-card\"><a href=\"https://mstdn.ca/@david_megginson\" class=\"u-url mention\">@<span>david_megginson</span></a></span> I have seen this market for over 15 years and I never had any illusions of succeeding. That’s only for a few lucky ones and those that are already celebrities and thus get free promotions everywhere. Fortunately I don’t need to support anyone with my apps as I have a real job that gives some bread on the table. </p><p>I mostly do this because I can do whatever I want and test out new tech and weird ideas. :)</p>","url":"https://toot.community/users/chakie/statuses/116858169841558651","date_published":"2026-07-03T21:29:23+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-03 21:29","date_timestamp":1783114163,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93388311","content_html":"<p><span class=\"h-card\"><a href=\"https://micro.blog/manton\" class=\"u-url mention\">@<span>manton</span></a></span> Probably some corners have had to be cut somewhere, even if we assume they are satisfied with less huge profit margins compared to the US behemoths.</p>","url":"https://toot.community/users/chakie/statuses/116857669062712053","date_published":"2026-07-03T19:22:02+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-03 19:22","date_timestamp":1783106522,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93388166","content_html":"<p>My app has three new subscribers since April. This isn’t working out, is it? I wish I had a few 100k€ to put into advertising or just buying influencers. Alas. In reality I should just give up.</p>","summary":"","url":"https://toot.community/@chakie/116857659480221123","date_published":"2026-07-03T19:19:36+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-03 19:19","date_timestamp":1783106376,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"93305521","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> Most of my experience with writing games is with Cocos2D and a similar non public C++ engine, so I don't mind the code only side of things. I'm not good with Rust yet though but slowly getting the hang of things.</p>","url":"https://toot.community/users/chakie/statuses/116850142420529395","date_published":"2026-07-02T11:27:55+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-02 11:27","date_timestamp":1782991675,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93300067","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> Ah, I missed this comment. See my previous reply. :)</p>","url":"https://toot.community/users/chakie/statuses/116849706046387903","date_published":"2026-07-02T09:36:56+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-02 09:36","date_timestamp":1782985016,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93300034","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> Yeah, I did some reading up and it looks like a nice system for doing \"reactive\" code and isolate things. </p><p>I guess that once you start adding more systems, events etc the setup can get pretty overwhelming and complex, and the solution here is to start to do plugins the encapsulate parts of the game.</p>","url":"https://toot.community/users/chakie/statuses/116849703972688404","date_published":"2026-07-02T09:36:24+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-02 09:36","date_timestamp":1782984984,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93246655","content_html":"<p><span class=\"h-card\"><a href=\"https://mastodonsweden.se/@normalniklas\" class=\"u-url mention\">@<span>normalniklas</span></a></span> Kanske skulle vara värt att titta på, det kostar ju inget annat än tid.</p>","url":"https://toot.community/users/chakie/statuses/116844772605920361","date_published":"2026-07-01T12:42:18+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-01 12:42","date_timestamp":1782909738,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93239603","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> Oh, thank you for the patient explanations!</p>","url":"https://toot.community/users/chakie/statuses/116844101015864071","date_published":"2026-07-01T09:51:30+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-01 09:51","date_timestamp":1782899490,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93239577","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> Interesting. I don't have any events or similar so far. Would that be a more canonical way to handle things? Right now my systems try to handle a single task fully without having to involve other systems, but maybe a more modular approach is a better structure for the future.</p><p>I assume I can have systems or event handlers that then get called for the event and can (de)spawn and handle explosions, scoring, game over etc. I will google up a bit on events.</p>","url":"https://toot.community/users/chakie/statuses/116844098241107282","date_published":"2026-07-01T09:50:48+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-01 09:50","date_timestamp":1782899448,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93239379","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> My scale is utterly trivial. Think C64 level tests. </p><p>I don't mind a code centric approach. Most of my experience is with Cocos2D ages ago and with Unity. Technically Unity has an IDE of sorts, but in the end you're writing code and only occasionally clicking a button in the UI.</p>","url":"https://toot.community/users/chakie/statuses/116844082361988294","date_published":"2026-07-01T09:46:45+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-01 09:46","date_timestamp":1782899205,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93234286","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> Is using SystemParam a more efficient way to do complex queries? I mean would Bevy be able to optimize/cache something?</p>","url":"https://toot.community/users/chakie/statuses/116843609954827900","date_published":"2026-07-01T07:46:37+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-01 07:46","date_timestamp":1782891997,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93233420","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> Bevy seems to have a lot of systems geared towards \"real world games\" with a slightly more massive scale than my tests. :) It's somewhat daunting to learn.</p><p>But for my use case, do you see any obvious bad patterns? I want to \"move all enemies\" and \"check if any of them hits the player\". If so I need to spawn and despawn stuff. The collision handling in particular seems extremely clumsy and I'm 100% certain there's something better that I just haven't found yet.</p>","url":"https://toot.community/users/chakie/statuses/116843556253237511","date_published":"2026-07-01T07:32:58+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-01 07:32","date_timestamp":1782891178,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93233285","content_html":"<p><span class=\"h-card\"><a href=\"https://mastodonsweden.se/@normalniklas\" class=\"u-url mention\">@<span>normalniklas</span></a></span> Jag har hört mycket bra om Jellyfin på diverse podcasts, men inte provat själv. </p><p>Vi körde Plex ett antal år sedan, men i något skede så minskade behovet att se på våra gamla rippade DVD-filmer och installationen ruttnade bort.</p>","url":"https://toot.community/users/chakie/statuses/116843543583402227","date_published":"2026-07-01T07:29:44+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-07-01 07:29","date_timestamp":1782890984,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93208483","content_html":"<p><span class=\"h-card\"><a href=\"https://mastodonsweden.se/@normalniklas\" class=\"u-url mention\">@<span>normalniklas</span></a></span> Vad kör du med för teknik? Plex?</p>","url":"https://toot.community/users/chakie/statuses/116840905852654645","date_published":"2026-06-30T20:18:56+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-30 20:18","date_timestamp":1782850736,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93206633","content_html":"<p><span class=\"h-card\"><a href=\"https://wetdry.world/@laund\" class=\"u-url mention\">@<span>laund</span></a></span> The function was this, but without the Without&lt;&gt; part.</p><p>Is it a God system? Maybe. But I don't know how otherwise to handle collisions between the enemies and the player. I need commands, time, assets (to get sprites), transforms, sprite bounds, entities (for despawning) and the enemy (for various data). Code does need to access stuff and queries are the only way to get things in afaik? This will certainly be updated if I learn of better ways to do things.</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F840%2F728%2F240%2F553%2F268%2Foriginal%2F8068b6695d788b3a.png\" alt=\"\" loading=\"lazy\"></p>","url":"https://toot.community/users/chakie/statuses/116840745907797832","date_published":"2026-06-30T19:38:15+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-30 19:38","date_timestamp":1782848295,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93183330","content_html":"<p><span class=\"h-card\"><a href=\"https://anarres.family/@sashag\" class=\"u-url mention\">@<span>sashag</span></a></span> Yeah, I never do that in any \"C based\" languages that have braces. It wastes a perfectly good line for a thing that is evident from the indentation anyway. The closing one can have an own line. I prefer to sprinkle liberal amounts of empty lines between logical blocks to keep things readable.</p>","url":"https://toot.community/users/chakie/statuses/116838936800824932","date_published":"2026-06-30T11:58:10+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-30 11:58","date_timestamp":1782820690,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93182780","content_html":"<p>Much better!</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F838%2F858%2F120%2F201%2F292%2Foriginal%2F79fd675f41718aea.png\" alt=\"\" loading=\"lazy\"></p>","url":"https://toot.community/users/chakie/statuses/116838858409803913","date_published":"2026-06-30T11:38:14+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-30 11:38","date_timestamp":1782819494,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93182639","content_html":"<p>I wonder if there's a setting for rustfmt that makes it not break up code into one symbol per line like this. This is atrocious. Who on earth wants { to be on a line of its own? I want to keep things on one line if possible unless I've manually added a line break. I have a wide screen, I don't have a high screen. It's also a bigger mental load to grok code logic and flow vertically than horizontally.</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F838%2F845%2F239%2F322%2F047%2Foriginal%2F760e3bf45a8f3621.png\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://toot.community/@chakie/116838850527551845","date_published":"2026-06-30T11:36:14+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-30 11:36","date_timestamp":1782819374,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"93144874","content_html":"<p><span class=\"h-card\"><a href=\"https://bevy.club/@aviac\" class=\"u-url mention\">@<span>aviac</span></a></span> Are you involved with Bevy in some way? Just saw your server.</p>","url":"https://toot.community/users/chakie/statuses/116835405241711264","date_published":"2026-06-29T21:00:03+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-29 21:00","date_timestamp":1782766803,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93122407","content_html":"<p><span class=\"h-card\"><a href=\"https://mastodon.gamedev.place/@floooh\" class=\"u-url mention\">@<span>floooh</span></a></span> Personally I would perhaps rather manage my own entities using dictionaries and similar instead of relying on, as you say, databases. But I guess this is where things are moving nowadays.</p>","url":"https://toot.community/users/chakie/statuses/116833538032686479","date_published":"2026-06-29T13:05:12+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-29 13:05","date_timestamp":1782738312,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93118500","content_html":"<p><span class=\"h-card\"><a href=\"https://bevy.club/@aviac\" class=\"u-url mention\">@<span>aviac</span></a></span> I should probably only post once I have solved something or am ready to given up. :) </p><p>But yeah, I as the developer know that those will never overlap but I can see why Bevy would not. The panic could perhaps be a bit clearer as to why it felt it had to give up.</p>","url":"https://toot.community/users/chakie/statuses/116833174593102336","date_published":"2026-06-29T11:32:46+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-29 11:32","date_timestamp":1782732766,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93115133","content_html":"<p>Aha, the issue is that transforms are both read and potentially updated and Bevy can't know that the two queries won't overlap. This seems to fix it as bevy can now know that a Player's transform is never updated.</p><p>I guess these parameters will only get more complex as time goes on...</p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F832%2F779%2F502%2F623%2F362%2Foriginal%2Fb40b5ca77831a8eb.png\" alt=\"\" loading=\"lazy\"></p>","url":"https://toot.community/users/chakie/statuses/116832810940648943","date_published":"2026-06-29T10:00:17+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-29 10:00","date_timestamp":1782727217,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93114432","content_html":"<p>This wasn't exactly a helpful crash. I assume my updated system isn't compatible somehow. It does compile though, so it should be fine. And there is only one Player, so the Single&lt;&gt; should be fine.</p><p>At least the way I naively construct my systems they tend to end up with pretty complex arguments as you inevitable need to access different things. It seems like it has to be slow? Or maybe the ECS part makes this really streamlined?</p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a> <a href=\"https://toot.community/tags/gamedev\" class=\"mention hashtag\">#<span>gamedev</span></a></p><div class=\"microblog_collection\">\n<img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F832%2F701%2F975%2F855%2F464%2Foriginal%2F349b811255132b34.png\" alt=\"\" loading=\"lazy\"><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F832%2F713%2F392%2F077%2F675%2Foriginal%2Fe8589b02cf37b1d8.png\" alt=\"\" loading=\"lazy\">\n</div>","summary":"","url":"https://toot.community/@chakie/116832731022087917","date_published":"2026-06-29T09:39:58+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-29 09:39","date_timestamp":1782725998,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"93061177","content_html":"<p><span class=\"h-card\"><a href=\"https://mastodon.online/@sten\" class=\"u-url mention\">@<span>sten</span></a></span> They must now be \"enterprise\". That shit never goes away.</p>","url":"https://toot.community/users/chakie/statuses/116826840052595497","date_published":"2026-06-28T08:41:49+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-28 08:41","date_timestamp":1782636109,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93041686","content_html":"<p><span class=\"h-card\"><a href=\"https://mastodon.social/@zimzat\" class=\"u-url mention\">@<span>zimzat</span></a></span> Ok, the issue was that everything has the same z order, so my background sometimes covered some/all of my sprites. Sending it back fixed everything.</p>","url":"https://toot.community/users/chakie/statuses/116823996271495530","date_published":"2026-06-27T20:38:36+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-27 20:38","date_timestamp":1782592716,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93041479","content_html":"<p><span class=\"h-card\"><a href=\"https://mastodon.social/@zimzat\" class=\"u-url mention\">@<span>zimzat</span></a></span> Yeah, I don't really expect anyone to be able to debug this. Mainly hoped there was some clear smoking gun.</p><p>I plan on putting this stuff up on GitHub or similar, but I want it to at least work first.</p>","url":"https://toot.community/users/chakie/statuses/116823970808676534","date_published":"2026-06-27T20:32:08+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-27 20:32","date_timestamp":1782592328,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93041383","content_html":"<p>Something is really random here. If I merge setup() and load_assets() into one function it does not always work. Sometimes it does. Both do just one spawn() call.</p><p>Also I can sometimes see my enemies flicker for one frame or so before being cleared. As if they are all despawned after the first frame.</p><p>Meh. Time to do something fun.</p>","url":"https://toot.community/users/chakie/statuses/116823959755196929","date_published":"2026-06-27T20:29:19+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-27 20:29","date_timestamp":1782592159,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93040980","content_html":"<p><span class=\"h-card\"><a href=\"https://mastodon.social/@zimzat\" class=\"u-url mention\">@<span>zimzat</span></a></span> That's my understanding too. But I don't understand why my chain() (see later post in the same thread) does not work as it should run things in the exact order I want. Running them in whatever order Bevy picks on the other hand works.</p>","url":"https://toot.community/users/chakie/statuses/116823928499362940","date_published":"2026-06-27T20:21:22+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-27 20:21","date_timestamp":1782591682,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":true}},{"id":"93039533","content_html":"<p>Does the order of systems in Bevy matter? In this little game all the Startup systems simply spawn() stuff into the scene. But it seems my create_ui() system causes whatever system is right before it to \"not work\". In this case the enemies in create_enemies() are not visible. If I move create_ui() one step up then the player in create_player() is not visible. I've stumbled upon cases like this before but dismissed them as \"I have no idea what I'm doing\".</p><p>1/2</p><p><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a> <a href=\"https://toot.community/tags/systems\" class=\"mention hashtag\">#<span>systems</span></a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F823%2F821%2F347%2F723%2F862%2Foriginal%2Fe3ffef23f6d0fcf6.png\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://toot.community/@chakie/116823833626109697","date_published":"2026-06-27T19:57:14+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-27 19:57","date_timestamp":1782590234,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"93008378","content_html":"<p>I’m actually slowly getting the hang of doing basic stuff with Bevy. Not had that much time to play with it this week though. Next up is simple sprite animation to get some life into my invaders from space. </p><p>I’m however still extremely hesitant about the “systems”. It seems to me that having lots of systems with non trivial queries would be massively slow when Bevy has to sort through and find all matching entities. I guess it’s not, but it feels weird. </p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a> <a href=\"https://toot.community/tags/rust\" class=\"mention hashtag\">#<span>rust</span></a> <a href=\"https://toot.community/tags/gamedev\" class=\"mention hashtag\">#<span>gamedev</span></a></p>","summary":"","url":"https://toot.community/@chakie/116821123494401951","date_published":"2026-06-27T08:28:01+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-27 08:28","date_timestamp":1782548881,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"93008163","content_html":"<p>Something all web shops should have is the ability to save shopping cart contents for later. I often end up with a painstakingly assembled cart but can’t do the order immediately for some reason and when I get back to finalising the order my cart is empty. Either keep the cart alive for a loooong time or let me save it permanently for later. Don’t hate the customer. </p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/uxfail\" class=\"mention hashtag\">#<span>uxfail</span></a></p>","summary":"","url":"https://toot.community/@chakie/116821105506651602","date_published":"2026-06-27T08:23:26+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-27 08:23","date_timestamp":1782548606,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92954928","content_html":"<p>I wanted to check the opening hours for our local outdoor pool and decided to try Apple Maps for a change.</p><p>Interestingly it heavily features FourSquare stuff. I didn't even know that service was alive, I had assumed it died in 2012 or so. Is FS still a thing? Or is this perhaps just a case of Apple never ever updating their apps?</p><p><a href=\"https://toot.community/tags/apple\" class=\"mention hashtag\">#<span>apple</span></a> <a href=\"https://toot.community/tags/maps\" class=\"mention hashtag\">#<span>maps</span></a> <a href=\"https://toot.community/tags/foursquare\" class=\"mention hashtag\">#<span>foursquare</span></a> <a href=\"https://toot.community/tags/retro\" class=\"mention hashtag\">#<span>retro</span></a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F816%2F642%2F815%2F292%2F115%2Foriginal%2F8e41364d80025e14.png\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://toot.community/@chakie/116816650238207275","date_published":"2026-06-26T13:30:24+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-26 13:30","date_timestamp":1782480624,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92937116","content_html":"<p>This Android Pixel has an annoying feature when the battery is totally empty. When plugged in the device starts booting, shows some splashes, vibrates, detects that it has too little power and then shuts down. Repeat ad nauseam. This cycles every 30s or so for quite a while until it has enough power to stay up. Probably 50 cycles already and I'm bloody annoyed at the thing.</p><p>I assume nobody at Google tested what happens with a fully empty device?</p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/android\" class=\"mention hashtag\">#<span>android</span></a> <a href=\"https://toot.community/tags/pixel\" class=\"mention hashtag\">#<span>pixel</span></a> <a href=\"https://toot.community/tags/uxfail\" class=\"mention hashtag\">#<span>uxfail</span></a></p>","summary":"","url":"https://toot.community/@chakie/116815255431708363","date_published":"2026-06-26T07:35:41+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-26 07:35","date_timestamp":1782459341,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92876679","content_html":"<p>Checked out how Catalyst works today. The conclusion is: surprisingly well. Only found a few things that did not work well and some cases where my own device checks made the Mac version use views meant for the iPhone. The Mac also doesn't have a camera so some things needed to be put behind OS guards.</p><p>But it seems I could release a basic Mac version along with my next App Store release. Assuming I understand how to make the Mac version downloadable, that is.</p><p><a href=\"https://toot.community/tags/indiedev\" class=\"mention hashtag\">#<span>indiedev</span></a> <a href=\"https://toot.community/tags/iosdev\" class=\"mention hashtag\">#<span>iosdev</span></a> <a href=\"https://toot.community/tags/catalyst\" class=\"mention hashtag\">#<span>catalyst</span></a> <a href=\"https://toot.community/tags/mac\" class=\"mention hashtag\">#<span>mac</span></a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F810%2F746%2F638%2F231%2F953%2Foriginal%2F0da017dda52bbb7f.png\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://toot.community/@chakie/116810768526514850","date_published":"2026-06-25T12:34:37+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-25 12:34","date_timestamp":1782390877,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92796731","content_html":"<p>In my tests Bevy is incredibly slow at starting up and choppy. I must be doing something wrong, as I see others even do 3D stuff?</p><p>This is me starting my little test. A 2D camera, JPG background and 41 sprites. Should it take this long? Most of the time the window is blank my logging says that everything is loaded and Bevy is doing something own. Once it starts, it's really choppy for some seconds. After that it animates quite nicely.</p><p>I run a dev build. A release is better.</p><p><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a></p><p><video controls=\"controls\" playsinline=\"playsinline\" src=\"https://static.toot.community/media_attachments/files/116/804/716/069/393/172/original/5ce1087c58da3432.mp4\" preload=\"none\"></video></p>","summary":"","url":"https://toot.community/@chakie/116804727996681366","date_published":"2026-06-24T10:58:26+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-24 10:58","date_timestamp":1782298706,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92730902","content_html":"<p>Wanted to draw some simple 50x50 px sprites for my Bevy experiment and it's a surprisingly hard task. All my apps like Pixelmator, Affinity etc are way too complex and not really suited for pixel work. I don't really need layers, effects and all kinds ot magic tools.</p><p>Could of course do more realistic graphics...</p><p>Hm, I seem to have installed an app called Pixen aeons ago. It seems to be a bit simpler than the big behemoths.</p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a> <a href=\"https://toot.community/tags/pixelart\" class=\"mention hashtag\">#<span>pixelart</span></a> <a href=\"https://toot.community/tags/macos\" class=\"mention hashtag\">#<span>macos</span></a></p>","summary":"","url":"https://toot.community/@chakie/116799606458924863","date_published":"2026-06-23T13:15:57+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-23 13:15","date_timestamp":1782220557,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92435407","content_html":"<p>Updated to the brand spanking new macOS. I managed to survive on Sequoia until now but now it was time to get on the Tahoe bandwagon.</p><p>I'm immediately met by this jewel of UI design. Everything feels somehow amateurish. I think Big Bridge (Big Ben?) will be more to my liking than this weird mess.</p><p><a href=\"https://toot.community/tags/macos\" class=\"mention hashtag\">#<span>macos</span></a> <a href=\"https://toot.community/tags/tahoe\" class=\"mention hashtag\">#<span>tahoe</span></a> <a href=\"https://toot.community/tags/ui\" class=\"mention hashtag\">#<span>ui</span></a> <a href=\"https://toot.community/tags/disaster\" class=\"mention hashtag\">#<span>disaster</span></a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F771%2F945%2F788%2F232%2F905%2Foriginal%2Fe6dc26cc37bc2348.png\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://toot.community/@chakie/116771953353624171","date_published":"2026-06-18T16:03:24+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-18 16:03","date_timestamp":1781798604,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92417141","content_html":"<p>2D collision handling in Bevy was trickier than I would have thought. I need a system that gets all my entities A that can collide with entities of type B, C and D. Querying either A or B,C and D is easy, but I can't seem to combine those two. Once I get the entities I guess I can calculate a AABB:s for the sprites and check collisions.</p>","summary":"","url":"https://toot.community/@chakie/116770277275144417","date_published":"2026-06-18T08:57:09+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-18 08:57","date_timestamp":1781773029,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92416350","content_html":"<p>It’s been such a ride trying to find all the string hiding in my app and make the available for localization. My intial run produced some 550 strings and I thought that I was more or less done. Some testing and I had 700 strings. “Surely these are all?“. Now I’m up to 934 strings and I’ve resigned to never being able to find them all. I had Claude trawl through the code multiple times looking for various patterns and it helped a lot.</p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/ios\" class=\"mention hashtag\">#<span>ios</span></a> <a href=\"https://toot.community/tags/indiedev\" class=\"mention hashtag\">#<span>indiedev</span></a> <a href=\"https://toot.community/tags/myapp\" class=\"mention hashtag\">#<span>myapp</span></a> <a href=\"https://toot.community/tags/i18n\" class=\"mention hashtag\">#<span>i18n</span></a></p>","summary":"","url":"https://toot.community/@chakie/116770198455406738","date_published":"2026-06-18T08:37:07+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-18 08:37","date_timestamp":1781771827,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92265423","content_html":"<p>I use Visual Studio Code in one project, mainly because it's a mix of scripts and various languages. The thinking was that it can handle many languages well.</p><p>Nope. It's a clusterfuck when it comes to actually knowing absolutely anything about the languages or my code base. Auto completion never surfaces relevant stuff, rarely even variables declared one line above or function parameters. It's like coding with Emacs in 1995, except Emacs was better at the actual editing.</p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/visualStudioCode\" class=\"mention hashtag\">#<span>visualStudioCode</span></a></p>","summary":"","url":"https://toot.community/@chakie/116758077188448194","date_published":"2026-06-16T05:14:31+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-16 05:14","date_timestamp":1781586871,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92232284","content_html":"<p>Really nice Bevy tutorial. Or it’s way more than just a tutorial, it’s the first chapters of a book where the author builds a game. Great explanations and fun to read. </p><p><a href=\"https://aibodh.com/books/the-impatient-programmers-guide-to-bevy-and-rust/\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">aibodh.com/books/the-impatient</span><span class=\"invisible\">-programmers-guide-to-bevy-and-rust/</span></a></p>","summary":"","url":"https://toot.community/@chakie/116755406775970018","date_published":"2026-06-15T17:55:23+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-15 17:55","date_timestamp":1781546123,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92177864","content_html":"<p>The basic stuff of my Space Invaders clone are working. Player, enemies and missiles move as they should. No collision detection yet, but I guess that's just checking everyone against everyone.</p><p>The performance is awful though. Takes many seconds to draw something after the window is shown, and the updates seem choppy with lots of missing frames. Of course, I do have 41 texts there over a static background so maybe that's pushing it a bit too far? Dev build too.</p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a></p>","summary":"","url":"https://toot.community/@chakie/116750153888391732","date_published":"2026-06-14T19:39:31+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-14 19:39","date_timestamp":1781465971,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92157473","content_html":"<p>Oh damn. Despawning an entity in Bevy is... not easy. Or well, it is easy to just issue the command, but you need to keep track if the entity id somewhere. Examples seem to spawn things just by creating tuples of components. This works fine for moving etc, but not for despawning. I need to store the missile_id somewhere. Ideally this would be in the Missile struct. Maybe I can construct it first and then store the id there? </p><p>This feels pretty much like shadow IT in big corps. :)</p><p><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F748%2F381%2F397%2F343%2F697%2Foriginal%2F17b8523237e4b83e.png\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://toot.community/@chakie/116748389990041492","date_published":"2026-06-14T12:10:56+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-14 12:10","date_timestamp":1781439056,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92118208","content_html":"<p>The ECS stuff in bevy is immensely complex and the errors from the compiler make the template errors in C++ seem like child's play. :)</p><p>I guess it's somehow possible to add properties to a component and get that component in an Update system. Perhaps. Should it be a Res? Or a Mut? Clearly my approach is far from correct.</p><p>Still a very frustrating experience.</p><p><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a></p><p><img src=\"https://cdn.micro.blog/photos/1000x/https%3A%2F%2Fstatic.toot.community%2Fmedia_attachments%2Ffiles%2F116%2F744%2F021%2F667%2F191%2F641%2Foriginal%2F740da5fcd4ade616.png\" alt=\"\" loading=\"lazy\"></p>","summary":"","url":"https://toot.community/@chakie/116744033208714278","date_published":"2026-06-13T17:42:57+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-13 17:42","date_timestamp":1781372577,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"92113162","content_html":"<p>One incredibly annoying aspect of learning Bevy is that so much of the docs and material is outdated and deprecated. Of course a library changes and evolves as it's still youong, but it also means that 90% of tutorials and docs no longer are relevant. Been trying for a while to load an image as a background. SpriteBundle is what most docs talk about, but it's no longer available.  An AssetServer is perhaps the moderna way?</p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a> <a href=\"https://toot.community/tags/frustrations\" class=\"mention hashtag\">#<span>frustrations</span></a></p>","summary":"","url":"https://toot.community/@chakie/116743648580657219","date_published":"2026-06-13T16:05:08+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-13 16:05","date_timestamp":1781366708,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"91931538","content_html":"<p>Started the translation process for my app. Started with 500 extracted strings in the string catalog. Then go through all places where strings were being used verbatim in the UI and similar cases that were not extracted nor translatable and I’m up to 800 strings. Where do they all come from, this is a tiny app! Tomorrow I’ll see about doing a first translation of everything into Swedish which I know fairly well. That’s probably as far as this will ever go beforeI realise it’s pointless. :)</p>","summary":"","url":"https://toot.community/@chakie/116727888030498579","date_published":"2026-06-10T21:17:01+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-10 21:17","date_timestamp":1781126221,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":true,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"91862547","content_html":"<p>Time to go through the videos from WWDC and favourite those that I want to watch at some point. Usually watch maybe 10% of the videos, I’d say.</p>","summary":"","url":"https://toot.community/@chakie/116722341164520728","date_published":"2026-06-09T21:46:22+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-09 21:46","date_timestamp":1781041582,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"91784562","content_html":"<p>Heh, Threads is full of people blaming the EU for Apple being dicks wrt Siri AI. Clearly Apple’s propaganda has worked well and people who aren’t too clever have fallen for it. The EU has to get better at information so that Apple’s bullshit gets countered. I use Apple’s stuff, but I’m so tired of their childish pettiness and never ending greed.</p>","summary":"","url":"https://toot.community/@chakie/116716740547820499","date_published":"2026-06-08T22:02:04+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-08 22:02","date_timestamp":1780956124,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}},{"id":"91776650","content_html":"<p>I made my first sprite move on the screen via keyboard input with Bevy. It’s such a different world from everything I have used before, but I think it’ll be great. </p><p class=\"microblog_hashtags\"><a href=\"https://toot.community/tags/bevy\" class=\"mention hashtag\">#<span>bevy</span></a> <a href=\"https://toot.community/tags/rust\" class=\"mention hashtag\">#<span>rust</span></a></p>","summary":"","url":"https://toot.community/@chakie/116716050948846930","date_published":"2026-06-08T19:06:41+00:00","author":{"name":"Jan Ekholm","url":"https://toot.community/@chakie","avatar":"https://cdn.micro.blog/photos/96/https%3A%2F%2Fstatic.toot.community%2Faccounts%2Favatars%2F109%2F364%2F249%2F569%2F425%2F780%2Foriginal%2Ffbd37f6a7f4df8c2.jpg","_microblog":{"username":"chakie@toot.community"}},"_microblog":{"date_relative":"2026-06-08 19:06","date_timestamp":1780945601,"is_favorite":false,"is_bookmark":false,"is_deletable":false,"is_conversation":false,"is_linkpost":false,"is_mention":false,"is_podcast":false,"note":"","syndication":[]}}]}