Compare commits

...

28 Commits

Author SHA1 Message Date
R Tyler Croy d22d1cb1a0
Information management is a big deal y'all 2023-01-20 08:54:40 -08:00
R Tyler Croy e26e7e49f4
Disable twittertogether 2023-01-19 16:23:37 -08:00
R Tyler Croy 4cd2cc707a
Add a brief missive on ChatGPT
This was inspired by some discussion of using ChatGPT for Serious Coding
Business(tm)
2023-01-09 15:05:28 -08:00
R Tyler Croy 020301d399
Some long diatribe about ML 2023-01-04 17:04:14 -08:00
R Tyler Croy 5ee000a51a
Add a post about Buoyant Data 2023-01-02 14:34:31 -08:00
R Tyler Croy 45c8c79ea9
Allow webfinger to work off brokenco.de 2022-12-29 22:10:18 -08:00
R Tyler Croy 14494dd326
Remove some font styling 2022-12-24 16:17:24 -08:00
R Tyler Croy c857150a75
Add mastodon 2022-11-04 16:34:33 -07:00
R Tyler Croy da5ec47edd tweet 2022-10-28 08:06:16 -07:00
R Tyler Croy 98a118f6c3
Making Rust Strings is silly 2022-10-28 08:01:37 -07:00
R Tyler Croy c7b11e107d
tweet 2022-10-27 13:42:37 -07:00
R Tyler Croy 141201620f tweet 2022-08-11 14:40:26 -07:00
R Tyler Croy 99ef66e215
Add a blog post about the death ride 2022-08-09 21:47:37 -07:00
R Tyler Croy 8980590e60 tweet 2022-08-08 09:46:06 -07:00
R Tyler Croy b4acaed1db
Add some strava links 2022-08-08 09:45:08 -07:00
R Tyler Croy a843e2d5c4
Eating all the calories 2022-08-08 09:38:37 -07:00
R Tyler Croy 62572641d2
Add a belated day seven post 2022-06-14 22:50:16 -07:00
R Tyler Croy 559f927ad0
Day Six, almost done 2022-06-10 18:03:34 -07:00
R Tyler Croy 2080c3ad86
Copy edits 2022-06-09 17:08:16 -07:00
R Tyler Croy 584fefc1c4
Add today's post and clean up a bunch of trash in yesterday's 2022-06-09 16:21:47 -07:00
R Tyler Croy 383a852813
Day four 2022-06-08 16:54:15 -07:00
R Tyler Croy 5bb90029ea
Day three in the books 2022-06-07 17:28:33 -07:00
R Tyler Croy a3872b0abf
FUcked up the title 2022-06-06 16:34:39 -07:00
R Tyler Croy bacb6f8aca
Add day two along with some links to twitter 2022-06-06 16:31:52 -07:00
R Tyler Croy a9eee2c29f
I guess the problem is that I don't know what day it is 2022-06-05 17:57:08 -07:00
R Tyler Croy e897fb52fb
Update Gemfile.lock because hey why not 2022-06-05 16:58:34 -07:00
R Tyler Croy f42bf8b892
Token commit to push GitHub Pages 😒 2022-06-05 16:12:32 -07:00
R Tyler Croy 9bd7b50603
Add ALC 2022 day one
No longer preview because I'm missing some system dependencies, so we'll do it
live!
2022-06-05 15:46:53 -07:00
38 changed files with 1834 additions and 32 deletions

View File

@ -1,27 +0,0 @@
---
on: [push, pull_request]
name: Twitter, together!
jobs:
preview:
name: Preview
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: gr2m/twitter-together@v1.x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tweet:
name: Tweet
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
steps:
- name: checkout main
uses: actions/checkout@v2
- name: Tweet
uses: gr2m/twitter-together@v1.x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TWITTER_ACCESS_TOKEN: ${{ secrets.TWITTER_ACCESS_TOKEN }}
TWITTER_ACCESS_TOKEN_SECRET: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
TWITTER_API_KEY: ${{ secrets.TWITTER_API_KEY }}
TWITTER_API_SECRET_KEY: ${{ secrets.TWITTER_API_SECRET_KEY }}

23
.well-known/webfinger Normal file
View File

@ -0,0 +1,23 @@
{
"subject": "acct:rtyler@hacky.town",
"aliases": [
"https://hacky.town/@rtyler",
"https://hacky.town/users/rtyler"
],
"links": [
{
"rel": "http://webfinger.net/rel/profile-page",
"type": "text/html",
"href": "https://hacky.town/@rtyler"
},
{
"rel": "self",
"type": "application/activity+json",
"href": "https://hacky.town/users/rtyler"
},
{
"rel": "http://ostatus.org/schema/1.0/subscribe",
"template": "https://hacky.town/authorize_interaction?uri={uri}"
}
]
}

View File

@ -49,7 +49,7 @@ GEM
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
nuggets (1.6.0)
nuggets (1.6.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (4.0.7)
@ -60,7 +60,7 @@ GEM
ffi (~> 1.0)
rdiscount (2.2.0.2)
rexml (3.2.5)
rouge (3.28.0)
rouge (3.29.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
@ -85,4 +85,4 @@ DEPENDENCIES
webrick
BUNDLED WITH
2.3.8
2.3.12

View File

@ -1,3 +1,4 @@
= brokenco.de
This is my link:https://brokenco.de[blog]

View File

@ -18,6 +18,8 @@ collections:
permalink: microblog/:year/:month/:title/
lsi: false
include:
- '.well-known'
exclude:
- README.markdown
- Makefile

View File

@ -76,6 +76,13 @@ title: Home
<a href="/podcast-picks.xml">podcast-picks.xml</a>
</td>
</tr>
<tr>
<td>
<img src="/images/icons/blank.png"/>
<img src="/images/icons/xml.png"/>
<a rel="me" href="https://hacky.town/@rtyler">Mastodon</a>
</td>
</tr>
<tr>
<td>
<img src="/images/icons/comp.gray.png"/>

View File

@ -0,0 +1,6 @@
---
layout: microblog
date: 2022-08-08 09:45:14 -0700
title: 776f2614
---
The most calories burned in a single ride was over 7,500. Cycling has made me much more serious about my nutrition: https://brokenco.de/2022/08/08/cycling-calories.html

View File

@ -0,0 +1,5 @@
---
layout: microblog
date: 2022-08-08 09:43:56 -0700
title: fbb4695a
---

View File

@ -0,0 +1,6 @@
---
layout: microblog
date: 2022-08-11 14:31:20 -0700
title: d3c3e45f
---
At what point does "throwback" become "classic" and then "oldies"?

View File

@ -0,0 +1,6 @@
---
layout: microblog
date: 2022-10-27 13:40:18 -0700
title: e6671e31
---
I wrote some Rust last night. It's been a while but I am still so pleasantly smitten with that compiler.

View File

@ -0,0 +1,6 @@
---
layout: microblog
date: 2022-10-28 08:05:19 -0700
title: d9e7595b
---
Which is the fastest way to make &str into String in #rustlang? The results may surprise you! https://brokenco.de/2022/10/28/rust-strings.html

View File

@ -0,0 +1,118 @@
---
layout: post
title: "Rode hard and put away wet: AIDS/LifeCycle Day One"
tags:
- alc
- alc2022
- cycling
---
This is my second year of [AIDS/LifeCycle](https://aidslifecycle.org) and
the differences are incredible. The ride is different, and **I** am also a very
different rider. I have put down over 2,500 training miles. I am riding a
lighter aluminum tube bike, which replaced the bike I broke on ALC 2019. I am
one of three representing Team Germany, Jens and Ulf flying all the way from
Berlin to raise money and support the community in California. Today was day
_one_, 81 miles from the Cow Palace in San Francisco to Santa Cruz. Today was
**incredible**.
---
I also posted a [thread to
Twitter](https://mobile.twitter.com/agentdero/status/1533401290973147137) for
today with more pictures.
---
June in California is typically dry and hot, _typically_. The hoard of cyclists
departing the Cow Palace this morning were greeted with an atypical day: it
rained practically the **entire** ride to Santa Cruz.
Ride out is always slow and stressful, add slick and bumpy San Francisco city
streets into the mix and my focus was largely on staying safe. Ride safe, be
safe. Jens, Ulf, and I spent a few miles chatting and meeting Jens' adoring
fans. The electrolytes I had in Cow Palace got the better of me and I increased
pace so I could find a bathroom sooner rather than later.
I had also left Cow Palace with empty water bottles, so I pulled into the water
station ahead of Rest Stop One and got myself situated on both fronts.
Departing the water station I reminded myself of the rules I developed during
2019:
* Whenever you see somebody drink, you drink.
* When you see the "1 mile to go" sign for a rest stop, drain your water bottle.
* Do not pass a rest stop.
* Do not leave a rest stop until you have gone to the bathroom.
* Eat at every stop!
As the pack opened up departing San Francisco, I found myself passing people
with some frequency, especially on climbs. I do a **lot** of climb training
around Santa Rosa which is flanked by fabulous mountains to the east and west.
At Rest Stop One I started to realize the benefits of being fast: unused
toilets, fresh drinks, and plenty of snacks.
My feet were soaked, my front was soaked, my butt was soaked. My thinking
shifted towards getting to Santa Cruz, or dry weather, as quickly as possible.
The rules of ALC prohibit drafting, which is an important part of the overall
safety program. The headwinds that started to push against us as we made our
way towards Half Moon Bay really made me resent the rule however. By the time I
got into Rest Stop Two I was feeling warmed up, very comfortable, and pleased
with my progress. I could not stop for long unfortunately, after about 5
minutes I would start to shiver.
I ended up not being able to stop for more than 5-10 minutes the rest of the
day, not even at lunch, as the wet weather, wind, and generally miserable
conditions made me shake uncontrollably. Leaving lunch was an immediate climb,
at the top of which I was warm again, thank goodness!
Cranking along the coast any other year cyclists are greeted with spectacular
ocean views along Route 1, this year it was _soup_. I pushed further, passing
more cyclists along the way. There is _always_ somebody up ahead triggering me
to ride a little faster and focus a little more on my pedal strokes;
AIDS/LifeCYcle is a _ride_ not a _race_ but that doesn't keep my competitive
monkey-brain from pushing me along.
As I arrived into Rest Stop Three, there were five other cyclists in the rack.
A **stark** difference from 2019 where I felt like i was in traffic the entire
ride down to Santa Cruz. I took a picture in front of a big rainbow display
against the side of the Roadies' truck. "Baby Got Back" started to play over
their sound system, a little dancing helped stave off the shivers, but I had to
keep on trucking.
Somewhere between Rest Stop Three and Four, I got a flat tire! Angry and
shivering, gloves and hands wet, I fought the tire off my rear rim and started
the process of clearing the tire of obstructions. A tall gentleman rode up and
stopped "I'm okay!" He replied "I can see that, I thought I would just be your
thumb." Michael stood there to give passing riders and ALC cars the thumbs up
since we had the situation under control. Making conversation in between the
shivers, I learned that he's done the ride for **twenty one years**! I used up
a whole CO2 cartridge, and we rode off.
Unfortunately I lost Michael on a climb, and didn't see him at Rest Stop Four.
When I arrived they hadn't even set up Bike Parking yet. I knew I was hauling
ass, but that surprised me. I visited the Bike Mechanic to buy a new tube, new
cartridges, and make sure I did really clear the tire of whatever punctured the
tube.
76 miles down. Camp was close.
The last few miles bring us into Santa Cruz city limits where there are a lot
more cars and a meandering course that brought me and a fellow cyclist finally
to the park where Day One Camp was busily being constructed. As we dismounted a
Roadie kindly told me that I was the 23rd cyclist to arrive at camp.
I am **so** proud of that. Day One is the only day when we all depart together,
and while everybody stays at rest stops and lunch for different durations, I
don't feel like I unnecessarily pushed myself.
My baseline speed is faster, my handling skills are better, my flat repair
ability is superb!
After Bike Parking, I grabbed gear, setup the tent and _finally_ got a warm
shower and dry clothes.
81 of 545 miles, through the driving rain, blistering headwinds, with a few
thousand of my closest friends. What a great start to ALC 2022!

View File

@ -0,0 +1,116 @@
---
layout: post
title: "Pounded on the rural roads of California: AIDS/LifeCycle Day Two"
tags:
- alc
- alc2022
- cycling
---
The second day of ALC is the **big** day, by the cue sheet it's 109 miles, but
yours truly ended up clocking 112 miles. The road is rough but fortunately the
tailwinds are generous almost the entire way from Santa Cruz to King City. I
woke to my alarm at 4:15am and started today's journey.
---
I also posted a [thread to
Twitter](https://mobile.twitter.com/agentdero/status/1533792305957588992) for
today with more pictures.
---
Being with the first group leaving camp was absolutely delightful, I highly
recommend it if you want to avoid traffic with all the stop signs scattered
throughout Santa Cruz. As the sun rose it shined through the fog adding an
eerie feel to the morning. Coming to the south side of Santa Cruz there's this
little kick up, it's probably no more than a hundred feet but it happens in a
quarter mile or so. The first year I struggled with everybody else around me up
the hill, my legs are different this time around, and I jaunted up to the top
and kept plugging away on the route towards Rest Stop One. Fogged in and barely
set up, I quickly followed the routine of:
1. Bathroom
1. Cleanse
1. Snacks
1. Refill bottles
1. Ride out
Back on the road we started to leave the foggy urban and suburban parts of
Santa Cruz and headed out into the country where the road quality turns to
utter shit. In 2019 I ended up breaking my bike, and I believe it was due to a
stress fracture caused on day two. Today I focused on keeping my butt from
getting too beat up as I rolled across the landscape.
Day Two is also notable for the unofficial "artichoke stop" which I planned on
attending since I was so early, lo and behold there wasn't a line! I sat and
enjoyed my fried artichoke breakfast with a fellow from the Air Force who had
been trying to catch me.
It feels _really_ good to be chased, rather than _just surviving_. After the
artichokes I found myself with a group stuck at an intersection. The air force
guy was chatting with somebody behind me and said "I've been trying to catch
this guy, but he's going crazy fast." That also felt pretty damn good. All the
hard work I did training, over 2,500 miles has really paid off!
Rest Stop Two was more of the same, but for the first time I took my sleeves
**off** and applied sunscreen. Sunshine!
Rest Stop Two to Lunch was quite short, so I spent some a little bit of extra
time eating and relaxing before departing once again. Leaving the little town
of Gonzales the winds really picked up, which from any other direction would be
miserable, but these were _tailwinds_ and they were **strong**. I powered over
the atrocious roads at speeds of over 30mph.
Alone.
In 2019 this stretch of road I made a friend with a woman who was a spin
instructor in San Francisco. Our paces were about the same and we hammered down
the road to King City together which was one of my highlights from the year,
and one of the more memorable experiences I have had on a bike. While we
continued to ride together the remainder of that ALC, I lost touch with her
after the event.
I ran into her by chance at Orientation this year. She recognized me before I
recognized her, and we started chatting. She hated her job and left, before
finding a job working on ALC full time as a staffer. Before wishing each other
well as we returned to our respective Staffer and Cyclist duties, she shared
that day two in 2019 was one of the best days of cycling she's ever had.
That's the power of a great tailwind.
I skipped water stops between Rest Stop Two and Three, no need, I was
*cruising*. Leaving Rest Stop Three, the cruising continued as the road
meandered through the valley. I continued alone with nobody in front or behind
me. The downside of being alone is that there's nobody to follow, but at least
there's also nobody to lead astray.
Rest Stop Four was mostly set up when I got there, some rural community park
through which the wind gusts. Anything not weighted down will soon fly away.
I follow the routine again and on my departure I confidently line up to turn
left, wish the Roadies a good day and continue on through the small town.
Crossing the highway I wonder why Traffic didn't put up yellow arrows. There
have been a couple spots along today's route where I feel like an arrow would
be helpful, so I figure "straight" is a safe default. On the east side of
town, the road travels off into the countryside and I cannot see any cyclist
in sight.
This cannot be right. Fortunately I also grab a route sheet every morning! I
study it for a bit but decide that I cannot make heads or tails of where I
went wrong. In lieu of better information, I head back to Rest Stop Four, a
couple miles back through town. At the intersection where I turned left, I
asked a different Roadie where the exit is, turns out it was a **right** I
needed to make. I was surprised the Roadie I saw previously didn't shout out
to me, but I suppose being one of the faster in the group, if you move with
confidence they're going to just assume you know what you're doing. They
could not be more wrong!
Once back on the route, I found some more tailwinds and hammered hard to make
up for lost time, passing other cyclists at an extremely high rate of speed.
During this section my top speed was 42mph, which I still cannot believe.
Arriving into camp, only a few racks had even been set up yet. I was 34th,
despite my silly detour.
112 miles, some amazing tailwinds, and a dose of humility. Day Two of riding
completed.

View File

@ -0,0 +1,90 @@
---
layout: post
title: "Bustin': AIDS/LifeCycle Day Three"
tags:
- alc
- alc2022
- cycling
---
Riding from King City to Paso Robles is short, 63 miles, but challenging for
two reasons: "Quadbuster" and the heat. Attempting to avoid either giving me
too much trouble, I woke early at 4:15 and was able to be one of the first 20
riders out of camp. Shivering in the cold and foggy pre-dawn air, I was
reminded of my stiff legs, stiff after almost 200 miles in two days in the
saddle. For a number of reasons Day Three can be brutal.
---
I also posted a [thread to
Twitter](https://mobile.twitter.com/agentdero/status/1534137811841929216)
for today with more pictures
---
Last night I was considering a tweet I had posted a week ago. My fundraising
had stalled at 11k and I wanted to raise a little more in the last week before
ride out. With my training this year, I figured I could do Quadbuster multiple
times, I suggested that I would do it up to five times.
I did not expect my friend Harley to come through with rallying a *lot* of
last-minute fundraising on my behalf, which bumped me up to over **17k**.
I pondered whether Harley's fundraising meant that I should or should not keep
to my original solicitation.
I remember Quadbuster being brutal during my first year, and the subsequent
heat of the day making the day just awful. I decided to try it at least two
times and see how it would feel.
---
I ended up doing Quadbuster **five times**, adding 13 miles and a bit over a
thousand feet of elevation gain.
The climbs weren't that bad, but the last climb I started to feel just like I
did in 2019, it was **tough**. Yes I committed myself to it, but I realy ended
up doing the climbing for me. Quadbuster was so intimidating to me, I was
genuinely concerned about the climb. I wanted to _conquer_ Quadbuster for me.
With the climbing complete, I screamed down the other side and cranked along to
Rest Stop Two where I ran into my team mates Jens and Ulf. They laughed at my
self-inflicted challenge and told me I shouldn't be such a cheap prostitute and
next time require $1k per trip up Quadbuster. We rode out of Rest Stop Two
together and after a while together I pushed on ahead. The cool breeze was
getting warm and the heat of the day swiftly approached.
Rest Stop Three was uneventful, I lathered up in sunscreen and rolled out into
the heat.
The special thing about Day Three is that we stop in Bradley where the local
school works with ALC to do a fundraiser for the students. They offer a veggie
burger option which pairs nicely with shady spot against a wall. I chatted with some
folks from Team Colorado, where I inquired as to how well fundraising out of
state goes. Eventually my lunch had all disappeared and I had to lumber back to
a standing position before trundling off into the ever rising temperatures.
The stretch between Bradley and Rest Stop Four traverses a military base which
is _interesting_ but the US Army has definitely not optimized their roads for
bicycle use. The bouncing around and gravel made me concerned about getting a
flat, so I spent much of the stretch thinking about whether you can actually
stop to change your tire on the base. My question was answered when I saw a guy
changing a tire underneath a tree, with a small white base security car and a
man in camouflage looking on.
I never skip a Rest Stop so I rolled into Rest Stop FOur for some ice, fluids,
and pictures with the Spice Girls. The first time around I sat at Rest Stop
Four for what felt like a half hour feeling like a shit sandwich cooking in the
sun. This time around I still felt like I was cooking in the sun, but had a bit
more confidence that I was going to swiftly make it back into camp. From Rest
Stop Four there are pleasant rollers, light tailwinds, and some nice scenery.
Much of the scenery went unnoticed in 2019, this time around however I can
really enjoy the sights much more as I hammer down the road.
Closing in on Paso Robles I ran into my tent mate
[Kohsuke](https://twitter.com/kohsukekawa) and we were able to finish together.
Despite the extra climbing, heat, and general leg stiffness, I proudly arrived
into camp as the 168th cyclist.

View File

@ -0,0 +1,175 @@
---
layout: post
title: "Pulling trains along the central coast: AIDS/LifeCycle Day Four"
tags:
- alc
- alc2022
- cycling
---
Most of my training and cycling has been solo, but today was **so much fun**
because it was all about _teamwork_. The day starts with a good steady climb
known as "the evil twins", includes a gorgeous and long descent to the coast,
and finishes outside the town of Santa Maria. For one reason or another I found
myself cycling in largely small groups of 2-4. Teamwork means coordination,
communication, and _speed_.
---
I also posted a [thread to
Twitter](https://mobile.twitter.com/agentdero/status/1534501199570825219)
for today with more pictures
---
The alarm peeped at 4:15 and I immediately started marching over to the
breakfast tent shivering like a little dog. Hustling to take the tent down and
drop off gear before scurrying off to bike parking I had stopped shivering
which is a good sign, but also an indication that the day will be quite warm.
The route today was meandering through Paso Robles and had me riding next to
some fixed gear cyclists. They're known for their siren call of "Fuck yeah
rider!" Pulling up alongside them at a stop light I ask if they were riding
freewheeling hubs or true fixed gears. Freewheeling hubs are effectively single
speed which allow you to coast if you stop pedaling, while truly fixed hubs
means that the cyclists legs have to keep moving as long as the wheels are
spinning. The curly mustachioed man smiled and said "Freewheel? Never heard of
her!" and then laughed exactly the laugh you'd expect from a man sporting curly
Qs and covered in tattoos. I watched them descend a small hill and it was
mesmerizing as their legs pumped almost in unison, quite like cylinders of an
engine. As we approached the evil twins, I gave them a "fuck yeah riders" for
good measure and commenced climbing.
It's not a race, it's a ride.
But I'll be damned if I don't get competitive on the climbs. En route to Rest
Stop One I started passing people on some of the rollers,
jumping out to the side "on your left!", standing out of the saddle, and really
pushing as much power into the pedals as I could. In Rest Stop One a fellow
cyclist told me that it was a lot of fun to try to keep up with me on those
climbs. I felt quite flattered! We chatted for a bit, turns out we were both former members
of Team ALCaholics. We parted ways and I fell in with a woman I had met and
rode with over the past couple days,
Despite her insistence of not being a strong cyclist, she very truly is, and
for whatever reason doesn't ride with clips. You see that more than you'd
think at ALC. Cyclists of all skill levels and with all kinds of equipment load outs
riding the route, raising money for a great cause. What you don't typically
see are such strong cyclists riding without clips and this year I have ridden
with two _very_ strong riders, mashing pedals with their street shoes.
The two of us chatted as we climbed before I pushed onward from evil twin one
to evil
twin two, where I ran into the Triathelete. I had chased him a couple of days
prior, but this was the first time I caught him. He was obviously taking it
easy.
He's probably 6 inches shorter than I am and can absolutely smoke me on the
route. We climbed together and chatted, passing people as we went up evil twin
two. As we went by the Googler I had met on Day Two, he called out "well don't
just have a full on conversation while I'm struggling here." Sharing a laugh we
continued to push to the halfway point.
There's a pull-off on the side of the highway at roughly half the mileage
between San Francisco and Los Angeles. I was pushing hard so I could get heir
early, get my pictures, and start the long descent to the coast with as little
traffic as possible. We all arrived around the same time, got some great
pictures, and started down.
In 2019 this descent _terrified_ me. I had never lost so much elevation or
ridden at these speeds before. Most of my training had been indoors and I just
didn't have the exposure to massive climbs like I do now. I also had rim brakes
which I knew could heat up and would require lots of feathering. This time
around I am a *much* more confident rider and actually pedalled downhill most
of the way. At one point I approached a fellow who helped me out on day
one. "On your left!" I shouted at full volume, as we rounded a curve I saw his
head shake. I assumed he didn't want to move over because he felt unsafe or
saw some hazards up ahead. I gently braked, waited to until after the turn and
then came into the lane and sped past him, returning to the shoulder after I
was clear.
We caught up later and I apologized if I came up onto him too fast or made him
feel unsafe. He didn't even remember it and had no problem with my passing. "I
must have hit a fly or something." I shared with him how much that descent
terrified me and how important it was to be respectful of other cyclists
boundaries, he smiled, wished me a good ride and I departed Rest Stop Two with
the Googler and somebody from Twitter.
The Googler offered to "pull" for a while, which basically means push at the
front through the headwinds for the benefit of the others. After a couple miles
it was my turn, and so I pulled in front, set the pace at about 20-21mph and we
all rocketed along towards lunch. I was happy to pull and they were happy to
let me! I stayed up front pulling them through the mild rollers along the
highway along the coast towards San Luis Obispo. The sights were stunning;
the central coast of California is _definitely_ worth a visit.
Parking at lunch, the Googler says "when you asked if I wanted to ride
together, I didn't think you meant that you would drag my ass all the way to
lunch!" No complaints were tendered however, I was happy to challenge myself,
and worked up an incredible appetite in the process!
I sat around in the shade at lunch so long that most everybody I knew had left,
my bike computer timed out the ride, and I had to ride out solo. The cycling
was nonetheless great and as I closed in on city limits I caught a couple of
folks at a stoplight.
A new group of bike friends, hooray!
After pulling all the way to lunch, I figured the karma of cycling owed me
and I happily accepted a free ride towards Rest Stop Three. My post-lunch
efforts I have been doing low effort segments, which seems to work
out well, so I may continue that in the future.
Closing in on Rest Stop Three the bike in front of me popped and psssssssssssh
went flat. They both stopped off and needed no help so I continued onward to
Rest Stop Three which ended up only being about a hundred yards ahead. As I was
wrapping up with my business I saw him walk up with his bike over his shoulder,
the sidewall of his tubeless tire had a tear in it, but the bike techs believed
that he'd still be able to ride with a tube in the tire.
I rolled out again solo.
The segment from Three to Four includes a water stop, which I skipped, and an
unofficial cinnamon bun stop, which I also skipped. Unfortunately I spent all
my day's fun money supporting the lunch fundraiser, so I pressed onto Rest Stop
Four.
My right knee started to nag. I could not figure out what sequence of behaviors
would lead it to hurt, but it was intermittent so my pace took a hit as a
precaution.
Still, I cannot pass up a good riding group. When I came across a strong wheel
I met on day two, I decided to hop on and not let him go. I wanted to get to
Rest Stop Four with as little energy as possible. We picked up a first timer
along the way, who was also quite happy to have a group to raise his spirits
and pace.
Closing in on Rest Stop Four, pop! Psssssshhhhhhhh. Our strong wheel had a
flat! The two stayed back as I continued to Rest Stop Four which was roughly a
mile ahead. When I arrived I just sat in the shade, stretching my knee.
The stop was still being set up and my knee was the first priority.
Somebody from Medical came over unprompted "you look like you could use a bag
of ice." "Yes, thank you!"
The first timer rolled into camp looking for a car to pick up the strong wheel;
his sidewall was shredded and he had two flat tires.
I am not good luck today.
With some much needed ice and rest, I departed Rest Stop Four with two older guys who kept making jokes about being
slow. I left them behind at some point and found myself alone.
"Damnit, I cannot believe I made a wrong turn again!"
I must get real stupid after Rest Stop Four, two missed turns after Rest Stop
Four on this ride.
I backtracked and only lost a couple blocks. Eventually I caught up to the
older timers, shared a laugh at my missing a turn. They had hollered at me but I
clearly didn't hear them. Oops.
Rolling into camp, the very nice Roadie who has been there every day at the
finish line called out "30!"
Despite all my goofing off, I am proud to have arrived 30th to camp.
It's not a race, it's a ride. But cycling is all about competing with myself
and am enjoying the challenges of each day of the ride.

View File

@ -0,0 +1,134 @@
---
layout: post
title: "A fabulous forty: AIDS/LifeCycle Day Five"
tags:
- alc
- alc2022
- cycling
---
Roughly 275 miles ridden in the past four days and it's time for a rest day of
only 43 miles. _Only_. The things cyclists say sometimes never cease to astound
me. Day Five on AIDS/LifeCycle also has the honor of being Red Dress Day, a day
which brings out make up, costumes, and of course dresses.
---
I also posted a [thread to
Twitter](https://mobile.twitter.com/agentdero/status/1534876321456611328)
for today with more pictures
---
If you are in the market for a good cycling dress, I advise the following
criteria:
* Breathable and airy, to enhance evaporation
* Close to the body, to reduce drag
* Short, to avoid messing with your pedal stroke or wheels
Following these criteria I ended up with a trashy little backless number with
criss-crossing straps which I am confident have left "X" tan lines down my
back.
Dresses are of course not compulsory, which adds to the fun of the day. In
addition to the cheerleaders, pirate wenches, and bombshells there are Waldos,
Lobsters, Marios, Ketchups, Santas, and so much more. For those who have lived
in San Francisco, it has a very Bay to Breakers vibe.
I departed camp late for two reasons: first the final destination didn't open
until 1pm, so there was no sense in leaving early. Secondly, wearing a tiny
dress is **cold**.
The last time I did a century I rode around 40 miles before my first rest stop.
While that was foolish, a comfortable pace and a hearty breakfast can take me
quite a long way. Today I needed to hit up two rest stops, a water stop, and
lunch. I _needed_ to stop because I knew I was going to have some time to kill.
Getting to Rest Stop One was through the streets of Santa Maria. Leaving later
meant a lot more cyclists on the roads ahead of me, and today is _not_ a fun
day to compete with traffic since we're all squeezed onto bike lanes during
rush hour traffic.
Despite it being a recovery day, I still popped out into the lane to crank it
past some slower cyclists. Everybody is entitled to their own pace and
rightfully so, but I get particularly anxious in traffic like that since the
risk of accidents goes up quite a bit. Generally speaking the safest place to
be is often in front of other cyclists, regardless of speed. Another cyclist
followed my initiative and ended up riding with me for a while, before I lost
him in the pack again.
"Ho, ho, ho!" proclaimed the Santa as we rolled into Rest Stop One. I parked
and went about my routine, albeit in slow motion so that I would eat up more
time.
The segment to Rest Stop Two takes us out into the country on nearly
shoulder-less country roads. I cannot imagine the thoughts of the folks driving
by seeing hundreds of fabulously dressed cyclists. As I passed two men working
on some utility cabinet, I noticed that one was holding his phone up. I should
have yelled or catcalled at him, but I'm really not good at thinking of those
things in the moment. Oh well.
Rest Stop Two is on the other side of a couple little rural climbs and tucked
in the field behind a small country school. There I ran into Sister Tutti, one
of the [Sisters of Perpetual
Indulgence](https://en.wikipedia.org/wiki/Sisters_of_Perpetual_Indulgence) that
does the ride. I had helped her with a computer problem on Day One and we've
greeted each other every day since. She is an elementary school teacher and has
incredible energy. For Red Dress Day she was also in her garb, so I _had_ to
have a picture together. I also ran into the woman who I had cycled with
previously, and she shared more of her face glitter with me. It looks very
pretty highlighting my cheekbones, but after the next time I apply sunscreen it
turns into just my whole face glitter.
We climbed out together towards Lompoc and lunch. My right knee keeps
stiffening up. The quad muscle that comes over the inside has been tender since
yesterday, and while I'm sure the foam rolling I did helped, it's still slowing
me down.
Like a big stupid dog chasing a rabbit around a track, I cannot seem to just
_chill_ and sit in. As I see more cyclists ahead that I can pass, I crank
onward.
This segment is the one in 2019 where my frame broke. The memories are still so
vivid to me, the climb where I hear the snap, the straight away where I could
hear a clanging when I put power down, and the shoulder where I stopped with a
team mate to figure out what was making that noise before tackling the big
climb that lay ahead. Almost exactly at mile 25 of Day Five, I thought my ride
was going to be over.
I considered stopping for a picture, but the new miles of that climb was in
front of me, and I wanted to get to it!
We don't have a name for this climb, but we probably should. It's a long and
gradual slog up the hill towards what I would come to learn is _now_ called
[Vandenberg _Space_ Force Base](https://www.vandenberg.spaceforce.mil/).
Space. Force. Base.
I caught a red light right at the entrance and took a number of pictures. It is
just as funny in real life as it is in that documentary with Steve Carell. I
still cannot believe it's a real thing.
Anyways, I grab a wheel to follow to the water stop, and kill some more time.
Before leaving I was complimented again on the strappy dress, which I'm sure
made me blush under the glitter that was by now smeared across my face.
The dress also turned some heads as I passed by the federal prison on the
outskirts of Lompoc. _That_ I was not as thrilled by, but I could only chuckle
to myself as I entered the cross winds after the facilities. Bright yellow
helmet, smeared face glitter, backless red dress, and celeste colored bicycle,
I would turn my head and stare too.
The ride into lunch was quick thanks to a nice little tailwind to scoot us into
town where we took over some city park. Still quite early, I decided to have
two lunches while I nursed my knee in the grass. Basking in the sun, there just
wasn't much to do other than eat, tan, and socialize. Camp sits only a few
miles beyond lunch, and those would be very easy miles.
I don't know what number into camp I was today, but it also doesn't matter. We
were all getting into camp early. Over 2,000 cyclists have each put down over
275 miles this week, their legs acclimating to the demands on them, their minds
knowing what they're now capable of.
43 miles is a short day.

View File

@ -0,0 +1,244 @@
---
layout: post
title: "Helping hands get the job done: AIDS/LifeCycle Day Six"
tags:
- alc
- alc2022
- cycling
---
After Red Dress Day it's easy to think "we're almost to LA!" This part will be
easy!" and then **BAM** you wake up at 4:15 and realize that there's almost 90
miles until the next camp. Lompoc to Ventura is one of the most beautiful days
along the route, taking us through Goviata pass, Goleta, Santa Barbara, and
down the coast line towards Ventura. _Beautiful_ but not _easy_.
---
I also posted a [thread to
Twitter](https://twitter.com/agentdero/status/1535224124829597696)
for today with more pictures
---
When I woke up and bundled up to begin the morning routine, porta-potties,
breakfast, change, tear down tent, gear truck, and bike parking, the air was so
cold I could see my break in the light of my headlamp. The grass was wet, my
flipflops got wet, my little toesies got wet, and top to bottom I was _fucking
cold_. Shaking while I wolf down my breakfast, I would occasionally look over
at some bear wearing shorts and a long sleeve t-shirt comfortable as can be;
suffice it to say with my build I don't "winter well."
By the time I had wrapped up with the morning business, I scuttled over to the
gear trucks, discarded my jacket and proceeded along to bike parking.
Today was the day when apparently everybody else finally figured out that being
early to bike parking means an easier roll out and less traffic to deal with.
As such, there were huge lines before bike parking even _opened_, queues once
we were in bike parking, and then lots of standing around in some gopher-holed
Lompoc field.
A roadie told me to tighten my helmet before I left. It was tight enough, but
there's no sense arguing with roadies who are trying to keep everybody safe. I
pulled aside, made a show of tightening it, and then clipped in and sped off.
Leaving Lompoc was tedious residential street cycling with lots of traffic from
other cyclists. My training in criteriums has made it such that I have gotten
pretty good at quick bursts of power, which came in very handy as a tool to get
away from the packs of cyclists that would bunch up at stop signs and red
lights. Nothing against them, there's just a much higher likelihood of
something going wrong when you put enough moving people close enough together.
As we left the city, the hills started to roll towards Rest Stop One. I caught
a fast wheel and we took turns puling. He would shout "left!" as we would come
upon slower cyclists. His tone sounded harsh, which is probably how I sound too,
so I made a point to say "good morning!" in a cheery voice as we passed.
"Left!" "_Good morning!_" "LEFT!" "_Good morning_!" "**LEFT!**" "_Good
morning riders!_"
The system was working well until I was pulling up a hill and could feel the
front wheel sinking every time I would pump my arms. Flatted! My harshly toned
compatriot moved along as I pulled to the side to change my tube. I cleared the
tire and pulled the tube out of it's little box, started to unscrew the valve
and the damn think came apart! Fortunately a Training Ride Leader (TRL) stopped
to give me a hand, and an extra tube. While I was putting his tube into my
tire, he kept his thumb out to try to get a pump from a sweep vehicle; I had
already burned through one of my two CO2 cartridges.
I didn't pay enough attention and pinched his tube, tearing it. _Fuck_. Once
Sweep arrived with a pump, we gave my original tube a try and it was able to be
pumped, so I asked the TRL to change the tire since we didn't have another tube
between the two of us. He managed it successfully into the tire, and the tire
onto the rim, and I was back in business! I thanked him and we both joined the
column of cyclists off to Rest Stop One.
Riding without a spare tube makes me anxious.
At Rest Stop One the bike techs were swarmed so I didn't buy another tube, and
instead did my routine, lined up to leave, and figured I would take my chances.
Departures from the stop were staged because we were going to climb up the
Goviata pass which is a strong climb following by a _swift_ descent. Sister
Tutti was in line with me and clamored to be on the right "where the slow
people are going to be!" I stayed left and pushed hard up the pass.
Passing on the climbs during ALC is probably 50% competitiveness and 50%
safety. I want to be away from people during the descent because speed
increases the risks of somebody doing something unexpected, or stupid. My top
speed on the descent was about 47mph, which is fast but no longer scary for me.
Fountaingrove Parkway in Santa Rosa, which is my backyard lunchtime training
route has me hitting between 45-50 on the downhill segments with regularity.
The only difference is that I never have to compete with other cyclists for
space.
Suffice it to say, everybody made it down in one piece, and I continued to
push hard along the coastline towards Santa Barbara. The rest stops on day six
typically have limited bike parking, so the more people I pass, the less
bullshit I have to contend with in the rest stops.
50% competitiveness, 50% safety.
Rest Stop Two was extremely foggy. Some day I'll see the coastline north of
Santa Barbara, but to date I have not been so lucky. In Rest Stop Two I stopped
by the bike tech and ask for **two** tubes. He hands them to me, and when I go
to give him cash he says "uh, can you do Venmo?" "No." "Well, we can't accept
cash...uh, can you just pay for them at lunch?" Honor system works well for me,
so I thanked the tech and left.
After my departure I continued my "on your left!" routine. I spotted a cyclist
who was off to the right and asked "do you have everything you need?" "Do you
know how to change a tire?"
I pull over, the karma of cycling dictates that:
* If somebody pulls you, you either trade pulls, or pull somebody later.
* If somebody changes your tire, you better change somebody else's tire later.
I was due. Fortunately he did have everything he needed, and was running the
same Continental race 28s that I run, except his were _brand new_. Mine have
had some miles put on them and they're still a pain in the ass to get off the
rim, when they're brand new they are _incredibly_ annoying. My pretty red nails
took a little bit of damage getting that bastard off the rim. We chatted as I
changed his tube, he asked some questions and was obviously paying good
attention to how it worked, so I did my best TRL impression and trying to make
it a Learning Opportunity &trade;.
Once he was sorted, I sped off into the fog. Twice now a tire change has undone
all the hard work I had done passing cyclists!
I made good time heading into lunch, but may have pushed myself too hard up the
climbs since my right knee started nagging me once again. Not content with
slowing down, I instead started to focus my stronger strokes on the left. The
woman who gave me a massage on Day Three noted the stronger muscle development
in the right leg, so I figured left-leg training was in order anyways.
Lunch was...calories. But unfortunately not much to gush about, I put the
calories down, headed to Medical for sunscreen, and rolled out.
The Funky Monkey I met in bike parking that morning and a buddy of his left
around the same time, and so we worked together a little bit trying to escape
the menagerie of stop lights Santa Barbara presented. "Stopping!" Foot down,
green light, "Rolling!", clip in, damnit, get in the clip you bastard, sprint a
bit, settle in, well shit another red light, "Slowing!", "Stopping!"
Lather, Rinse, Repeat.
The route comes along the bike path right by the beach in Santa Barbara, which
is where I can see the pier so often used in B-roll shots of "Psych", one of my
favorite shows. Instead of Shawn and Gus, we end up having to dodge joggers,
other cyclists, surfers, and tourists pedaling these four-wheeled pedal-car
contraptions. I was happy to find make it to Rest Stop Three because it meant
at least a break from the avoidance drills.
A number of people skip Rest Stop Three, because there is an unofficial Ice
Cream Stop hosted by Santa Barbara a few miles down the road. This is a
mistake. Rest Stop Three is at a cute little beach side park and if it's not
foggy, which it was, it can offer some really beautiful views to sit and enjoy
while you eat trail mix and poptarts sliced in half.
Of course I stopped at the Ice Cream Stop. I ate plenty and then thought to
myself "now that I've got a couple scoops of ice cream, and a cup of berries in
my stomach, how about a bike ride again!" There's a little kicker right as you
resume the route which I took nice and easy for fear of losing my ice cream and
berries. But after a mile or so I was clear to resume riding like a lunatic.
Weaving along the coast line through bike paths, frontage roads, and
underpasses, I finally made it to some of the scenic oceanside riding that I
had been looking forward to.
The views are simply spectacular. The waves crashing into the beach, pelicans
flying together across the water, and people wading into the water. What the
pictures won't show you is that the waves are crashing into the beach because
there's a very strong cross wind pushing them into the coastline, that same
wind is also pushing against _me_.
My pace slows. My knee is hurting, my left leg is feeling tired, I'm thinking
of Santa Rosa and just feeling a little deflated.
Then **Eli** powers past me.
_Fuck yes!_
I will _never_ let a strong wheel pass me. Eli is a giant of a man. I don't
actually know him, he just has a license plate that says "Eli." I stand at
about 6'4" and he's definitely a few inches taller than me.
I pop out of the saddle and sprint to catch up to him. It is not very often
that I will catch a wind breaker like Eli, and I feel invigorated to fall into
his draft. "Thanks for the ride!" I shout up to him. He turns his head to the
left, revealing the gold piercings in his ear and his mustache "I just love the
ocean."
You know what Eli, you love it, I love it, let's hammer.
I'm just thrilled as the dickens to have a draft to pull me along.
Eli drags my sorry ass all the way to Rest Stop Four where I go through my
routine. He must know lots of the roadies here because I lose him at some point
while he's giving out giant-man hugs.
Spirits lifted, it's something like 10ish miles to home, and I'm eager to get
there.
A couple miles out of the rest stop I pass a couple cycles and hear "I love
your pace!"
I've gotten some compliments this year, especially in my slutty red dress, but
ones like this are my favorite. I turn back and there's another cyclist doing
to me what I did to Eli.
The karma of cycling dictates that:
* If somebody changes your tire, you better change somebody else's tire later.
* If somebody pulls you, you either trade pulls, or pull somebody later.
It was my turn to pull, and I was happy to oblige. I turned on my phone's
screen so that I could maintain a steady pass for us both and we sped along at
about 21mph. My new bike friend was as happy to see me as I had been to see
Eli, so I was delighted to pull him home to camp. Dodging tourists along the
board walk we finally rolled into the Ventura camp, 61st and 62nd.
Working together with a fellow cyclist makes me forget about my nagging knee.
It makes me forget about my legs and butt sore from a long week of cycling. It
makes me forget just about everything that isn't what is happening right now in
the moment. Working together with a fellow cyclist reminds me how much I really
do enjoy riding bikes!
We chat a bit as we grab our gear. He does endurance racing, I talk about crit
racing, we geek out on cycling a bit before I head off to the showers.
Tonight is the last night of camp. We're 70 miles from the finish line, which
really doesn't feel so far. 84, 109, 76, 88, 43, 88. There are 545 miles from
San Francisco to Los Angeles and only 70 of them remain.
The guy I finished the ride with today asked what other races/rides I'm doing
this year. I have some ideas on that, but honestly nothing can hold a candle to
this one.
Tomorrow will be bittersweet.
We will have accomplished what we set out to do. We raised the money that
needed to be raised, pedalled the miles that we marked out for us, and made the
memories that only an event like ALC can provide. But it will be all over.
All over until AIDS/LifeCycle 2023.
I can't wait.

View File

@ -0,0 +1,176 @@
---
layout: post
title: "Finishing: AIDS/LifeCycle Day Seven"
tags:
- alc
- alc2022
- cycling
---
Waking up on the last day of big gay summer camp is always a downer. In the
warm and muggy air of Ventura, the love bubble starts to pop and you're left
with one last bike ride before returning to the real world. This year was my
second AIDS/LifeCycle, and I was _not_ excited to wake up for day seven. Once
the tent and gear were dropped off, my breakfast consumed, there was nothing
but a measly 70 miles remaining for ALC 2022.
---
I also posted a [thread to
Twitter](https://twitter.com/agentdero/status/1535594559471685633)
for today with more pictures
---
Camp closes up _early_ on day seven, so everybody is awake early. The alarm
rang at 4:15 and there was already a flurry of activity to hear outside. People
rustling in their tents, zippers zippering, flip-flops slapping against heels,
the deepened morning voices of tired cyclists and roadies. I followed my usual
protocol of going straight to the porta-potties before heading over to
breakfast, but since everybody was waking up, there was quite the queue for
number two. I decided I could wait, scurried back to my tent to get dressed,
tear down, swung by the gear trucks, and then found a block of line-less
porta-potties en route to the food tent.
In the food line I did not grab "The Daily Spin", the little camp newspaper
that's printed every day, like I normally do, and therefore miss a key
instruction: gear trucks will not arrive at the finish line until 1pm.
Methodically chewing eat bite of my breakfast I planned my day: my knee was
doing okay, but this is the last day and the last chance to go fast with some
of these other riders. I figured that either way I was going to sit around at
lunch to wait for the finish line to open at 11am, so why not try to get to
lunch as fast as I can!
I have some short-circuit in my wiring that prevents me from "calming the fuck
down" as Ride Director Tracy puts it. Riding fast with a group of other
lunatics really is quite a lot of fun, and getting away from the main pack of
cyclists has allowed me to enjoy the scenery much more than I had in 2019.
Either way, this is the last chance to pedal hard with these folks until 2023,
so I'm going to make every mile count.
Bike parking opens early and I roll out with the first 40-50 riders. We cruise
along the boardwalk and into the city of Ventura for a little bit before
meandering through some fields and suburban sprawl. I do a lot of the usual "on
your left" routine before I get separated from some folks due to my speed and
some red lights. As we ride by some naval base a bunch of fast riders come
up, including the Triathelete, and I catch their wheel.
Bike friends!
The group is probably 9 people large and it includes some of the fast riders
I've been chasing all week, plus a couple of new faces. We all cruise along
together towards Rest Stop One, each keeping the pace and trading off pulls.
After a while of keeping up at the number 3 or 4 position, I figure it's my
turn to pull for a bit, pop out to the left and throw down some power. My back
wheel pops up a little bit as I do so, a bad habit I'm trying to break myself
of, since a wheel in the air is not transferring power to the road.
The way I have found myself passing people has been to basically do a
mini-sprint, something I've found useful in criteriums. The downside of this
approach is that if the group is chugging along at 22mph or so, and I'm all of
a sudden pushing 26mph, I'm going to push _too far_ out in front. I
accidentally turned "my turn to pull" into a breakaway. _Oops_.
The fun thing about this group of cyclists is that somebody _follows_ my
breakaway, and that just makes the whole effort feel very much like a normal
crit or road race. I can feel the lactic acid building in my quads, thighs, and
glutes. 545 miles of cycling has given me a lot of time to focus on getting
every watt of power out of my legs, and leading out this group I'm acutely
aware of each muscle involved. After a mile or so we all bunch back up and
rocket onwards to Rest Stop One.
The Triathelete comments in the rest stop that he really enjoys following
behind me. I'm able to push a strong pace, and I'm tall, so at his shorter
stature he can tuck in behind me for a free ride. Somebody else comments how
fun that bit of teamwork was, and that we're all _maybe_ a little competitive.
Once my routine is done, I leave the rest stop alone and push through the wind
between the Santa Monica mountains and the Pacific.
At some point a cyclist I will come to know as Nils passes me, and as is my
customary response, I sprint to catch his wheel and start to work together with
him to keep a strong pace towards Rest Stop Two.
Nils is dutch, is about as tall as I am, has been cycling seriously since
sometime last year, and is **fast**. He is inexperienced though, and I learn as
we cruise along working together that he hasn't really had much of this
teamwork experience on ALC thus far. We trade off and on into Rest Stop Two,
and then depart together to continue flying towards lunch.
Between Rest Stop Two and Lunch is Malibu. I hate Malibu. The Pacific Coast
Highway is flanked on the east side by mountains, and on the west side by
expensive homes and cars parked ever-so-slightly off the road. Everybody in
Malibu drives like they're the only ones on the road, and cyclists can get
squeezed between aggressive drivers, and the door-zone from parked cars. The
city is basically 20+ miles of coastline, and it _sucks_.
Fortunately the flying dutchman and I are making insane time. We spot a number
of large cycling groups riding together on the PCH, which is genuinely cool to
see. It seems like every cyclist north of LA has come to engage in battle with
motorists for who should really get to own this stretch of beautiful highway.
At a stoplight some local cyclist with some aero kit, a fast looking carbon
bike, and stacked legs pulls up next to us. When the light turns green, Nils
takes
off, followed by me, followed by the local. No more than a quarter mile down
the road, the local flies by Nils and I.
Rabbit!
We have probably ridden 45 strong miles at this point, but I'll be damned if
I'm not going to give chance. I pop out of the saddle and put in the best
sprint I can muster to chase him down. I get within a few bike lengths but
cannot get into his draft. Nils later told me that I had left him in the dust
on that sprint too!
Disheartened I settle into cranking at my 21-22mph pace, which is meager
compared to the local. Nils comes flying by me and says "why don't I give it a
shot!" So of course now I have to keep up with Nils in his sprint. His effort
falls short as well, but we fall into a tight rotation and chase this local,
less than couple hundred yards away, for the remainder of the PCH until we pull
off for lunch.
I haven't been smoked like that all week. Good lord was that dude fast.
Reviewing my app over lunch, I had put down 55 miles at a 20mph average speed.
That's not a straight 55 either, there were a lot of little rollers, headwinds,
and stoplights in between mile 0 and lunch.
We talk a lot about racing, triathalons, and what motivated us to get into
cycling while killing time at lunch. From here there are about 15 miles to the
finish line, and we roll out at about 10:15.
The pace is slowed due to traffic, more climbing, and the general mayhem that
comes with riding through Beverly Hills and West Hollywood. At one point a car
almost turned right into my, leading me to loudly share some profanities.
The last couple miles of ALC are some of the more dangerous ones in my opinion,
a very hectic urban environment with tired cyclists and weekend drivers.
I crossed the finish line at almost exactly 11:00am and ALC is over.
---
As luck would have it, I forgot to pre-arrange shipping for my bike. I just
kind of forgot that I had to register ahead of time for it to be put on a truck
and driven back to San Francisco. Instead I had to pay a bunch of money so my
bike could be packed and that I could safely take it home on the plane with me.
I also didn't realize that gear wouldn't be there until 1pm, so I had to sit
around in the shade chatting and napping until gear trucks arrived.
Once I had everything collected, my gear, my giant bike box, my sweaty ass,
trying to get a giant car to carry all of my stuff to a hotel proved to be
equal parts annoying and time-consuming. I ended up leaving Fairfax High School
at about 3pm, and didn't get find a shower until after 4pm.
The beauty of ALC as a cyclist is that you kind of just have to wake and ride
your bike. Life on the ride is simple: eat, pedal, eat, sleep, repeat. Once ALC
is over however, you are quickly reminded at how much _other shit_ there is to
do other than cycling.
From a cycling perspective, day seven might have been the most "put together"
of the days on ALC. Great teamwork, good legs, and high speeds. I felt
challenged and like I left nothing "out on the road" when I was done. The
change in skill and perspective from 2019 to 2022 was significant, I can only
hope that I continue to improve and 2023 that much better!

View File

@ -0,0 +1,52 @@
---
layout: post
title: Cycling through calories
tags:
- cycling
---
I never really paid attention to the calories burned during cycling until
recently, and it's still somewhat shocking when I look at it. With my love of
cycling rekindled by [AIDS/LifeCycle](https://aidslifecycle.org) I have spent a
lot more time in the saddle this year. Between short criterium races, my
longest at 140mi, or the most elevation with the [Death
Ride](https://deathride.com/), I have needed to be very mindful of my nutrition
before, during, and after these rides. In short, cycling can burn a **lot** of calories.
The "nutrition facts" panel on commercially sold food typically accounts for a
2,000 calorie daily allocation. This is a rough approximation of what the
average American should eat. Reasonable I suppose, but let me share some of the
calorie _expenditures_ estimated on my recent rides:
* [Patterson Pass Road Race](https://www.strava.com/activities/7599724946), 43mi, 4,400ft elevation: **2,400** calories
* [Sonoma Parks tour](https://www.strava.com/activities/7599724946), 140mi, 6,700ft elevation: **5,122** calories
* [Death ride](https://www.strava.com/activities/7481018521), 103mi, 14,000ft elevation: **7,557** calories
The numbers are insane! I expect that I need almost 3,000 calories a day just
to keep my weight and activity levels normal. That means for these more
significant rides my body requires 3-4x the average daily suggested intake.
"I wish I could eat like you!"
I will frequently get comments about my appetite. Eating 3-5k calories a day is
quite the challenge! Are you sure you're up to it? 😄
Because I have no idea what a thousand calories look like, I have had to enlist
the help of a calorie tracker. In doing so I have learned a few things:
* Making each meal ~1k calories is *hard*, especially challenging when eating vegetarian.
* The day needs four meals, not three.
* Feeling hungry during the day is a sign that I'm behind.
* "Palate Fatigue" is a thing.
Nutrition science is something I am learning more serious athletes
spend a *lot* of time thinking about and experimenting with. Logically it makes
sense: if your body is the engine, food is the fuel and something you should be
optimizing to improve performance. As a lay person it is still surprising to me
how rudimentary my own nutrition education was, remember the food pyramid?
There's still a lot to learn and tune with my own nutrition as it relates to my
weight and performance. I wish I had useful tips to share, but the experience
is so individualized that I think you may be best suited exploring what works
best for you. Keeping track of calories, macronutrients, and expenditures is a
start, but there's a _lot_ worth exploring!

View File

@ -0,0 +1,238 @@
---
layout: post
title: "The Death Ride"
tags:
- cycling
---
Endurance athletes have a misconfiguration in their brain, one that compels them
to pursue increasingly foolish goals, for me the [Death
Ride](https://deathride.com/) was as foolish as it was ambitious. The
[course](https://www.strava.com/segments/25280359) is 103mi, starting at ~5k
feet elevation, with a total of about 14k feet of elevation gain. It is not a
_race_ per se, though I'm sure somebody is "first" back to the finish line.
What is celebrated are _completions_. If you can survive all six passes, you're
a winner! The mountains are steep, the road largely exposed, and the heat is
oppressive, but hey! Good luck! Have a great ride!
I managed to [complete all six passes](https://www.strava.com/activities/7481018521) in 7:58:50.
Enough time has passed for me to reflect on the event, almost a month now, and
both my brain and legs have forgotten enough that doing it again doesn't seem
so ridiculous.
---
Around 5am I rolled up in my car to the starting point outside of
Markleeville. A CHP officer was directing cars to park on the side of the road.
Cyclists were already passing by, having ridden from their nearby campgrounds.
Aside from [ALC](https://aidslifecycle.org) I had never seen this many cyclists
in one spot. "If these old geezers can do this, so can I!" ran through my head
as I put my shoes on, topped up my tires, and ate the last of my food in the
car.
The Death Ride is very well supported, there are aid and water stations along
the way but with a new event I trend towards more self-sufficiency; better to
have too much food instead of too little.
Picking up my number the dawn's light is starting to creep over the mountains.
The air is cool and the feeling is electric. I am **excited**! What an
adventure! Look at all these old geezers, I'll be fine!
The first mile is a coasting downhill through the town of Markleeville. The
makeup of the course means that the _last_ mile will then be an uphill slog to
the finish line. Something to worry about later!
## Monitor Pass
As I turn to start the ascent of Monitor Pass I find myself passing cyclists
and have to intentionally slow myself down. I know that my adrenaline is making
me all antsy in my pantsy. I don't want to use up my legs on the first climb.
At this stage of the ride the mental effort expended is about **discipline**.
Don't be stupid, pace.
The sun streaks over the mountains as I grind up to Monitor Pass and some of
the views are simply spectacular! Despite wildfire which had recently burned
through the area, the landscape is still something to behold.
As I crest the climb I see the first aid station and remember: "oh right, I
have to go down the other side and _then_ back up this bastard!" I pass by the
aid station, I'll hit it on the way back, I will need it then.
Coming down the southeast side of Monitor Pass is genuinely **awesome**, the
view opens up in a _big_ way and the massive valley is on full display in the
morning sun. There is precious little time to enjoy the view because I am
_accelerating_ and the descent is fucking insane. 40+ mph rocketing down a
mountain with certain death should you be stupid or unlucky and go off the
side. I have to remind myself a couple times to relax my grip on the
handlebars. At one point I exceeded 49mph, which was _not_ the fastest I would
go during the ride.
Approaching the Topaz Lake rest stop the descent slows through a rock walled
canyon, which gives me the opportunity to see the slog being endured by
cyclists heading _back up_ to Monitor Pass.
![Descending towards Topaz](/images/post-images/deathride-2022/monitor-descent.png)
I don't take much nutrition in at Topaz because I intended to stop at the rest
stop back up topside. I drop some gear in a drop bag and start my ascent.
Falling in with a couple of doctors I intentionally chat them up a bit. If I'm
talking, I won't be tempted to pass people on the climb as much. Eventually
they fall back because my pace is too aggressive for them. Climbing solo my
pace picks up as I constantly find new people to chase. My legs feel good, it's
not too hot, the view is gorgeous, what a wonderful ride!
Stopping topside at the Monitor Pass rest stop again I stuff myself full of
food. It's basically all downhill from here until the lunch stop. My neighbor
gave me the advice to not fill up at lunch since that's at the base of the
Ebbett's Pass climb. As I finish chewing and drinking a pepsi (sugar water!) and prepare to leave the rest stop, somebody knocks over a rack of bikes. Oops!
The descent down from Monitor Pass to the fork was **fucking fast**. I chase a
couple people down the hill, hug my top tube, and enjoy the big straightaways
and gradual sweeping turns. My top speed for this segment is the fastest I will
go all day: 55.4mph. According to Strava, the [fastest person on this
segment](https://www.strava.com/activities/7565854108#2989258323047473166)
topped out at 70.4mph which is absolutely insane.
At lunch somebody who was descending with me mentions that they saw me narrowly
miss a rock on the road and were anxious that I wasn't going to see it in time.
Fortunately I did see the rock coming, which could have been disastrous, but at
high speeds it's important not to make sudden corrections!
I nibble a bit and pack a sandwich in my back pocket from lunch for later. Time
for Ebbett's Pass, the biggest bastard climb of them all.
## Ebbett's Pass
The top of Ebbett's Pass is at 8,703ft and has a variable gradient from around
6-7% at the outset and then it gets steeper between 10-15% towards the summit.
To be honest I don't remember much of this part of the ride. It was simply a
slog, but if these geezers can do it, so can I! Honestly, much of the ride is
really just a mental test of how much you can grind it out. All said and done,
it was about an hour of sitting in and mashing pedals.
The rest stop is perched right at the top and a welcome reprieve. They were
serving instant ramen, sprite, pepsis, and all manner of snacks with salt and
sugar in them to replenish the tired muscles. As I sat in one of the graciously
provided camp chairs eating my ramen I overheard a couple other cyclists
talking about how many passes they were going to do. One geezer said "nope,
this was it, I'm just doing this one."
I vaguely recalled registration where you selected the number of passes. I was
signing up for the Death Ride, so I said "six". I'm going to do them all
damnit! The nuance of that registration form was lost on me. A _lot_ of
cyclists do shortened versions of the ride, picking and choosing which passes
they're going to do, enjoying their ride, and going home! A lot of these
geezers were going to do six passes, but not all of them. I had to re-orient my
motivational tactic slightly 😄
![Ebbett's Pass](/images/post-images/deathride-2022/ebbetts.jpg)
Either way, I had summitted Ebbett's Pass, that was the "hard one" in my head.
Three of six passes completed. "I'm practically done!"
## Pacific Grade
Cycling is a constant lesson in humility. The distance between the Ebbett's
Pass rest stop and the turnaround point was only 14 miles, but four of those
miles were painfully steep. After 50 miles of work already, the steep climbs up Pacific Grade were brutal, for the first time of the day I started to see cyclists stopped taking a breather.
One of the punchier sections of the climb is a brief stint at 32%.
My bottles were full as was my stomach so I passed some water stops and decided
to keep my momentum pressing onwards to the turnaround at 69 miles.
Upon arrival I found some shade where other cyclists were sitting on rocks
hiding from the sun. I took my spot and started eating my warm sandwich.
Despite those climbs there was a *lot* of downhill that was about to turn into
uphill on the return.
The sun was in full effect, it was only going to get hotter. I filled my
bottles, saddled up, and started to climb back up the backside of Pacific
Grade.
## Long road home
Ebbett's Pass is a mother fucker.
The rapid descent from Pacific Grade is followed by 5-6 miles of 8-10%
gradient, exposed in the full afternoon sun, with little wind, and nothing to
do but look at the road in front of your handlebars. Letting your eyes drift
any further ahead and you'll be reminded of just how hopeless it all is.
I slowly crank by cyclist after cyclist hiding from the sun under the few trees
providing some shade near the narrow mountain road. The previous climbs had
conversation and sometimes even laughter. The climb back up to Ebbett's Pass is
silent. Nobody is talking, nobody is following, nobody is happy, we're all just
surviving. I have difficulty deciding whether it's better to drink or douse myself with
hot water in my bottles.
Thinking about the geezers doesn't help.
My legs feel fried, it's hot as shit, the view doesn't matter, what a miserable
ride.
Getting closer to the top I hear echoes of what I think are cowbell and
shouting, the rest stop must be just up ahead! I fooled myself more times than
I can remember with that mirage. By the time I finally arrived at the rest stop
I was almost surprised it actually existed this time.
Give me water, give me electrolytes, give me a couple of these sprites, I'll
take some of that watermelon too. I need to sit in one of those alluring camp
chairs and reconsider the erroneous decisions which led me here.
As I sit and contemplate whether I'm hot enough for cartoon steam to shoot from
my ears, I see people finishing the _first_ ascent of Ebbett's. Those poor
souls, it's just going to get hotter, the climb back up from the turnaround is
a already a bastard.
Once my core temperature lowers a bit, I pull myself up and back into the
saddle for the "easy" descent to the finish line. My plans change slightly, I'm
confident I will finish, I now want to get off this route as quickly as
possible.
The descent off Ebbett's back towards the fork has some hairpin turns which
slow me down quite a bit. I've come too far to eat shit on some mountain road
just before the finish line. But as the road straightens out, I speed up,
pushing my top speed for this segment of 44.9mph. I also fall in with a couple
other guys and we start a paceline towards the finish. Teamwork always makes
for fun cycling and high speeds, both of which I'm glad to have at this point
in the afternoon.
Climbing into Markleeville I somehow fumble my water bottle when trying to
return it to its cage. While I'm fatigued, I'm not about to leave my water
bottle! We've come so far together! Of course, the problem with a cylindrical
bottle on a _hill_ is that as I dismount it starts to roll away from me. Water
bottle no! Come back!
Clickety-clack go the bike cleats as I jog downhill 15 yards to capture the
bottle. I cannot help but laugh at how ridiculous the scene must have been as I
sprint back to try to catch my group.
The last three miles are uphill. Only a 5% grade, but fully exposed with a
headwind, and after 100mi of absolutely mind-warping riding. I don't think I
have ever hated a stretch of road like I hated that one.
## Completion
The relief of crossing the finish line was delayed. My core temperature was
high, my heart rate was high, i felt dehydrated. There was live music, beer,
ice cream, and food. That would all have to wait. I sat on a bench shirtless
for probably 30 minutes slowly taking in water and electrolytes before I
started to become functional again.
![Finished](/images/post-images/deathride-2022/finish.png)
At a rational level I understand that the Death Ride was a brutal slog which
was more of mental challenge than a physical one. Did I enjoy it? I think so.
The brain of an endurance athlete seems to have a misconfiguration, one which makes
it difficult to distinguish between a challenge, punishment, and fun. The Death
Ride was all three, so who knows, maybe I will be back next year.

View File

@ -0,0 +1,115 @@
---
layout: post
title: The fastest way to make Rust Strings
tags:
- rust
- software
- software development
---
A friend of mine learning how to code with Python was complaining about the
myth that "there's a Pythonic way" to do things. The "one true way" concept
wasn't ever taken seriously in Python, not even by the standard library.
Practically speaking, it's impossible _not_ to have multiple ways to accomplish
the same outcome in a robust programming language's standard library. This
_flexibility_ jumped out at me while hacking on some Rust code lately: how many
ways can you turn `str`
into `String`?
In Rust `"this thing"` is a [primitive `str`
type](https://doc.rust-lang.org/std/primitive.str.html#) and will have the
`&'static` lifetime. Without diving into lifetimes and how Rust ownership
works, this is basically read-only memory that exists for the duration of the
program. They're _static_ and you can't do much with it. In _most_ APIs you'll
need the [`String`
type](https://doc.rust-lang.org/std/string/struct.String.html), which will give
you an allocated bit of data you can play around with.
Without much effort I came up with five different ways that I have written Rust
code to perform this conversion:
1. `String::from("The boring way")`
2. `"Using a trait".into()`
3. `"This is actually a trait too".to_string()`
4. `"Lol, this is also a trait".to_owned()`
5. `format!("Wake up and choose violence")`
---
If you have some other nifty ways to create `String`s, let me know on
[Twitter](https://twitter.com) or via email (`rtyler@` this domain)!
---
But which is the most fastest?! I wrote the following very important, and very serious microbenchmarking code:
```rust
use microbench::{self, Options};
fn into_trait() {
let _s: String = "Rust is cool!".into();
}
fn to_string() {
let _s: String = "Rust is cool!".to_string();
}
fn format() {
let _s: String = format!("Rust is cool!");
}
fn owned() {
let _s: String = "Rust is cool!".to_owned();
}
fn string_from() {
let _s: String = String::from("Rust is cool!");
}
fn main() {
let options = Options::default();
microbench::bench(&options, "String::from!", || string_from());
microbench::bench(&options, "Into<String>", || into_trait());
microbench::bench(&options, "ToString<str>", || to_string());
microbench::bench(&options, "ToOwned<str>", || owned());
microbench::bench(&options, "format!", || format());
}
```
I compiled the program with `rustc` version 1.63.0 and after running some truly
rigorous and scientific tests on my workstation, I am thrilled to share the results:
```
cargo run
Compiling rust-strings-are-silly v0.1.0 (/home/tyler/source/github/rtyler/rust-strings-are-silly)
Finished dev [unoptimized + debuginfo] target(s) in 0.25s
Running `target/debug/rust-strings-are-silly`
String::from! (5.0s) ... 278.552 ns/iter (0.991 R²)
Into<String> (5.0s) ... 286.293 ns/iter (0.983 R²)
ToString<str> (5.0s) ... 292.736 ns/iter (0.987 R²)
ToOwned<str> (5.0s) ... 290.276 ns/iter (0.985 R²)
format! (5.0s) ... 300.144 ns/iter (0.995 R²)
```
**HOW INTERESTING!**
Well, not really.
Microbenchmarking like this has **lots** of flaws,
especially when sampling on a single machine running many other concurrent
processes. After executing the tool a few times, one common pattern that I did see was that
the `format!` macro is consistently the slowest way to create `String`s. In
fact `cargo clippy` will complain about you using in this way, not because it's
slow, but because it's a "useless use of `format!`", which I can agree with! :)
Choosing between the rest of them probably is nothing more than a style choice
of the developers working on any given Rust project. With these types of things
it's typically best to adopt one consistent way of doing things _within the
codebase_ to improve readability, but they're all functionally equivalent..
In Rust there's no "one true way" to create a `String`, but my personal
preference is `.into()` for no other reason than it is the fewest
characters to type!

View File

@ -0,0 +1,53 @@
---
layout: post
title: "Meet Buoyant Data, and let me reduce your data platform costs"
tags:
- databricks
- software
- deltalake
- aws
---
One of the many things I learned in 2022 is that I have a particular knack for
understanding, analyzing, and optimizing the costs of data platform
infrastructure. These skills were born out of both curiosity and necessity in
the current economic climate, and have led me to start a small consuhltancy on
the side: [Buoyant Data](https://www.buoyantdata.com/). Big data infrastructure
can be hugely valuable to lots of businesses, but unfortunately it's also an
area of the cloud bills that is frequently misunderstood, that's something that
I can help with!
[Mike Julian](https://www.duckbillgroup.com/about/) from [The Duckbill
Group](https://www.duckbillgroup.com/) once made the proclamation that the way
to _actually_ save money in AWS is to design your infrastructure to be
cost-effective. "Optimization" techniques can only take you so far, and once
you've burned through all the optimizations, you may find yourself needing to
further reduce the cost of your infrastructure and have no more "fat" to trim! In the [first blog post](https://www.buoyantdata.com/blog/2022-12-18-initial-commit.html) I outline a "reference architecture" for a data platform which I **know** is cost-effective, easy to manage, and lends itself well to growth.
Planning for sensible, cost-concious growth is _very_ important. With most data
platforms as they start to prove their value, the organization will bring even
_more_ workloads to them. [If you give a data scientist a good
platform](https://en.wikipedia.org/wiki/If_You_Give_a_Mouse_a_Cookie), they
will find themselves wanting ever more from that data platform, and Buoyant
Data can help make sure that growth is sustainable **and** the value to the
business is easy to identify as well.
Please add the Buoyant Data [RSS feed](https://www.buoyantdata.com/rss.xml) to your reader, as I have a number of blog posts queued up already with some gratis tips and tricks for understanding the cost of your data platform! 😄
---
The technology stack for Buoyant Data is something I cannot wait to write more
about. After funding the creation of
[delta-rs](https://github.com/delta-io/delta-rs) as part of my day job, I am
utilizing the library in a **big** way to build extremely lightweight and
cost-efficient data ingestion pipelines with Rust and AWS Lambda. There's still
plenty of space for [Apache Spark](https://spark.apache.org) on the querying
and processing side, but as
[DataFusion](https://github.com/apache/arrow-datafusion) matures, I'm looking
forward to exploring where that can fit into the picture.
There's a lot of evolution happening right now in the data and ML platform
space, I'm really looking forward to growing [Buoyant
Data](https://buoyantdata.com) in my spare time!

View File

@ -0,0 +1,98 @@
---
layout: post
title: "The problem with ML"
tags:
- software
- ml
- aws
- databricks
---
The holidays are the time of year when I typically field a lot of questions
from relatives about technology or the tech industry, and this year my favorite
questions were around **AI**. (*insert your own scary music*) Machine-learning
(ML) or Artificial Intelligence (AI) are being widely deployed and I have some
**Problems&trade;** with that. Machine learning is not necessarily a new
domain, the practices commonly accepted as "ML" have been used for quite a
while to support search and recommendations use-cases. In fact, my day job
includes supporting data scientists and those who are actively creating models
and deploying them to production. _However_, many of my relatives outside of the tech industry believe that "AI" is going to replace people, their jobs, and/or run the future. I genuinely hope AI/ML comes nowhere close to this future imagined by members of my family.
Like many pieces of technology, it is not inherently good or bad, but the
problem with ML as it is applied today is that **its application is far
outpacing our understanding of its consequences**.
Brian Kernighan, co-creator of the C programming language and UNIX, said:
> Everyone knows that debugging is twice as hard as writing a program in the
> first place. So if you're as clever as you can be when you write it, how will
> you ever debug it?
Setting aside the _mountain_ of ethical concerns around the application of ML
which have and should continue to be discussed in the technology industry,
there's a fundamental challenge with ML-based systems: I don't think their
creators understand how they work, how their conclusions are determined, or how
to consistently improve them over time. Imagine you are a data scientist or ML
developer, how confident are you in what your models will predict between
experiments or evolutions of the model? Would you be willing to testify in a
court of law about the veracity of your model's output?
Imagine you are a developer working on the models that Tesla's "full
self-driving" (FSD) mode relies upon. Your model has been implicated in a Tesla
killing the driver and/or pedestrians (which [has
happened](https://www.reuters.com/business/autos-transportation/us-probing-fatal-tesla-crash-that-killed-pedestrian-2021-09-03/)).
Do you think it would be possible to convince a judge and jury that your model
is _not_ programmed to mow down pedestrians outside of a crosswalk? How do you
prove what a model is or is not supposed to do given never before seen inputs?
Traditional software _does_ have a variation of this problem but source code
lends itself to scrutiny far better than the ML models. Many of which have come
from successive evolutions of public training data, proprietary model changes,
and integrations with new data sources.
These problems may be solvable in the ML ecosystem, but problem is that the
application of ML is outpacing our ability to understand, monitor, and diagnose
models when they do harm.
That model your startup is working on to help accelerate home loan approvals
based on historical mortgages, how do you assert that your models are not
re-introducing racist policies like
[redlining](https://en.wikipedia.org/wiki/Redlining). (forms of this [have happened](https://fortune.com/2020/02/11/a-i-fairness-eye-on-a-i/)).
How about that fun image generation (AI art!) project you have been tinkering
with uses a publicly available model that was trained on millions of images
from the internet, and as a result in some cases unintentionally outputs
explicit images, or even what some jurisdictions might consider bordering on
child pornography. (forms of this [have
happened](https://www.wired.com/story/lensa-artificial-intelligence-csem/)).
Really anything you teach based on the data "from the internet" is asking for
racist, pornographic, or otherwise offensive results, as the [Microsoft
Tay](https://www.cbsnews.com/news/microsoft-shuts-down-ai-chatbot-after-it-turned-into-racist-nazi/)
example should have taught us.
Can you imagine the human-rights nightmare that could ensue from shoddy ML
models being brought into a healthcare setting? Law-enforcement? Or even
military settings?
---
Machine-learning encompasses a very powerful set of tools and patterns, but our
ability to predict how those models will be used, what they will output, or how
to prevent negative outcomes are _dangerously_ insufficient for the use outside
of search and recommendation systems.
I understand how models are developed, how they are utilized, and what I
_think_ they're supposed to do.
Fundamentally the challenge with AI/ML is that we understand how to "make it
work", but we don't understand _why_ it works.
Nonetheless we keep deploying "AI" anywhere there's funding, consequences be
damned.
And that's a problem.

View File

@ -0,0 +1,57 @@
---
layout: post
title: "ChatGPT and your intellectual property"
tags:
- software
- ml
- opinion
---
There is an excessive number [ChatGPT](https://en.wikipedia.org/wiki/ChatGPT)
screenshots littering social media right now, and not nearly enough critical
thinking about feeding data into this novel new chatbot. An anecdotal survey of
my timeline includes people asking ChatGPT to solve math equations, write
emails for them, create short story prompts, identify bugs in code, or even
generate code for them. Behold, the power of AI!
ChatGPT is created by [OpenAI](https://openai.com/blog/chatgpt/), which despite
the name is *not* any form of "open" organization, but rather a startup which
has been [considering funding at a pretty monstrous
valuation](https://siliconangle.com/2023/01/05/openai-startup-behind-chatgpt-discusses-tender-offer-value-29b).
In essence, ChatGPT is an AI tool trained on a large corpus of public and
proprietary information, packaged up as a kooky chatbot.
Fine. Setting aside my own annoyance with ML developers co-opting data from
"the commons", fine.
The zeal with which most people are dumping information into ChatGPT really
concerns me however. I have seen a number of people feeding their own source
code into ChatGPT to ask it to find bugs or security holes. It would be
foolish to assume that the inputs into ChatGPT are not _also used to train
ChatGPT_, or at least the next generations of the model.
I am certainly no lawyer, but the two primary problems here are:
* Most developers are not authorized to disclose proprietary information of
their employers. Pasting source code into _any_ browser window creates a
liability, but a browser window with ChatGPT increases the likelihood that
the source code disclosed will be _reproduced_ in the future, for some other
user of the system. Uh oh!
* Can the code _generated_ by ChatGPT could be considered _yours_? Who actually
owns the copyright to machine generated code, or machine generated anything
for that matter? Do the architects of the system own it, or the users
supplying the inputs? This particular wrinkle isn't unique to ChatGPT, but
any ML tool generating data which occupies a space adjacent to human created,
and copyrighted works.
My concerns with what OpenAI is doing with this data is not tin-foil paranoia.
[Adobe is catching
grief](https://news.yahoo.com/adobe-using-photos-train-ai-001413408.html) for
opting Lightroom users _in_ to train their AI with those users copyrighted or
proprietary works.
I am sure the legal system will catch up to the rapid evolution of these ML
robber barons, but until then I think we should all be _very_ weary of feeding
intellectual property to these systems.

View File

@ -0,0 +1,81 @@
---
layout: post
title: "A lot of engineering management is actually information management"
tags:
- software
- leadership
- management
- opinion
---
Are you an organized person? Do you understand information flow in your
organization? The importance of categorization and taxonomy? You might be a good
fit for Engineering Management! Having now spent a number of years in management
and leadership positions, I have noticed a number of successful patterns, and
unsuccessful patterns. In this post I want to focus on one of the more
successful patterns: good information management.
Engineering managers are expected to have loads of information ready in their
at all times. The architecture of the systems their team is responsible for,
current project priorities, cross-team points of dependence or collaboration,
and a myriad of other snippets of information. It's a _lot_, but I don't think
it's reasonable to expect a person to maintain so much information in their
active memory. That's why information management is _very_ important for a
management role, I don't need to _remember_ everything, but I do want to
remember where everything is _documented_.
Some of the productive patterns that I have seen and utilized:
* **Decision Log**: it's great when a team can make decisions quickly, but an
inventory of decisions made is increasingly important as the team grows or
evolves over time. This should include a synopsis of the decision being made,
the alternatives considered, the trade-offs discussed between options, and
the reasoning behind the decision ultimately made.
* **Link everything**: [Tim
Berners-Lee](https://en.wikipedia.org/wiki/Tim_Berners-Lee) wants you to
hyperlink all your hypertext! Creating a meeting invite? Link to the meeting
notes page in the agenda. Creating a meeting notes page to discuss a project?
Link to the project in the issue tracker. Creating a ticket in the issue
tracker? Link to the decision made to implement that solution, or the
customer support ticket(s) it relates to, or the other projects that this
ticket blocks. Creating a commit to complete a ticket, link to the ticket in
the commit and pull request. Every link created is a breadcrumb for the
manager and the team to tap into this web of useful and related information.
* **Research must produce documentation**: frequently a manager or engineer needs
to answer a question, that's it. "Can this technology be used to solve this
type of problem." That research work doesn't usually result in a direct code
or systems change to a production application, but the _output_ of that
research should be documentation in the wiki. In essence **every bit of work
in engineering should produce an artifact**. Most tasks will produce a pull
request, but research tasks should produce a document which outlines what was
learned, or create a new decision in the decision log. This allows the
manager to benefit and reference back to knowledge gained during a project
that did not lead to tangible code changes.
* **Metadata is crucial**: At least in the Atlassian suite of tools there are a
myriad of ways to categorize pages and tickets. _Use them_. A good taxonomy
of labels can go a long way. In the case of documentation in the wiki, this
allows for creating aggregations of pages around a particular topic. These
aggregation pages can provide a quick overview for all resources relating to
a specific technology or project. In the issue tracker labels can provide a
useful point to query tickets relating to a point in the ticket lifecycle, a
project, or even a specific customer's needs.
From my perspective it is not the project managers job to add the necessary
links or information hierarchy, it is not even really the engineering managers
job. It is however the managers job to build the culture of information
management that allows them and the team to quickly recall or re-discover
critical information about the projects that are being worked.
Some managers I know use running Google Docs or Spreadsheets to manage their
workload, which may work for personal task tracking, but I typically discourage
their use. They're not linkable and discoverable enough!c Many spreadsheets are
write-once and read-once. By building and collaborating with a shared
information management scheme, the team and the managers can benefit from the
on-going "gardening" of information.
Regardless of the system you use or consider, if you are a manager, please
consider that a large part of your job relies on managing _information_, and
institute the practices and systems necessary!

View File

@ -1,7 +1,5 @@
body {
background-color: #fff;
font-size: 16px;
line-height: 1.5;
}
.container {

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

6
tag/alc2022.md Normal file
View File

@ -0,0 +1,6 @@
---
layout: tag_page
title: "Tag: alc2022"
tag: alc2022
robots: noindex
---

6
tag/dataeng.md Normal file
View File

@ -0,0 +1,6 @@
---
layout: tag_page
title: "Tag: dataeng"
tag: dataeng
robots: noindex
---

View File

@ -0,0 +1,6 @@
---
layout: tag_page
title: "Tag: software development"
tag: software development
robots: noindex
---

View File

@ -0,0 +1 @@
The most calories burned in a single ride was over 7,500. Cycling has made me much more serious about my nutrition: https://brokenco.de/2022/08/08/cycling-calories.html

View File

@ -0,0 +1 @@
At what point does "throwback" become "classic" and then "oldies"?

View File

@ -0,0 +1 @@
I wrote some Rust last night. It's been a while but I am still so pleasantly smitten with that compiler.

View File

@ -0,0 +1 @@
Which is the fastest way to make &str into String in #rustlang? The results may surprise you! https://brokenco.de/2022/10/28/rust-strings.html