frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

MAML – a new configuration language (similar to JSON, YAML, and TOML)

https://maml.dev/
35•birdculture•3h ago

Comments

ghthor•2h ago
Practically HCL, switch colons for equals in the key/value map
sedatk•2h ago
I didn't know about HCL. It looks great too.
antonymoose•2h ago
Working with Terraform, and needing to handle the complexity of our per-client deployments at work, I ended up creating a bash layer that takes N number of JSON files, performs a deep merge, and spits out a .tfvars file.

As you’ve said, all I did was fork a JSON.stringify function and swap colon for equals.

Anyone have a better solution they’ve worked with?

Edit: Why the downvotes? Terraform is using HCL? Are we talking a different HCL here?

zanecodes•15m ago
You can directly pass JSON to Terraform by putting it in a `.tfvars.json` file [1], as far as I can tell this has been supported since v0.5.0 which released in May 2015.

Terraform doesn't have a built-in deep merge function, but it will merge `.tfvars.json` files in the order given on the CLI, if you specify multiple `-var-file` arguments. For what it's worth, as of Terraform 1.8, you can also use functions from third-party providers like isometry/deepmerge [2] to perform a deep merge.

[1] https://developer.hashicorp.com/terraform/language/parameter... [2] https://registry.terraform.io/providers/isometry/deepmerge/l...

sjdrc•2h ago
Why?
sorrythanks•2h ago
question: why not make all strings multi-line, and drop a syntax/concept?
poly2it•2h ago
The author of this language seems to have responded with AI-generated arguments in response to all questions linked in the FAQ section. This does not inspire much confidence for the design of the language.

Really, I do not see the point of this. These configuration languages are just different syntaxes for expressing the same fundamental data, bearing the same semantics. It would be much more interesting to see a language which experiments with what is fundamentally representable, for example like how the Nix language supports functional programming and has functions as a first-class data type.

zzo38computer•2h ago
> These configuration languages are just different syntaxes for expressing the same fundamental data, bearing the same semantics.

This is my complaint too. However, they do add a proper integer type, which is the only thing that they do change with the data, as far as I can tell.

> It would be much more interesting to see a language which experiments with what is fundamentally representable

DER (and TER, which is a text format I made up to be compiled into DER (although TER is not really intended to be used directly in application programs); so TER does have comments, hexadecimal numeric literals, and other syntax features) does support many more data types, such as arbitrarily long integers, ASCII, ISO 2022, etc. My own extension to the format adds some additional types, such as a key/value list type and a TRON string type; the key/value list type is the only nonstandard ASN.1 type needed (together with a few of the standard ASN.1 types: sequence, real, UTF-8 string, null, boolean) to represent the same data as JSON does.

> for example like how the Nix language supports functional programming and has functions as a first-class data type.

For some applications this is useful and good but in others it is undesirable, I think.

sedatk•2h ago
> AI-generated arguments in response to all questions

There are currently two items in the FAQ. While the first one seems to be formatted with AI (I don't know if the arguments are AI generated though, how do you tell?), the other certainly doesn't look AI-generated: https://github.com/maml-dev/maml/issues/3#issuecomment-33559...

poly2it•1h ago
The person who opened the issue specifically complained about getting an AI-generated reply before closing it. If you view the edit history for the message, or the language author's second response, you will see that the reply was edited afterhand to not be transparently sloppy.
hgs3•1h ago
> It would be much more interesting to see a language which experiments with what is fundamentally representable

You might checkout my project, Confetti [1]. I conceived of it as Unix configuration files with the flexibility of S-expressions. I think the examples page on the website shows interesting use cases. It doesn't have a formal execution model, however, for that you might checkout Tcl or Lua.

[1] https://confetti.hgs3.me/

ajsnigrutin•2h ago
Why?

https://xkcd.com/927/ ?

Or is there any reason why to choose this over the others?

ocdtrekkie•1h ago
It's really risky to launch something by telling us three other more popular perfectly-serviceable alternatives in the headline.
sedatk•2h ago
I love this. It reminds me of PowerShell configuration files: https://ssg.dev/powershell-accidentally-created-a-nice-confi...

This is basically JSON for humans. YAML is harder to use due to significant indentation (easy to mess up in editors, and hard to identify the context), and TOML isn't great for hierarchical data.

It addresses all my complaints about JSON:

> Comments

> Multiline strings

> Optional commas

> Optional key quotes

I wish it was a superset of JSON (so, a valid JSON would also be valid MAML), but it doesn't seem to be the case.

EDIT: As I understand, HCL is very similar in terms of goals, and has been around for a while. It looks great too. https://github.com/hashicorp/hcl/

CBLT•2h ago
> TOML isn't great for hierarchical data.

My experience is different: TOML isn't obvious if there's an array that's far from the leaf data. Maybe that's what you experienced with the hierarchical data?

In my usage of it (where we use base and override config layers), arrays are the enemy. Overrides can only delete the array, not merge data in. TOML merely makes this code smell more smelly, so it's perfect for us.

sedatk•2h ago
I meant that the constant repetition of the hierarchical information could be cumbersome.
snarfy•8m ago
> I wish it was a superset of JSON (so, a valid JSON would also be valid MAML), but it doesn't seem to be the case.

What valid JSON would be invalid MAML?

zzo38computer•2h ago
They fix some of the problems with syntax of JSON but do not fix most of the problems with the data model; the only thing they do fix is that now there is a integer type. It still has the other problems, e.g. it still uses Unicode and still requires keys to be strings. For a configuration language, it can also be useful to have a application-specific data.
rglover•2h ago
Great name and a reasonable solution to the problems of JSON (can't speak for the implementation but the DX value of this is huge).
nikeee•2h ago
> Optional key quotes

Why are they optional? Why not just make them mandatory? So I don't need to guess which chars need quotes.

Edit: What most languages also lack: semantics on de-serialization. In the best case, I want to preserve formatting and stuff when the config is changed/re-committed programmatically.

sixo•1h ago
Because it's supposed to be pleasant for humans and quoting keys is the least pleasant part of jsom config files.
kennethallen•2h ago
Oh, joy
throwaway81523•2h ago
Oh yay, just what we need, ANOTHER one of these. Did the YA in YAML not already give a clue? Now there are 15 competing standards. Please make it stop. S-expressions were all that we wanted in the first place.
threatofrain•1h ago
> S-expressions were all that we wanted in the first place.

There are dozens of us!

echelon•1h ago
Yaml has terrible footguns. I'd rather we keep experimenting and find a new optimum.

Toml fixes some issues with shallow Yaml, but sucks at deeply nested data.

Maml looks nice at cursory glance. It seems to do nesting, numerics, comments, and strings right.

We're really close to having a great format. I'd like to see more attempts before accepting what we have as permanent.

AtlasBarfed•1h ago
You can find footgunless parsers
nfrmatk•2h ago
I wonder if the author has heard of KDL: https://kdl.dev/
imiric•1h ago
I was going to mention KDL as well.

I've been using it for niri recently, and it's quite nice.

childintime•1h ago
Looks sane.
Bolwin•46m ago
Only thing I don't like in kdl is the redundancy between arguments, properties and child nodes
didip•1h ago
This is super controversial for HN but I really really like YAML. The best “human readable” config language.
andrepd•1h ago
It's crazy complicated and full of uneccessary cruft. Hence stuff like strictyaml
typpilol•1h ago
I can't decide between yaml and json5/json

It seems like we will be forced to use both forever though

imiric•1h ago
I wouldn't say it's the most readable. Values can be ambiguous, YAML anchors are powerful but complicated, and using indentation to define structure means that you're never quite sure to which node something belongs to. And good luck hunting down weird errors if you mistakenly screw up the indentation.

YAML is also often abused as a DSL and for very large documents (Ansible, k8s, GH Actions, etc.), which makes it a pain to work with.

It's not so much that liking all of this is controversial. It's just a bad opinion. :p

emocin•1h ago
Hard pass
moogly•1h ago
So a worse version of HJSON[1]. I'm good.

[1]: https://hjson.github.io/

killerstorm•1h ago
I believe every ambitious programmer makes a configuration language at some point, but most either keep it to themselves.

When I was a teen I made something called Nabla:

  * XML-like syntax

  * Schema language
  * Compact binary representation
  * Trivial parser for binary representation 
  * Optionally, simple dynamic programming language on top

Initially made it for my 3d engine scene serialization format, but then used everywhere some non-trivial data format was needed (e.g. anything with nested data structures).
spooneybarger•1h ago
I guess I'm not an ambitious programmer.
RangerScience•1h ago
Am I missing something or is this literally just Ruby? Like - it doesn’t list Ruby as a supported language, but, it also looks like fully executable Ruby code?

(To be fair, I’m in favor of that)

Edit: Oh, no commas.

pilaf•1h ago
Also Ruby doesn't have triple quotation marks (""") string literals.
reactordev•1h ago
I just can’t anymore with this stuff. TOML, JSON, YAML, JSONC, HJSON, MAML…

I’ll just stick to environment vars or something code

quchen•1h ago
I love that in the end, everything still comes down to using bash (and env vars), because for all its footguns and strings, it's still the most reasonable choice when giving up on the zoo of newer formats. I expect it to outlive us all, like our unergonomic keyboards, and having to deal with null values.
reactordev•1h ago
I assume it will. Bash scripting has been around for a long time and isn’t going away anytime soon. It’s already outlived some folks.
rvitorper•1h ago
I like it. It solves a few issues I have with JSON. The quotes on the keys, the commas, etc. nice work. Keep them coming
quintu5•6m ago
When this was first posted a couple of weeks ago by the spec's author, I took it as an opportunity to see how quickly I could spin up an IntelliJ language plugin since the last time I worked on a language plugin was pre-GPT (Klotho Annotations - basically TOML inside of @annotations inside comments or string literals in a variety of host languages). Back then, it took a week for me to figure out the ins and outs of basic syntax highlighting with GrammarKit.

This time around, I worked with Claude Code and we basically filled in each other's knowledge gaps to finish implementing every feature I was looking for in about 3 days of work:

Day 1:

- Plugin initialization

- Syntax highlighting

- JSON Schema integration

- Error inspections

Day 2:

- Code formatter (the code style settings page probably took longer to get right than the formatter)

- Test suite for existing features

Day 3:

- Intentions, QuickFix actions, etc. to help quickly reformat or fix issues detected in the file

- More graceful parsing error recovery and reporting

- Contextual completions (e.g., relevant keys/values from a JSON schema, existing keys from elsewhere in the file, etc.)

- Color picker gutter icon from string values that represent colors (in various formats)

I'm sure there are a few other features that I'm forgetting, but at the end of the day, roughly 80-85% of the code was generated from the command line by conversing with Claude Code (Sonnet 4.5) to plan, implement, test, and revise individual features.

For IntelliJ plugins, the SDK docs tend to cover the bare minimum to get common functionality working, and beyond that, the way to learn is by reading the source of existing OSS plugins. Claude was shockingly good at finding extension points for features I'd never implemented before and figuring out how to wire them up (though not always 100% successfully). It turns out that Claude can be quite an accelerator for building plugins for the JetBrains ecosystem.

Bottom line, if you're sitting on an idea for a plugin because you thought it might to take too long to bootstrap and figure out all the IDE integration parts, there's never been a better time to just go for it.

Wireguard FPGA

https://github.com/chili-chips-ba/wireguard-fpga
325•hasheddan•7h ago•90 comments

Edge AI for Beginners

https://github.com/microsoft/edgeai-for-beginners
96•bakigul•4h ago•27 comments

Everything You Need to Know About [California] SB 79

https://mnolangray.substack.com/p/everything-you-need-to-know-about
11•bickfordb•48m ago•2 comments

Ask HN: What are you working on? (October 2025)

96•david927•4h ago•219 comments

Emacs agent-shell (powered by ACP)

https://xenodium.com/introducing-agent-shell
97•Karrot_Kream•4h ago•7 comments

Show HN: Baby's First International Landline

https://wip.tf/posts/telefonefix-building-babys-first-international-landline/
19•nbr23•4d ago•2 comments

Three ways formally verified code can go wrong in practice

https://buttondown.com/hillelwayne/archive/three-ways-formally-verified-code-can-go-wrong-in/
55•todsacerdoti•18h ago•27 comments

Bird Photographer of the Year Gives a Lesson in Planning and Patience

https://www.thisiscolossal.com/2025/09/2025-bird-photographer-of-the-year-contest/
52•surprisetalk•6d ago•10 comments

Macro Splats 2025

https://danybittel.ch/macro.html
373•danybittel•14h ago•60 comments

Database Linting and Analysis for PostgreSQL

https://pglinter.readthedocs.io/en/latest/
18•fljdin•4d ago•3 comments

3D-Printed Automatic Weather Station

https://3dpaws.comet.ucar.edu
27•hyperbovine•3d ago•5 comments

Tiny Teams Playbook

https://www.latent.space/p/tiny
69•tilt•4d ago•20 comments

Completing a BASIC language interpreter in 2025

https://nanochess.org/ecs_basic_2.html
50•nanochess•5h ago•3 comments

Free software hasn't won

https://dorotac.eu/posts/fosswon/
113•LorenDB•3h ago•133 comments

A whirlwind introduction to dataflow graphs (2018)

https://fgiesen.wordpress.com/2018/03/05/a-whirlwind-introduction-to-dataflow-graphs/
22•shoo•1d ago•0 comments

Constraint satisfaction to optimize item selection for bundles in Minecraft

https://www.robw.fyi/2025/10/12/using-constraint-satisfaction-to-optimize-item-selection-for-bund...
19•someguy101010•6h ago•8 comments

Show HN: I built a simple ambient sound app with no ads or subscriptions

https://ambisounds.app/
94•alpaca121•10h ago•44 comments

AdapTive-LeArning Speculator System (ATLAS): Faster LLM inference

https://www.together.ai/blog/adaptive-learning-speculator-system-atlas
189•alecco•16h ago•43 comments

Wall Street is worried the private credit bubble will burst

https://www.thetimes.com/business-money/economics/article/wall-street-first-brands-private-credit...
30•zerosizedweasle•1h ago•13 comments

Why are Big Tech companies a threat to human rights?

https://www.amnesty.org/en/latest/news/2025/08/why-are-big-tech-companies-a-threat-to-human-rights/
20•HotGarbage•1h ago•2 comments

The neurons that let us see what isn't there

https://arstechnica.com/science/2025/10/the-neurons-that-let-us-see-what-isnt-there/
31•rbanffy•5d ago•1 comments

oavif: Faster target quality image compression

https://giannirosato.com/blog/post/oavif/
17•computerbuster•8h ago•8 comments

Addictive-like behavioural traits in pet dogs with extreme motivation for toys

https://www.nature.com/articles/s41598-025-18636-0
141•wallflower•8h ago•94 comments

Schleswig-Holstein completes migration to open source email

https://news.itsfoss.com/schleswig-holstein-email-system-migration/
310•sebastian_z•10h ago•102 comments

Loko Scheme: bare metal optimizing Scheme compiler

https://scheme.fail/
146•dTal•5d ago•14 comments

A years-long Turkish alphabet bug in the Kotlin compiler

https://sam-cooper.medium.com/the-country-that-broke-kotlin-84bdd0afb237
70•Bogdanp•8h ago•71 comments

How I'm using Helix editor

https://rushter.com/blog/helix-editor/
180•f311a•9h ago•63 comments

Nostr and ATProto (2024)

https://shreyanjain.net/2024/07/05/nostr-and-atproto.html
114•sph•15h ago•63 comments

Rcyl – a recycled plastic urban bike

https://rcyl.bike/en/the-bike/
25•smartmic•5h ago•24 comments

HP1345A (and wargames) (2017)

https://phk.freebsd.dk/hacks/Wargames/
36•rbanffy•5h ago•2 comments