HackerTrans
TopNewTrendsCommentsPastAskShowJobs

burntcaramel

400 karmajoined 12 лет назад

Submissions

Agents of Our Own Illiteracy

royalicing.com
2 points·by burntcaramel·позавчера·0 comments

Rise of the Gen-Z Luddite

economist.com
3 points·by burntcaramel·3 дня назад·0 comments

Carson Block: If you thought the global financial crisis was bad

economist.com
4 points·by burntcaramel·10 дней назад·0 comments

Death by a Thousand Comments

royalicing.com
39 points·by burntcaramel·20 дней назад·4 comments

Oil markets are still in La-La land

economist.com
6 points·by burntcaramel·2 месяца назад·0 comments

Don't use escaping closures in SwiftUI

rensbr.eu
1 points·by burntcaramel·5 месяцев назад·0 comments

Levers of Light

royalicing.com
2 points·by burntcaramel·6 месяцев назад·0 comments

What if the $3T AI investment boom goes wrong?

economist.com
7 points·by burntcaramel·10 месяцев назад·1 comments

comments

burntcaramel
·19 дней назад·discuss
Thanks for your honest thoughts. It bothers me because there’s many places to check all the time. It seems every tool has an inbox and wants to send me notifications about it. I have to read them all to keep up to date, and my job becomes piecing them all together into a cohesive story just to make sense of what’s going on at work.

It can feel super useful as an engineer to find a line of code in PR or a sentence in a Notion document, and then add your feedback directly there. But then I find the conversation half happens on Slack, and then continues in a Zoom meeting, and then the comment on the Notion doc is out of date. So I have to keep track of all of this in my head with which piece of feedback is stale and which one is still relevant, and then reconcile that with feedback from others.

It’s assumed that we need another tool, something that can do the job of retrieving all of these comments and reconciling them into a total order. My article asks whether reconciling decisions into a total order is actually part of the job of leadership. If we defer to AI to make sense of what we’re saying and deciding then we risk the people and the org becoming weaker from lack of clarity.
burntcaramel
·в прошлом месяце·discuss
> if you can use AI to achieve full test coverage, are there actual benefits in static typing for coding agents?

Full test coverage doesn’t tell you if the tests behave correctly. So you could prompt an AI agent to write 100% test coverage where those tests could be exercising all code paths yet contribute 0% to the story of what the code does. You need human understanding of what the desired contract is that the tests check.

Imagine a contract lawyer who blindly signs any contract that they are given: they aren’t doing their job. They ought to have an idea in mind of what their client’s goals and limits are so they can determine if a given contract fulfils those needs.

Types are a declarative contract, so they can be a lighter yet more limited way to enforce a contract. The compiler can verify if all the declared types across the program agree with each other. This is especially helpful with refactoring, such as ensuring the adding a field has been rolled out everywhere.

Types aren’t to be just checked by the compiler, but checked by the human authors too. That’s why explicit type signatures are valuable, especially if they are kept intelligible. They encode the different variations in state and possible branching on that state. So you can whittle your types down as a way of whittling the solution down to be more focused. The problem in your head is reflected in the types, and any simplifications in the types then simplify the problem in your head, and any tests derived from that understanding.
burntcaramel
·2 месяца назад·discuss
It definitely wasn’t “working great”, I’ve now fixed a bug in the event system that was causing loops. The performance should be improved now.

Yes, accessibility is a key concern of mine, I’m keen to explore html-in-canvas as a way to have an accessibility tree combined with a rendered interaction.

I’m personally at a stage where React and CSS have pushed to DOM to extremes of complexity and difficultly in optimization that I desire simpler ARIA-based HTML combined with custom rendering. I’m hopeful that it will be easier to test, lighter for users, and faster for everyone.
burntcaramel
·2 месяца назад·discuss
Thanks, I had shipped a bug in the event system. The performance should be much improved now.
burntcaramel
·2 месяца назад·discuss
I’ve found canvas + WebAssembly works great together!

Here’s an example of Sudoku running in WebAssembly (it was vibe coded in Zig) and then rendered to canvas. The interface between the wasm module and the browser is function calls for keyboard and mouse events, and then another that renders to a pixel buffer to copy to the canvas.

https://qip.dev/play-sudoku

And this approach also works for simple forms, such as a URL input that gets turned into a QR code. Again the interface is simple, here converted a URL into SVG markup. As you type in the input we call the WebAssembly render function again.

https://qip.dev/qr
burntcaramel
·2 месяца назад·discuss
Exactly, this is why I’m using AI to write C or Zig that compiles to WebAssembly.

The purpose of a scripting language was to make authoring easier, but now it’s mostly a middle layer. There’s still getting the investment of a great standard library to keep you on track, but if you pick parts to make modular wasm and which parts to use reliably, proven code you can find a good balance.

For qip I chose to use Golang as its standard library is batteries-included with fs & networking.

Then everything else is AI-coded wasm plugins.

https://github.com/royalicing/qip
burntcaramel
·3 месяца назад·discuss
In a world of AI coding it seems like we can create or copy almost anything. So after some denial I’m thinking let’s embrace that and bring back “view source”.

qip lets you write tiny WebAssembly modules in Zig or C and compose them together. The modules have a simple input -> output interface and cannot access anything else, no file system, no network, no env vars, not even the time. You chain modules together so the output of one becomes the input of another e.g. there’s a CommonMark module that converts to markdown-to-html. There’s a file-based router that lets you serve a website with these same modules.

I want these modules to be open and shared, so you can decide to have a `/view-source` page that lists all the wasm modules and all the source content (markdown, images, etc) and source code (zig, c). So you can choose to fork the ingredients of the qip website if you like: https://qip.dev/view-source

I chose wasm because it’s fast, runs anywhere (browser/server/native), and has a strong yet lightweight sandbox. I’m working on collaborative web hosting that I hope will bring back web 1.0 vibes.

https://github.com/royalicing/qip
burntcaramel
·3 месяца назад·discuss
Can we ask virtual Mark “What’s the strategic thinking behind making a virtual version of yourself?”
burntcaramel
·3 месяца назад·discuss
Previously Anthropic subscribers got access to the latest AI but it seems like there’s a League of Software forming who have special privileges. To make or maintain critical software will you have to be inside the circle?

Who gates access to the circle? Anthropic or existing circle members or some other governance? If you are outside the circle will you be certain to die from software diseases?

Having been impressed by LLMs but not believing the AGI hype, I now see how having access to an information generator could be so powerful. With the right information you can hack other information systems. Without access to the best information you may not be able to protect your own system.

I think we have found the moat for AI. The question is are you inside or outside the castle walls?
burntcaramel
·4 месяца назад·discuss
Can optimize in theory, or are you saying this is what JavaScript engines do today?
burntcaramel
·4 месяца назад·discuss
Thank you, I stand corrected! I must have been tired originally reading this.
burntcaramel
·4 месяца назад·discuss
The allocation of each object still has overhead though, even if they all live side-by-side. You get memory overhead for each value. A Uint8Array is tailor-made for an array of bytes and there’s a constant overhead. Plus the garbage collector doesn’t even have to peer inside a Uint8Array instance.
burntcaramel
·4 месяца назад·discuss
WebAssembly is particularly attractive for agentic coding because prompting it to write Zig or C is no harder than prompting it to write JavaScript. So you can get the authoring speed of a scripting language via LLMs but the performance close to native via wasm.

This is the approach I’m using for my open source project qip that lets you pipeline wasm modules together to process text, images & data: https://github.com/royalicing/qip

qip modules follow a really simple contract: there’s some input provided to the WebAssembly module, and there’s some output it produces. They can’t access fs/net/time. You can pipe in from your other CLIs though, e.g. from curl.

I have example modules for markdown-to-html, bmp-to-ico (great for favicons), ical events, a basic svg rasterizer, and a static site builder. You compose them together and then can run them on the command line, in the browser, or in the provided dev server. Because the module contract is so simple they’ll work on native too.
burntcaramel
·5 месяцев назад·discuss
> We said the runtime asks the OS for large chunks of memory. Those chunks are called arenas, and on most 64-bit systems each one is 64MB (4MB on Windows and 32-bit systems, 512KB on WebAssembly).

Incorrect. You ask the OS for pages. (Golang does internally appear to manage its heap into “arenas”.) On WebAssembly the page size is 64KiB. Window 64-bit it’s 4KiB, Apple Silicon 16KiB, Linux x86_64 4KiB.
burntcaramel
·5 месяцев назад·discuss
If people who wore Google Glass without respect for others were Glassholes, perhaps people who unleash their OpenClaw instance onto the internet without respect are Clawholes?
burntcaramel
·5 месяцев назад·discuss
I’m working on qip, a cli for running fast sandboxed WebAssembly modules.

https://github.com/royalicing/qip

We have LLMs that generate code but that code should be untrusted: perhaps it overflows or tries to read ssh keys. If we aren’t reviewing code closely a major security hole could be on any line.

And since LLMs can generate in whatever language, it makes sense for them to write fast imperative code like C or Zig. We don’t have to pick our favorite scripting language for the ergonomics any more.

So qip tries to solve both problems by running .wasm modules in a sandbox. You can pipe from other cli tools and you can chain multiple modules together. It has conventions for text, raw bytes, and image shaders, with more to come.

I am excited by the capabilities of probabilistic coding agents, but I want to combine them deterministic code and that what these qip modules are. They are pure functions with imperative guts.
burntcaramel
·6 месяцев назад·discuss
WebAssembly Text Format (wat) is fine to use. You declare functions that run imperative code over primitive i32/i64/f32/f64 values, and write to a block of memory. Many algorithms are easy enough to port, and LLMs are pretty great at generating wat now.

I made Orb as a DSL over raw WebAssembly in Elixir. This gives you extract niceties like |> piping, macros so you can add language features like arenas or tuples, and reusability of code in modules (you can even publish to the package manager Hex). By manipulating the raw WebAssembly instructions it lets you compile to kilobytes instead of megabytes. I’m tinkering on the project over at: https://github.com/RoyalIcing/Orb
burntcaramel
·6 месяцев назад·discuss
Don’t forget people’s minds.

- Which brands do people trust? - Which people do people of power trust?

You can have all the information in the world but if no one listens to you then it’s worthless.
burntcaramel
·6 месяцев назад·discuss
https://royalicing.com/ — I write about WebAssembly, design, and thoughts about writing software
burntcaramel
·6 месяцев назад·discuss
This is why Steve Jobs demoed software. Watch when he unveils Aqua, there’s a couple of slides of the lickable visuals and then he sits down and demos it. He clicks and taps and shows it working. Because that’s what you the user will do.

He’ll show boring things like resizing windows because those things matter to you trying and if he cares about resizing windows to this degree then imagine what else this product has.

Apple today hides behind slick motion graphics introductions that promise ideal software. That’s setting them up to fail because no one can live up to a fantasy. Steve showed working software that was good enough to demo and then got his team to ship it.