Mattsparksy

Contributions

1 Day

0

7 Days

48

4 Weeks

119

All Time

3283

Top Contributions

Name Type # Changes Last Updated First Updated
1 https://www.instagram.com/p/DJRzZIzOOWv/ media 30 5th May 2025 5th May 2025
2 Hamish McArthur's ascent of No One Mourns the Wicked ascent 27 5th May 2025 5th May 2025
3 https://www.youtube.com/watch?v=r6lWVJrigTA media 24 5th May 2025 5th May 2025
4 Pietro Vidi's ascent of L’Ombre du Voyageur ascent 21 21st July 2025 21st July 2025
5 https://www.instagram.com/p/DGBh2g-tGHO/ media 18 13th February 2025 13th February 2025
6 https://www.instagram.com/p/DMXd2WxtNjn/ media 18 21st July 2025 21st July 2025
7 Sébastien Dussaut climber 17 31st May 2025 13th May 2025
8 Leo Skinner's ascent of Pinky Perky ascent 16 13th February 2025 2nd January 2025
9 Sophie Cheng's ascent of Taylor Made ascent 16 10th May 2025 10th May 2025
10 Eli Cartwright's ascent of Outliers ascent 16 14th May 2025 2nd April 2025

Recent Contributions

Date Time User Type Name Attribute
2781 30th December 2024 18:57:52 Mattsparksy crag Rivelin Edge rock_type
Before
None
After
Gritstone
2782 30th December 2024 18:57:37 Mattsparksy crag Arisaig Cave latitude
Before
56.88352408520255
After
56.883524
2783 30th December 2024 18:57:37 Mattsparksy crag Arisaig Cave rock_type
Before
None
After
Quartzite
2784 30th December 2024 18:57:37 Mattsparksy crag Arisaig Cave rock_type_id
Before
None
After
14
2785 30th December 2024 18:57:37 Mattsparksy crag Arisaig Cave longitude
Before
-5.86479919910516
After
-5.864799
2786 30th December 2024 18:57:05 Mattsparksy crag Hueco Tanks rock_type
Before
None
After
Granite
2787 30th December 2024 18:57:05 Mattsparksy crag Hueco Tanks rock_type_id
Before
None
After
3
2788 30th December 2024 18:55:34 Mattsparksy crag Villanueva del Rosario rock_type_id
Before
None
After
7
2789 30th December 2024 18:55:34 Mattsparksy crag Villanueva del Rosario rock_type
Before
None
After
Limestone
2790 30th December 2024 18:55:17 Mattsparksy crag Kay Nest rock_type
Before
None
After
Sandstone
2791 30th December 2024 18:55:17 Mattsparksy crag Kay Nest rock_type_id
Before
None
After
12
2792 30th December 2024 18:50:30 Mattsparksy list Britains Hardest Boulders Through Time list_definition
Before
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Boulder' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
After
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Boulder problem' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
Diff
--- before

+++ after

@@ -24,7 +24,7 @@

on a.ascent_style_id = ast.ascent_style_id

where
- ct.climb_type = 'Boulder'
+ ct.climb_type = 'Boulder problem'
and ast.ascent_successful = true
and a.ascent_type_id = 1

2793 30th December 2024 18:46:33 Mattsparksy list Britains Hardest Boulders Through Time list_definition
Before
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Sport route' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
After
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Boulder' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
Diff
--- before

+++ after

@@ -24,7 +24,7 @@

on a.ascent_style_id = ast.ascent_style_id

where
- ct.climb_type = 'Sport route'
+ ct.climb_type = 'Boulder'
and ast.ascent_successful = true
and a.ascent_type_id = 1

2794 30th December 2024 18:45:57 Mattsparksy list Britains Hardest Boulders Through Time hidden
Before
true
After
false
2795 30th December 2024 18:45:04 Mattsparksy list Britains Hardest Boulders Through Time list_description_pretty
Before
None
After
<p>Britains hardest boulders through time.</p>
2796 30th December 2024 18:45:04 Mattsparksy list Britains Hardest Boulders Through Time list_definition
Before
None
After
with recursive per_year as ( select date_part('year', a.ascent_dt_start) as yr ,ast.ascent_style_id ,max(g.order_on) as max_grade_order_on from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null and c.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join climb_types ct on c.climb_type = ct.climb_type_id inner join ascent_styles ast on a.ascent_style_id = ast.ascent_style_id where ct.climb_type = 'Sport route' and ast.ascent_successful = true and a.ascent_type_id = 1 group by date_part('year', a.ascent_dt_start) ,ast.ascent_style_id ,ast.ascent_style ), best_up_to as ( select yr ,ascent_style_id ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best from per_year ), candidates as ( select c.climb_name ,c.climb_id ,g.grade ,cl.climber_name ,cl.climber_id ,a.ascent_dt_start ,a.ascent_dt_end from ascents a inner join climbs c on a.climb_id = c.climb_id and a.deleted_on is null and c.deleted_on is null and a.exclude_reason is null inner join climbers cl on a.climber_id = cl.climber_id and cl.deleted_on is null and cl.exclude_reason is null inner join grades g on c.grade_id = g.grade_id inner join best_up_to but on a.ascent_style_id = but.ascent_style_id and date_part('year', a.ascent_dt_start) = but.yr and g.order_on = but.best where a.ascent_type_id = 1 and a.ascent_style_id = 1 ), dts as ( select 1970 as yr union all select yr + 1 from dts where yr <= (select max(date_part('year', ascent_dt_start)) from candidates) ) select dts.yr as Year ,c.grade as Grade ,string_agg('<a href="/climber/' || climber_id::varchar || '">' || climber_name || '</a> with <a href="/climb/' || climb_id::varchar || '">' || climb_name || '</a>', '<br>') as Climbers from dts left join candidates c on dts.yr = date_part('year', c.ascent_dt_start) group by dts.yr ,c.grade order by dts.yr
Diff
--- before

+++ after

@@ -1 +1,107 @@

-
+with recursive per_year as (
+ select
+ date_part('year', a.ascent_dt_start) as yr
+ ,ast.ascent_style_id
+ ,max(g.order_on) as max_grade_order_on
+
+ from
+ ascents a
+ inner join climbs c
+ on a.climb_id = c.climb_id
+ and a.deleted_on is null
+ and c.deleted_on is null
+ and a.exclude_reason is null
+ and c.exclude_reason is null
+ inner join climbers cl
+ on a.climber_id = cl.climber_id
+ and cl.deleted_on is null
+ and cl.exclude_reason is null
+ inner join grades g
+ on c.grade_id = g.grade_id
+ inner join climb_types ct
+ on c.climb_type = ct.climb_type_id
+ inner join ascent_styles ast
+ on a.ascent_style_id = ast.ascent_style_id
+
+ where
+ ct.climb_type = 'Sport route'
+ and ast.ascent_successful = true
+ and a.ascent_type_id = 1
+
+ group by
+ date_part('year', a.ascent_dt_start)
+ ,ast.ascent_style_id
+ ,ast.ascent_style
+), best_up_to as (
+ select
+ yr
+ ,ascent_style_id
+ ,max(max_grade_order_on) over (partition by ascent_style_id order by yr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) as best
+
+ from
+ per_year
+), candidates as (
+ select
+ c.climb_name
+ ,c.climb_id
+ ,g.grade
+ ,cl.climber_name
+ ,cl.climber_id
+ ,a.ascent_dt_start
+ ,a.ascent_dt_end
+
+ from
+ ascents a
+ inner join climbs c
+ on a.climb_id = c.climb_id
+ and a.deleted_on is null
+ and c.deleted_on is null
+ and a.exclude_reason is null
+ inner join climbers cl
+ on a.climber_id = cl.climber_id
+ and cl.deleted_on is null
+ and cl.exclude_reason is null
+ inner join grades g
+ on c.grade_id = g.grade_id
+ inner join best_up_to but
+ on a.ascent_style_id = but.ascent_style_id
+ and date_part('year', a.ascent_dt_start) = but.yr
+ and g.order_on = but.best
+
+ where
+ a.ascent_type_id = 1
+ and a.ascent_style_id = 1
+), dts as (
+ select
+ 1970 as yr
+
+ union all
+
+ select
+ yr + 1
+
+ from
+ dts
+
+ where
+ yr <= (select max(date_part('year', ascent_dt_start)) from candidates)
+)
+
+select
+ dts.yr as Year
+ ,c.grade as Grade
+ ,string_agg('' || climber_name || ' with ' || climb_name || '', '
') as Climbers

+
+
+from
+ dts
+ left join candidates c
+ on dts.yr = date_part('year', c.ascent_dt_start)
+
+group by
+ dts.yr
+ ,c.grade
+
+order by
+ dts.yr
+
2797 30th December 2024 18:45:04 Mattsparksy list Britains Hardest Boulders Through Time list_description
Before
None
After
Britains hardest boulders through time.
Diff
--- before

+++ after

@@ -1 +1 @@

-
+Britains hardest boulders through time.
2798 30th December 2024 18:45:04 Mattsparksy list Britains Hardest Boulders Through Time list_name
Before
None
After
Britains Hardest Boulders Through Time
2799 30th December 2024 18:45:04 Mattsparksy list Britains Hardest Boulders Through Time list_type_name
Before
None
After
Bouldering
2800 30th December 2024 18:45:04 Mattsparksy list Britains Hardest Boulders Through Time list_type_id
Before
None
After
1

< Page 140 >