Julian Hyde's Avatar

Julian Hyde

@julianhyde.bsky.social

On a mission to tame data. (Ex-Google, always ASF, working on something new.)

518 Followers  |  67 Following  |  238 Posts  |  Joined: 14.11.2024  |  1.8039

Latest posts by julianhyde.bsky.social on Bluesky

Morel Rust

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...

23.10.2025 19:23 β€” πŸ‘ 9    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Add syntax for monoid comprehensions Β· Issue #69 Β· hydromatic/morel Today a from ... group ... [compute ...] query returns a list. If the group key is empty (i.e. group is immediately followed by compute, or group marks the end of the from expression) then the list...

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...

22.06.2025 20:34 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Syntax for aggregate functions Β· hydromatic morel Β· Discussion #292 In SQL, aggregate functions are not even functions. A function takes an argument and returns a result, and SQL's aggregate functions are applied to a collection that is implicitly created for each ...

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...

22.06.2025 20:25 β€” πŸ‘ 4    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Sorting on expressions Morel’s design philosophy of β€œeverything is an expression” has transformed how we think about queries, making them more composable and flexible than traditional SQL. One stubborn holdout was the order...

How we simplified the syntax of Morel's "order" step blog.hydromatic.net/2025/06/20/s...

21.06.2025 01:07 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

Tragedy of the commons

19.06.2025 20:21 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Morel release 0.7.0 I am pleased to announce Morel release 0.7.0, just one month after release 0.6.0.

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...

09.06.2025 04:42 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

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.

08.06.2025 18:01 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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.

08.06.2025 07:14 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

We might both be right. Cocker is a great writer; Shatner is a great performer.

07.06.2025 22:40 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

07.06.2025 22:06 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

07.06.2025 19:06 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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?

07.06.2025 18:34 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

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.

07.06.2025 18:25 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Ordered and unordered data Despite what the relational model says, some data is ordered.

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...

07.06.2025 01:08 β€” πŸ‘ 11    πŸ” 4    πŸ’¬ 1    πŸ“Œ 0
Preview
INTERSECT ALL, EXCEPT ALL, and the arithmetic of fractions SQL’s INTERSECT ALL and EXCEPT ALL operators rarely get attention, but they elegantly solve a classic math problem. The problem is computing the greatest common divisor (GCD) and least common multiple...

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...

04.06.2025 03:40 β€” πŸ‘ 3    πŸ” 3    πŸ’¬ 0    πŸ“Œ 0
Post image

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.

03.06.2025 19:59 β€” πŸ‘ 5    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0
More Than Query  Future Directions of Query Languages, from SQL to Morel
YouTube video by Data Council More Than Query Future Directions of Query Languages, from SQL to Morel

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...

03.06.2025 19:58 β€” πŸ‘ 6    πŸ” 2    πŸ’¬ 0    πŸ“Œ 0

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.

22.05.2025 23:24 β€” πŸ‘ 2    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0
Preview
Ordered and unordered queries Β· Issue #273 Β· hydromatic/morel In SQL, tables are inherently unordered, and query results remain unordered until explicitly sorted with an ORDER BY clause. In contrast, functional programming languages like Standard ML -- and by...

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...

21.05.2025 18:52 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 1

I started a discussion about supporting SQL Pipe syntax in
Apache Calcite. Please chime in. lists.apache.org/thread/1ggd3...

19.05.2025 17:54 β€” πŸ‘ 6    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

Yes, it is.

19.05.2025 06:21 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

18.05.2025 20:17 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

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.

18.05.2025 19:05 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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.

18.05.2025 19:00 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0

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.

18.05.2025 17:15 β€” πŸ‘ 8    πŸ” 0    πŸ’¬ 1    πŸ“Œ 1

So much for DJT ending this war quickly. He literally can't get Putin to come to the negotiating table.

16.05.2025 17:30 β€” πŸ‘ 3    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Preview
Should Morel be rewritten in Rust? There are many excellent and innovative projects happening in the Rust data ecosystem. I am frequently asked whether Morel should be one of them. Thinking about this question gave me some insights int...

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...

12.05.2025 02:20 β€” πŸ‘ 6    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

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.

09.05.2025 16:38 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Algebra

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...

08.05.2025 18:21 β€” πŸ‘ 10    πŸ” 1    πŸ’¬ 1    πŸ“Œ 0

As I've said before, pipe syntax is a great change to SQL - especially because it is evolutionary.

Calcite has always added features to remain compatible with other dialects (sometimes enabled via flags). Pipe syntax is now part of GoogleSQL (and other dialects), so Calcite should adopt it.

08.05.2025 18:14 β€” πŸ‘ 6    πŸ” 1    πŸ’¬ 1    πŸ“Œ 1

@julianhyde is following 20 prominent accounts