Don’t worry, my new M4 doesn’t feel much faster either due to all the corporate crapware. Since Windows Defender got ported to Mac it’s become terrible in I/O and overall responsiveness. Any file operations will consume an entire core or two on Defender processes.
My personal M1 feels just as fast as the work M4 due to this.
I was impressed with my M4 mini when I got it a year ago but sometime after the Liquid Glass update it is now: beachball… beachball… beachball… reboot… beachball… beachball… Reminds me of the bad old days of Win XP.
How much RAM do you have? That seems to be the main thing that slows down my MacBooks (original launch-day 16GB M1 MBP and 32 GB M2 Pro). The M1 CPU is finally starting to show its age for some things, but the M2 Pro is really only RAM limited in perceived speed for me.
I did. On equal hardware, in same order, with same windows version, on clean installs. ‘npm install’ is very file-heavy and Windows with corpware hates small files especially with the .js extension
Why would it signal that? The loud and clear message would be "do not let American companies get involved in your infrastructure, government or any other system where government requirements would come into open conflict with their profits".
It is funny how we keep asking more and more and more even though we already have it so much better than before. Can we never be happy with what we have?
> It is funny how we keep asking more and more and more even though we already have it so much better than before.
I've been developing web stuff for 15 years now and sometimes I can't believe comments like these. We didn't have it "so much better before". CSS sucked hard and getting things right for three devices was an incredible pain in the ass.
Tables have semantic meaning. They don't support fractional units. Reflowing for mobile is impossible and you need JS hacks like splitting tables. You can't reorder natively.
I have been developing web stuff for 20 years now and I also can’t believe comments like these.
Flex and grid enable layouts that are far beyond anything we could do with table layouts. Anyone who claims otherwise has obviously not done any amount of serious, production FE UI design and development.
Are there bits of DX ergonomics I’d like in flex and grid? Of course. Does the syntax sometimes feel a bit arcane? Yeah. But the raw power is there, and anyone who claims the contrary is either a gormless backend developer, or some troll who is trying to design things in MS Word.
Borders can be applied to table cells independent of the content inside cells.
Gap decorations allow you to add borders between flex/grid items, but without the woes of dealing with table quirks and behavior.
Common use cases would include mimicking design patterns found in print layouts, particularly newspapers and menus, to help divide groups of items or info.
I’ve got a Discord from my previous game of about 2000 people, mostly teenagers, and my testers have mostly come from there. To name one example, just yesterday a teenager completed a chess game after 3-4 weeks on Easel. I’ve been incorporating tons of feedback from the testers over the past year and a half.
I think that it may look strange to a person who has coded before because the language is semi-declarative. Most teenagers come to Easel as players with no prior programming experience, and begin by remixing their favourite game, and that’s when the semi-declarative model really shines. Many interesting changes can be done in a single edit because the code is clumped together in a hierarchy. Whereas in another programming language there may be more indirection and you might need to edit 3 separate parts in different files to make 1 change, and people who haven’t coded before don’t know how to find all the parts. I think Easel works for players becoming makers but can feel strange for people who come from other languages.
It is very interesting though! I have been interested in this kind of language design for interactive UI for a while. If there was a quick article outlining how all the "with" and "on" and "own" work to more experienced developers using references to existing language features, I'd love to read it. Right now it reminds me of the declarative style of qt ui and online primitives introduced in godot, but i haven't looked at it in more details. Also love your take on async. Wish you all the best luck, this seems like a really thought through language design!
This is a very kind comment, thank you! Yes it has been a LOT of iteration to make the language what it is. I think it would make sense to have a page for experienced developers to better understand what Easel is. Right now maybe the closest is this page: https://easel.games/docs/learn/key-concepts
This is really cool, these patterns (run once now and then once triggered) surface all the time and usually turn into ugly code! How many interations did it take?
So most lines like A { B{ on D{ print() } } C{} } equivalently desugar into something like a = A; b = B(); a.mount(b); d = D(); d.on(f); b.mount(d); .. ?
I got confused by a couple of things. One of them is whether object parameters act like context parameters and there for depend on names in the caller variable scope? Ie if i define 'fn ship.Explode', i must have variable ship at call site? But i can still otherwise pass it explicitly as alien_ship.Explode(), right? How do i know if a particular call takes the current object into account? If i have two variables in my nested scope: ship and asteriod and both have ship.Explode and asteroid.Explode, which one is picked if i do just `Explode`? The innermost? Or I can't have two functions like that because the first thing is literally just a named variable and not a "method"?
Overall, if you could provide some examples of how things could have de-sugured into a different language, that'd be very interesting! Maybe with some examples of why this or that pattern is useful? I think it does a good job for things like on / once, but I'm not grokking how one would structure an app using this variable scoping use clause and object parameters.
Also not sure how to define functions that could be on'd or once'd. (Ah, i see, delve)
Android didn't have a way to share files between them for the longest time. Initially there was Beam but it never worked. The first semi-reliable way to exchange files between two android phones, without using a third party utility, was Nearby Share dates from 2020.
So yeah, it's a low bar, but one that only Apple bothered to clear from the get go apparently.
This example assumes 1fte=40 hours which is not nexessarily the case in all countries or under all collective agreements. 1fte can be 36, 38, or even 48 hours.
reply