I see my work as getting rid of the semantic layer. Layers are bad if theyβre lossy and one-way, which OLAP cubes certainly were.
I see my work as getting rid of the semantic layer. Layers are bad if theyβre lossy and one-way, which OLAP cubes certainly were.
Morel Rust
Morel is now in Rust! I just made the first release of the new Rust toolchain for Morel. Morel-Rust implements same language as Morel-Java. It's early days, but potentially performance will be much better.
blog.hydromatic.net/2025/10/23/m...
Thanks - I'll give that a read. Morel's terminal "compute" step is intended provide monoid comprehensions. And the "into" step does something similar. github.com/hydromatic/m...
I think I have found a way to remove aggregate functions from Morel. They become ordinary functions applied to the collection of elements gathered by the "group" operator (or a query on those elements if you want to pre-filter). github.com/hydromatic/m...
How we simplified the syntax of Morel's "order" step blog.hydromatic.net/2025/06/20/s...
Tragedy of the commons
I'm pleased to announce release 0.7 of Morel! This is a huge release, adding support for ordered/unordered data, set operators, and revised order syntax. A major rework of Morel's type inference algorithm delivered function overloading. blog.hydromatic.net/2025/06/08/m...
Java doesn't let parameters of lambdas overshadow local variables, but it does let them overshadow fields. I don't think the rule against overshadowing has ever helped me.
Thank you! I donβt really want to innovate in type theory, so followed the Wadler/Wehr/Odersky paper as closely as I could. But the result is good - you can write a query with a mixture of bags and lists, no type annotations, and it comes up with the right type.
We might both be right. Cocker is a great writer; Shatner is a great performer.
I have no idea whether it's fast. I assume you are competing with people who have sweated many weekends to squeeze out performance gains.
But the name 'dijkstralog' is definitely a keeper.
I guess some people are still buying Buicks and so Buicks get the modern tech, like adaptive cruise control, only five years after everyone else.
Not sure about that. Iβve seen Star Trek but never heard that cover.
Bigger question: will Jarvis Cocker be up there with the great English humorists, Oscar Wilde, Jake Thackray, Flanders & Swann?
It is telling that neovim started it for you. In the nineties, Windows nearly wiped out real operating systems, and notepad was the gateway drug. People loved double-clicking files to open them, but without the command line, lost their place in the universe.
Database tables are unordered, but functional programming languages work best over ordered lists. Which should Morel prefer? Both! We now have "list" and "bag" types, and full relational algebra over both. blog.hydromatic.net/2025/06/06/o...
Be honest, did you ever find a real-world use for SQL's "INTERSECT ALL" operator? Now we did! This post explains how you can use Morel's "intersect" to compute GCD (greatest common divisor). blog.hydromatic.net/2025/06/03/i...
Am I the only one who uses this git trick? To split a commit (in this case a8aee880), include it twice in the rebase script with a b (break) step in the middle. When rebase pauses, revert the parts of the commit that you don't want. They will be applied in the next commit.
Is it possible to do serious programming (such as solving Wordle) in a query language? If not, what's missing? The video of my DataCouncil talk is posted. www.youtube.com/watch?v=xwFs...
OK, I merged ordered/unordered queries. Next, an "unorder" step and an "ordinal" expression, so that you can more easily convert between lists and bags.
I'm getting ready to merge a big new feature to Morel - ability to query unordered data sets (bags, and database tables), ordered data sets (lists), and hybrid queries that mix the two. I'd appreciate feedback on whether the specification is clear. github.com/hydromatic/m...
I started a discussion about supporting SQL Pipe syntax in
Apache Calcite. Please chime in. lists.apache.org/thread/1ggd3...
Yes, it is.
I feel the same way as you. But I guess when I visit other peopleβs houses I realize that their definitions of βtidyβ and βcomfortableβ are different from mine. Abstraction is ick to a lot of people.
The other fascinating thing about spreadsheets is that the code is embedded in the data. You start off with pure data and can gradually add little bits of code.
Copying the code involves also copying the data. To apply the same code to a different data set, some kind of abstraction is required.
I wonder whether spreadsheets are attractive to non-programmers because they don't require abstraction. Abstraction is possible (the scripts and functions you mention) but is not the norm.
Spreadsheets are the one and only βlanguageβ that lets users solve their problems without hiring or βbecomingβ programmers. Since then the software folks have been trying (with limited success) to figure out how to make programming languages more like spreadsheets.
So much for DJT ending this war quickly. He literally can't get Putin to come to the negotiating table.
Should Morel be rewritten in Rust? The Rust data community is compelling, but moving to Rust might cause us to lose focus on Morel's bigger goals. I ponder the question in a blog post. blog.hydromatic.net/2025/05/11/r...
Peak power (the 200 hp, or 150kW, number you quote) isn't relevant. No one continuously accelerates for 100s.
Miles per kWh is more important. Aptera claims 10, my Taycan gets 3.
The key question is: How far can I drive on an 8 hour solar charge? Based on their numbers, Aptera gets 5 miles.
A big reason we have seen vendors like Firebolt and Databricks quickly add support is that pipe syntax is easy to implement. Some syntactic sugar, but downstream validation and algebra are unchanged.
Pipes are also close to the algebra. Note similarity to calcite.apache.org/docs/algebra...