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
4061 8th April 2026 17:27:26 UTC ben_sandi list Quickest Ascents of Hard Boulder Problems list_definition
Before
None
After
with eight_c_plus_cutoff as ( select g.order_on from grades g where g.climb_type_id = 2 and g.grade = '8C+' ), session_meta as ( select a.ascent_id ,min( case when amk.key = 'Sessions' and am.value ~ '^[0-9]+$' and am.value::integer < 6 then am.value::integer when amk.key = 'Sessions (Approx)' and am.value ~ '^[0-9]+$' and am.value::integer < 6 then am.value::integer when amk.key = 'Sessions (Less Than)' and am.value ~ '^[0-9]+$' and am.value::integer <= 6 then am.value::integer - 1 else null end ) as sessions_sort ,string_agg( case when amk.key = 'Sessions' and am.value ~ '^[0-9]+$' and am.value::integer < 6 then amk.key || ': ' || am.value when amk.key = 'Sessions (Approx)' and am.value ~ '^[0-9]+$' and am.value::integer < 6 then amk.key || ': ' || am.value when amk.key = 'Sessions (Less Than)' and am.value ~ '^[0-9]+$' and am.value::integer <= 6 then amk.key || ': ' || am.value else null end ,', ' order by amk.key, am.value ) as session_meta from ascents a inner join ascent_meta am on a.ascent_id = am.ascent_id inner join ascent_meta_keys amk on am.ascent_meta_key_id = amk.ascent_meta_key_id where amk.key in ('Sessions', 'Sessions (Approx)', 'Sessions (Less Than)') group by a.ascent_id ) select a.ascent_id ,a.ascent_dt_start ,a.ascent_dt_end ,cl.climber_id ,cl.climber_name ,c.climb_id ,c.climb_name ,g.grade ,sm.session_meta ,sm.sessions_sort from ascents a inner join session_meta sm on a.ascent_id = sm.ascent_id inner join climbs c on a.climb_id = c.climb_id inner join climbers cl on a.climber_id = cl.climber_id inner join grades g on c.grade_id = g.grade_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where sm.sessions_sort is not null and c.climb_type_id = 2 and ast.ascent_successful = true and a.deleted_on is null and a.exclude_reason is null and c.deleted_on is null and c.exclude_reason is null and cl.deleted_on is null and cl.exclude_reason is null and g.order_on >= ( select ecc.order_on from eight_c_plus_cutoff ecc ) order by sm.sessions_sort ,g.order_on desc ,a.ascent_dt_start
Diff
--- before

+++ after

@@ -1 +1,114 @@

+with eight_c_plus_cutoff as (
+ select
+ g.order_on
+
+ from
+ grades g
+
+ where
+ g.climb_type_id = 2
+ and g.grade = '8C+'
+),
+
+session_meta as (
+ select
+ a.ascent_id
+ ,min(
+ case
+ when amk.key = 'Sessions'
+ and am.value ~ '^[0-9]+$'
+ and am.value::integer < 6
+ then am.value::integer
+ when amk.key = 'Sessions (Approx)'
+ and am.value ~ '^[0-9]+$'
+ and am.value::integer < 6
+ then am.value::integer
+ when amk.key = 'Sessions (Less Than)'
+ and am.value ~ '^[0-9]+$'
+ and am.value::integer <= 6
+ then am.value::integer - 1
+ else null
+ end
+ ) as sessions_sort
+ ,string_agg(
+ case
+ when amk.key = 'Sessions'
+ and am.value ~ '^[0-9]+$'
+ and am.value::integer < 6
+ then amk.key || ': ' || am.value
+ when amk.key = 'Sessions (Approx)'
+ and am.value ~ '^[0-9]+$'
+ and am.value::integer < 6
+ then amk.key || ': ' || am.value
+ when amk.key = 'Sessions (Less Than)'
+ and am.value ~ '^[0-9]+$'
+ and am.value::integer <= 6
+ then amk.key || ': ' || am.value
+ else null
+ end
+ ,', '
+ order by amk.key, am.value
+ ) as session_meta
+
+ from
+ ascents a
+ inner join ascent_meta am
+ on a.ascent_id = am.ascent_id
+ inner join ascent_meta_keys amk
+ on am.ascent_meta_key_id = amk.ascent_meta_key_id
+
+ where
+ amk.key in ('Sessions', 'Sessions (Approx)', 'Sessions (Less Than)')
+
+ group by
+ a.ascent_id
+)
+
+select
+ a.ascent_id
+ ,a.ascent_dt_start
+ ,a.ascent_dt_end
+ ,cl.climber_id
+ ,cl.climber_name
+ ,c.climb_id
+ ,c.climb_name
+ ,g.grade
+ ,sm.session_meta
+ ,sm.sessions_sort
+
+from
+ ascents a
+ inner join session_meta sm
+ on a.ascent_id = sm.ascent_id
+ inner join climbs c
+ on a.climb_id = c.climb_id
+ inner join climbers cl
+ on a.climber_id = cl.climber_id
+ inner join grades g
+ on c.grade_id = g.grade_id
+ inner join ascent_styles ast
+ on a.ascent_style_id = ast.ascent_style_id
+
+where
+ sm.sessions_sort is not null
+ and c.climb_type_id = 2
+ and ast.ascent_successful = true
+ and a.deleted_on is null
+ and a.exclude_reason is null
+ and c.deleted_on is null
+ and c.exclude_reason is null
+ and cl.deleted_on is null
+ and cl.exclude_reason is null
+ and g.order_on >= (
+ select
+ ecc.order_on
+
+ from
+ eight_c_plus_cutoff ecc
+ )
+
+order by
+ sm.sessions_sort
+ ,g.order_on desc
+ ,a.ascent_dt_start
4062 8th April 2026 17:27:26 UTC ben_sandi list Quickest Ascents of Hard Boulder Problems list_description
Before
None
After
Ascents of boulders 8C+ or harder, in 5 sessions or less.
Diff
--- before

+++ after

@@ -1 +1 @@

-
+Ascents of boulders 8C+ or harder, in 5 sessions or less.
4063 8th April 2026 17:27:26 UTC ben_sandi list Quickest Ascents of Hard Boulder Problems list_name
Before
None
After
Quickest Ascents of Hard Boulder Problems
4064 8th April 2026 13:53:01 UTC ben_sandi ascent Hamish McArthur's ascent of No One Mourns the Wicked Time
Before
None
After
02:17:00
4065 8th April 2026 12:16:52 UTC ben_sandi ascent Jakob Schubert's ascent of Duality of Man ascent_dt_end
Before
None
After
2027-01-01
4066 8th April 2026 12:16:52 UTC ben_sandi ascent Jakob Schubert's ascent of Duality of Man ascent_dt_start
Before
None
After
2026-01-01
4067 8th April 2026 12:16:52 UTC ben_sandi ascent Jakob Schubert's ascent of Duality of Man ascent_type_id
Before
None
After
1
4068 8th April 2026 12:16:52 UTC ben_sandi ascent Jakob Schubert's ascent of Duality of Man notes_pretty
Before
None
After
<p>Jakob had a few days trying the route</p>
4069 8th April 2026 12:16:52 UTC ben_sandi ascent Jakob Schubert's ascent of Duality of Man notes
Before
None
After
Jakob had a few days trying the route
Diff
--- before

+++ after

@@ -1 +1 @@

-
+Jakob had a few days trying the route
4070 8th April 2026 12:16:52 UTC ben_sandi ascent Jakob Schubert's ascent of Duality of Man ascent_style_id
Before
None
After
5
4071 8th April 2026 12:16:52 UTC ben_sandi ascent Jakob Schubert's ascent of Duality of Man climb_id
Before
None
After
5175
4072 8th April 2026 12:16:52 UTC ben_sandi ascent Jakob Schubert's ascent of Duality of Man climber_id
Before
None
After
494
4073 8th April 2026 12:01:23 UTC ben_sandi media https://open.spotify.com/episode/2jVBxaXUZcGLPOytwu6uPt dt_pretty
Before
None
After
4074 8th April 2026 12:01:23 UTC ben_sandi media https://open.spotify.com/episode/2jVBxaXUZcGLPOytwu6uPt missing_right_to_reproduce
Before
None
After
false
4075 8th April 2026 12:01:23 UTC ben_sandi media https://open.spotify.com/episode/2jVBxaXUZcGLPOytwu6uPt embed_code
Before
None
After
<iframe style="border-radius:12px" src="https://open.spotify.com/embed/episode/2jVBxaXUZcGLPOytwu6uPt" width="100%" height="352" frameBorder="0" allowfullscreen="" allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture" loading="lazy"></iframe>
4076 8th April 2026 12:01:23 UTC ben_sandi media https://open.spotify.com/episode/2jVBxaXUZcGLPOytwu6uPt url
Before
None
After
https://open.spotify.com/episode/2jVBxaXUZcGLPOytwu6uPt
4077 8th April 2026 12:01:23 UTC ben_sandi media https://www.instagram.com/p/DT-zNfBibXI/ dt_pretty
Before
None
After
4078 8th April 2026 12:01:23 UTC ben_sandi media https://www.instagram.com/p/DT-zNfBibXI/ embed_check_ok
Before
None
After
true
4079 8th April 2026 12:01:23 UTC ben_sandi media https://www.instagram.com/p/DT-zNfBibXI/ embed_check_dt
Before
None
After
2026-04-06 01:14:15.466358+01
4080 8th April 2026 12:01:23 UTC ben_sandi media https://www.instagram.com/p/DT-zNfBibXI/ missing_right_to_reproduce
Before
None
After
false

< Page 204 >