HN user

vaughan

767 karma

Programmer

vaughanhackernews at gmail

Posts33
Comments300
View on HN
news.ycombinator.com 1y ago

Ask HN: Code should be stored in a database. Who has tried this?

vaughan
22pts47
news.ycombinator.com 3y ago

Ask HN: Is there a code editor that shows multiple files in a single pane?

vaughan
2pts3
news.ycombinator.com 3y ago

Ask HN: Would you be interested in a tool to manage your local dev dir?

vaughan
1pts0
news.ycombinator.com 3y ago

Ask HN: Index of AI Resources?

vaughan
2pts0
news.ycombinator.com 3y ago

Ask HN: Alternatives to organizing code in files and folders?

vaughan
8pts23
news.ycombinator.com 3y ago

Ask HN: Is there a Wallaby.js equivalent for Rust?

vaughan
1pts0
news.ycombinator.com 3y ago

Ask HN: Thinking about going from React back to Backbone?

vaughan
2pts1
vjpr.medium.com 3y ago

Programming Should Be Visual

vaughan
2pts3
scholar.harvard.edu 3y ago

A Note on Distributed Computing (1994) [pdf]

vaughan
88pts42
changelog.com 3y ago

Qwik is a new kind of web framework

vaughan
2pts0
news.ycombinator.com 4y ago

Ask HN: Best JavaScript plugin system you have seen?

vaughan
1pts0
news.ycombinator.com 4y ago

Ask HN: Best Programming Podcasts?

vaughan
1pts0
news.ycombinator.com 4y ago

Is the future of web about the client or the server?

vaughan
2pts1
news.ycombinator.com 4y ago

Ask HN: Best places to discuss database internals?

vaughan
6pts1
news.ycombinator.com 4y ago

Ask HN: What does the future hold for Electron?

vaughan
4pts3
news.ycombinator.com 4y ago

Ask HN: Thoughts on a TypeScript Database?

vaughan
5pts1
news.ycombinator.com 4y ago

Ask HN: Where do you research tools/libraries to use for your projects?

vaughan
10pts4
news.ycombinator.com 5y ago

Ask HN: Is there a way to efficiently subscribe to an SQL query for changes?

vaughan
200pts104
vjpr.medium.com 5y ago

Don’t we all just want to use SQL on the front end?

vaughan
148pts179
vjpr.medium.com 5y ago

The Multi-Monorepo

vaughan
2pts0
news.ycombinator.com 6y ago

Ask HN: Is there a markup language for video editing

vaughan
2pts2
news.ycombinator.com 6y ago

What is the best and right way to open-source packages from a company monorepo?

vaughan
46pts24
news.ycombinator.com 6y ago

Ask HN: What tools do you use to do code reviews?

vaughan
2pts1
news.ycombinator.com 12y ago

Ask HN: Is there a place I can stay with other entrepreneurs in London?

vaughan
1pts0
github.com 13y ago

Monaco font with a bold style

vaughan
3pts0
news.ycombinator.com 14y ago

Ask HN: What is your development setup?

vaughan
13pts16
buzz.blogger.com 14y ago

Google Blogger introduces Dynamic Views

vaughan
3pts0
vaughan.io 14y ago

Mobile social lag

vaughan
1pts0
vaughan.io 14y ago

Frictionless fitness monitoring

vaughan
2pts0
vaughan.io 14y ago

Google designers don’t care about 640 pixels

vaughan
2pts0

For me this is the perfect timing. Just this week I was fed up with my iPhone (and most of the Apple ecosystem) and bought a Google Pixel 10 Pro.

It’s very hard to do tags in the physical world. You need to stick different colored post-its to things and do a full table scan (with your eyes) any time you want to process all docs of one tag. Or you cluster things together depending on similar colors.

Hierarchy is easy in the physical world.

But what is crazy is since the dawn of computing we can store data however we want and project it however we want…and yet we still use hierarchy for file storage…like we still just have a filing cabinet of manilla folders.

My dream is to make everything visualizable at runtime. I think all of computing becomes very simple and much less complex if we can do this.

We are visualizing things in our head already. And any explanation of anything in computing is a diagram. But we have zero diagrams when coding.

Just dynamically instrument all code to send messages to a GUI.

Something cool however is you can actually build the open-source WebKit browser engine yourself and make closed-source Safari use your locally built version.

Interesting read. It’s amazing more people don’t use runtime variable value annotation tools like Wallaby.js, or a debugger.

So much time spent mentally remembering what is in what variable based on the naming.

I often find myself adding “// e.g. foo, bar” to show example cases for some lines of code…like recedes for example. Wallaby.js is a godsend for this though.

This is why we need better tools like projectional code editors.

There should be an editor toggle to inline functions temporarily.

No more bouncing.

The real issue is plain text, and files and folders.

File names, folder names/hierarchies, function names, class names are all _arbitrary_. You could randomize them all and your code would still run.

What is not arbitrary is: the call graph, and the data flow/dependecy graph.

Every line/block of code could be wrapped in a function.

And classes...your class methods are just functions with an implicit parameter of an object of a certain type...and practically, not the entire object, just the parts it that it actually uses in the function body.

So if you just focus on what your functions do, the boundaries and groupings of your code will become self-evident.

Bun v0.8 3 years ago

I think it’s a project that’d take 5+ years

What are the major difficulties you see? Is this estimate for supporting all existing TS code...or as the OC said, a new language with only newly written code.

The way I naively think about it is to imagine transpiling TypeScript code to Zig code. How far could that take you?

And if you restricted how much dynamic-y stuff you could do...maybe with a linter. I always get the feeling that 90% of the business logic (sequence, selection, iteration) is that same between languages whether they are interpreted or compiled, with just some memory management stuff added on top - which can be abstracted anyway.

I thought about building a transpiler from TypeScript to other languages as a learning tool.

It would also scaffold out the project structure for each language.

The idea would be not to allow all code, but focus on high-level intent as simply as possible using primarily builtin language and platform primitives.

Could even use the name of a function and some comments to express the intent, which then gets transpiled in the other language, without even looking at the implementation in TypeScript. Could probably lean on AI a lot.

I’d love to have “one obvious way” to do certain things in each language. This Pythonic rule is violated so often in every language. A lot of programming is the same thing but we all do it slightly differently. Just take a look at some stack overflow answers for really simple stuff.

Code should be more like a children's popup book with little tabs to pull on to make things move around.

When I look at a foreign piece of code I want to see all the runtime values inline in my editor and a time-travel debug session with a slider and a stack trace of the function under my cursor, and a trace of the _value_ under my cursor showing every transform that happened to it, and all common data structures and their algorithms visualized and animated in appropriate diagrams. And available in all our tools instantly - like when viewing code on Github.com.

I really think you could figure out what is going on with most code if you simply move a slider back and forth and watch everything that changes. And it would be much more fun with a physical knob to turn (e.g. https://www.tourboxtech.com/ or https://www.binepad.com/product-page/bnr1-v2). Knob-driven development :D

There's many more akin projects listed in https://github.com/yairchu/awesome-structure-editors/blob/ma...

Awesome link! How did you find that link btw? I feel like I scoured the web so many times on this topic and missed all of this stuff.

I can't wait fast enough for these ideas to reshape how we deal with programs and build stuff.

Same here. I feel like we can't leave plain text completely behind though. There has to be some two-way sync to the structured model.

I think we need to liberate ourselves from the "folders of files of text" way of coding.

We really shouldn't ever have to think about where to put things.

Each function should be stored in its own text file.

Then these files are indexed in a database.

Then they can be tagged: manually or by parsing its AST / types.

Then using the tags you can organize the code any way you want.

Better yet, maintain a dependency graph to see all callers and callees, and view code like that.

Even better yet, instrument your code, and at runtime let the stack trace determine the organization of your code in your editor.

Some problems I can see though is that humans seem to like things to belong in one place. That's why folders win over tags usually. But...your existing folder/file structure of code is simply one "view" from the database. Some people use module names, some people use file types (components, helpers, etc.)

Existing IDE's and text editors (and runtimes) are holding us back!

Prior art: SmallTalk Browser, Intentional Programming, Literal Programming.

I had an idea to trace all usages of values. So you can see the entire history of how a value came to be. All the places it went. All the transformations too.

Also, I think code should be written so that it can be easily visualized. Nothing else! Code is for humans to read, not machines - that's what compilers are for.

Code instrumentation is usually for code coverage...but for debugging it can be great too.

Someone needs to design a programming language and an IDE (and possibly a new OS too) with great debugging as the primary goal. Debugger and IDE support is always just thrown on later in every new language these days.

"Omniscient debugging" as seen in https://pernos.co/ is the holy grail. Time-travel debugging would also be great.

People are far too obsessed with static type checking. A lot of this time would be better spent invested in live debugging tools.

When I'm editing my code I want to see exactly what _value_ each variable contains, the type really doesn't matter so much. Wallaby.js/Console.ninja is a great example of this.

Good debugging, especially deterministic record/replay is usually complicated by the OS. I often wonder what an OS would look like if designed with debugging as a top priority.