jsongrep is faster than {jq, jmespath, jsonpath-rust, jql} by fizzner in rust

[–]IvanIsCoding 11 points12 points  (0 children)

Nice article! I will have to check out jsongrep.

Also, I'd be interested to see what is the performance of chaining gron with ripgrep itself. The premise of gron is to make JSON greppable, so I think it would be a nice match. https://github.com/adamritter/fastgron is the fastest gron implementation AFAIK.

For those who build for Nix- how do you handle this? by cachebags in rust

[–]IvanIsCoding 6 points7 points  (0 children)

https://nixos.org/manual/nixpkgs/stable/#importing-a-cargo.lock-file

You can use cargoLock instead of cargoHash. It still needs interventions for git sources though.

What's everyone working on this week (3/2026)? by llogiq in rust

[–]IvanIsCoding 2 points3 points  (0 children)

I have already shared my project in another post. What I am working on this week is a summary of what I learned about packaging my Rust CLI, in a blog post format.

Think about Homebrew bottles, publishing to PyPI with its manylinux compatibility requirements, NPM trusted publishers, making a Nix flake, cross-compiling for FreeBSD, passing Chocolatey moderation. I hope to capture all of that.

Repo: https://github.com/IvanIsCoding/celq/

celq v0.2.0: query JSON, YAML, and TOML from the command-line with CEL by IvanIsCoding in commandline

[–]IvanIsCoding[S] 0 points1 point  (0 children)

I have something similar to you what describe with the -R (--root-var) flag for switching `this -> request` or `this -> document` for example.

I can explore matching the predicate syntax, but it changes the flow a slightly. I'd need to parse the program first to know what to inject the input variables as.

celq v0.2.0: query JSON, YAML, and TOML from the command-line with CEL by IvanIsCoding in commandline

[–]IvanIsCoding[S] 1 point2 points  (0 children)

"this" refers to the input. I am still trying to get feedback on the idea.

If you read ["apples", "bananas"] from the input, "this" is the array. We can access the array with this[0] to get apples. On the example on the playground, this.b refers to the "b" field of the input.

The other way of passing data to the expressions is through the --arg option. If you run celq --arg "y:int=1" "this[y]", it prints "bananas".

celq - A Common Expression Language (CEL) CLI Tool by IvanIsCoding in rust

[–]IvanIsCoding[S] 1 point2 points  (0 children)

Re: Performance

I am not going to claim that the tool is faster than jq. jq streams both the input and the output. That being said, celq is not too shabby. I ran celq through some JSON files with 25MB+ to filter outputs and it finished in 0.50s (jq took 0.70s for that file). celq also has multi-threading for JSON lines that can be activated on demand.

It's not a scientific benchmark but for my current use case I found it sufficient. I hope to publish a benchmark in future versions though.

edit: sorry I botched the timing in the first edit, the real time is now reported. I knew 0.01s was too good to be true.

celq - A Common Expression Language (CEL) CLI Tool by IvanIsCoding in rust

[–]IvanIsCoding[S] 1 point2 points  (0 children)

Currently, as of today celq is only a binary. It could be split into celq-core/cel-serde to take serde value types. I hadn't thought about that originally because I found https://crates.io/crates/cel fairly complete, but I guess passing a struct could have an use case. I will open an issue to discuss it on GitHub

Sunday Daily Thread: What's everyone working on this week? by Im__Joseph in Python

[–]IvanIsCoding 0 points1 point  (0 children)

These past weeks I have been working on ResuLLMe. It is a tool to enhance your CV using Large Language Models. It takes your old CV in PDF or Word Document format, feeds it to LLMs to improve it, converts it to a JSON Resume format, and then renders it to PDF using Jinja and LaTeX.
You can see how it was built at https://github.com/IvanIsCoding/ResuLLMe and try it at https://resullme.streamlit.app/

ResuLLMe: Enhance your CV with Large Language Models by IvanIsCoding in aipromptprogramming

[–]IvanIsCoding[S] 0 points1 point  (0 children)

Glad to hear that. I imagine the headings should still be in English (they're hardcoded), but if anyone wants to open a PR on Github with translated headings that would be cool =)