But current LLMs have a context window limitation, so you can't fit your whole source code into the context, that's why compilers guide the LLMs when they are producing code and that's where Rust compiler shines, it has very good diagnostics that help fix the issues with a few iterations.
So while LLMs are good at writing walls of code, they do not produce good code, just good enough and sometimes it is wrong (here is where Rust can help a bit by checking that the program is sound, but for the most part you should also validate the logic).
The dream language for LLMs would be one that has some kind of proving that function inputs/outputs are what you expect (I think it's called proof theory, but it's not my area of expertise, so I could be wrong), you kind of can emulate this with new types[0].
Are we living the worst times in a while technology wise, this presentation showed nothing useful. Last year at least they showed some interesting features, but as always I don’t use any of them, the only one I wanted in the past few years was to use the iPhone from my mac, but never shipped in EU. And the other feature was universal control that I use every day and works just fine most of the time.
I don't think so. We have tons of apps and ideas and now AI. I honestly don't expect much from an OS on my phone or laptop and I am glad they improve what matter: OS performance and bugs. I don't mind having the "innovation" in the apps and not in the OS. Or at least for the first time and then brought in a well-thought-out ecosystem.
This WWDC is thin, but it seems like a lot of it outside of AI is a refinement year.
For them to just blanket announce that a bunch of stuff across the platforms perform better, that shows that Apple spent most of their effort on quality over shipping features. It’s also possible they’re preparing for less availability of RAM long term and trying to optimize.
The list of stuff they had go highlighted includes a whole bunch of small but impactful little tweaks.
iCloud shared libraries being easier to use outside of Apple operating systems, that’s great. And adding full resolution support, also great. I’ve left iCloud Photos and macOS for myself but I’m stuck on iCloud shared photos with family albums, so making it easier for me to participate is a big plus.
Custom EQ in AirPods. Awesome.
Smoother network transitions between WiFi and cellular. Huge positive impact.
Send indicator in messages, yes please.
The parental controls are industry-leading.
The AI features are the most boring and uninteresting to me, but the little stuff is all big news to me.
They've been awful for me. This is best-in-class software? It breaks constantly. It fails to notify me of all kinds of events that should work, but spontaneously fail to. This could be someone entering the parental control pin or requesting to download an app. It's misery to deal with.
I've used it for years across several devices and kids. It's some of the worst software I ever need to use.
I recommend you to watch Andrew Kelly interview[0], while I'm not the target audience of Zig, I don't see him driving away any user. Also Jai as for now is a non existing language, just a selected few has access to it, but Jai approach is a kitchen sink, from what I saw it is all over the place in terms of features, now Zig vision feels cohesive.
I was thinking that this or opening the bootloader should be required (by governments) for deprecated devices. Imagine all the Android and Apple devices you could give a second life by installing in them linux with some lightweight window manager (with touch support), or even Ubuntu Touch, etc.
While I totally support such legislation (even for current sold devices, not just deprecated), there's a massive pile of android devices with open bootloader which never got any decent second life support.
Those might be niche devices, I think if were Samsung or Pixel devices, it would be a different story, similar for Apple devices, they are fewer variants, that it would be a lot of developers putting effort on adding upstream Linux support if they were open, like is happening with the Macs with the M series.
Samsung is actually the worst offender in the Android world for making variants.
Each device usually has 5 versions for each market (US, EU, China, Korea, Rest of the world) + individual board revisions.
And that's not counting the massive amount of devices they produce outside the flagships.
Let's pick the Galaxy S10 for example, you have the S10, S10+, S10e, S10 Lite, S10 5G. The US ones are on Snapdragon SOC, the other ones on Exynos SOC and each region has additional quirks...
That shouldn't stop the regulation from existing, but yes, maybe another regulation in a similar way for forcing companies to open source drivers and bringup code after N years of the release?
Even when the drivers are open source, it's far from easy. I'm thinking about these old Linux 4.2 touch screen drivers, they are there, fully open-source and despite that, almost none of them are in modern mainline.
Zig is low level, so it will certainly not replace your python usage, it is more like a modern C than anything else. There’s a video of a recent interview with Andrew Kelley, if you want to watch it to understand better what Zig is for, it’s on Jetbrains YouTube channel.
No, I get that, but Zig being low level is kind of why I don't get why it would be a good tinkering language?
When I want to tinker, I just want my logic to work, first of all. In 9 cases out of 10 that means going for high level. Even if the resulting code works with low level things like binary structures.
Low-level programming gets a bad name because C has many footguns and the spec leaves much behavior undefined - a fact that implementers use almost adversarially (which I'd support, if the goal was to refine the spec...).
C++ adds more high-level conveniences without actually removing the footguns and undefined behavior (much C code compiles in a C++ compiler).
Zig tries to keep the low-level C philosophy but have things more well factored and well defined. The result is you _can_ tinker in high-level code, yet "drop down" into low-level code as you desire.
(Compared to rust, you get fewer compiler-enforced guarantees, but unlike C the language isn't trying to make high-level code adversarial).
It made me laugh to think of C implementers being adversarial! It can feel that way.
I haven't really used modern C, not sure if it's evolved as much as modern C++, which I feel is a joy to use, and a lot safer. But then I've been writing C++ for decades.
I feel like C evolved from basically syntax sugar for assembly, so that's where all the footguns come from, rather than being actually adversarial.
If some of the things that the C standard left undefined had instead been made implementation defined then the compiler would at least be obligated to do something that makes sense on the target architecture, rather than having license to take the lawful-evil route. (Plenty of architectures have addressable RAM at location zero, for instance.)
For some reason this always brings to mind that moment in Red Dwarf where Kryten, devoid of his behavioural chip, deems it appropriate to serve roast human to his crewmates. "If you eat chicken, obviously you'd eat your own species as well, otherwise you'd just be picking on the chickens!"
Both C and C++ compilers (in fact, they share this part) very aggressively exploited undefined behavior for performance. But I this was certainly not adversarial. Programmers also regularity picked optimizations over safety. I think nowadays the unsafety of C with modern tooling vs the safety of - say - Rust is very much exaggerated.
I would add that Delphi still follows along, enough for an yearly conference in Germany, and that C# since getting Native AOT and the low level programming improvements, is close enough to Modula-3 design.
There is Swift as well, although quite far from Wirthian compile times.
Almost all of my tinkering is “download this thing, cache it (because it’s huge), run a program or a series of programs on it, and package the output up somewhere.” When I’m writing the thing that does the work I’m not tinkering any more..
I've been places, from embedded bare metal to ML AI, and that "embedded bare metal" end is the one place I don't use Python directly in. Embedded bare metal is just ruled by C forever.
Bit of a shame, because C is kind of bad at its job, but nothing else has the "compatible with everything" badge of honor.
The tooling around embedded devices though? Python.
When I want to tinker it’s usually because I want to make something faster than anyone else has done. Does that help illustrate why some might prefer to tinker in Zig, and why your definition of tinker seems a little narrow?
Most of the time "make something faster than anyone else has done" is just not worth doing? Good enough is good enough. Unless it's some super hot path and it's the speed that's the main goal, nothing else. Which is rarely the case.
If you only ever think of tinkering for the purpose of execution speed ninjutsu, isn't it your definition of tinkering that's far too narrow?
No, I’m saying that it’s how I like to tinker. Others have their own ways of tinkering that are just as valid!
I personally think the optimization challenge is fun. I like digging in to low level stuff, reviewing the assembly dumps and processor pipeline architectures. I fail or give up most of the time, but I enjoy learning in the process.
I’m just trying to show how Zig fits my tinkering well, since you said you can’t see how Zig would ever be a good fit for tinkering. I’m not saying it’s a good fit for all forms of tinkering.
Tinkering means different things to different people! Want to tinker with your hardware, as bare metal as possible? Or extract every inch of performance out of your CPU? Zig is great for that.
I was exploring a similar approach, but not focused on AI, my idea was basically group projects by workspace, where each workspace has a path and is related to a project, you can spawn terminals, editor and web browser windows in this workspace, the web browser cookies and such should be associated to a workspace, that way it will not leak between workspaces and also this allows you to have different sessions opened in different workspaces.
Unlike Cate, the windows of the terminals, editor, browser, etc, each one was handled similarly like Niri tiling scrolling window manager, that way you can use the keyboard to move around, where you can group windows in a column or split them, have different sizes, is not quite where you have a free form, but an horizontal collection of windows that you can scroll.
I would love to have something like this
I used itermocil when i was on macos, that was limited to iterm windows.
On Linux, I have been playing/exploring with Hypr but without much success so far.
How hard would it be to have one installation step to be to have Claude read through all the code to the extension and strip out anything that looks risky (ie. Calls out to external servers).?
Do that automatically for all code downloaded from the web and run outside a sandbox.
Maybe won't catch everything, but should catch most evil stuff, especially if a variety of models and prompts are used.
That's certainly a great way to waste even more resources at a massive scale.
Why is the answer for Javascript developers "don't use leftpad" but for the AI crew it's "convert the source code to tokens and attempt to strip out the bad stuff without breaking the rest"?
1. We've seen LLMs detect existing supply chain attacks when pointed at malicious install scripts. This is direct, empirical support for my position.
2. We have a long history of using heuristic technologies to detect attacks. We can infer that other heuristic technologies can be combined in a successful manner.
3. Shortcomings of LLMs are directly addressed by removing attacker controlled information from the input, which I specifically called out (using tools like grep for pattern matching + using sub agents to isolate contexts). This has been demonstrated already in a number of ways - feeding the LLM derived facts instead of attacker controlled data is the well worn path to avoiding injection attacks.
I have this for my cargo dependencies. `cargo-vet` will block anything not approved, and then I have a skill that reviews every dependency before trusting that version.
Same (Only some default plugins, and from known sources), and VS code even don't have a html preview functionality so I had to vibecode one (took about 10 mins, e2e).
I installed Zed on a work machine at a well-known software company and a week later they forced me to reimage my machine because they got some alert that the app was attempting to access browser credentials :(
No shade on Zed, sometimes in-house security tools just don't like new software.
According to the email I initially received for this alert, zed.exe was attempting to access its own folder within the AppData directory. Nothing more normal than that, no?
No idea how that related to what I was told by the sec people shortly afterwards.
I really need to find the time to properly test Zed. I'm mainly using PHP Storm and I love what it can do, especially when it comes to code discovery and auto-completion. I'm not a huge fan of having a bloated toolbox, I never use PHP Storm's included terminal or database browser.
Zed was super impressive when I first started it, but I don't know yet how it compares with PHP Storm.
The extension capability is much less powerful than VSCode (no embedded web view) so it's a lot harder to pull off crazy stuff. All of the language support is done via language servers.
But in the process of installing those language servers (automatically, without notifying you) it will install node, and download npm packages, which can do crazy stuff, as we've seen recently with the shai halud redux
In this day and age, and extensión is the thing is ask my local AI to do for me. They are very simple, self contained code that can be crappy as I'll run it locally.
Browser extensions have been a great playground for me.
You're preaching to the choir, I've personally done 30+ custom chrome extensions and that was pre-AI.
Nowadays it's mostly tamper-monkey scripts when I just want to rearrange a website's DOM. I do those with Claude and it one-shots them more often than not.
That would be an interesting project, I assume a lot of not so young engineers will want to play with it, as a hobby. Also if that project exists, I'm sure that someone will try to port DOOM.
I don't know about California, but AFAIK reverse engineering is legal, but breaking DRM protection isn't, so what companies did was to put DRM in their software, hence the reverse engineering became illegal.
AFAIK the issue is with one time purchase games, where is not clear if you will be able to play forever or whenever they want to pull the plug, if they change to subscription based model or free to play, then it will be clear for the players what they are paying for.
The distinction makes sense, but I wonder if the bill will inadvertently incentivize games to move to subscription based models, which would be ultimately be a worse experience for consumers.
I still support this law. If they move to subscriptions to “dodge” this law, that’s fine in a way. At least consumers won’t be under the false impression they own something in the rare case they’re paying a subscription to play a game.
As others have echoed, I think a subscription model is FINE for a game IF you are upfront about that being the cost. I suspect many customers are frustrated when they purchase something and then it is simply not able to be used when the developer feels like it.
It already is a subscription based model. The difference between they're lying by charging once and pretending like they don't know they're going to stop providing the minimum requirements to play the game.
You're describing the reality, and the difference after adding these additional rule, they'd have to be honest about what you're paying for and for how long you are allowed to use it.
Additional, if it is a subscription, it's more likely ongoing revenue could possibly fund providing the service indefinitely. Will that always happen, obviously not, but then game studios won't be as likely to do the same exact thing that catalysed the stop killing games project.
It would basically mandate subscription model for online games. Also wonder if it'd introduce legal risk for online mode in a game that also has local play, say Call of Duty or the newer Super Smash Bros, or if "ordinary use" is clearly not that.
No it would not basically mandate it. Providing server binaries for the community to run is not just an entirely reasonable thing to do, it used to be industry standard before companies learned they could maximized profits by keeping more control.
So while LLMs are good at writing walls of code, they do not produce good code, just good enough and sometimes it is wrong (here is where Rust can help a bit by checking that the program is sound, but for the most part you should also validate the logic).
The dream language for LLMs would be one that has some kind of proving that function inputs/outputs are what you expect (I think it's called proof theory, but it's not my area of expertise, so I could be wrong), you kind of can emulate this with new types[0].
[0] https://doc.rust-lang.org/rust-by-example/generics/new_types...
reply