Hacker News new | past | comments | ask | show | jobs | submit | more acarabott's comments login

I think you would like http://thi.ng/hdom


I interned with the PI behind Ohm (Alex Warth) and one of his reasons for using the browser was simple:

“If I send someone an executable, they will never download it. If I send them a URL, they have no excuse.”


We are talking about a compiler here.

If someone interested in a compiler doesn't download it, it's not a excuse, it's a filter. Or a warning sign.


You know all those jokes that people like Linus make about Real Programmers—the ones who have hair on their chests, etc—you know those are all jokes, right? Jokes in the laughing-at-them sort of way, the way Colbert did it—not something that you're supposed to unironically buy into.

> If someone interested in a compiler doesn't download it, it's not a excuse, it's a filter. Or a warning sign.

You're so invested in gatekeeping that you're confusing the point of research with technofetishism.

Here's what Joe Armstrong had to say in "The Mess We're In":

"I downloaded this program, and I followed the instructions, and it said I didn't have grunt installed! [...Then] I installed grunt, and it said grunt was installed, and then I ran the script that was gonna make my slides... and it said 'Unable to find local grunt'."

Looks like someone needs to go dig up Joe and let him know that the real problem is that there was a mistake in letting him get past the point where he was supposed to be filtered out.


> doesn't download it, it's not a excuse, it's a filter

If it's a decently large project, sure. But if it's a small project with only a couple contributors who I've never heard of? There's the potential for that to be hiding malicious code. Plus the potential complexity of getting a project that's only ever been built on (say) 2 computers to successfully compile and run on my system. Plus figuring out whatever build system and weird flags they happen to use. And potentially wrangling a bunch of dependencies.

All that just to take a quick look at a language that might not actually be of interest to me in the end. The browser offers huge benefits here - follow a link and play around in a text box. It just works. (This is also why I use Godbolt - I don't want to bother with a Windows VM or wrangle ten different versions of Clang and GCC myself.)


Spoken like someone who has never taught real students!


I mean it's JavaScript, I don't think it's intended for you to write C compilers in it - but for compile-to-JS languages, it's a real asset to be able to run it in the browser, although more and more that can be done with WebAssembly as well. However, look at the project listed as using it - it may not even be for web languages, but just projects that need to parse something.


Tydlig is the calculator app that has been the most useful re-design/re-imagining of a calculator for me. Somewhere between a calculator and a spreadsheet, with a nice UX.

http://tydligapp.com/


Adding a version field can be useful to avoid this. Particularly if your entire state is stored in one object.


Yes, personally I'm (generally) against version fields, however in the OPs meaning as I read it, if you add the version field it breaks the value (the version field invalidates value comparison for equality) and therefore will end up adding complexity. This may go contrary towards the topic, as OP clearly states major goal is to reduce complexity.

So adding a value and make it (inherently) incompatible in the value system breaks the benefits of a couple of the six points outlined in the OP (given the version field suggestion).

Just saying. Your mileage may vary. But again, introducing version attributes is most of the time (and that is a warning) _increasing_ complexity.

One of the articles referred to by the op is [out-of-the-tar-pit] which is fundamentally about complexity and WTF it is paradigms, on syntax level and language support. A version field is a counter on higher level on top of anything of it (and therefore in the off-topic domain already to a larger extend) and also ruining any of the value comparison ability (adding the version field exploits the value inequality in DO as per OP making it part of the versioning system) introducing meta-date and IMHO ruining DO.

If you need to encapsulate state to take a short-cut, introduce state. Don't ruin value(s).

Just my 2 cents.

(/edit: better than version attributes are just any attributes as they work towards both directions of change. not that straight forward to deal with at first, but offering more flexibility. it would be that some older value handling functions are incomplete [but compatible] and new ones just fitting. similar, namespacing for attributes are orthogonal as well [as in closure, depends language at task supports them] while version fields are imposing one general forward direction only, IMHO only for last resort if any other kind of consistency is already considered lost beyond recognition [most often this is _not_ true in computer systems, it's just that everyone involved is too f-c-k'ing lazy to take care and then blames others for anything but getting the job done my/your-self. when in doubt ask operations, they may tell you if they have time])

[out-of-the-tar-pit]: https://raw.githubusercontent.com/papers-we-love/papers-we-l... Moseley/Marks 2006


Agree. But then every function using the map has to query the versiom field?


Who says there is only one version field?



Lila, the sequel to Zen... had an even bigger impact on me.

I also found some of the ideas easier to take away and hold onto.


This is great!

I especially like that you've included a share mechanism. I built an audio dsp playground before, but didn't spend enough time on it to provide that.

Are you going to add a discovery page to browse people's creations?


Thanks! It's definitely a possibility, but first I would like to see how people use it. Not sure if it should be an hand picked mechanism (easy but time expensive) or an automatic one - people tag their creations, possibly vote them, and the most popular are shown (harder but once it's there it just works on its own)


Strange, as this is accounted for: https://github.com/acarabott/audio-dsp-playground/blob/maste...

OS / Chrome version? Were you clicking the start button or using the key command?


Great idea! Have implemented it, refresh and check it out.


Could you also try adding a polyfill for non-Chrome browsers? e.g. https://github.com/jariseon/audioworklet-polyfill


Had a crack at it but it throws NotSupportedException in both Firefox and Safari. There are also some parts that don't conform to the spec and break. Filing an issue...


I think this is a great idea as part of a learning tool, being able to simultaneously visualise a musical idea on a score, in guitar TAB, woodwind fingering, piano roll etc.

I've got a plan on the backburner to do something like this using Ohm https://ohmlang.github.io/


Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: