10 ms·
Hey HN, OP here. Ink isn't really anywhere near in a shape for any kind of "public" or "production" use. It was a toy programming language I built to (1) learn
by thesephist 5y ago
Hey HN, OP here. Ink isn't really anywhere near in a shape for any kind of "public" or "production" use. It was a toy programming language I built to (1) learn how interpreters worked and (2) build some side projects of mine, back in 2019. Since then it's grown steadily to allow me to build more complex full-stack apps, like Monocle[0]. But the truth is many parts of the language are still rough and mostly meant for personal use. So I guess what I'm saying is — please be gentle, and hopefully there are some interesting ideas in there, or at the very least, it inspires someone else to go build toy languages of their own.
If you're curious about the personal history of the project, Ink was the subject of a recent talk I gave at GopherCon EU[1]
[0] https://github.com/thesephist/monocle https://github.com/thesephist/monocle
[1] https://youtu.be/nNQHw_RdXvg https://youtu.be/nNQHw_RdXvg
EDIT: If any mod is reading, the language is called "Ink" not "dot ink", though the domain is confusing. If the title could be modified that would be... swell.
- stoicjumbotron 5y agomonocle is insane! The results were blazing fast when I searched on your site: https://monocle.surge.sh https://monocle.surge.sh
- thesephist 5y agoIt's funny that lots of people comment on the snappy UI, because there isn't actually a lot of performance magic going on here -- the frontend just loads a few-MB large gzipped JSON inverted index and uses it to do all search and display locally in the browser using pretty normal unoptimized JavaScript. No WebAssembly or anything else fancy -- just JavaScript working through a large object graph. I think in general simple JavaScript applications can be remarkably fast these days if you're careful not to introduce unnecessary work and aware of the data structures you're using and profile + optimize judiciously :)
- RodgerTheGreat 5y ago"dot ink" might be better, given the name clash with Inkle Studios' interactive fiction language: https://www.inklestudios.com/ink/ https://www.inklestudios.com/ink/
- Torwald 5y agothere is also the DOT language for schematics from AT&T
- creativeembassy 5y agoYeah, came here expecting to hear about an update from Inkle Studios. (I checked them out anyway since Heaven’s Vault is one of the most kind-blowing games I’ve ever played, and they do have a new game out! Their ink language is worth a look.)
- Applejinx 5y agoI made the same mistake. I've been aware of Inkle Studios' work for some time now, and I thought it was an article on new developments in that.
- Kinrany 5y agoThere's also Parity's "ink!" for writing smart contracts: https://github.com/paritytech/ink https://github.com/paritytech/ink
- benjaminjosephw 5y agoThis is such a beautifully designed language. I came across Ink a few months ago and I was delighted with how small and concise it is. I can see this being a very interesting teaching language but it's also good to see that it has real life deployments too. Any thoughts about growing this beyond a personal project?
- thesephist 5y agoInk in its current form/design has a few fatal flaws, mostly around poorly conceived syntax and semantics. I didn't notice it in design because I was new to designing a PL, but noticed them as I wrote a lot of software in Ink. These are pretty fundamental to the language so re-doing them would constitute a hugely breaking version change, but those changes are necessary I think for me to be confident telling other people to try it and use it. Some of these "flaws" I found are: - I want real lists/arrays rather than Lua table-style data structures - I need either pipelines (->>, |>) or class-style methods for ergonomics - Testing and module system stories need a lot of work. - Syntax quirks makes some kinds of nice constructs syntactically impossible or verbose (e.g. calling a fn defined on an object requires parenthesis to override the default order of operations) I recently started hacking on a sort of "Ink 2.0" that preserves a lot of what I like about Ink (minimalism, lispy-ness, value rather than reference types, match expressions) without many of the design flaws. I might share and push that more publicly once I feel it's getting ready.
- skoodge 5y agoVery, very impressive. I just spent the last hour going down the rabbit hole of reading your blog and browsing through your different side projects (which I can only recommend to fellow HN readers, the programming language posted here really is just the tip of the iceberg). Creating your own programming language is remarkable in its own right, but then using it to build your own frontend & backend frameworks, search engine, productivity suite, 3D renderer and a bunch of other apps ist just impressive on another level. What I find most fascinating about your side projects is how you bring together a number of different skills in a way that looks almost effortless. Knocking out a search engine or a twitter reader as a throwaway learning project is one thing, but doing it over the course of little more than a week with a well designed UI in a way that ends up being useful in your own workflows? That not only takes some serious work but also the ability to correctly judge which directions not to go in, which can be one of the hardest aspects of developing software.
- thesephist 5y agoThanks! This comment made my day. Certainly knowing which directions not to go in is a big part of my efficiency, and something I'll point to whenever I get asked that question in the future.