baz9

Badges

100 Contributions1,000 Contributions10 Posts

Contributions

Posts

1 Day

0

7 Days

7

4 Weeks

233

All Time

6423

Current Streak

1

Longest Streak

13

Contributions Map

Contributions by Country

Country Contributions Between Climbers Crags Summits Climbs Ascents
1 USA 1507 20th November 2025 – 30th June 2026 47 20 0 87 97
2 Australia 767 27th September 2025 – 29th June 2026 6 38 0 61 33
3 United Kingdom 576 19th November 2025 – 8th July 2026 33 14 0 22 43
4 France 264 6th January 2026 – 28th June 2026 14 3 0 12 31
5 Switzerland 257 24th January 2026 – 10th July 2026 6 3 0 12 33
6 Austria 210 12th November 2025 – 22nd June 2026 5 2 0 8 22
7 Italy 129 18th November 2025 – 29th May 2026 9 3 0 11 10
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
61 28th June 2026 20:49:05 UTC baz9 climber Owen Marquez Cellier country_membership
Before
None
After
french
62 28th June 2026 20:49:05 UTC baz9 climber Owen Marquez Cellier country_id
Before
None
After
14
63 28th June 2026 20:49:05 UTC baz9 climber Owen Marquez Cellier climber_name
Before
None
After
Owen Marquez Cellier
64 28th June 2026 20:49:05 UTC baz9 climber Owen Marquez Cellier country_flag
Before
None
After
🇫🇷
65 28th June 2026 18:32:52 UTC baz9 ascent Shawn Raboutou's ascent of Cheese Steeze notes_pretty
Before
None
After
<p>FA'd with a harness and grigri still on from belaying.</p>
66 28th June 2026 18:32:52 UTC baz9 ascent Shawn Raboutou's ascent of Cheese Steeze notes
Before
None
After
FA'd with a harness and grigri still on from belaying.
Diff
--- before

+++ after

@@ -1 +1 @@

-
+FA'd with a harness and grigri still on from belaying.
67 27th June 2026 21:46:02 UTC baz9 ascent Magnus Midtbø's ascent of Blood Redemption suggested_grade_id
Before
None
After
41
68 27th June 2026 21:46:02 UTC baz9 ascent Magnus Midtbø's ascent of Blood Redemption notes_pretty
Before
<h3>References</h3> <p>[1] <a href="https://youtu.be/tjFsqCssN7Y?t=2144">https://youtu.be/tjFsqCssN7Y?t=2144</a></p>
After
<h3>References</h3> <p>[1] <a href="https://youtu.be/tjFsqCssN7Y?t=2144" rel="noopener noreferrer">https://youtu.be/tjFsqCssN7Y?t=2144</a></p>
69 27th June 2026 21:41:36 UTC baz9 ascent Solly Kemball-Dorey's ascent of The Origin notes
Before
### References [1] [https://www.instagram.com/p/Cb3GH6PtSRt/](https://www.instagram.com/p/Cb3GH6PtSRt/)
After
### References [1] [https://www.instagram.com/p/Cb3GH6PtSRt/](https://www.instagram.com/p/Cb3GH6PtSRt/)
Diff
--- before

+++ after

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

-### References
-
+### References
+
[1] [https://www.instagram.com/p/Cb3GH6PtSRt/](https://www.instagram.com/p/Cb3GH6PtSRt/)
70 27th June 2026 21:41:36 UTC baz9 ascent Solly Kemball-Dorey's ascent of The Origin notes_pretty
Before
<h3>References</h3> <p>[1] <a href="https://www.instagram.com/p/Cb3GH6PtSRt/">https://www.instagram.com/p/Cb3GH6PtSRt/</a></p>
After
<h3>References</h3> <p>[1] <a href="https://www.instagram.com/p/Cb3GH6PtSRt/" rel="noopener noreferrer">https://www.instagram.com/p/Cb3GH6PtSRt/</a></p>
71 27th June 2026 21:41:36 UTC baz9 ascent Solly Kemball-Dorey's ascent of The Origin suggested_grade_id
Before
None
After
40
72 26th June 2026 13:06:46 UTC baz9 list History of 8C+ list_definition
Before
with grade_cutoff as ( select g.order_on from grades g where g.climb_type_id = 2 and g.grade = '8C+' limit 1 ), first_ascents as ( select a.ascent_id ,a.climb_id ,a.climber_id ,a.ascent_dt_start ,a.ascent_dt_end ,sg.grade as suggested_grade ,sg.order_on as suggested_order_on ,initial_g.grade as initial_suggested_grade ,initial_g.order_on as initial_suggested_order_on from ascents a left join grades sg on a.suggested_grade_id = sg.grade_id and sg.climb_type_id = 2 left join ascent_meta am_initial on a.ascent_id = am_initial.ascent_id and am_initial.ascent_meta_key_id = 26 left join grades initial_g on am_initial.value = initial_g.grade_id::varchar and initial_g.climb_type_id = 2 where a.fa = true and a.deleted_on is null ), first_ascent_by_climb as ( select fa.climb_id ,string_agg( '<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>' ,', ' order by cl.climber_name ) as first_ascent ,(array_agg( pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end) order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end) ))[1] as date ,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order ,(array_agg( fa.suggested_grade order by fa.suggested_order_on desc nulls last ))[1] as suggested_grade ,max(fa.suggested_order_on) as suggested_order_on ,(array_agg( fa.initial_suggested_grade order by fa.initial_suggested_order_on desc nulls last ))[1] as initial_suggested_grade ,max(fa.initial_suggested_order_on) as initial_suggested_order_on from first_ascents fa inner join climbers cl on fa.climber_id = cl.climber_id and cl.deleted_on is null group by fa.climb_id ) select c.climb_uuid as row_uuid ,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name" ,g.grade as "Grade" ,fa.first_ascent as "First Ascent" ,case when fa.initial_suggested_grade is not null and fa.suggested_grade is not null and fa.initial_suggested_grade != fa.suggested_grade then fa.suggested_grade || ' ~ initially suggested ' || fa.initial_suggested_grade when fa.initial_suggested_grade is not null and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade) then coalesce(fa.suggested_grade, g.grade) || ' ~ initially suggested ' || fa.initial_suggested_grade when fa.suggested_grade is not null then fa.suggested_grade else g.grade end as "Suggested Grade" ,fa.date as "Date" from climbs c inner join grades g on c.grade_id = g.grade_id and g.climb_type_id = 2 inner join first_ascent_by_climb fa on c.climb_id = fa.climb_id cross join grade_cutoff gc where c.deleted_on is null and c.climb_type = 2 and fa.date_order < 20200101 and ( g.order_on >= gc.order_on or fa.suggested_order_on >= gc.order_on or fa.initial_suggested_order_on >= gc.order_on or fa.suggested_grade in ('8C/8C+', '8C/+') or fa.initial_suggested_grade in ('8C/8C+', '8C/+') ) order by fa.date_order ,greatest( coalesce(g.order_on, 0) ,coalesce(fa.suggested_order_on, 0) ,coalesce(fa.initial_suggested_order_on, 0) ) desc ,c.climb_name
After
with grade_cutoff as ( select g.order_on from grades g where g.climb_type_id = 2 and g.grade = '8C+' limit 1 ), first_ascents as ( select a.ascent_id ,a.climb_id ,a.climber_id ,a.ascent_dt_start ,a.ascent_dt_end ,sg.grade as suggested_grade ,sg.order_on as suggested_order_on ,initial_g.grade as initial_suggested_grade ,initial_g.order_on as initial_suggested_order_on from ascents a left join grades sg on a.suggested_grade_id = sg.grade_id and sg.climb_type_id = 2 left join ascent_meta am_initial on a.ascent_id = am_initial.ascent_id and am_initial.ascent_meta_key_id = 26 left join grades initial_g on am_initial.value = initial_g.grade_id::varchar and initial_g.climb_type_id = 2 where a.fa = true and a.deleted_on is null ), first_ascent_by_climb as ( select fa.climb_id ,string_agg( '<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>' ,', ' order by cl.climber_name ) as first_ascent ,(array_agg( pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end) order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end) ))[1] as date ,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order ,(array_agg( fa.suggested_grade order by fa.suggested_order_on desc nulls last ))[1] as suggested_grade ,max(fa.suggested_order_on) as suggested_order_on ,(array_agg( fa.initial_suggested_grade order by fa.initial_suggested_order_on desc nulls last ))[1] as initial_suggested_grade ,max(fa.initial_suggested_order_on) as initial_suggested_order_on from first_ascents fa inner join climbers cl on fa.climber_id = cl.climber_id and cl.deleted_on is null group by fa.climb_id ) select c.climb_uuid as row_uuid ,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name" ,g.grade as "Grade" ,fa.first_ascent as "First Ascent" ,case when fa.initial_suggested_grade is not null and fa.suggested_grade is not null and fa.initial_suggested_grade != fa.suggested_grade then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade when fa.initial_suggested_grade is not null and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade) then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade when fa.suggested_grade is not null then fa.suggested_grade else g.grade end as "Suggested Grade" ,fa.date as "Date" from climbs c inner join grades g on c.grade_id = g.grade_id and g.climb_type_id = 2 inner join first_ascent_by_climb fa on c.climb_id = fa.climb_id cross join grade_cutoff gc where c.deleted_on is null and c.climb_type = 2 and fa.date_order < 20200101 and ( g.order_on >= gc.order_on or fa.suggested_order_on >= gc.order_on or fa.initial_suggested_order_on >= gc.order_on or fa.suggested_grade in ('8C/8C+', '8C/+') or fa.initial_suggested_grade in ('8C/8C+', '8C/+') ) order by fa.date_order ,greatest( coalesce(g.order_on, 0) ,coalesce(fa.suggested_order_on, 0) ,coalesce(fa.initial_suggested_order_on, 0) ) desc ,c.climb_name
Diff
--- before

+++ after

@@ -82,10 +82,10 @@

when fa.initial_suggested_grade is not null
and fa.suggested_grade is not null
and fa.initial_suggested_grade != fa.suggested_grade
- then fa.suggested_grade || ' ~ initially suggested ' || fa.initial_suggested_grade
+ then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade
when fa.initial_suggested_grade is not null
and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade)
- then coalesce(fa.suggested_grade, g.grade) || ' ~ initially suggested ' || fa.initial_suggested_grade
+ then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade
when fa.suggested_grade is not null
then fa.suggested_grade
else g.grade
73 26th June 2026 13:06:00 UTC baz9 list History of 8C+ list_definition
Before
with grade_cutoff as ( select g.order_on from grades g where g.climb_type_id = 2 and g.grade = '8C+' limit 1 ), first_ascents as ( select a.ascent_id ,a.climb_id ,a.climber_id ,a.ascent_dt_start ,a.ascent_dt_end ,sg.grade as suggested_grade ,sg.order_on as suggested_order_on ,initial_g.grade as initial_suggested_grade ,initial_g.order_on as initial_suggested_order_on from ascents a left join grades sg on a.suggested_grade_id = sg.grade_id and sg.climb_type_id = 2 left join ascent_meta am_initial on a.ascent_id = am_initial.ascent_id and am_initial.ascent_meta_key_id = 26 left join grades initial_g on am_initial.value = initial_g.grade_id::varchar and initial_g.climb_type_id = 2 where a.fa = true and a.deleted_on is null ), first_ascent_by_climb as ( select fa.climb_id ,string_agg( '<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>' ,', ' order by cl.climber_name ) as first_ascent ,(array_agg( pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end) order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end) ))[1] as date ,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order ,(array_agg( fa.suggested_grade order by fa.suggested_order_on desc nulls last ))[1] as suggested_grade ,max(fa.suggested_order_on) as suggested_order_on ,(array_agg( fa.initial_suggested_grade order by fa.initial_suggested_order_on desc nulls last ))[1] as initial_suggested_grade ,max(fa.initial_suggested_order_on) as initial_suggested_order_on from first_ascents fa inner join climbers cl on fa.climber_id = cl.climber_id and cl.deleted_on is null group by fa.climb_id ) select c.climb_uuid as row_uuid ,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name" ,g.grade as "Grade" ,fa.first_ascent as "First Ascent" ,case when fa.initial_suggested_grade is not null and fa.suggested_grade is not null and fa.initial_suggested_grade != fa.suggested_grade then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade when fa.initial_suggested_grade is not null and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade) then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade when fa.suggested_grade is not null then fa.suggested_grade else g.grade end as "Suggested Grade" ,fa.date as "Date" from climbs c inner join grades g on c.grade_id = g.grade_id and g.climb_type_id = 2 inner join first_ascent_by_climb fa on c.climb_id = fa.climb_id cross join grade_cutoff gc where c.deleted_on is null and c.climb_type = 2 and fa.date_order < 20200101 and ( g.order_on >= gc.order_on or fa.suggested_order_on >= gc.order_on or fa.initial_suggested_order_on >= gc.order_on or fa.suggested_grade in ('8C/8C+', '8C/+') or fa.initial_suggested_grade in ('8C/8C+', '8C/+') ) order by fa.date_order ,greatest( coalesce(g.order_on, 0) ,coalesce(fa.suggested_order_on, 0) ,coalesce(fa.initial_suggested_order_on, 0) ) desc ,c.climb_name
After
with grade_cutoff as ( select g.order_on from grades g where g.climb_type_id = 2 and g.grade = '8C+' limit 1 ), first_ascents as ( select a.ascent_id ,a.climb_id ,a.climber_id ,a.ascent_dt_start ,a.ascent_dt_end ,sg.grade as suggested_grade ,sg.order_on as suggested_order_on ,initial_g.grade as initial_suggested_grade ,initial_g.order_on as initial_suggested_order_on from ascents a left join grades sg on a.suggested_grade_id = sg.grade_id and sg.climb_type_id = 2 left join ascent_meta am_initial on a.ascent_id = am_initial.ascent_id and am_initial.ascent_meta_key_id = 26 left join grades initial_g on am_initial.value = initial_g.grade_id::varchar and initial_g.climb_type_id = 2 where a.fa = true and a.deleted_on is null ), first_ascent_by_climb as ( select fa.climb_id ,string_agg( '<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>' ,', ' order by cl.climber_name ) as first_ascent ,(array_agg( pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end) order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end) ))[1] as date ,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order ,(array_agg( fa.suggested_grade order by fa.suggested_order_on desc nulls last ))[1] as suggested_grade ,max(fa.suggested_order_on) as suggested_order_on ,(array_agg( fa.initial_suggested_grade order by fa.initial_suggested_order_on desc nulls last ))[1] as initial_suggested_grade ,max(fa.initial_suggested_order_on) as initial_suggested_order_on from first_ascents fa inner join climbers cl on fa.climber_id = cl.climber_id and cl.deleted_on is null group by fa.climb_id ) select c.climb_uuid as row_uuid ,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name" ,g.grade as "Grade" ,fa.first_ascent as "First Ascent" ,case when fa.initial_suggested_grade is not null and fa.suggested_grade is not null and fa.initial_suggested_grade != fa.suggested_grade then fa.suggested_grade || ' ~ initially suggested ' || fa.initial_suggested_grade when fa.initial_suggested_grade is not null and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade) then coalesce(fa.suggested_grade, g.grade) || ' ~ initially suggested ' || fa.initial_suggested_grade when fa.suggested_grade is not null then fa.suggested_grade else g.grade end as "Suggested Grade" ,fa.date as "Date" from climbs c inner join grades g on c.grade_id = g.grade_id and g.climb_type_id = 2 inner join first_ascent_by_climb fa on c.climb_id = fa.climb_id cross join grade_cutoff gc where c.deleted_on is null and c.climb_type = 2 and fa.date_order < 20200101 and ( g.order_on >= gc.order_on or fa.suggested_order_on >= gc.order_on or fa.initial_suggested_order_on >= gc.order_on or fa.suggested_grade in ('8C/8C+', '8C/+') or fa.initial_suggested_grade in ('8C/8C+', '8C/+') ) order by fa.date_order ,greatest( coalesce(g.order_on, 0) ,coalesce(fa.suggested_order_on, 0) ,coalesce(fa.initial_suggested_order_on, 0) ) desc ,c.climb_name
Diff
--- before

+++ after

@@ -82,10 +82,10 @@

when fa.initial_suggested_grade is not null
and fa.suggested_grade is not null
and fa.initial_suggested_grade != fa.suggested_grade
- then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade
+ then fa.suggested_grade || ' ~ initially suggested ' || fa.initial_suggested_grade
when fa.initial_suggested_grade is not null
and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade)
- then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade
+ then coalesce(fa.suggested_grade, g.grade) || ' ~ initially suggested ' || fa.initial_suggested_grade
when fa.suggested_grade is not null
then fa.suggested_grade
else g.grade
74 26th June 2026 13:03:37 UTC baz9 ascent Toni Lamprecht's ascent of Bokassa's Fridge ascent_dt_start
Before
2006-03-01
After
2009-03-07
75 26th June 2026 12:55:21 UTC baz9 list History of 8C+ list_description_pretty
Before
<p>Lists the first boulders graded/suggested at 8C+ or harder.</p> <p>Includes boulders first ascended before 2020 that are:</p> <ul> <li>Graded 8C+ or higher</li> <li>FA suggested 8C/8C+ of harder</li> <li>Later revised, but initially suggested 8C+ or higher, indicated by the <strong>Initial Suggested Grade</strong> ascent meta</li> </ul> <p>List inspired by following articles by <a href="https://crankclimbing.org/" rel="noopener noreferrer">Crank Climbing</a>:</p> <ul> <li><a href="https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/" rel="noopener noreferrer">https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978</a></li> <li><a href="https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/" rel="noopener noreferrer">https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/</a></li> <li><a href="https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/" rel="noopener noreferrer">https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/</a></li> </ul>
After
<p>Lists the first boulders graded/suggested at 8C+ or harder.</p> <p>Includes boulders first ascended before 2020 that are:</p> <ul> <li>Graded 8C+ or higher</li> <li>FA suggested 8C/8C+ of harder</li> <li>Later revised, but initially suggested 8C+ or higher, indicated by the <strong>Initial Suggested Grade</strong> ascent meta</li> </ul> <p>List inspired by these articles by <a href="https://crankclimbing.org/" rel="noopener noreferrer">Crank Climbing</a>:</p> <ul> <li><a href="https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/" rel="noopener noreferrer">https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978</a></li> <li><a href="https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/" rel="noopener noreferrer">https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/</a></li> <li><a href="https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/" rel="noopener noreferrer">https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/</a></li> </ul>
76 26th June 2026 12:55:21 UTC baz9 list History of 8C+ list_description
Before
Lists the first boulders graded/suggested at 8C+ or harder. Includes boulders first ascended before 2020 that are: - Graded 8C+ or higher - FA suggested 8C/8C+ of harder - Later revised, but initially suggested 8C+ or higher, indicated by the **Initial Suggested Grade** ascent meta List inspired by following articles by [Crank Climbing](https://crankclimbing.org/): - [https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978](https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/) - [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/) - [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/)
After
Lists the first boulders graded/suggested at 8C+ or harder. Includes boulders first ascended before 2020 that are: - Graded 8C+ or higher - FA suggested 8C/8C+ of harder - Later revised, but initially suggested 8C+ or higher, indicated by the **Initial Suggested Grade** ascent meta List inspired by these articles by [Crank Climbing](https://crankclimbing.org/): - [https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978](https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/) - [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/) - [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/)
Diff
--- before

+++ after

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

- FA suggested 8C/8C+ of harder
- Later revised, but initially suggested 8C+ or higher, indicated by the **Initial Suggested Grade** ascent meta

-List inspired by following articles by [Crank Climbing](https://crankclimbing.org/):
+List inspired by these articles by [Crank Climbing](https://crankclimbing.org/):

- [https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978](https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/)
- [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/)
77 26th June 2026 12:54:47 UTC baz9 ascent Daniel Woods's ascent of Hypnotized Minds Initial Suggested Grade
Before
None
After
41
78 26th June 2026 12:54:21 UTC baz9 list History of 8C+ list_description_pretty
Before
<p>Lists the first boulders graded/suggested at 8C+ or harder.</p> <p>Includes boulders, FA'd before 2020, that are:</p> <ul> <li>Graded 8C+ or higher</li> <li>FA suggested 8C+ of harder</li> <li>FA revised grade, but initially suggested 8C+ or harder (indicated by <em>Initial grade suggestion</em> meta)</li> </ul> <p>List inspired by following articles by <a href="https://crankclimbing.org/" rel="noopener noreferrer">Crank Climbing</a>:</p> <ul> <li><a href="https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/" rel="noopener noreferrer">https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978</a></li> <li><a href="https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/" rel="noopener noreferrer">https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/</a></li> <li><a href="https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/" rel="noopener noreferrer">https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/</a></li> </ul>
After
<p>Lists the first boulders graded/suggested at 8C+ or harder.</p> <p>Includes boulders first ascended before 2020 that are:</p> <ul> <li>Graded 8C+ or higher</li> <li>FA suggested 8C/8C+ of harder</li> <li>Later revised, but initially suggested 8C+ or higher, indicated by the <strong>Initial Suggested Grade</strong> ascent meta</li> </ul> <p>List inspired by following articles by <a href="https://crankclimbing.org/" rel="noopener noreferrer">Crank Climbing</a>:</p> <ul> <li><a href="https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/" rel="noopener noreferrer">https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978</a></li> <li><a href="https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/" rel="noopener noreferrer">https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/</a></li> <li><a href="https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/" rel="noopener noreferrer">https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/</a></li> </ul>
79 26th June 2026 12:54:21 UTC baz9 list History of 8C+ list_description
Before
Lists the first boulders graded/suggested at 8C+ or harder. Includes boulders, FA'd before 2020, that are: - Graded 8C+ or higher - FA suggested 8C+ of harder - FA revised grade, but initially suggested 8C+ or harder (indicated by *Initial grade suggestion* meta) List inspired by following articles by [Crank Climbing](https://crankclimbing.org/): - [https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978](https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/) - [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/) - [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/)
After
Lists the first boulders graded/suggested at 8C+ or harder. Includes boulders first ascended before 2020 that are: - Graded 8C+ or higher - FA suggested 8C/8C+ of harder - Later revised, but initially suggested 8C+ or higher, indicated by the **Initial Suggested Grade** ascent meta List inspired by following articles by [Crank Climbing](https://crankclimbing.org/): - [https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978](https://crankclimbing.org/2020/05/the-history-of-v168c-part-1-from-1978/) - [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-2-2004-2011ish/) - [https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/](https://crankclimbing.org/2020/06/the-history-of-8cv16-part-3-2011ish/)
Diff
--- before

+++ after

@@ -1,10 +1,10 @@

Lists the first boulders graded/suggested at 8C+ or harder.

-Includes boulders, FA'd before 2020, that are:
+Includes boulders first ascended before 2020 that are:

- Graded 8C+ or higher
-- FA suggested 8C+ of harder
-- FA revised grade, but initially suggested 8C+ or harder (indicated by *Initial grade suggestion* meta)
+- FA suggested 8C/8C+ of harder
+- Later revised, but initially suggested 8C+ or higher, indicated by the **Initial Suggested Grade** ascent meta

List inspired by following articles by [Crank Climbing](https://crankclimbing.org/):
80 26th June 2026 12:52:41 UTC baz9 list History of 8C+ list_definition
Before
with grade_cutoff as ( select g.order_on from grades g where g.climb_type_id = 2 and g.grade = '8C+' limit 1 ), first_ascents as ( select a.ascent_id ,a.climb_id ,a.climber_id ,a.ascent_dt_start ,a.ascent_dt_end ,sg.grade as suggested_grade ,sg.order_on as suggested_order_on ,initial_g.grade as initial_suggested_grade ,initial_g.order_on as initial_suggested_order_on from ascents a left join grades sg on a.suggested_grade_id = sg.grade_id and sg.climb_type_id = 2 left join ascent_meta am_initial on a.ascent_id = am_initial.ascent_id and am_initial.ascent_meta_key_id = 26 left join grades initial_g on am_initial.value = initial_g.grade_id::varchar and initial_g.climb_type_id = 2 where a.fa = true and a.deleted_on is null ), first_ascent_by_climb as ( select fa.climb_id ,string_agg( '<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>' ,', ' order by cl.climber_name ) as first_ascent ,(array_agg( pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end) order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end) ))[1] as date ,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order ,(array_agg( fa.suggested_grade order by fa.suggested_order_on desc nulls last ))[1] as suggested_grade ,max(fa.suggested_order_on) as suggested_order_on ,(array_agg( fa.initial_suggested_grade order by fa.initial_suggested_order_on desc nulls last ))[1] as initial_suggested_grade ,max(fa.initial_suggested_order_on) as initial_suggested_order_on from first_ascents fa inner join climbers cl on fa.climber_id = cl.climber_id and cl.deleted_on is null group by fa.climb_id ) select c.climb_uuid as row_uuid ,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name" ,g.grade as "Grade" ,fa.first_ascent as "First Ascent" ,case when fa.initial_suggested_grade is not null and fa.suggested_grade is not null and fa.initial_suggested_grade != fa.suggested_grade then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade when fa.initial_suggested_grade is not null and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade) then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade when fa.suggested_grade is not null then fa.suggested_grade else g.grade end as "Suggested Grade" ,fa.date as "Date" from climbs c inner join grades g on c.grade_id = g.grade_id and g.climb_type_id = 2 inner join first_ascent_by_climb fa on c.climb_id = fa.climb_id cross join grade_cutoff gc where c.deleted_on is null and c.climb_type = 2 and fa.date_order < 20200101 and ( g.order_on >= gc.order_on or fa.suggested_order_on >= gc.order_on or fa.initial_suggested_order_on >= gc.order_on ) order by fa.date_order ,greatest( coalesce(g.order_on, 0) ,coalesce(fa.suggested_order_on, 0) ,coalesce(fa.initial_suggested_order_on, 0) ) desc ,c.climb_name
After
with grade_cutoff as ( select g.order_on from grades g where g.climb_type_id = 2 and g.grade = '8C+' limit 1 ), first_ascents as ( select a.ascent_id ,a.climb_id ,a.climber_id ,a.ascent_dt_start ,a.ascent_dt_end ,sg.grade as suggested_grade ,sg.order_on as suggested_order_on ,initial_g.grade as initial_suggested_grade ,initial_g.order_on as initial_suggested_order_on from ascents a left join grades sg on a.suggested_grade_id = sg.grade_id and sg.climb_type_id = 2 left join ascent_meta am_initial on a.ascent_id = am_initial.ascent_id and am_initial.ascent_meta_key_id = 26 left join grades initial_g on am_initial.value = initial_g.grade_id::varchar and initial_g.climb_type_id = 2 where a.fa = true and a.deleted_on is null ), first_ascent_by_climb as ( select fa.climb_id ,string_agg( '<a href="/climber/' || cl.climber_id::varchar || '">' || cl.climber_name || '</a>' ,', ' order by cl.climber_name ) as first_ascent ,(array_agg( pretty_dt(fa.ascent_dt_start, fa.ascent_dt_end) order by order_dt(fa.ascent_dt_start, fa.ascent_dt_end) ))[1] as date ,min(order_dt(fa.ascent_dt_start, fa.ascent_dt_end)) as date_order ,(array_agg( fa.suggested_grade order by fa.suggested_order_on desc nulls last ))[1] as suggested_grade ,max(fa.suggested_order_on) as suggested_order_on ,(array_agg( fa.initial_suggested_grade order by fa.initial_suggested_order_on desc nulls last ))[1] as initial_suggested_grade ,max(fa.initial_suggested_order_on) as initial_suggested_order_on from first_ascents fa inner join climbers cl on fa.climber_id = cl.climber_id and cl.deleted_on is null group by fa.climb_id ) select c.climb_uuid as row_uuid ,'<a href="/climb/' || c.climb_id::varchar || '">' || c.climb_name || '</a>' as "Name" ,g.grade as "Grade" ,fa.first_ascent as "First Ascent" ,case when fa.initial_suggested_grade is not null and fa.suggested_grade is not null and fa.initial_suggested_grade != fa.suggested_grade then fa.suggested_grade || ' ~ Initially suggested ' || fa.initial_suggested_grade when fa.initial_suggested_grade is not null and fa.initial_suggested_grade != coalesce(fa.suggested_grade, g.grade) then coalesce(fa.suggested_grade, g.grade) || ' ~ Initially suggested ' || fa.initial_suggested_grade when fa.suggested_grade is not null then fa.suggested_grade else g.grade end as "Suggested Grade" ,fa.date as "Date" from climbs c inner join grades g on c.grade_id = g.grade_id and g.climb_type_id = 2 inner join first_ascent_by_climb fa on c.climb_id = fa.climb_id cross join grade_cutoff gc where c.deleted_on is null and c.climb_type = 2 and fa.date_order < 20200101 and ( g.order_on >= gc.order_on or fa.suggested_order_on >= gc.order_on or fa.initial_suggested_order_on >= gc.order_on or fa.suggested_grade in ('8C/8C+', '8C/+') or fa.initial_suggested_grade in ('8C/8C+', '8C/+') ) order by fa.date_order ,greatest( coalesce(g.order_on, 0) ,coalesce(fa.suggested_order_on, 0) ,coalesce(fa.initial_suggested_order_on, 0) ) desc ,c.climb_name
Diff
--- before

+++ after

@@ -89,7 +89,7 @@

when fa.suggested_grade is not null
then fa.suggested_grade
else g.grade
- end as "Suggested Grade"
+ end as "Suggested Grade"
,fa.date as "Date"

from
@@ -109,6 +109,8 @@

g.order_on >= gc.order_on
or fa.suggested_order_on >= gc.order_on
or fa.initial_suggested_order_on >= gc.order_on
+ or fa.suggested_grade in ('8C/8C+', '8C/+')
+ or fa.initial_suggested_grade in ('8C/8C+', '8C/+')
)

order by

< Page 4 >