baz9

Badges

100 Contributions1,000 Contributions10 Posts

Contributions

Posts

1 Day

0

7 Days

0

4 Weeks

66

All Time

6423

Current Streak

0

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
2701 1st May 2026 21:17:02 UTC baz9 climb Captain Hook crag_location_breadcrumb_pretty
Before
None
After
<a href="/crags/location/United States" class="text-muted">United States</a> / <a href="/crags/location/United States/Arizona" class="text-muted">Arizona</a> / <a href="/crags/location/United States/Arizona/Pinal County" class="text-muted">Pinal County</a>
2702 1st May 2026 21:16:39 UTC baz9 crag Oak Flat Other Name
Before
None
After
Oak Flats
2703 1st May 2026 18:05:25 UTC baz9 list Crags to Create list_definition
Before
select '<a href="' || substring(c.eight_a_nu_url from '^(.+)/sectors/') || '">' || initcap(replace(split_part(c.eight_a_nu_url, '/', 7), '-', ' ')) || '</a>' as "8a.nu Crag" ,count(*) as "Climbs Missing" ,string_agg( '<a href="' || c.url || '">' || c.climb_name || '</a>', ', ' order by c.climb_name ) as "Climbs" from climbs c where c.deleted_on is null and c.crag_id is null and c.eight_a_nu_url is not null and split_part(c.eight_a_nu_url, '/', 7) not like 'unknown-crag%' group by substring(c.eight_a_nu_url from '^(.+)/sectors/') ,split_part(c.eight_a_nu_url, '/', 7) order by count(*) desc ,"8a.nu Crag"
After
with missing_crags as ( select substring(c.eight_a_nu_url from '^(.+)/sectors/') as eight_a_nu_crag_url ,split_part(c.eight_a_nu_url, '/', 7) as eight_a_nu_crag_slug ,initcap(replace(split_part(c.eight_a_nu_url, '/', 7), '-', ' ')) as eight_a_nu_crag_name ,count(*) as climbs_missing ,string_agg( '<a href="' || c.url || '">' || c.climb_name || '</a>', ', ' order by c.climb_name ) as climbs from climbs c where c.deleted_on is null and c.crag_id is null and c.eight_a_nu_url is not null and split_part(c.eight_a_nu_url, '/', 7) not like 'unknown-crag%' group by substring(c.eight_a_nu_url from '^(.+)/sectors/') ,split_part(c.eight_a_nu_url, '/', 7) ) select '<a href="' || m.eight_a_nu_crag_url || '">' || m.eight_a_nu_crag_name || '</a>' as "8a.nu Crag" ,m.climbs_missing as "Climbs Missing" ,m.climbs as "Climbs" ,coalesce(site_crags.crag_exists, '') as "Crag Exists?" from missing_crags m left join lateral ( select string_agg( '<a href="' || c2.url || '">' || c2.crag_name || '</a>', ', ' order by c2.crag_name ) as crag_exists from crags c2 where c2.deleted_on is null and ( ( length(m.eight_a_nu_crag_name) <= 4 and lower(regexp_replace(c2.crag_name, '[^a-z0-9]+', '', 'g')) = lower(regexp_replace(m.eight_a_nu_crag_name, '[^a-z0-9]+', '', 'g')) ) or ( length(m.eight_a_nu_crag_name) between 5 and 8 and ( lower(c2.crag_name) ~ ('(^|[^a-z0-9])' || lower(regexp_replace(m.eight_a_nu_crag_name, '[^a-z0-9]+', ' ', 'g')) || '([^a-z0-9]|$)') or lower(m.eight_a_nu_crag_name) ~ ('(^|[^a-z0-9])' || lower(regexp_replace(c2.crag_name, '[^a-z0-9]+', ' ', 'g')) || '([^a-z0-9]|$)') ) ) or ( length(m.eight_a_nu_crag_name) >= 9 and ( c2.crag_name ilike '%' || m.eight_a_nu_crag_name || '%' or m.eight_a_nu_crag_name ilike '%' || c2.crag_name || '%' ) ) ) ) site_crags on true order by m.climbs_missing desc ,"8a.nu Crag"
Diff
--- before

+++ after

@@ -1,29 +1,66 @@

-select
- '<a href="' ||
- substring(c.eight_a_nu_url from '^(.+)/sectors/') ||
- '">' ||
- initcap(replace(split_part(c.eight_a_nu_url, '/', 7), '-', ' ')) ||
- '</a>' as "8a.nu Crag"
- ,count(*) as "Climbs Missing"
- ,string_agg(
- '<a href="' || c.url || '">' || c.climb_name || '</a>',
- ', ' order by c.climb_name
- ) as "Climbs"
-
-from
- climbs c
-
-where
- c.deleted_on is null
- and c.crag_id is null
- and c.eight_a_nu_url is not null
- and split_part(c.eight_a_nu_url, '/', 7) not like 'unknown-crag%'
-
-group by
- substring(c.eight_a_nu_url from '^(.+)/sectors/')
- ,split_part(c.eight_a_nu_url, '/', 7)
-
-order by
- count(*) desc
+with missing_crags as (
+ select
+ substring(c.eight_a_nu_url from '^(.+)/sectors/') as eight_a_nu_crag_url
+ ,split_part(c.eight_a_nu_url, '/', 7) as eight_a_nu_crag_slug
+ ,initcap(replace(split_part(c.eight_a_nu_url, '/', 7), '-', ' ')) as eight_a_nu_crag_name
+ ,count(*) as climbs_missing
+ ,string_agg(
+ '<a href="' || c.url || '">' || c.climb_name || '</a>',
+ ', ' order by c.climb_name
+ ) as climbs
+ from
+ climbs c
+ where
+ c.deleted_on is null
+ and c.crag_id is null
+ and c.eight_a_nu_url is not null
+ and split_part(c.eight_a_nu_url, '/', 7) not like 'unknown-crag%'
+ group by
+ substring(c.eight_a_nu_url from '^(.+)/sectors/')
+ ,split_part(c.eight_a_nu_url, '/', 7)
+)
+
+select
+ '<a href="' || m.eight_a_nu_crag_url || '">' || m.eight_a_nu_crag_name || '</a>' as "8a.nu Crag"
+ ,m.climbs_missing as "Climbs Missing"
+ ,m.climbs as "Climbs"
+ ,coalesce(site_crags.crag_exists, '') as "Crag Exists?"
+from
+ missing_crags m
+left join lateral (
+ select
+ string_agg(
+ '<a href="' || c2.url || '">' || c2.crag_name || '</a>',
+ ', ' order by c2.crag_name
+ ) as crag_exists
+ from
+ crags c2
+ where
+ c2.deleted_on is null
+ and (
+ (
+ length(m.eight_a_nu_crag_name) <= 4
+ and lower(regexp_replace(c2.crag_name, '[^a-z0-9]+', '', 'g')) =
+ lower(regexp_replace(m.eight_a_nu_crag_name, '[^a-z0-9]+', '', 'g'))
+ )
+ or
+ (
+ length(m.eight_a_nu_crag_name) between 5 and 8
+ and (
+ lower(c2.crag_name) ~ ('(^|[^a-z0-9])' || lower(regexp_replace(m.eight_a_nu_crag_name, '[^a-z0-9]+', ' ', 'g')) || '([^a-z0-9]|$)')
+ or lower(m.eight_a_nu_crag_name) ~ ('(^|[^a-z0-9])' || lower(regexp_replace(c2.crag_name, '[^a-z0-9]+', ' ', 'g')) || '([^a-z0-9]|$)')
+ )
+ )
+ or
+ (
+ length(m.eight_a_nu_crag_name) >= 9
+ and (
+ c2.crag_name ilike '%' || m.eight_a_nu_crag_name || '%'
+ or m.eight_a_nu_crag_name ilike '%' || c2.crag_name || '%'
+ )
+ )
+ )
+) site_crags on true
+order by
+ m.climbs_missing desc
,"8a.nu Crag"
-
2704 1st May 2026 18:02:28 UTC baz9 list Temporary Listt list_definition
Before
with missing_crags as ( select substring(c.eight_a_nu_url from '^(.+)/sectors/') as eight_a_nu_crag_url ,split_part(c.eight_a_nu_url, '/', 7) as eight_a_nu_crag_slug ,initcap(replace(split_part(c.eight_a_nu_url, '/', 7), '-', ' ')) as eight_a_nu_crag_name ,count(*) as climbs_missing ,string_agg( '<a href="' || c.url || '">' || c.climb_name || '</a>', ', ' order by c.climb_name ) as climbs from climbs c where c.deleted_on is null and c.crag_id is null and c.eight_a_nu_url is not null and split_part(c.eight_a_nu_url, '/', 7) not like 'unknown-crag%' group by substring(c.eight_a_nu_url from '^(.+)/sectors/') ,split_part(c.eight_a_nu_url, '/', 7) ) select '<a href="' || m.eight_a_nu_crag_url || '">' || m.eight_a_nu_crag_name || '</a>' as "8a.nu Crag" ,m.climbs_missing as "Climbs Missing" ,m.climbs as "Climbs" ,coalesce(site_crags.crag_exists, '') as "Crag Exists?" from missing_crags m left join lateral ( select string_agg( '<a href="' || c2.url || '">' || c2.crag_name || '</a>', ', ' order by c2.crag_name ) as crag_exists from crags c2 where c2.deleted_on is null and ( c2.crag_name ilike '%' || m.eight_a_nu_crag_name || '%' or m.eight_a_nu_crag_name ilike '%' || c2.crag_name || '%' ) ) site_crags on true order by m.climbs_missing desc ,"8a.nu Crag"
After
with missing_crags as ( select substring(c.eight_a_nu_url from '^(.+)/sectors/') as eight_a_nu_crag_url ,split_part(c.eight_a_nu_url, '/', 7) as eight_a_nu_crag_slug ,initcap(replace(split_part(c.eight_a_nu_url, '/', 7), '-', ' ')) as eight_a_nu_crag_name ,count(*) as climbs_missing ,string_agg( '<a href="' || c.url || '">' || c.climb_name || '</a>', ', ' order by c.climb_name ) as climbs from climbs c where c.deleted_on is null and c.crag_id is null and c.eight_a_nu_url is not null and split_part(c.eight_a_nu_url, '/', 7) not like 'unknown-crag%' group by substring(c.eight_a_nu_url from '^(.+)/sectors/') ,split_part(c.eight_a_nu_url, '/', 7) ) select '<a href="' || m.eight_a_nu_crag_url || '">' || m.eight_a_nu_crag_name || '</a>' as "8a.nu Crag" ,m.climbs_missing as "Climbs Missing" ,m.climbs as "Climbs" ,coalesce(site_crags.crag_exists, '') as "Crag Exists?" from missing_crags m left join lateral ( select string_agg( '<a href="' || c2.url || '">' || c2.crag_name || '</a>', ', ' order by c2.crag_name ) as crag_exists from crags c2 where c2.deleted_on is null and ( ( length(m.eight_a_nu_crag_name) <= 4 and lower(regexp_replace(c2.crag_name, '[^a-z0-9]+', '', 'g')) = lower(regexp_replace(m.eight_a_nu_crag_name, '[^a-z0-9]+', '', 'g')) ) or ( length(m.eight_a_nu_crag_name) between 5 and 8 and ( lower(c2.crag_name) ~ ('(^|[^a-z0-9])' || lower(regexp_replace(m.eight_a_nu_crag_name, '[^a-z0-9]+', ' ', 'g')) || '([^a-z0-9]|$)') or lower(m.eight_a_nu_crag_name) ~ ('(^|[^a-z0-9])' || lower(regexp_replace(c2.crag_name, '[^a-z0-9]+', ' ', 'g')) || '([^a-z0-9]|$)') ) ) or ( length(m.eight_a_nu_crag_name) >= 9 and ( c2.crag_name ilike '%' || m.eight_a_nu_crag_name || '%' or m.eight_a_nu_crag_name ilike '%' || c2.crag_name || '%' ) ) ) ) site_crags on true order by m.climbs_missing desc ,"8a.nu Crag"
Diff
--- before

+++ after

@@ -38,8 +38,27 @@

where
c2.deleted_on is null
and (
- c2.crag_name ilike '%' || m.eight_a_nu_crag_name || '%'
- or m.eight_a_nu_crag_name ilike '%' || c2.crag_name || '%'
+ (
+ length(m.eight_a_nu_crag_name) <= 4
+ and lower(regexp_replace(c2.crag_name, '[^a-z0-9]+', '', 'g')) =
+ lower(regexp_replace(m.eight_a_nu_crag_name, '[^a-z0-9]+', '', 'g'))
+ )
+ or
+ (
+ length(m.eight_a_nu_crag_name) between 5 and 8
+ and (
+ lower(c2.crag_name) ~ ('(^|[^a-z0-9])' || lower(regexp_replace(m.eight_a_nu_crag_name, '[^a-z0-9]+', ' ', 'g')) || '([^a-z0-9]|$)')
+ or lower(m.eight_a_nu_crag_name) ~ ('(^|[^a-z0-9])' || lower(regexp_replace(c2.crag_name, '[^a-z0-9]+', ' ', 'g')) || '([^a-z0-9]|$)')
+ )
+ )
+ or
+ (
+ length(m.eight_a_nu_crag_name) >= 9
+ and (
+ c2.crag_name ilike '%' || m.eight_a_nu_crag_name || '%'
+ or m.eight_a_nu_crag_name ilike '%' || c2.crag_name || '%'
+ )
+ )
)
) site_crags on true
order by
2705 1st May 2026 17:51:43 UTC baz9 list Temporary Listt list_type_name
Before
None
After
Admin
2706 1st May 2026 17:51:43 UTC baz9 list Temporary Listt list_type_id
Before
None
After
6
2707 1st May 2026 17:51:43 UTC baz9 list Temporary Listt list_description
Before
None
After
temp
Diff
--- before

+++ after

@@ -1 +1 @@

-
+temp
2708 1st May 2026 17:51:43 UTC baz9 list Temporary Listt list_definition
Before
None
After
with missing_crags as ( select substring(c.eight_a_nu_url from '^(.+)/sectors/') as eight_a_nu_crag_url ,split_part(c.eight_a_nu_url, '/', 7) as eight_a_nu_crag_slug ,initcap(replace(split_part(c.eight_a_nu_url, '/', 7), '-', ' ')) as eight_a_nu_crag_name ,count(*) as climbs_missing ,string_agg( '<a href="' || c.url || '">' || c.climb_name || '</a>', ', ' order by c.climb_name ) as climbs from climbs c where c.deleted_on is null and c.crag_id is null and c.eight_a_nu_url is not null and split_part(c.eight_a_nu_url, '/', 7) not like 'unknown-crag%' group by substring(c.eight_a_nu_url from '^(.+)/sectors/') ,split_part(c.eight_a_nu_url, '/', 7) ) select '<a href="' || m.eight_a_nu_crag_url || '">' || m.eight_a_nu_crag_name || '</a>' as "8a.nu Crag" ,m.climbs_missing as "Climbs Missing" ,m.climbs as "Climbs" ,coalesce(site_crags.crag_exists, '') as "Crag Exists?" from missing_crags m left join lateral ( select string_agg( '<a href="' || c2.url || '">' || c2.crag_name || '</a>', ', ' order by c2.crag_name ) as crag_exists from crags c2 where c2.deleted_on is null and ( c2.crag_name ilike '%' || m.eight_a_nu_crag_name || '%' or m.eight_a_nu_crag_name ilike '%' || c2.crag_name || '%' ) ) site_crags on true order by m.climbs_missing desc ,"8a.nu Crag"
Diff
--- before

+++ after

@@ -1 +1,47 @@

-
+with missing_crags as (
+ select
+ substring(c.eight_a_nu_url from '^(.+)/sectors/') as eight_a_nu_crag_url
+ ,split_part(c.eight_a_nu_url, '/', 7) as eight_a_nu_crag_slug
+ ,initcap(replace(split_part(c.eight_a_nu_url, '/', 7), '-', ' ')) as eight_a_nu_crag_name
+ ,count(*) as climbs_missing
+ ,string_agg(
+ '<a href="' || c.url || '">' || c.climb_name || '</a>',
+ ', ' order by c.climb_name
+ ) as climbs
+ from
+ climbs c
+ where
+ c.deleted_on is null
+ and c.crag_id is null
+ and c.eight_a_nu_url is not null
+ and split_part(c.eight_a_nu_url, '/', 7) not like 'unknown-crag%'
+ group by
+ substring(c.eight_a_nu_url from '^(.+)/sectors/')
+ ,split_part(c.eight_a_nu_url, '/', 7)
+)
+
+select
+ '<a href="' || m.eight_a_nu_crag_url || '">' || m.eight_a_nu_crag_name || '</a>' as "8a.nu Crag"
+ ,m.climbs_missing as "Climbs Missing"
+ ,m.climbs as "Climbs"
+ ,coalesce(site_crags.crag_exists, '') as "Crag Exists?"
+from
+ missing_crags m
+left join lateral (
+ select
+ string_agg(
+ '<a href="' || c2.url || '">' || c2.crag_name || '</a>',
+ ', ' order by c2.crag_name
+ ) as crag_exists
+ from
+ crags c2
+ where
+ c2.deleted_on is null
+ and (
+ c2.crag_name ilike '%' || m.eight_a_nu_crag_name || '%'
+ or m.eight_a_nu_crag_name ilike '%' || c2.crag_name || '%'
+ )
+) site_crags on true
+order by
+ m.climbs_missing desc
+ ,"8a.nu Crag"
2709 1st May 2026 17:51:43 UTC baz9 list Temporary Listt list_description_pretty
Before
None
After
<p>temp</p>
2710 1st May 2026 17:51:43 UTC baz9 list Temporary Listt list_name
Before
None
After
Temporary Listt
2711 1st May 2026 17:37:14 UTC baz9 climb Titan crag_name
Before
None
After
La Balme de Yenne
2712 1st May 2026 17:37:14 UTC baz9 climb Titan crag_location_breadcrumb
Before
None
After
France / Auvergne-Rhône-Alpes / Savoie
2713 1st May 2026 17:37:14 UTC baz9 climb Titan crag_id
Before
None
After
10618
2714 1st May 2026 17:37:14 UTC baz9 climb Titan crag_location_breadcrumb_pretty
Before
None
After
<a href="/crags/location/France" class="text-muted">France</a> / <a href="/crags/location/France/Auvergne-Rhône-Alpes" class="text-muted">Auvergne-Rhône-Alpes</a> / <a href="/crags/location/France/Auvergne-Rhône-Alpes/Savoie" class="text-muted">Savoie</a>
2715 1st May 2026 17:36:37 UTC baz9 climb Street Fighter Sit crag_location_breadcrumb
Before
None
After
Spain / Castile-La Mancha / Guadalajara
2716 1st May 2026 17:36:37 UTC baz9 climb Street Fighter Sit crag_location_breadcrumb_pretty
Before
None
After
<a href="/crags/location/Spain" class="text-muted">Spain</a> / <a href="/crags/location/Spain/Castile-La Mancha" class="text-muted">Castile-La Mancha</a> / <a href="/crags/location/Spain/Castile-La Mancha/Guadalajara" class="text-muted">Guadalajara</a>
2717 1st May 2026 17:36:37 UTC baz9 climb Street Fighter Sit crag_name
Before
None
After
Alcolea del Pinar
2718 1st May 2026 17:36:37 UTC baz9 climb Street Fighter Sit crag_id
Before
None
After
34133
2719 1st May 2026 17:35:56 UTC baz9 climb Sosa Stand crag_name
Before
None
After
Little Cottonwood Canyon
2720 1st May 2026 17:35:56 UTC baz9 climb Sosa Stand crag_location_breadcrumb
Before
None
After
United States / Utah / Salt Lake County

< Page 136 >