Sign in

Al Merose

@al.merose.com
4.5K followers 2.3K following 1.2K posts

Differential database administrator. Machine learning for climate & weather. Ex-Google Research, Founding Member of Technical Staff @OpenAthena.ai. Tinkering with xql.systems. He/him.

PostsRepliesMedia
Al Merose @al.merose.com · 3h
We put up kelly the skelly today. Here is our family Halloween playlist. open.spotify.com/playlist/1Zc... Happy spooky season, bsky fam.
A 12 ft skeleton in front of oak trees around sunset.
040
Al Merose @al.merose.com · 03/10/2026
Attention within my data model for SQL is slightly verbose, but reads like the mathematical definition. github.com/xqlsystems/d...
010
Al Merose @al.merose.com · 30/09/2026
That different frontier models perform in the lead in agentic coding, depending on which benchmark you look at, means to me that one might want to see which benchmark reflects the work you typically do to choose the model family.
Benchmark results of gemini 4

https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/
030
Al Merose @al.merose.com · 30/09/2026
Getting excited about what I’ve been cooking up recently. These 3 lines of SQL, which look like the mathematical definition, are all you need to define the weight update rule for SGD. This is very close to the way you’d define it in JAX and Python. docs.jax.dev/en/latest/au...
WITH loss AS (SELECT SUM(power (x.v *w.val -y.v, 2)) AS 1
FROM × JOIN w ON x.i = w.i JOIN y ON x.s = y.s)
SELECT w.i, w.val - 0.1 * g.val AS val = g.i
FROM w JOIN grad(loss, w.val) g ON w.i = g.i
040
Al Merose @al.merose.com · 27/09/2026
Having a surprising conversation with Opus 5.5 rn
Claude Opus 5.5 thinking trace: “Working through feelings of regret about...”
060
Al Merose @al.merose.com · 23/09/2026
This is one of my favorite videos on the internet. A classic.
020
Al Merose @al.merose.com · 23/09/2026
100
Al Merose @al.merose.com · 22/09/2026
Similarly, Zizek’s concerns with AI are not the technology, but the capitalist environment in which it is developed. slavoj.substack.com/p/why-contai...
Part of the threat of AI thus resides not in technology as such but in the social relations within which AI machines are produced: we live in a universe of competition and global suspicion that prevents us from breaking out of the destructive logic of the prisoners’ dilemma. Although we rationally know that solidarity and collaboration are better for all participants, the capitalist focus on profit privileges distrust of others: it perceives others as potential threats who will use our trust as an excuse to attack us even more brutally.
152
Al Merose @al.merose.com · 17/09/2026
Lil’ baby in my lap, lil’ Claude in my hand
Accessing workspace:
/home/alxmrs/git/xarray-sql
Quick safety check: Is this a project you created or one you trust? (Like your own code, a well-known open source project, or work from your team). If not, take a moment to review what's in this folder first.
Claude Code'll be able to read, edit, and execute files here.
Security guide
› No, exit
Yes, I trust this folder
Enter to confirm • Esc to cancel
[main] <tmux] 1:claude* 2:zsh-"nixos" 10:48 • 17-Sep-26
020
Al Merose @al.merose.com · 30/08/2026
010
Al Merose @al.merose.com · 15/08/2026
Had a dumb little question for claude: what if the mandlebrot style fractal incorporated the fibonacci sequence? The result is this fractal that I hadn’t seen before
140
Al Merose @al.merose.com · 02/08/2026
Another example
100
Al Merose @al.merose.com · 02/08/2026
TL;DR: Here's what Kelp does so far.
100
Al Merose @al.merose.com · 15/07/2026
Claude asked for approval for calling `rm` on a local log file (metadata, meaningless), but did not ask for approval and went ahead and ran `gsutil -m rm` on a data corpus used for training 🙃
I checked - and I have to be straight with you: it's not recoverable from the bucket.
130
Al Merose @al.merose.com · 13/07/2026
I got to rank 7, now oscillating around 12. A dork dream come true.
020
Al Merose @al.merose.com · 13/07/2026
We’re on the front page of HN
16. * Show HN: I implemented a neural network in
SQL (github.com/xqlsystems)
9 points by alxmrs 35 minutes ago | hide | discuss | edit
1120
Al Merose @al.merose.com · 13/07/2026
New twiggy pic just dropped
An unbelievably cute grey tabby cat with her eyes closed resting her head on her paws in a basket like thing.
0240
Al Merose @al.merose.com · 06/07/2026
Here is what the loss looks like:
% uv run benchmarks/nn.py
warning: The Python request from `.python-version` resolved to Python 3.11.11, which is incompatible with the script's Python requirement: `>=3.12`
Installed 41 packages in 232ms
step  0: loss 2.298  train_acc 0.154  test_acc 0.145
step  5: loss 1.559  train_acc 0.440  test_acc 0.325
step 10: loss 1.150  train_acc 0.642  test_acc 0.610
step 15: loss 0.865  train_acc 0.702  test_acc 0.620
step 20: loss 0.825  train_acc 0.716  test_acc 0.665
step 25: loss 0.686  train_acc 0.752  test_acc 0.750
step 30: loss 0.598  train_acc 0.800  test_acc 0.760
step 35: loss 0.584  train_acc 0.788  test_acc 0.720
step 40: loss 0.484  train_acc 0.864  test_acc 0.815
step 45: loss 0.582  train_acc 0.792  test_acc 0.735
step 50: loss 0.504  train_acc 0.800  test_acc 0.775
step 55: loss 0.452  train_acc 0.830  test_acc 0.730
step 59: loss 0.413  train_acc 0.864  test_acc 0.785
trained (784, 196, 32, 10) MLP; weights -> xarray {'inp_0': 785, 'out_0': 196, 'inp_1': 197, 'out_1': 32, 'inp_2': 33, 'out_2': 10}.
<xarray.Dataset> Size: 1MB
Dimensions:  (inp_0: 785, out_0: 196, inp_1: 197, out_1: 32, inp_2: 33,
              out_2: 10)
Coordinates:
  * inp_0    (inp_0) int64 6kB 2 3 4 5 6 7 8 9 ... 778 779 780 781 782 783 784
  * out_0    (out_0) int64 2kB 9 13 20 27 33 45 48 ... 155 166 168 181 187 189
  * inp_1    (inp_1) int64 2kB 0 1 2 3 4 5 6 7 ... 190 191 192 193 194 195 196
  * out_1    (out_1) int64 256B 0 2 4 6 8 22 25 28 29 ... 7 16 19 24 3 10 18 21
  * inp_2    (inp_2) int64 264B 0 1 2 3 4 5 6 7 8 ... 9 13 20 27 12 14 30 31 32
  * out_2    (out_2) int64 80B 1 0 2 4 6 8 3 5 7 9
Data variables:
    layer_0  (inp_0, out_0) float64 1MB -0.05519 0.05624 ... -0.04738 0.01336
    layer_1  (inp_1, out_1) float64 50kB 0.1518 -0.1549 ... 0.02047 -0.05072
    layer_2  (inp_2, out_2) float64 3kB -0.04275 0.1687 ... -0.04326 -0.05491
170
Al Merose @al.merose.com · 01/07/2026
Here is OLS by gradient descent as a single recursive SQL statement
WITH RECURSIVE params (step, a, b) AS (
SELECT 0, 0.0, 0.0
UNION ALL
SELECT params. step + 1,
params.a - 1r*AVG (grad(loss, a)),
params.b - 1r*AVG (grad(loss, b))
FROM params CROSS JOIN d WHERE params.step ‹ STEPS
GROUP BY params.step, params.a, params.b)
SELECT * FROM params ORDER BY step
071
Al Merose @al.merose.com · 30/06/2026
Same
A screenshot. Text:


YOU ARE...
The True Believer
patron saint: Amanda Askell
AI is real, it's powerful, and handled with genuine care it can be one of the best things we ever build. You think hard about its character, what it's like, what we owe it and it owes us. You're optimistic the way a thoughtful person is optimistic — clear-eyed, not starry-eyed.
010
Al Merose @al.merose.com · 28/06/2026
This is where I post from
080
Al Merose @al.merose.com · 28/06/2026
I’m so glad Mythos exists because now I can drink a Mythos and use a $20/mo Claude plan on Opus and rarely hit my token limit.
Mythos on Paxos
010
Al Merose @al.merose.com · 27/06/2026
A 🤯 realization I’ve just had on this beach: I think I can create a real general circulation model (a climate model) in SQL. mitgcm.readthedocs.io/en/latest/ex...
120
Al Merose @al.merose.com · 26/06/2026
Second, this is the entire query needed to calculate zonal statistics over a set of regions — here, avg 2m temp over SE Asia, the Sahara, the Amazon, Greenland, and the Australian Outback. This involves joining raster and vector data at once (hard to do with arrays alone).
SELECT r.region, AVG(a."2m_temperature") - 273.15 AS avg_c
FROM era5.surface a JOIN regions r
  ON  a.latitude  BETWEEN r.lat_min AND r.lat_max
  AND a.longitude BETWEEN r.lon_min AND r.lon_max
WHERE a.time BETWEEN TIMESTAMP '2020-06-01' AND TIMESTAMP '2020-06-01 23:00:00'
GROUP BY r.region
100
Al Merose @al.merose.com · 26/06/2026
To preview my demo, here are two queries that are now possible with SQL because of Xarray-SQL: First, the core logic of Weatherbench — it calculates the RMSE of two ML weather forecasts (GraphCast and Pangu) as compared to ERA5.
SELECT f.model, f.prediction_timedelta AS lead,
       SQRT(AVG(POWER(f."2m_temperature" - e."2m_temperature", 2))) AS rmse
FROM forecasts f
JOIN era5 e
  ON  e.time = f.time + f.prediction_timedelta   -- valid_time = init + lead
  AND e.latitude  = f.latitude
  AND e.longitude = f.longitude
GROUP BY f.model, f.prediction_timedelta
100
Al Merose @al.merose.com · 26/06/2026
Ok, but when will I be able to talk to Twiggy?
Twiggy with her eyes closed on my couch.
240
Al Merose @al.merose.com · 21/06/2026
Finally got to try out Mythos
Mythos is a brand of Greek beer featuring a unicorn.
3920
Al Merose @al.merose.com · 14/06/2026
Calvin: HOW DO THEY KNOW THE LOAD LIMIT ON BRIDGES, DAD?

Dad: (linear systems of equations representing the physics of bridge load)

Calvin: OH. I SHOULD'VE GUESSED.
000
Al Merose @al.merose.com · 04/06/2026
My favorite thing about my colleague's post on the scaling science behind Marin has to be the part where an open source contributor noticed an opportunity for improvement, quickly made a patch, and that idea made it into a big training run.
Routed Expert Normalization and Rescaling
Marin is open-development: anyone can follow experiments and contribute. Elie Bakouch, a community member, recently noticed a difference between our expert weighting and DeepSeek's*. Within hours of his suggestion to renormalize and scale the routed expert outputs, we confirmed the small boost and added it to the recipe. Without his recommendation, this improvement would not have made it into our next large scale run. When evaluating the change, we compared to the in-progress recipe indicated by the blue dots below.
020
Al Merose @al.merose.com · 21/05/2026
Twiggy, my little art collector
My grey tabby cat sitting over a vibrant painting of an artist’s interpretation of jazz. Painting are on the wall behind her.
030
Al Merose @al.merose.com · 18/05/2026
I just merged in a new update in xarray-sql lead by a UCSD Data Science undergrad. Now, we can use SQL to make queries on ARCO-ERA5, check it out: github.com/alxmrs/xarra...
import xarray as xr
import xarray_sql as xql


# Open a year of ARCO-ERA5 — all 273 variables. Selecting a year up front
# keeps Dask's partition setup cheap before any chunks are read from GCS.
ds = (
  xr.open_zarr('gs://gcp-public-data-arco-era5/ar/full_37-1h-0p25deg-chunk-1.zarr-v3',
               chunks=None,
               storage_options={'token': 'anon'})  # Anonymous read from the public GCS bucket — no auth required.
  .sel(time='2020')
  .chunk({'time': 1})
)

ctx = xql.XarrayContext()
ctx.from_dataset('era5', ds, table_names={
    ('time', 'latitude', 'longitude'): 'surface',
    ('time', 'level', 'latitude', 'longitude'): 'atmosphere',
})
# Registration: ~0.5s for a full year of hourly ERA5, all variables.


# Heads up: ARCO-ERA5 has 262 surface + 11 atmospheric variables. The library
# pushes column projection down to Zarr, so SELECT only fetches what you ask
# for — but `SELECT * FROM era5.surface` would try to pull every variable
# across the year (terabytes from GCS). 
#  ---> Always SELECT specific columns. <---

# Average 2m-temperature over NYC on the morning of 2020-01-01. The library
# pushes WHERE clauses on dimension columns down to partition pruning.
ctx.sql('''
  SELECT AVG("2m_temperature") - 273.15 AS avg_c
  FROM era5.surface
  WHERE time BETWEEN TIMESTAMP '2020-01-01'
                 AND TIMESTAMP '2020-01-01 05:00:00'
    AND latitude  BETWEEN 39 AND 40
    AND longitude BETWEEN 286 AND 287  -- ERA5 uses 0-360 longitudes
''').to_pandas()
#       avg_c
# 0  8.640069

# Average temperature per pressure level, globally. 
ctx.sql('''
  SELECT level, AVG(temperature) - 273.15 AS avg_c
  FROM era5.atmosphere
  WHERE time BETWEEN TIMESTAMP '2020-01-01'
                 AND TIMESTAMP '2020-01-01 05:00:00'
  GROUP BY level
  ORDER BY level DESC
''').to_pandas()
060
Al Merose @al.merose.com · 08/03/2026
Installing NixOS on my old tower computer. Might host a new stateful agent later
090
Al Merose @al.merose.com · 28/02/2026
First time I had a session with Claude that had a natural wrap up.
Everything is on autopilot for the night. Is there anything else you'd like to
  work on, or shall we wrap up this session?
140
Al Merose @al.merose.com · 05/02/2026
I’m not through all the results yet, but I really like this paper. arxiv.org/html/2506.01...
4 Experiments
We now apply our method to analyze how embedding spaces evolve during LLM-related learning tasks. Unless stated otherwise, all results pertain to the model's final hidden layer, i.e., T_ı as defined in Section"3.
We refer the reader to Section"C.2 for results on layers other than the last. Subsequently, we will focus on four central questions:
(Q1) How does fine-tuning on different datasets al-
ter latent space geometry?
(Q2) How can local dimension estimates detect
grokking?
(Q3) How can local dimension estimates detect the
limit of training capabilities?
(Q4) How can local dimension estimates detect
overfitting?
010
Al Merose @al.merose.com · 04/02/2026
000
Al Merose @al.merose.com · 04/02/2026
ANUPONG CHANTORN
Animal-Man Family
Bronze, 2010

I have taken the idea of the realm of the hungry ghosts (peta), a cautionary tale which warn us to fear the law of karma, to not commit sinful acts, and reminds us to live morally, and use it as an inspiration for the "Animal-Man Family" sculptures. The decline of the modern Thai family institution and its lack of morality is reflected in the animal-human hybridized form, which is created by the mind, as it determines the manifestation of the result of karma, and beast-like behaviours.
100
Al Merose @al.merose.com · 04/02/2026
These are some of my favorite hungry ghosts
ANUPONG CHANTORN
Animal-Man Family
Bronze, 2010
Bangkok Contemporary Art Museum
100
Al Merose @al.merose.com · 13/01/2026
(Mouse from the matrix bursting into the cantina):

“Ox/EC Found an error in ERA5 using GraphCast”
020
Al Merose @al.merose.com · 01/01/2026
Nothing said “goodbye 2025” like the winery next door catching fire last night
020
Al Merose @al.merose.com · 01/01/2026
For NYE, I recommend “Al’s Sparkling Americano”: - 1 pt Campari - 2 pts Vermouth - combine and stir with ice - fill halfway with tonic water - top off with a double shot of espresso Tonight, I’m going with this nice Spanish vermouth, it’s nice and floral. Cheers 🥂
000
Al Merose @al.merose.com · 22/12/2025
A closing argument for sour cream over apple sauce in the great hannukah debate: dill.
The last latke from our batch, with sour cream and a heaping pile of dill. On kind of a messy plate.
100
Al Merose @al.merose.com · 20/12/2025
Christmas came early this year
A picture of the book by ARTHUR GILL:
“MACHINE AND ASSEMBLY LANGUAGE PROGRAMMING OF THE PDP-II”
020
Al Merose @al.merose.com · 15/12/2025
1: huh, they only have two of the three Abrahamic religions 2: oh, no, wait, the last one is just across the street
A sign that says “Los Alamos Perch, est 2017”. On top of the antique shop is a lit up cross and star of David (the six pointed star is above the cross).The shop front of a bar called “Bar Alamo”. The bar sign features a crescent moon and stars. A horse is in the middle of the crescent moon.
010
Al Merose @al.merose.com · 27/11/2025
Happy Thanksgiving from Monterey
060
Al Merose @al.merose.com · 25/11/2025
I’d like to introduce an experiment I’ve been working on for the past couple of years: Xarray-SQL. This library asks, what if SQL worked natively with arrays? github.com/alxmrs/xarra...
Code demoing Xarray-SQL. It reads:
```
import xarray as xr
import xarray_sql as xql

ds = xr.tutorial.open_dataset('air_temperature')

# The same as a dask-sql Context; i.e. an Apache DataFusion Context.
ctx = xql.XarrayContext()
ctx.from_dataset('air', ds, chunks=dict(time=24))  # the dataset needs to be chunked!

result = ctx.sql('''
  SELECT
    "lat", "lon", AVG("air") as air_total
  FROM 
    "air" 
  GROUP BY
   "lat", "lon"
''')

```
172
Al Merose @al.merose.com · 15/11/2025
vs
000
Al Merose @al.merose.com · 15/11/2025
Call me picky, but I this this experience could be greatly improved.
100
Al Merose @al.merose.com · 05/11/2025
This is the best figure I’ve seen in a whitepaper in a long time, bravo @ai2.bsky.social, delightful.
Figure 2 Global distribution of data for OlmoEarth pretraining. We randomly sample 285,288 locations based on OpenStreetMap categories. What's your favorite map projection? I like the Peirce quincuncial projection centered on Antarctica. They said it didn't make any sense for this figure though. They said "We hate Antarctica, that's why we don't sample any points there". I said, "Hey, there is one point there!" They didn't have a response to that so they tried to silenced me by deactivating my acc
1104
Al Merose @al.merose.com · 29/10/2025
Puns are not the games of a mediocre mind. Duchamp found in them "a source of stimulation both because of their actual sound and because of unexpected meanings attached to the interrelationships of disparate words [...].
Sometimes four or five different levels of meaning come through. If you introduce a familiar word into an alien atmosphere, you have something comparable to distortion . in painting, something surprising and new."42
021
Al Merose @al.merose.com · 19/10/2025
Sunday afternoons are for jazz and installing linux on your old laptops.
The Ubuntu 24 boot screen, which my reflection in the black of the screenSpotify screenshot:

Alone Together
Kenny Dorham
150