ben_sandi

Badges

100 Contributions1,000 Contributions10 Posts

Contributions

Posts

1 Day

62

7 Days

76

4 Weeks

113

All Time

6752

Current Streak

1

Longest Streak

13

Contributions Map

Contributions by Country

Country Contributions Between Climbers Crags Summits Climbs Ascents
1 USA 1526 20th November 2025 – 4th November 2026 48 20 0 88 98
2 Australia 767 27th September 2025 – 29th June 2026 6 38 0 61 33
3 United Kingdom 625 19th November 2025 – 4th November 2026 34 14 0 24 49
4 Switzerland 308 24th January 2026 – 4th November 2026 6 3 0 14 38
5 France 300 6th January 2026 – 4th November 2026 15 3 0 12 34
6 Austria 210 12th November 2025 – 22nd June 2026 5 2 0 8 22
7 Italy 163 18th November 2025 – 2nd November 2026 9 3 0 12 12
8 Pakistan 118 11th April 2026 – 26th April 2026 0 0 0 1 7
9 Spain 105 20th February 2026 – 16th May 2026 5 0 0 10 11
10 Germany 103 3rd February 2026 – 26th June 2026 7 0 0 7 10

Recent Contributions

Date Time User Type Name Attribute
1501 16th May 2026 14:24:11 UTC ben_sandi ascent Noah Wheeler's ascent of Burden of Dreams notes_pretty
Before
<h3>References</h3> <p>[1] Send Post! <a href="https://www.instagram.com/p/DYZsWOLABiS/" rel="noopener noreferrer">https://www.instagram.com/p/DYZsWOLABiS/</a></p> <p>[2] Noah got very close on his second session <a href="https://www.instagram.com/reel/DRkVMNOgFvV/" rel="noopener noreferrer">https://www.instagram.com/reel/DRkVMNOgFvV/</a></p> <p>[3] <a href="https://tensionclimbing.com/blogs/blog/reflections-from-finland" rel="noopener noreferrer">https://tensionclimbing.com/blogs/blog/reflections-from-finland</a></p> <p>[4] Vlog from Noah's second trip with <a href="/climber/1202/yannick-flohé" rel="noopener noreferrer">Yannick Flohé</a> <a href="https://www.youtube.com/watch?v=wJ0yC74D33s" rel="noopener noreferrer">https://www.youtube.com/watch?v=wJ0yC74D33s</a></p> <p>[5] Footage from a close go <a href="https://www.instagram.com/reel/DYNn5YNsM1g/" rel="noopener noreferrer">https://www.instagram.com/reel/DYNn5YNsM1g/</a></p> <p>[6] Another agonisingly close attempt with a small dab <a href="https://www.instagram.com/p/DYU4ue7oHik/" rel="noopener noreferrer">https://www.instagram.com/p/DYU4ue7oHik/</a></p>
After
<p>Noah first visited Finland with <a href="/climber/152/hamish-mcarthur" rel="noopener noreferrer">Hamish McArthur</a> in November 2025. Despite struggling with conditions, he made a very promising link on only his second session [2]. In May 2026, he returned to Burden with <a href="/climber/1202/yannick-flohé" rel="noopener noreferrer">Yannick Flohé</a>, coming agonisingly close when he climbed the boulder but dabbed near the start [6]. Two attempts later, he sent [1].</p> <h3>References</h3> <p>[1] Send Post! <a href="https://www.instagram.com/p/DYZsWOLABiS/" rel="noopener noreferrer">https://www.instagram.com/p/DYZsWOLABiS/</a></p> <p>[2] Noah got very close on his second session <a href="https://www.instagram.com/reel/DRkVMNOgFvV/" rel="noopener noreferrer">https://www.instagram.com/reel/DRkVMNOgFvV/</a></p> <p>[3] <a href="https://tensionclimbing.com/blogs/blog/reflections-from-finland" rel="noopener noreferrer">https://tensionclimbing.com/blogs/blog/reflections-from-finland</a></p> <p>[4] Vlog from Noah's second trip with <a href="/climber/1202/yannick-flohé" rel="noopener noreferrer">Yannick Flohé</a> <a href="https://www.youtube.com/watch?v=wJ0yC74D33s" rel="noopener noreferrer">https://www.youtube.com/watch?v=wJ0yC74D33s</a></p> <p>[5] Footage from a close go <a href="https://www.instagram.com/reel/DYNn5YNsM1g/" rel="noopener noreferrer">https://www.instagram.com/reel/DYNn5YNsM1g/</a></p> <p>[6] Another agonisingly close attempt with a small dab <a href="https://www.instagram.com/p/DYU4ue7oHik/" rel="noopener noreferrer">https://www.instagram.com/p/DYU4ue7oHik/</a></p>
1502 16th May 2026 14:24:11 UTC ben_sandi ascent Noah Wheeler's ascent of Burden of Dreams notes
Before
### References [1] Send Post! [https://www.instagram.com/p/DYZsWOLABiS/](https://www.instagram.com/p/DYZsWOLABiS/) [2] Noah got very close on his second session [https://www.instagram.com/reel/DRkVMNOgFvV/](https://www.instagram.com/reel/DRkVMNOgFvV/) [3] [https://tensionclimbing.com/blogs/blog/reflections-from-finland](https://tensionclimbing.com/blogs/blog/reflections-from-finland) [4] Vlog from Noah's second trip with [Yannick Flohé](/climber/1202/yannick-flohé) [https://www.youtube.com/watch?v=wJ0yC74D33s](https://www.youtube.com/watch?v=wJ0yC74D33s) [5] Footage from a close go [https://www.instagram.com/reel/DYNn5YNsM1g/](https://www.instagram.com/reel/DYNn5YNsM1g/) [6] Another agonisingly close attempt with a small dab [https://www.instagram.com/p/DYU4ue7oHik/](https://www.instagram.com/p/DYU4ue7oHik/)
After
Noah first visited Finland with [Hamish McArthur](/climber/152/hamish-mcarthur) in November 2025. Despite struggling with conditions, he made a very promising link on only his second session [2]. In May 2026, he returned to Burden with [Yannick Flohé](/climber/1202/yannick-flohé), coming agonisingly close when he climbed the boulder but dabbed near the start [6]. Two attempts later, he sent [1]. ### References [1] Send Post! [https://www.instagram.com/p/DYZsWOLABiS/](https://www.instagram.com/p/DYZsWOLABiS/) [2] Noah got very close on his second session [https://www.instagram.com/reel/DRkVMNOgFvV/](https://www.instagram.com/reel/DRkVMNOgFvV/) [3] [https://tensionclimbing.com/blogs/blog/reflections-from-finland](https://tensionclimbing.com/blogs/blog/reflections-from-finland) [4] Vlog from Noah's second trip with [Yannick Flohé](/climber/1202/yannick-flohé) [https://www.youtube.com/watch?v=wJ0yC74D33s](https://www.youtube.com/watch?v=wJ0yC74D33s) [5] Footage from a close go [https://www.instagram.com/reel/DYNn5YNsM1g/](https://www.instagram.com/reel/DYNn5YNsM1g/) [6] Another agonisingly close attempt with a small dab [https://www.instagram.com/p/DYU4ue7oHik/](https://www.instagram.com/p/DYU4ue7oHik/)
Diff
--- before

+++ after

@@ -1,3 +1,5 @@

+Noah first visited Finland with [Hamish McArthur](/climber/152/hamish-mcarthur) in November 2025. Despite struggling with conditions, he made a very promising link on only his second session [2]. In May 2026, he returned to Burden with [Yannick Flohé](/climber/1202/yannick-flohé), coming agonisingly close when he climbed the boulder but dabbed near the start [6]. Two attempts later, he sent [1].
+
### References

[1] Send Post! [https://www.instagram.com/p/DYZsWOLABiS/](https://www.instagram.com/p/DYZsWOLABiS/)
1503 16th May 2026 14:13:23 UTC ben_sandi ascent Noah Wheeler's ascent of Burden of Dreams Partner
Before
None
After
1202
1504 16th May 2026 14:11:59 UTC ben_sandi ascent Noah Wheeler's ascent of Burden of Dreams ascent_style_id
Before
5
After
1
1505 16th May 2026 14:11:44 UTC ben_sandi ascent Noah Wheeler's ascent of Burden of Dreams ascent_dt_end
Before
2027-01-01
After
2026-05-16
1506 16th May 2026 14:11:44 UTC ben_sandi ascent Noah Wheeler's ascent of Burden of Dreams ascent_dt_start
Before
2025-01-01
After
2026-05-15
1507 16th May 2026 14:10:48 UTC ben_sandi media https://www.instagram.com/p/DYZsWOLABiS/ dt_pretty
Before
None
After
1508 16th May 2026 14:10:48 UTC ben_sandi media https://www.instagram.com/p/DYZsWOLABiS/ missing_right_to_reproduce
Before
None
After
false
1509 16th May 2026 14:10:48 UTC ben_sandi media https://www.instagram.com/p/DYZsWOLABiS/ url
Before
None
After
https://www.instagram.com/p/DYZsWOLABiS/
1510 16th May 2026 14:10:47 UTC ben_sandi ascent Noah Wheeler's ascent of Burden of Dreams notes_pretty
Before
<h3>References</h3> <p>[1] Noah got very close on his second session <a href="https://www.instagram.com/reel/DRkVMNOgFvV/" rel="noopener noreferrer">https://www.instagram.com/reel/DRkVMNOgFvV/</a></p> <p>[2] <a href="https://tensionclimbing.com/blogs/blog/reflections-from-finland" rel="noopener noreferrer">https://tensionclimbing.com/blogs/blog/reflections-from-finland</a></p> <p>[3] Vlog from Noah's second trip with <a href="/climber/1202/yannick-flohé" rel="noopener noreferrer">Yannick Flohé</a> <a href="https://www.youtube.com/watch?v=wJ0yC74D33s" rel="noopener noreferrer">https://www.youtube.com/watch?v=wJ0yC74D33s</a></p> <p>[4] Footage from a close go <a href="https://www.instagram.com/reel/DYNn5YNsM1g/" rel="noopener noreferrer">https://www.instagram.com/reel/DYNn5YNsM1g/</a></p> <p>[5] Another agonisingly close attempt with a small dab <a href="https://www.instagram.com/p/DYU4ue7oHik/" rel="noopener noreferrer">https://www.instagram.com/p/DYU4ue7oHik/</a></p>
After
<h3>References</h3> <p>[1] Send Post! <a href="https://www.instagram.com/p/DYZsWOLABiS/" rel="noopener noreferrer">https://www.instagram.com/p/DYZsWOLABiS/</a></p> <p>[2] Noah got very close on his second session <a href="https://www.instagram.com/reel/DRkVMNOgFvV/" rel="noopener noreferrer">https://www.instagram.com/reel/DRkVMNOgFvV/</a></p> <p>[3] <a href="https://tensionclimbing.com/blogs/blog/reflections-from-finland" rel="noopener noreferrer">https://tensionclimbing.com/blogs/blog/reflections-from-finland</a></p> <p>[4] Vlog from Noah's second trip with <a href="/climber/1202/yannick-flohé" rel="noopener noreferrer">Yannick Flohé</a> <a href="https://www.youtube.com/watch?v=wJ0yC74D33s" rel="noopener noreferrer">https://www.youtube.com/watch?v=wJ0yC74D33s</a></p> <p>[5] Footage from a close go <a href="https://www.instagram.com/reel/DYNn5YNsM1g/" rel="noopener noreferrer">https://www.instagram.com/reel/DYNn5YNsM1g/</a></p> <p>[6] Another agonisingly close attempt with a small dab <a href="https://www.instagram.com/p/DYU4ue7oHik/" rel="noopener noreferrer">https://www.instagram.com/p/DYU4ue7oHik/</a></p>
1511 16th May 2026 14:10:47 UTC ben_sandi ascent Noah Wheeler's ascent of Burden of Dreams notes
Before
### References [1] Noah got very close on his second session [https://www.instagram.com/reel/DRkVMNOgFvV/](https://www.instagram.com/reel/DRkVMNOgFvV/) [2] [https://tensionclimbing.com/blogs/blog/reflections-from-finland](https://tensionclimbing.com/blogs/blog/reflections-from-finland) [3] Vlog from Noah's second trip with [Yannick Flohé](/climber/1202/yannick-flohé) [https://www.youtube.com/watch?v=wJ0yC74D33s](https://www.youtube.com/watch?v=wJ0yC74D33s) [4] Footage from a close go [https://www.instagram.com/reel/DYNn5YNsM1g/](https://www.instagram.com/reel/DYNn5YNsM1g/) [5] Another agonisingly close attempt with a small dab [https://www.instagram.com/p/DYU4ue7oHik/](https://www.instagram.com/p/DYU4ue7oHik/)
After
### References [1] Send Post! [https://www.instagram.com/p/DYZsWOLABiS/](https://www.instagram.com/p/DYZsWOLABiS/) [2] Noah got very close on his second session [https://www.instagram.com/reel/DRkVMNOgFvV/](https://www.instagram.com/reel/DRkVMNOgFvV/) [3] [https://tensionclimbing.com/blogs/blog/reflections-from-finland](https://tensionclimbing.com/blogs/blog/reflections-from-finland) [4] Vlog from Noah's second trip with [Yannick Flohé](/climber/1202/yannick-flohé) [https://www.youtube.com/watch?v=wJ0yC74D33s](https://www.youtube.com/watch?v=wJ0yC74D33s) [5] Footage from a close go [https://www.instagram.com/reel/DYNn5YNsM1g/](https://www.instagram.com/reel/DYNn5YNsM1g/) [6] Another agonisingly close attempt with a small dab [https://www.instagram.com/p/DYU4ue7oHik/](https://www.instagram.com/p/DYU4ue7oHik/)
Diff
--- before

+++ after

@@ -1,12 +1,14 @@

### References

-[1] Noah got very close on his second session [https://www.instagram.com/reel/DRkVMNOgFvV/](https://www.instagram.com/reel/DRkVMNOgFvV/)
+[1] Send Post! [https://www.instagram.com/p/DYZsWOLABiS/](https://www.instagram.com/p/DYZsWOLABiS/)

-[2] [https://tensionclimbing.com/blogs/blog/reflections-from-finland](https://tensionclimbing.com/blogs/blog/reflections-from-finland)
+[2] Noah got very close on his second session [https://www.instagram.com/reel/DRkVMNOgFvV/](https://www.instagram.com/reel/DRkVMNOgFvV/)

-[3] Vlog from Noah's second trip with [Yannick Flohé](/climber/1202/yannick-flohé) [https://www.youtube.com/watch?v=wJ0yC74D33s](https://www.youtube.com/watch?v=wJ0yC74D33s)
+[3] [https://tensionclimbing.com/blogs/blog/reflections-from-finland](https://tensionclimbing.com/blogs/blog/reflections-from-finland)

-[4]
+[4] Vlog from Noah's second trip with [Yannick Flohé](/climber/1202/yannick-flohé) [https://www.youtube.com/watch?v=wJ0yC74D33s](https://www.youtube.com/watch?v=wJ0yC74D33s)
+
+[5]
Footage from a close go [https://www.instagram.com/reel/DYNn5YNsM1g/](https://www.instagram.com/reel/DYNn5YNsM1g/)

-[5] Another agonisingly close attempt with a small dab [https://www.instagram.com/p/DYU4ue7oHik/](https://www.instagram.com/p/DYU4ue7oHik/)
+[6] Another agonisingly close attempt with a small dab [https://www.instagram.com/p/DYU4ue7oHik/](https://www.instagram.com/p/DYU4ue7oHik/)
1512 16th May 2026 14:04:16 UTC ben_sandi list Crags Without Coordinates list_description_pretty
Before
<p>This is a list of crags that have no location coordinates. </p> <p>Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. Here we have added a broad 'country' meta. </p> <p>There is another list of crags without Coordinates OR Country meta, here: <a href="/list/115/crags-without-coordinates-or-country-meta" rel="noopener noreferrer">/list/115/crags-without-coordinates-or-country-meta</a></p>
After
<p>This is a list of crags that have no location coordinates. </p> <p>Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. In those cases we have added a broad 'country' meta. </p> <p>Here is another list of crags without Coordinates OR Country meta: <a href="/list/115/crags-without-coordinates-or-country-meta" rel="noopener noreferrer">/list/115/crags-without-coordinates-or-country-meta</a></p>
1513 16th May 2026 14:04:16 UTC ben_sandi list Crags Without Coordinates list_description
Before
This is a list of crags that have no location coordinates. Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. Here we have added a broad 'country' meta. There is another list of crags without Coordinates OR Country meta, here: [/list/115/crags-without-coordinates-or-country-meta](/list/115/crags-without-coordinates-or-country-meta)
After
This is a list of crags that have no location coordinates. Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. In those cases we have added a broad 'country' meta. Here is another list of crags without Coordinates OR Country meta: [/list/115/crags-without-coordinates-or-country-meta](/list/115/crags-without-coordinates-or-country-meta)
Diff
--- before

+++ after

@@ -1,5 +1,5 @@

This is a list of crags that have no location coordinates.

-Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. Here we have added a broad 'country' meta.
+Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. In those cases we have added a broad 'country' meta.

-There is another list of crags without Coordinates OR Country meta, here: [/list/115/crags-without-coordinates-or-country-meta](/list/115/crags-without-coordinates-or-country-meta)
+Here is another list of crags without Coordinates OR Country meta: [/list/115/crags-without-coordinates-or-country-meta](/list/115/crags-without-coordinates-or-country-meta)
1514 16th May 2026 14:03:48 UTC ben_sandi list Crags Without Coordinates list_description_pretty
Before
<p>This is a list of crags that have no location coordinates. </p> <p>Some crags in this list have secret locations so we have added a broad 'country' meta. </p> <p>I have created another list of crags without Coordinates OR Country meta, here: <a href="/list/115/crags-without-coordinates-or-country-meta" rel="noopener noreferrer">/list/115/crags-without-coordinates-or-country-meta</a></p>
After
<p>This is a list of crags that have no location coordinates. </p> <p>Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. Here we have added a broad 'country' meta. </p> <p>There is another list of crags without Coordinates OR Country meta, here: <a href="/list/115/crags-without-coordinates-or-country-meta" rel="noopener noreferrer">/list/115/crags-without-coordinates-or-country-meta</a></p>
1515 16th May 2026 14:03:48 UTC ben_sandi list Crags Without Coordinates list_description
Before
This is a list of crags that have no location coordinates. Some crags in this list have secret locations so we have added a broad 'country' meta. I have created another list of crags without Coordinates OR Country meta, here: [/list/115/crags-without-coordinates-or-country-meta](/list/115/crags-without-coordinates-or-country-meta)
After
This is a list of crags that have no location coordinates. Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. Here we have added a broad 'country' meta. There is another list of crags without Coordinates OR Country meta, here: [/list/115/crags-without-coordinates-or-country-meta](/list/115/crags-without-coordinates-or-country-meta)
Diff
--- before

+++ after

@@ -1,5 +1,5 @@

This is a list of crags that have no location coordinates.

-Some crags in this list have secret locations so we have added a broad 'country' meta.
+Although we would prefer to have all crags tagged with coordinates, some crags have secret locations. Here we have added a broad 'country' meta.

-I have created another list of crags without Coordinates OR Country meta, here: [/list/115/crags-without-coordinates-or-country-meta](/list/115/crags-without-coordinates-or-country-meta)
+There is another list of crags without Coordinates OR Country meta, here: [/list/115/crags-without-coordinates-or-country-meta](/list/115/crags-without-coordinates-or-country-meta)
1516 16th May 2026 14:01:45 UTC ben_sandi list Crags Without Coordinates list_definition
Before
select '<a href="' || c.url || '">' || c.crag_name || '</a>' as Crag ,country.country as "Country Meta" ,coalesce(cc.cnt_climbs, 0) as Climbs ,case when c.ukc_url is not null then '<a href="' || c.ukc_url || '">UKC</a>' else null end as UKC ,case when c.eight_a_nu_url is not null then '<a href="' || c.eight_a_nu_url || '">8a.nu</a>' else null end as "8a.nu" ,case when w.thecrag_url is not null then '<a href="' || w.thecrag_url || '">theCrag</a>' else null end as "theCrag" ,case when w.crags27_url is not null then '<a href="' || w.crags27_url || '">27crags</a>' else null end as "27crags" from crags c left join ( select cl.crag_id ,count(*) as cnt_climbs from climbs cl where cl.deleted_on is null group by cl.crag_id ) cc on cc.crag_id = c.crag_id left join ( select cm.crag_id ,max(co.name) as country from crag_meta cm inner join crag_meta_keys cmk on cm.crag_meta_key_id = cmk.crag_meta_key_id inner join countries co on cm.value = co.country_id::varchar where cmk.key = 'Country' group by cm.crag_id ) country on country.crag_id = c.crag_id left join ( select cm.crag_id ,max(case when cm.value ilike '%thecrag.com%' then cm.value end) as thecrag_url ,max( case when cm.value ilike '%27crags.com%' or cm.value ilike '%thetopo.com%' then cm.value end ) as crags27_url from crag_meta cm where cm.crag_meta_key_id = 1 group by cm.crag_id ) w on w.crag_id = c.crag_id where c.deleted_on is null and c.group_crag_id is null and c.latitude is null and c.longitude is null order by coalesce(cc.cnt_climbs, 0) desc ,c.crag_name
After
select '<a href="' || c.url || '">' || c.crag_name || '</a>' as Crag ,country.country as "Country Meta" ,coalesce(cc.cnt_climbs, 0) as Climbs ,case when c.ukc_url is not null then '<a href="' || c.ukc_url || '">UKC</a>' else null end as UKC ,case when c.eight_a_nu_url is not null then '<a href="' || c.eight_a_nu_url || '">8a.nu</a>' else null end as "8a.nu" from crags c left join ( select cl.crag_id ,count(*) as cnt_climbs from climbs cl where cl.deleted_on is null group by cl.crag_id ) cc on cc.crag_id = c.crag_id left join ( select cm.crag_id ,max(co.name) as country from crag_meta cm inner join crag_meta_keys cmk on cm.crag_meta_key_id = cmk.crag_meta_key_id inner join countries co on cm.value = co.country_id::varchar where cmk.key = 'Country' group by cm.crag_id ) country on country.crag_id = c.crag_id where c.deleted_on is null and c.group_crag_id is null and c.latitude is null and c.longitude is null order by coalesce(cc.cnt_climbs, 0) desc ,c.crag_name
Diff
--- before

+++ after

@@ -10,14 +10,6 @@

when c.eight_a_nu_url is not null then '<a href="' || c.eight_a_nu_url || '">8a.nu</a>'
else null
end as "8a.nu"
- ,case
- when w.thecrag_url is not null then '<a href="' || w.thecrag_url || '">theCrag</a>'
- else null
- end as "theCrag"
- ,case
- when w.crags27_url is not null then '<a href="' || w.crags27_url || '">27crags</a>'
- else null
- end as "27crags"

from
crags c
@@ -55,28 +47,6 @@

cm.crag_id
) country
on country.crag_id = c.crag_id
- left join (
- select
- cm.crag_id
- ,max(case when cm.value ilike '%thecrag.com%' then cm.value end) as thecrag_url
- ,max(
- case
- when cm.value ilike '%27crags.com%'
- or cm.value ilike '%thetopo.com%'
- then cm.value
- end
- ) as crags27_url
-
- from
- crag_meta cm
-
- where
- cm.crag_meta_key_id = 1
-
- group by
- cm.crag_id
- ) w
- on w.crag_id = c.crag_id

where
c.deleted_on is null
@@ -86,5 +56,4 @@


order by
coalesce(cc.cnt_climbs, 0) desc
- ,c.crag_name
-
+ ,c.crag_name
1517 16th May 2026 14:00:26 UTC ben_sandi crag Green Lane Website
Before
None
After
test.com
1518 16th May 2026 13:58:11 UTC ben_sandi list Crags Without Coordinates list_definition
Before
select '<a href="' || c.url || '">' || c.crag_name || '</a>' as Crag ,coalesce(cc.cnt_climbs, 0) as Climbs ,country.country as Country ,case when c.ukc_url is not null then '<a href="' || c.ukc_url || '">UKC</a>' else null end as UKC ,case when c.eight_a_nu_url is not null then '<a href="' || c.eight_a_nu_url || '">8a.nu</a>' else null end as "8a.nu" ,case when w.thecrag_url is not null then '<a href="' || w.thecrag_url || '">theCrag</a>' else null end as "theCrag" ,case when w.crags27_url is not null then '<a href="' || w.crags27_url || '">27crags</a>' else null end as "27crags" from crags c left join ( select cl.crag_id ,count(*) as cnt_climbs from climbs cl where cl.deleted_on is null group by cl.crag_id ) cc on cc.crag_id = c.crag_id left join ( select cm.crag_id ,max(co.name) as country from crag_meta cm inner join crag_meta_keys cmk on cm.crag_meta_key_id = cmk.crag_meta_key_id inner join countries co on cm.value = co.country_id::varchar where cmk.key = 'Country' group by cm.crag_id ) country on country.crag_id = c.crag_id left join ( select cm.crag_id ,max(case when cm.value ilike '%thecrag.com%' then cm.value end) as thecrag_url ,max( case when cm.value ilike '%27crags.com%' or cm.value ilike '%thetopo.com%' then cm.value end ) as crags27_url from crag_meta cm where cm.crag_meta_key_id = 1 group by cm.crag_id ) w on w.crag_id = c.crag_id where c.deleted_on is null and c.group_crag_id is null and c.latitude is null and c.longitude is null order by coalesce(cc.cnt_climbs, 0) desc ,c.crag_name
After
select '<a href="' || c.url || '">' || c.crag_name || '</a>' as Crag ,country.country as "Country Meta" ,coalesce(cc.cnt_climbs, 0) as Climbs ,case when c.ukc_url is not null then '<a href="' || c.ukc_url || '">UKC</a>' else null end as UKC ,case when c.eight_a_nu_url is not null then '<a href="' || c.eight_a_nu_url || '">8a.nu</a>' else null end as "8a.nu" ,case when w.thecrag_url is not null then '<a href="' || w.thecrag_url || '">theCrag</a>' else null end as "theCrag" ,case when w.crags27_url is not null then '<a href="' || w.crags27_url || '">27crags</a>' else null end as "27crags" from crags c left join ( select cl.crag_id ,count(*) as cnt_climbs from climbs cl where cl.deleted_on is null group by cl.crag_id ) cc on cc.crag_id = c.crag_id left join ( select cm.crag_id ,max(co.name) as country from crag_meta cm inner join crag_meta_keys cmk on cm.crag_meta_key_id = cmk.crag_meta_key_id inner join countries co on cm.value = co.country_id::varchar where cmk.key = 'Country' group by cm.crag_id ) country on country.crag_id = c.crag_id left join ( select cm.crag_id ,max(case when cm.value ilike '%thecrag.com%' then cm.value end) as thecrag_url ,max( case when cm.value ilike '%27crags.com%' or cm.value ilike '%thetopo.com%' then cm.value end ) as crags27_url from crag_meta cm where cm.crag_meta_key_id = 1 group by cm.crag_id ) w on w.crag_id = c.crag_id where c.deleted_on is null and c.group_crag_id is null and c.latitude is null and c.longitude is null order by coalesce(cc.cnt_climbs, 0) desc ,c.crag_name
Diff
--- before

+++ after

@@ -1,7 +1,7 @@

select
'<a href="' || c.url || '">' || c.crag_name || '</a>' as Crag
+ ,country.country as "Country Meta"
,coalesce(cc.cnt_climbs, 0) as Climbs
- ,country.country as Country
,case
when c.ukc_url is not null then '<a href="' || c.ukc_url || '">UKC</a>'
else null
@@ -86,4 +86,5 @@


order by
coalesce(cc.cnt_climbs, 0) desc
- ,c.crag_name
+ ,c.crag_name
+
1519 16th May 2026 13:56:08 UTC ben_sandi list Crags Without Coordinates list_definition
Before
select '<a href="' || c.url || '">' || c.crag_name || '</a>' as Crag ,coalesce(cc.cnt_climbs, 0) as Climbs ,case when c.ukc_url is not null then '<a href="' || c.ukc_url || '">UKC</a>' else null end as UKC ,case when c.eight_a_nu_url is not null then '<a href="' || c.eight_a_nu_url || '">8a.nu</a>' else null end as "8a.nu" ,case when w.thecrag_url is not null then '<a href="' || w.thecrag_url || '">theCrag</a>' else null end as "theCrag" ,case when w.crags27_url is not null then '<a href="' || w.crags27_url || '">27crags</a>' else null end as "27crags" from crags c left join ( select cl.crag_id ,count(*) as cnt_climbs from climbs cl where cl.deleted_on is null group by cl.crag_id ) cc on cc.crag_id = c.crag_id left join ( select cm.crag_id ,max(case when cm.value ilike '%thecrag.com%' then cm.value end) as thecrag_url ,max( case when cm.value ilike '%27crags.com%' or cm.value ilike '%thetopo.com%' then cm.value end ) as crags27_url from crag_meta cm where cm.crag_meta_key_id = 1 group by cm.crag_id ) w on w.crag_id = c.crag_id where c.deleted_on is null and c.group_crag_id is null and c.latitude is null and c.longitude is null order by coalesce(cc.cnt_climbs, 0) desc ,c.crag_name
After
select '<a href="' || c.url || '">' || c.crag_name || '</a>' as Crag ,coalesce(cc.cnt_climbs, 0) as Climbs ,country.country as Country ,case when c.ukc_url is not null then '<a href="' || c.ukc_url || '">UKC</a>' else null end as UKC ,case when c.eight_a_nu_url is not null then '<a href="' || c.eight_a_nu_url || '">8a.nu</a>' else null end as "8a.nu" ,case when w.thecrag_url is not null then '<a href="' || w.thecrag_url || '">theCrag</a>' else null end as "theCrag" ,case when w.crags27_url is not null then '<a href="' || w.crags27_url || '">27crags</a>' else null end as "27crags" from crags c left join ( select cl.crag_id ,count(*) as cnt_climbs from climbs cl where cl.deleted_on is null group by cl.crag_id ) cc on cc.crag_id = c.crag_id left join ( select cm.crag_id ,max(co.name) as country from crag_meta cm inner join crag_meta_keys cmk on cm.crag_meta_key_id = cmk.crag_meta_key_id inner join countries co on cm.value = co.country_id::varchar where cmk.key = 'Country' group by cm.crag_id ) country on country.crag_id = c.crag_id left join ( select cm.crag_id ,max(case when cm.value ilike '%thecrag.com%' then cm.value end) as thecrag_url ,max( case when cm.value ilike '%27crags.com%' or cm.value ilike '%thetopo.com%' then cm.value end ) as crags27_url from crag_meta cm where cm.crag_meta_key_id = 1 group by cm.crag_id ) w on w.crag_id = c.crag_id where c.deleted_on is null and c.group_crag_id is null and c.latitude is null and c.longitude is null order by coalesce(cc.cnt_climbs, 0) desc ,c.crag_name
Diff
--- before

+++ after

@@ -1,6 +1,7 @@

select
'<a href="' || c.url || '">' || c.crag_name || '</a>' as Crag
,coalesce(cc.cnt_climbs, 0) as Climbs
+ ,country.country as Country
,case
when c.ukc_url is not null then '<a href="' || c.ukc_url || '">UKC</a>'
else null
@@ -38,6 +39,25 @@

left join (
select
cm.crag_id
+ ,max(co.name) as country
+
+ from
+ crag_meta cm
+ inner join crag_meta_keys cmk
+ on cm.crag_meta_key_id = cmk.crag_meta_key_id
+ inner join countries co
+ on cm.value = co.country_id::varchar
+
+ where
+ cmk.key = 'Country'
+
+ group by
+ cm.crag_id
+ ) country
+ on country.crag_id = c.crag_id
+ left join (
+ select
+ cm.crag_id
,max(case when cm.value ilike '%thecrag.com%' then cm.value end) as thecrag_url
,max(
case
1520 16th May 2026 13:46:09 UTC ben_sandi crag Entrechaux longitude
Before
None
After
5.142661

< Page 76 >