Sign in

DACTAL.org

@dactal.org
16 followers 2 following 55 posts

A notional organization for an experimental query language.

PostsRepliesMedia
DACTAL.org @dactal.org · 22/07/2026
I'm very actively undecided about how I think AI should be used to write code, or really at all, but if you're having AI write apps for you, and want to try having it write them so that their data and algorithms are open to inspection, here's an AI-written Skill for that. dactal.org/dactal.html?...
001
DACTAL.org @dactal.org · 09/07/2026
If you hate punctuation-centric data tools, DACTAL has both bad news and good news for you. furia.com/log/523
000
DACTAL.org @dactal.org · 19/06/2026
Extensions are accumulating. Here's a geo adapter feeding into a weather adapter feeding into a map renderer. Europe .search countries .weather forecast |temp=(.history@1.temperature_2m_max) ...map=(...colorField=temp,width=700,height=700) |data-of
010
DACTAL.org @dactal.org · 18/06/2026
Club teammates, but World Cup group opponents? Yes, several. dactal.org?dbname=wc202...
dactal.org
DACTAL
211
DACTAL.org @dactal.org · 31/05/2026
If you haven't learned what >> and << and ~~ do, it's too late because they don't do anything any more.
000
DACTAL.org @dactal.org · 25/05/2026
I've made some changes that are either exciting or too geeky to comprehend, depending on how geeky you are. I'll post about them, but if you have any trouble in the meantime, you can use dactal1.js to keep using the previous version.
100
Reposted by DACTAL.org
Every Noise at Once @everynoise.bsky.social · 14/05/2026
And if you want a bizarrely oblique quasi-command-line interface to Spotify and Apple Music at once, there's also dactal.org/curiax.html
dactal.org
DACTAL Apple/Spotify cross-explorer
022
DACTAL.org @dactal.org · 23/04/2026
Everything is a list.
Picture of the difference in DACTAL between picking the top item (:@1) and picking the top group of potentially-tied items (/@found:@1.of).
000
Reposted by DACTAL.org
glenn mcdonald @glennmcdonald.bsky.social · 14/04/2026
There are services that will magically move your music collection from one service to another. But we don't have to put up with secret magic and what if we didn't?
me.spotify user artists.artists
|apple artist=(??sname=(.name)
  .spotify artist catalogs.catalog.tracks.spotify tracks.isrc
  .apple isrc to tracks.tracks
  /artist#(....name,(sname),sortsame),count:@1.key
)
271
Reposted by DACTAL.org
glenn mcdonald @glennmcdonald.bsky.social · 13/04/2026
A "Jump to Recipe" button for software.
001
Reposted by DACTAL.org
glenn mcdonald @glennmcdonald.bsky.social · 01/04/2026
Hmm, what about a query that traverses music services?
153
Reposted by DACTAL.org
Every Noise at Once @everynoise.bsky.social · 08/03/2026
Data navigation. (dactal.org/curiam.html – you'll need Apple Music for this one, and tolerance for a deliberately unadorned state.)
041
DACTAL.org @dactal.org · 05/11/2025
You have a rack with no good Scrabble plays. Which tile is the best to unload? Here's that question asked in DACTAL.
DACTAL query:

DFOYBB_
??rack=(....characters)
?rack.(...unload=_,next=(..(rack),-_,~_....str))
|temp=(.next.possible words),
 7s=(.temp:length=7....count),
 8s=(.temp:length=8....count),
 words=(.temp....count),
 -temp
#(....7s,8s,total),words
000
DACTAL.org @dactal.org · 03/11/2025
Structurally tiny but useful addition. Inverting a graph arc can now be done like this: .inverse name>forward property E.g., in data where each album has track objects, but the tracks don't refer back to their album: .album>tracks adds an "album" property to each track while traversing.
100
DACTAL.org @dactal.org · 03/11/2025
Tiny additions. Filtering items that have any, or no, values for a property can now be done with: :property+ :property- as shorthand for the subquery forms: :(.property) :-(.property) But the subquery forms are still needed for any path more complicated than a single property.
000
DACTAL.org @dactal.org · 08/10/2025
I should pretend I designed this feature intentionally, but in reality I just realized that because something/someprop.10 gives us the first 10 items from each group, you can also truncate each group to 10 items in place, like this: something/someprop|of=10
000
DACTAL.org @dactal.org · 02/10/2025
The Gallery now includes a DACTAL Sudoku solver! Or, more accurately, a Sudoku solution-process revealer. dactal.org/dactal.html?...
000
DACTAL.org @dactal.org · 01/10/2025
This may not interest you until you suddenly hit a case where you need it, but you can now short-circuit a traverse operation when it gets its first results, like this: some data.<(.some expensive subquery) instead of running the subquery N times only to throw away N-1 of the results.
000
DACTAL.org @dactal.org · 17/09/2025
DACTAL,ATProto.fun
100
DACTAL.org @dactal.org · 30/08/2025
A start/labeling operation can append to the existing list with ?label=+(subquery) ??label=+(subquery) And a start operation can use the value ONLY as a reference with =label =type Thus this form for setting a label if it isn't already set: ??district size=(=district size;~1000)
000
DACTAL.org @dactal.org · 27/08/2025
Sometimes you want (or just need) the results of another query in the middle of the one you're writing. Highlight the subquery and hit Command-U to unpack it.
000
DACTAL.org @dactal.org · 22/08/2025
Saved relative queries let you encapsulate complexity, like AEIODLT .possible words .by added letter And now you can decapsulate it again with command-I (for Inline).
000
DACTAL.org @dactal.org · 16/08/2025
Also: added regex filtering. And then, only a little later, added documentation of regex filtering.
010
DACTAL.org @dactal.org · 15/08/2025
If anybody can vibe-code embryonic ideas into slick apps, we're gonna get a lot of slick apps sealed airlessly around ideas that never got a chance to become. I want the opposite of that, unslick explorers of exposed exologic. We only start at the beginning. dactal.org/Scrabble.html
221
DACTAL.org @dactal.org · 08/08/2025
Yesterday's excellent tiny realization: subtractive traversal is a set-disjunction operation, but subtractive traversal with duplicates is itemwise removal. ...x=(1,1,2,2,3,3),y=(2) .x,-y → 1,3 ..x,y → 1,1,2,3,3
000
DACTAL.org @dactal.org · 01/08/2025
dactal.org/dactal.html?...
000
DACTAL.org @dactal.org · 01/08/2025
On one hand, we already know all the prime numbers below 1000. On the other, here's the Sieve of Eratosthenes in a DACTAL query. dactal.org/dactal.html?...
dactal.org
DACTAL
000
DACTAL.org @dactal.org · 31/07/2025
I give you your carets back. ^ and ^^ for comments have been replaced by ??? for notes, so ^ is no longer a reserved character. ??? your notes here Notes in DACTAL are a null operation, not meta-text, which has some cool implications that I haven't thought of yet.
000
DACTAL.org @dactal.org · 25/07/2025
I moved the inline-math handling to a more sensible place in the resolution process, so now you can use it in traversal, grouping, sorting, or either form of annotation.
000
DACTAL.org @dactal.org · 23/07/2025
Realized and fixed an early-implementation laziness that evaluated :x=y as :(.x:@1:=y) instead of :(.x:=y)
000
DACTAL.org @dactal.org · 18/07/2025
Oh look, a Wordle solver that fits (kinda) in a URL. dactal.org/dactal.html?...
dactal.org
DACTAL
111
DACTAL.org @dactal.org · 18/07/2025
To go with /@x, which groups consecutive sequences with shared x properties, you can now also do /@@y to group sequences that start with each occurrence of y. E.g grouping streams into listening sessions broken by gaps of more than 10 minutes between songs:
listening sample....pairs
||px=@,
  clock=(....(.pair.ts),timediff);
  this<pair;
  px=(this.px);
  clock=(this.clock);
  silence=[=clock-ms_played];
  restart=(.silence:>60000);
.(.pair:px=1,@2)/@@restart
000
DACTAL.org @dactal.org · 10/07/2025
Realized that the recently-added |x@ shortcut, for annotating a list of items with their list indexes, was actually the beginning of the missing feature for doing running ranks/counts/totals. e.g. cumulative duration: tracks2||cumulative duration=@@duration dactal.org/dactal.html#...
dactal.org
DACTAL
001
DACTAL.org @dactal.org · 04/07/2025
Huh, worked out the Wordle logic in DACTAL form.
110
DACTAL.org @dactal.org · 28/06/2025
The new ?? label operation has the same labeling options as a ? start operation, but relative to, and without changing, the current list: tracks|others=(??this .artist.tracks:-(this)) This replaces the more limited special-casing of "=_" in starts: tracks|others=(?this=_ .artist.tracks:-(this))
000
DACTAL.org @dactal.org · 19/06/2025
Today in obsessive buffing of rough spots: Filter negation is now done with -, instead of !. tracks:-=Amaranth This was the only use of ! as a suboperator, which frees it up to be the repeat operator, instead of ??. messages._,replies!
100
Reposted by DACTAL.org
Every Noise at Once @everynoise.bsky.social · 18/06/2025
Today's tiny DACTAL tweak that probably affects nobody: in an aggregation, semicolons explicitly identify aggregators. So this query is a count of counts; the first "count" is a property (of groups), the second "count" is the aggregator. tracks/artist...count;count
111
DACTAL.org @dactal.org · 12/06/2025
There have been many small improvements to DACTAL recently, all of them described in the also-much-improved interactive manual at dactal.org.
100
DACTAL.org @dactal.org · 13/03/2025
dactal.org now starts with a little explanation of what this is before cannonballing into the syntax.
dactal.org
DACTAL
000