Ship dispatch 6

This commit is contained in:
David Eisinger
2023-08-06 22:23:04 -04:00
parent df24492a6f
commit fc0bb6ace0
5 changed files with 1398 additions and 33 deletions

View File

@@ -1,71 +1,86 @@
---
title: "Dispatch #6 (August 2023)"
date: 2023-08-05T12:00:00-04:00
date: 2023-08-06T12:00:00-04:00
draft: false
tags:
- dispatch
references:
- title: "Why I don't use Copilot"
url: https://inkdroid.org/2023/06/04/copilot/
date: 2023-08-07T02:20:18Z
file: inkdroid-org-belior.txt
- title: "Phase change"
url: https://www.robinsloan.com/lab/phase-change/
date: 2023-08-07T02:20:18Z
file: www-robinsloan-com-sbm0vr.txt
- title: "The looming demise of the 10x developer: Why an era of enthusiast programmers is coming to an end"
url: https://blog.testdouble.com/posts/2023-07-12-the-looming-demise-of-the-10x-developer/
date: 2023-08-07T02:20:19Z
file: blog-testdouble-com-krzanb.txt
- title: "Daily notes for 2023-07-17 | Yes, Mike will do."
url: https://mike.puddingtime.org/posts/2023-07-17-daily-notes/#notes-on-conflict
date: 2023-08-07T02:20:20Z
file: mike-puddingtime-org-svf0ua.txt
---
Some thoughts here...
Nice to have a quieter month, though we still managed to spend a weekend at Lake Norman and took Nev on her first camping trip at [Carolina Hemlocks Recreation Area][1]. We also had a nice visit from my folks to celebrate my mom's birthday.
<!--more-->
* Lake
* Visit from my parents
* Camping @ [Carolina Hemlocks Recreation Area][1]
<div class="image-set">
{{<thumbnail 05569D5B "400x" />}}
{{<thumbnail DBCE9DD4 "400x" />}}
</div>
Tech-wise, I switched from Vim to [Helix][2], which I've detailed [over here][3]. I was also able to work through a whole bunch of the [Go track on Exercism][4] -- it's a good way to get a handle on the basics of a language, but doesn't cover using third-party packages, organizing large codebases, etc. To get that kind of experience, I'm going to try my hand at an app for fantasy sports drafts -- take a set of player projections and a scoring formula, and output a UI I can use during a live online draft. I've been doing this with spreadsheets for years, and it's pretty cumbersome. I'm going to use TOML for configuration, SQLite for data persistence, and [Bubble Tea][5] for the UI itself. We'll see how it goes!
I've signed up for the [Bull City Race Fest][6] half-marathon in October. Training starts ... tomorrow. I'm going to try to mix in some better eating habits + cross-training this time.
[1]: https://www.recreation.gov/camping/campgrounds/233954
* Go
* Did Exercisms
* Fantasy draft TUI app in Go
* Did a bike ride
* Am I running a half-marathon this fall?
* **YES** -- [Bull City Race Fest][2]
[2]: https://capstoneraces.com/bull-city-race-fest/
[2]: https://helix-editor.com/
[3]: /journal/a-month-with-helix
[4]: https://exercism.org/tracks/go
[5]: https://github.com/charmbracelet/bubbletea
[6]: https://capstoneraces.com/bull-city-race-fest/
This month:
* Adventure:
* Project: Fantasy draft TUI app
* [Bubble Tea][3]
* Skill:
[3]: https://github.com/charmbracelet/bubbletea
* Adventure: spending a weekend at Virginia's Eastern Shore with some childhood friends and a week at the beach with my family
* Project: build a fantasy draft <abbr title="text-based user interface">TUI</abbr> app in Go using [Bubble Tea][5]
* Skill: learn how to organize a larger Go codebase as part of ☝️
Reading:
* Fiction: [_Title_][4], Author
* Non-fiction: [_The Creative Programmer_][5], [Wouter Groeneveld][6]
* Fiction: [_Tress of the Emerald Sea_][7], Brandon Sanderson
* Non-fiction: [_The Creative Programmer_][8], [Wouter Groeneveld][9]
[4]: https://bookshop.org/
[5]: https://www.manning.com/books/the-creative-programmer
[6]: https://brainbaking.com/
[7]: https://www.brandonsanderson.com/standalones-cosmere/#TRESS
[8]: https://www.manning.com/books/the-creative-programmer
[9]: https://brainbaking.com/
Links:
* [Why I don't use Copilot][7]
* [Why I don't use Copilot][10]
> I enjoy programming because its about reasoning, thinking, models, concepts, expression, communication, ethics, reading, learning, making, and process. Its an art and a practice that is best done with other people.
>
> Increasingly I think its imperative for programming to be done more slowly, more deliberatively, and as part of more conversations with more people. The furious automation of everything is eating the world.
* [Phase change][8]
* [Phase change][11]
> *What could I do with a universal functiona tool for turning just about any X into just about any Y with plain language instructions?*
>
> I dont pose that question with any sense of wide-eyed expectation; a reason­able answer might be, *eh, nothing much*. Not every­thing in the world depends on the trans­for­ma­tion of symbols. But I think that IS the question, and I think it takes some legit­i­mate work, some strenuous imagination, to push yourself to believe it really will be “just about any X” into “just about any Y”.
* [The looming demise of the 10x developer: Why an era of enthusiast programmers is coming to an end][9]
* [The looming demise of the 10x developer: Why an era of enthusiast programmers is coming to an end][12]
> That is to say, Ive come to believe the era typified by the enthusiast programmer—autodidactic, obsessive, and antisocial—is drawing to a close.
* [Notes on Conflict | Yes, Mike will do.][10]
* [Notes on Conflict | Yes, Mike will do.][13]
> Over time I shifted on the matter a little, but when I look back on it I realize I wasnt really evolving my attitude toward conflict, I was just evolving my response to its existence, while still believing that being in a state of conflict is a problem. I just got better at keeping my blood pressure low and gritting through it. I think I was looking at conflict as a thing that you have to acknowledge exists, but that you need to get through as quickly as possible, because its a bad place to be.
[7]: https://inkdroid.org/2023/06/04/copilot/
[8]: https://www.robinsloan.com/lab/phase-change/
[9]: https://blog.testdouble.com/posts/2023-07-12-the-looming-demise-of-the-10x-developer/
[10]: https://mike.puddingtime.org/posts/2023-07-17-daily-notes/#notes-on-conflict
[10]: https://inkdroid.org/2023/06/04/copilot/
[11]: https://www.robinsloan.com/lab/phase-change/
[12]: https://blog.testdouble.com/posts/2023-07-12-the-looming-demise-of-the-10x-developer/
[13]: https://mike.puddingtime.org/posts/2023-07-17-daily-notes/#notes-on-conflict

View File

@@ -0,0 +1,641 @@
[1]Test Double The Test Double logo
Menu
(BUTTON) Menu Menu An icon that displays an illustration of a website
menu
* [2]Home
* [3]Agency
* [4]Services
* [5]Careers
* [6]Blog
* [7]Contact
[8]Blog [9]Posts
The looming demise of the 10x developer
Why an era of enthusiast programmers is coming to an end
An icon of a clock Publish Date
July 12, 2023
An icon of a human figure Authors
[10]Justin Searls
Ive recently been telling anyone who will listen that I am excited to
be on the precipice of using [11]Sorbet to write a type-checked edition
of [12]Mocktail that has the potential to unlock productivity workflows
never before possible in Ruby.
Im not there yet.
I dont want to say its been a “quagmire,” but Im over [13]150
commits in, and theres a lot left to button up before release. Its
been a real challenge. Learning Sorbet at all takes a good chunk of
time, to be sure. Ive also hit a number of thorny edge cases and
elusive bugs along the way (both in the type system itself and that the
type system exposed in my code). And, like usual, Im trying to do
something thats never quite been done before, so Im constantly
oscillating between feelings of nervous excitement and fear that Im
attempting the impossible. (Though its been made far more possible
thanks to the generous assistance of [14]Ufuk Kayserilioglu, [15]Kevin
Newton, and [16]Jake Zimmerman!)
Beyond this, any specifics I might share about my current quest are so
banal as to not be worth your time. (If you somehow find this
interesting, please [17]email me so I might feel less alone in this
world.) That said, there is something generally interesting here that
programmers dont often talk about. And thats the deeper question: why
do I keep doing this to myself?
[18]What makes me “special”
I am an enthusiast programmer.
I stumble on a problem like this one and I stay up late every night
until I find the solution. I wake up early each morning with new ideas
of things to try. I dont take enough breaks, but when I do, theyre
tactically-designed to exploit my brains asynchronous processor to
generate solutions for whatever Im currently stuck on. I irresponsibly
defer responsibilities from other areas of my life. Eventually, I
realize Im only at the 20% mark and that a pattern is repeating where
a month or more of my life is about to disappear from the calendar.
Towards the end, I find myself rushing to find the mazes exit because
my desire to unlock the puzzles final secret starts to be overtaken by
the shame of all the other balls Im dropping. Its excruciating as I
approach that inflection point—as intense as an overbearing managers
“do or die” deadlines ever were, except in this case the pressure I
feel is entirely self-imposed.
And then, at some uneventful moment at 4 pm on a Sunday, its done.
Sometimes people care about what I made. Usually they dont. Often,
even I dont.
I give myself enough time to clear my inbox, tidy the house, and shave.
Then I move onto the next Sisyphean task Ive laid before myself.
This describes how Ive lived my life since I was 13 years old, with
few exceptions. And let me tell you, its very difficult to juggle a
healthy personal life and a sustainable work life when youre
simultaneously engulfed in an endless series of side quests to will
every creative curiosity into existence.
When I was a consultant at [19]Crowe, there was one year I billed
clients for nearly 2100 hours, which averages out to more than 40 hours
per week every week of the year with zero days off. And thats not
counting travel time. Or the half-dozen hours of weekly administrative
work that wasnt considered billable. Nevertheless, I found time in my
nights and weekends that year to build an app with Apples buggy,
mostly-undocumented initial iPhone SDK. The app was a native client to
[20]vBulletin web forums, allowing users to browse threads and compose
replies. Despite knowing nothing about any of the underlying
technologies, I obsessively polished the app to perfection. Did I make
time to sleep? I dont remember. The whole years a blur.
All so that Apple could reject my app because users might post swear
words or dirty pictures. Oh, well. Onto the next thing.
I dont know what word best describes my behavior above without
inflecting significant value judgment. Perfectionist? Obsessive?
Passionate? Whatever we call this compulsion, its hardly an unalloyed
good and it comes with its share of downsides. Nevertheless, its one
of a number of idiosyncrasies and character flaws Ive decided to lean
into and find productive outlets for rather than attempting to repress
or rewire.
Other examples:
* I ruminate endlessly under stress, so I wrest back some control by
manufacturing stress responses over things Im building to trick my
brain into ruminating on work thats useful to me. This both
overrides the unhelpful, irrational worries that surround me every
day and unlocks a “second shift” where I accomplish almost as much
away from the keyboard as in front of it
* Im a terrible listener and struggle with auditory processing,
especially in groups and loud environments. (One reason I talk so
much is that its always felt safer to drive the conversation than
risk mishearing and offending someone.) Parsing others sentences
often feels like Im filling in the blanks to make sense of them,
like playing a game of [21]Mad Libs. Over the years, Ive
redirected this into a source of creativity and humor. Most of my
puns and wordplay are happy accidents as I fill in the gaps in my
own listening comprehension. Some of my most creative ideas are
things I swear I heard someone say when it turns out they were
actually talking about something else
* Im a really bad learner—disinterested, distractible, and
disagreeable. Ive never enjoyed learning and generally avoid it,
especially learning for its own sake. At the slightest discomfort
when struggling to understand something, Ill grasp for any
distraction that might offer me a momentary escape. When I do
manage to get traction, I inevitably find myself disagreeing with
the premise or subversively trying to prove the authors wrong. The
upshot is that once I actually do learn something, I know it cold.
It means I will have scoured every nook and climbed out of every
pitfall. Professionally, this apparent weakness has turned out to
be a superpower. Learning everything the hard way has made me a
natural consultant and mentor. Because Ive already explored all
the wrong paths, I often know someone is stuck before they do,
understand what threw them off course, and show them how to get
back on track
The reason I landed on this topic today is not that any of the above
makes me special, its actually that contradictions like these—whatever
their origin—are so typical among programmers born before 1990 that
theyre entirely mundane.
[22]An aberrant generation of programmers
Squint and everything I just said about myself could have described a
character from [23]The Big Bang Theory or [24]Silicon Valley. Im at
peace with the fact that on my best days, Im an overplayed, abrasive
character trope come to life. For decades, weve associated a slew of
mostly-negative traits like these with programmers as if the linkage is
inherent and inevitable. Ive always thought that stereotype was
arbitrary—anybody can learn programming and be great at it—but now Im
starting to think its a product of our times as well.
That is to say, Ive come to believe the era typified by the enthusiast
programmer—autodidactic, obsessive, and antisocial—is drawing to a
close.
Why do I think that? Because there was a specific, generational moment
that attracted a bunch of people like me into the software industry. It
occurred during the brief window between home computers becoming widely
available and their becoming sealed airtight by platform holders. For a
fleeting moment, computers were simultaneously accessible and scrutable
during a necessary but temporary stage in the maturation of information
technology. Before they were rendered irreducibly complex as consumer
devices, merely using a computer required figuring out a lot about how
it worked. And coming of age with an understanding how computers worked
made programming them far more approachable. And thanks to cosmic
coincidence and the marketing teams of companies like RadioShack,
society unwittingly handed a generation of social mobility to [25]the
boys of upper-middle-class families in the US who felt more comfortable
at home with their computer than outside engaging socially with their
peers. I was definitely one of those awkward, anxious kids and a whole
lot of the programmers Ive met along the way were too.
But one reason to believe that programmers dont have to be like this
is that programmers werent always like this. I remember asking a
computer science professor in 2003 about our schools gender disparity
(we only had a single woman in my class, and she later switched
majors). He recounted that before 1990 and the advent of hacker and
gamer subcultures, my college touted robust majorities of women in
computer science. (Nationally, womens enrollment in CS doubled in a
decade, [26]peaking at 37.1% nationally in 1984 before dropping
precipitously.)
And one reason to believe programmers wont always be this way is that
theres plenty of evidence that the next generation of professional
programmers is no longer dominated by enthusiasts. People becoming
software developers today look markedly different than those who came
before. (Sadly, I wish I could say Im referring to the success of
movements to increase representation from traditionally marginalized
groups—tech is still dramatically over-indexed on white dudes who
enjoyed affluent upbringings.) Im just pointing to all the money
sloshing around here: it catapulted programming from a firmly middle
class job that appealed to people who really loved computers into a
comfortably upper-middle class profession that attracts anyone who
wants to secure their financial future. Ask anyone who switched careers
in the last decade how many times someone suggested they “learn to
code.” Countless people are entering the industry simply because
programming is a relatively secure, well-paying profession. (And
theres nothing wrong with that!)
[27]Inter-generational conflict is brewing
Im not sure if anyone has ever said “OK boomer” to my parents, but I
can imagine it wouldnt feel awesome to hear.
Nor do I know whether anyone will coin a term to dismiss my generation,
but I have faith that theres enough societal exasperation out there
for someone on TikTok to come up with something snappy. A lot of people
in my professional cohort still see themselves as social outcasts who
grew up in front of a CRT in their parents basements, but I suspect
the next generation sees a homogenous monolith of 40-somethings wearing
hoodies and sandals (with socks!) that lucked their way into capturing
control of the software industry just as it settled into a state of
economic maturity.
Sit with this distinction for a while, and you might start to see these
old-hat programmers as belonging to an Enthusiast Generation, one
that—due to its unique initial circumstances—is unlikely to be
replicated. Once I introduced the word “generation” to my thinking, it
became easier to make sense of many contentious, unresolved issues in
tech that flared up over the past decade by looking at them through the
lens of intergenerational conflict. And just like any discussion of
generations, its important to caveat that there are no firm boundary
lines, that exceptions are plentiful, and that many observations will
be isolated to a single locale and culture (the U.S. in this case,
maybe Canada?). The only thing that bucketing people into generations
can do for us is provide a new way to look at how a population may be
changing, thanks to a big enough time-step to perceive the accumulation
of decades of gradual change.
To illustrate, Ill highlight three high-profile conflicts that make a
different kind of sense when viewed as a generational shift.
[28]Passion
I remember about 8 years ago, people [29]got [30]passionate [31]about
[32]the [33]word [34]passion.
This rubbed me the wrong way at first. Then again, everything does.
I remember thinking, “banning the word passion will just lead people
to pick others like self-driven, highly-motivated, and
ambitious.” I remember asking, “are we supposed to screen out
candidates for whom programming is a hobby outside work?” What I dont
remember was pondering whether this was an indication that the times
were changing.
When I entered the industry, my salary was lower than it wouldve been
if Id gone into accounting, or become an actuary, or majored in civil
engineering—myself and most of the people around me did get into
software because we were passionate about it. Reading tweets and
thinkpieces that suggested “passion” was a four-letter word felt like a
personal affront, so I responded defensively.
What I wasnt thinking about was what it must have felt like for
everyone who entered the industry expecting their job to be a job but
who found themselves managed by people from my generation who didnt
leave them room to have a life outside work. Maybe everyone else on the
team worked overtime without being asked. Maybe taking “too much”
supposedly “unlimited” time off would foreclose any chance for a
promotion. Maybe building rapport at lunch required holding evolved
opinions on Emacs vs. Vim, or mechanical key switches, or whatever was
on the front page of Hacker News. That sounds like a pretty miserable
existence, especially if programming isnt what gets you out of bed in
the morning.
If you allow for the possibility were undergoing a generational
change, maybe this debate over “passion” is evidence that the
assumption that most programmers will always be passionate about
programming was mistaken and counter-productive.
[35]Craftsmanship
This brings another contentious word to mind: “craftsmanship.” Its
origin, as I witnessed it, was a reaction to the watering down of the
technical aspects of the agile software movement in the late 2000s in
favor of more lucrative soft-skills training and consulting services.
In case you missed it, most of the craftsmanship meme could be summed
up as a Slow Code movement. There was a lot of talk about measuring
twice and cutting once, establishing apprenticeship programs to train
new programmers, and a million ways to leverage automated tests for
purposes other than testing things.
I was an active participant in this community, speaking at the
[36]conference several times, putting [37]my name on the manifesto, and
generally exhorting anyone who would listen to please make their
software less terrible.
But looking back, the craftsmanship movement wasnt only about
rekindling the tremendous engineering insights of agile methods like
[38]Extreme Programming, it was also a response to a rapid influx of a
generation of programmers who didnt care about code quality the same
way we did. There was a sense that serious programmers were under
threat and hopelessly outnumbered by unserious ones. That if your team
didnt get more disciplined about what you allow in your codebase,
youd find yourself mired in a maze of complexity, beholden to epochal
build times, and left holding the bag with yet another legacy system.
Thinking about this point of tension as another manifestation of the
generational shift were experiencing, its easy to spot the problem:
“what you allow in your codebase” is a wee bit too easy to conflate
with “who you allow in your codebase.”
Shibboleths like “test-driven design” were so numerous that, to
outsiders, even perfunctory conversations were riddled with rhetorical
land mines. The emphasis on apprenticeship also carried assumptions
nobody seriously grappled with: that it implied “one true path” to
programming, that somebody (us) had uniquely figured it out, and that
the only way to learn it was to imitate the people who came before you.
I watched more than one conference talk advocating for
professionalizing software like any other trade by licensing
programmers just like we do plumbers, electricians, and [39]Canadian
engineers. Everyones intention was to prevent people from writing bad
software, but some of the movements prescriptions would have prevented
many people from writing software at all.
[40]10x Developers
Before you say anything, I know [41]you [42]probably [43]already
[44]have [45]an [46]opinion [47]on [48]the [49]idea of a “10x”
developer. If you arent familiar, the term refers to
debatably-mythical programmers whose output is worth that of ten other
programmers. What aspects of that output? Which ten other programmers?
Unclear.
The concept behind the “10x” term predates either of the generations of
programmers being discussed here. It seems to have originated in
[50]this (flimsy) 1968 study that among experienced programmers, the
best were ten times more productive than the worst (as opposed to the
average). We remember it because it was referenced in the late Fred
Brooks seminal [51]Mythical Man-Month.
That some people are better at their jobs than others is (usually)
uncontroversial. At least, it was, until it bubbled up in The Discourse
during the 2010s as a flashpoint over who the industry chooses to
valorize, often sparked by tweets from people affiliated with venture
capital and advocating that founders should strive to “only hire 10x
developers.”
In response, many people who reasonably identified this framing as
unproductive chose to pick a weird fight by claiming that 10x
developers dont exist instead. This invited a lot of
counter-criticism, as I think most of us can dream up examples of
people whose work is 1/10th as valuable as their own. From there, the
conversation shifted to counter-counter-critiques enumerating the
adverse knock-on effects of adding a toxic actor to a team, no matter
how much of a ninja/rockstar they are at coding.
And it was here that the conversation settled into a stalemate, with
clear battle lines dividing the two camps. On one side were proponents
who believed a lot of well-compensated programmers arent very good,
but that a few programmers are so good that the value they generate far
exceeds the range of a typical payscale (which was why Google used to
brag that they “[52]pay unfairly”). On the other side were critics who
were more than happy to project every negative stereotype about
programmers onto these supposedly hyper-productive ones, suggesting a
10x developers easy-to-measure output often came with hard-to-measure
organizational and technical costs.
But now, looking back, this debate would have gone a lot differently if
wed considered it through the valence of inter-generational conflict.
Ill come clean: do I believe some programmers are at least an order of
magnitude better at programming than others? In my experience … yes.
Ive worked with programmers who routinely solve problems in minutes
after Ive wasted days or weeks on them. Ive witnessed a programmer
singlehandedly build something in a day that an entire team struggled
to deliver in two weeks—without any of the catastrophic antisocial,
unsustainable downsides one might imagine. Ive honestly seen more
socially corrosive behavior from the other end of the productivity
spectrum, because programmers who spin their wheels and make zero
forward progress for days, weeks, or months will inevitably scramble
for a way to save face.
It may be uncomfortable to admit, but its not altogether unreasonable
to speculate that enthusiast programmers may, in aggregate, outperform
professional programmers who hang up their keyboard at the end of each
shift. In my experience, these traits differentiate the former from the
latter:
* Tireless: spending more time practicing programming—not under
coercion to work long hours, but being intrinsically motivated to
do so—will generally make someone a better programmer
* Tenacious: chasing down answers with limitless curiosity and
relentless, no-holds-barred tenacity—whether or not its in their
job description to spelunk open source stack traces or debug other
teams code—will yield better information and faster progress
* Thorough: priding oneself on the quality of ones work and pursuing
excellence in the (brace for it) craft—not falling victim to
perfectionism, but cutting the right corners when necessary—will
produce better-working software thats easier to maintain
In the context of this generational rift, all three of the above are
exemplified by (but by no means exclusively limited to) us last-gen
models: the individual that programs in their spare time, obsessively
refuses to let a hard problem go, and is personally invested in the
quality of their work product.
I cant imagine this dynamic feels awesome for members of the new
generation who dont want to spend more than 40 hours a week at their
computer, or who have significant family commitments, or who arent
inclined to asynchronously ponder refactoring techniques as they run
errands. Will they be forever outpaced by more enthusiastic colleagues
for whom “programmer” is an all-encompassing identity as well a career?
I dont know.
Its an uncomfortable conversation because its an uncomfortable
reality.
[53]What do we do with this?
The power of an analogy lies in what it empowers people to do.
Envisioning programmers as belonging to discrete generations who are
ushering in a dramatic transition in the industry can equip us to
identify the common threads between many of the challenges were
currently facing. It may even enable us to predict and plan for
inevitable difficulties in the future, as more members of the earlier
generation age out.
Suppose youve read this far and you can buy both these arguments:
1. The next generation of programmers are less likely to be motivated
by a love of programming than the previous generation and may
differ in profound ways as a result
2. Software, as an industry, has structurally organized itself around
the assumption programmers will continue to resemble members of the
outgoing generation
If so, then you can probably imagine there will be a lot of problems to
be solved here. The hot-button issues we revisited above are already
known, even if we failed to put our collective finger on a common cause
at the time. Its likely that countless more challenges lie beneath the
surface, waiting for the spark that causes them to boil over. Its up
to us whether we put in the work to uncover and address these problems
proactively.
Here are a few examples of questions I find myself asking after sitting
with this for a few days:
* The new generation is more likely to expect structure and support
from human resources and management, whereas the previous
generation is more likely to find active management (e.g. career
pathing, coaching, goal-setting) actually saps their autonomy and
intrinsic motivation. Can organizations effectively cater to the
needs of both groups?
* Its an open secret that the industry has no idea how to teach
people to program. Computer Science degrees famously dont prepare
programmers for the job of programming, which has always been left
as an exercise to the student to figure out on their own time. If
the industry is going to outlive us enthusiast programmers, will it
adopt a sustainable approach to educating the next generation that
doesnt require people to teach themselves everything?
* Betting your business on a limitless supply of self-starting,
self-sufficient, self-disciplined candidates seems a lot like
investing in the long-term prospects of fossil fuel extraction. How
will companies that built their cultures around enthusiast
programmers adjust to a generation needing more direction, more
support, and more accountability?
All we know for sure is that time keeps marching forward and change is
a constant, so planning for a future that looks different than the past
is usually time well spent.
What challenges do you see in this generational transition? Id love to
[54]hear from you! If you enjoyed this piece and want to keep up with
what myself and the other agents are up to, you should check out our
[55]monthly newsletter.
[56]Justin Searls
An icon of a human figure Status
Double Agent
An icon of a hash sign Code Name
Agent 002
An icon of a map marker Location
Orlando, FL
[57]Twitter [58]Mastodon [59]Github [60]LinkedIn [61]Website
Related posts:
[62]How to tell if AI threatens YOUR job
Can ChatGPT help do your job? If so, how can you be sure AI won't
eventually replace you? Spot whether your job is at risk and what you
can do about it.
An icon of a clock Publish Date
March 14, 2023
An icon of a human figure Authors
[63]Justin Searls
An icon of a paper organzier Categories
[64]Industry
[65]Career
[66]Never Staff to the Peak
For a decade, engineering leaders were taught to solve every problem
with more full-time hires. There was always a better solution. Are you
ready for it?
An icon of a clock Publish Date
April 3, 2023
An icon of a human figure Authors
[67]Justin Searls
An icon of a paper organzier Categories
[68]Industry
[69]Leadership
[70]How my experience as an engineer made me a better recruiter
How similar are engineers and recruiters? Turns out a lot. A developer
turned recruiter adapted from writing code to recruit those who write
code.
An icon of a clock Publish Date
March 20, 2023
An icon of a human figure Authors
[71]Colleen Leonard
An icon of a paper organzier Categories
[72]Recruitment
[73]Community
Looking for developers? Work with people who care about what you care about.
We level up teams striving to ship great code.
[74]Let's talk
[75]Home [76]Agency [77]Services [78]Careers [79]Blog [80]Contact
[81]Mastodon [82]GitHub [83]LinkedIn [84]Twitter
[85]614.349.4279
[86]hello@testdouble.com
[87]Privacy Policy
Founded in Columbus, OH
[88]Test Double
References
1. https://testdouble.com/
2. https://testdouble.com/
3. https://testdouble.com/agency
4. https://testdouble.com/services
5. https://testdouble.com/careers
6. file:///
7. https://testdouble.com/contact
8. file:///
9. file:///posts/
10. file:///authors/justin-searls/
11. https://sorbet.org/
12. https://github.com/testdouble/mocktail
13. https://github.com/testdouble/mocktail/pull/22
14. https://github.com/paracycle
15. https://github.com/kddnewton
16. https://github.com/jez
17. mailto:justin@testdouble.com
18. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12618-6018TMP.html#what-makes-me-special
19. https://www.crowe.com/
20. https://www.vbulletin.com/
21. https://en.wikipedia.org/wiki/Mad_Libs
22. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12618-6018TMP.html#an-aberrant-generation-of-programmers
23. https://en.wikipedia.org/wiki/The_Big_Bang_Theory
24. https://en.wikipedia.org/wiki/Silicon_Valley_(TV_series)
25. https://www.npr.org/transcripts/356944145
26. https://nces.ed.gov/programs/digest/d12/tables/dt12_349.asp
27. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12618-6018TMP.html#inter-generational-conflict-is-brewing
28. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12618-6018TMP.html#passion
29. https://starbreaker.org/blog/programmer-passion-considered-harmful/index.html
30. https://www.hotjar.com/blog/the-passion-fallacy/
31. https://web.archive.org/web/20160304021738/http://www.gamasutra.com/view/feature/6523/the_designers_notebook_passion_.php?print=1
32. https://avdi.codes/the-moderately-enthusiastic-programmer/
33. https://philippe.bourgau.net/is-there-any-room-for-the-not-passionate-developer/
34. https://exceptionnotfound.net/passion-not-required-its-ok-to-only-program-for-a-paycheck/
35. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12618-6018TMP.html#craftsmanship
36. https://scna.softwarecraftsmanship.org/
37. http://manifesto.softwarecraftsmanship.org/
38. https://en.wikipedia.org/wiki/Extreme_programming
39. https://engineerscanada.ca/become-an-engineer/overview-of-licensing-process
40. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12618-6018TMP.html#10x-developers
41. https://jasoncrawford.org/10x-engineers
42. https://web.archive.org/web/20131205042721/https://medium.com/about-work/6aedba30ecfe
43. https://networkingnerd.net/2019/07/18/i-was-a-10x-engineer-and-im-sorry/
44. https://www.swarmia.com/blog/busting-the-10x-software-engineer-myth/
45. https://erikbern.com/2016/01/08/i-believe-in-the-10x-engineer-but
46. https://a16z.com/2014/07/30/the-happy-demise-of-the-10x-engineer/
47. https://blog.kenforthewin.com/state-of-the-10x-programmer-in-2018/
48. https://web.archive.org/web/20230326131816/https://payne.org/blog/the-myth-of-the-myth-of-the-10x-programmer/
49. https://avichal.com/2011/12/16/focus-on-building-10x-teams-not-on-hiring-10x-developers/
50. https://dl.acm.org/doi/10.1145/362851.362858
51. https://en.wikipedia.org/wiki/The_Mythical_Man-Month
52. https://www.inc.com/jeff-haden/why-google-quietly-uses-power-law-rule-to-pay-its-superstar-employees-unfairly.html
53. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12618-6018TMP.html#what-do-we-do-with-this
54. mailto:justin@testdouble.com
55. https://testdouble.com/newsletter
56. file:///authors/justin-searls/
57. https://twitter.com/searls
58. https://mastodon.social/@searls
59. https://github.com/searls
60. https://linkedin.com/in/searls
61. https://justin.searls.co/
62. file:///posts/2023-03-14-how-to-tell-if-ai-threatens-your-job/
63. file:///authors/justin-searls/
64. file:///categories/industry
65. file:///categories/career
66. file:///posts/2023-04-03-never-staff-to-the-peak/
67. file:///authors/justin-searls/
68. file:///categories/industry
69. file:///categories/leadership
70. file:///posts/2023-03-20-how-my-experience-as-an-engineer-made-me-a-better-recruiter/
71. file:///authors/colleen-leonard/
72. file:///categories/recruitment
73. file:///categories/community
74. https://link.testdouble.com/blog-cta-sales
75. https://testdouble.com/
76. https://testdouble.com/agency
77. https://testdouble.com/services
78. https://testdouble.com/careers
79. file:///
80. https://testdouble.com/contact
81. https://mastodon.social/@testdouble
82. https://github.com/testdouble
83. https://www.linkedin.com/company/testdouble
84. https://twitter.com/testdouble
85. tel:+16143494279
86. mailto:hello@testdouble.com
87. file://testdouble.com/privacy-policy
88. file://testdouble.com/

View File

@@ -0,0 +1,165 @@
#[1]inkdroid
(BUTTON)
* [2]Home
* [3]About
* [4]Tags
* [5]Bookmarks
* [6]Photos
* [7]Podcasts
* [8]Music
* [9]Software
* [10]Mastodon
* [11]Talks
* [12]Web Archives
* [13]Feed
* [14]🎁
Why I don't use Copilot
June 4, 2023
[15]programming [16]artificial-intelligence
__________________________________________________________________
TL;DR Dont install Copilot. It rots your brain and destroys the
environment.
__________________________________________________________________
[rubber-duck.jpg] [17]A rubber duck in use by a developer to aid code
review
[18]GitHub Copilot is a technology that is designed to help you write
code, kind of like your partner in [19]pair programming. But, you know,
its not an actual person. Its “A.I.”whatever that means.
In principle this sounds like it might actually be a good thing right?
I know several people, who I respect, that use it as part of their
daily work. Ive heard [20]smart people say AI coding assistants like
Copilot will democratize programming, by making it possible for more
people to write code, and automate the drudgery out of their lives. Im
not convinced.
Heres why I dont use Copilot (or ChatGPT) to write code:
1. Copilots suggestions are based on a corpus of open source code in
GitHub, but the suggestions do not mention where the code came
from, and what the license is. GitHub is stealing and selling
intellectual property.
2. Copilot lets you write code faster. I dont think more code is a
good thing. The more code there is, the more code there is to
maintain. Minimalism in features is usually a good thing too. Less
really is more.
3. As more and more programmers use Copilot it creates conservativism
in languages and frameworks that prevents people from creating and
learning new ways of doing things. Collectively, we get even more
stuck in our ways and biases. Some of the biases encoded into LLMs
are things that we are actively trying to [21]change.
4. Developers become dependent on Copilot for intellectual work.
Actually, maybe addicted is a better word here. The same could be
(and was) said about the effect of search engines on software
development work (e.g. Googling error messages). But the difference
is that search results need to be interpreted, and the resulting
web pages have important context that you often need to understand.
This is work that Copilot optimizes away and truncates our
knowledge in the process.
5. Copilot costs money. It doesnt cost tons of money (for a
professional person in the USA) but it could be significant for
some. Who does it privilege? Also, it could change (see point 4).
Remember who owns this thing.
6. How much [22]energy does it take to run Copilot as millions of
developers outsource their intellectual work to its LLM
infrastructure? Is this massive centralization and enclosure really
progress in computing? Or is it a [23]step backwards as we try to
[24]reduce our energy use as a species?
7. What does Copilot see of the code in your editor? Does it use your
code as context for the prompt? What does it store, and remember,
and give to others? Somebody has probably looked into this, but if
they have it is always up for revision. Just out of principle I
dont want my editor sending my code somewhere else without me
intentionally doing it.
8. Working with others who use Copilot makes my job harder, since they
sometimes dont really understand the details of why the code is
written a particular way. Over time Copilot code can mix idioms,
styles and approaches, in ways that the developer doesnt really
understand or even recognize. This makes maintenance harder.
As far as I can tell the only redeeming qualities of Copilot are:
1. Copilot encourages you to articulate and describe a problem as
written prose before starting to write code. You dont need Copilot
for this. Maybe keep a work journal or write a [25]design document?
Maybe use your issue tracker? Use [26]text to communicate with
other people.
2. Copilot is more interactive than a [27]rubber duck. But, it turns
out Actual People are even more interactive and surprising. Reach
out to other professionals and make some friends. Go to workshops
and conferences.
3. I could be convinced that Copilot has a useful place in the
[28]review of code rather than the first draft of code. It wouldnt
be a replacement for review by people, but I believe it could
potentially help people do the review. I dont think this exists
yet?
4. Copilot makes me think critically about machine learning
technology, my profession and its place in the world.
Maybe my thinking on this will change. But I doubt it. Im on the older
side for a software developer, and (hopefully) will retire some day.
Maybe people like me are on the way out, and writing code with Copilot
and ChatGPT is the future. Maybe programming has always been about
increasing layers of abstraction and this is just the next logical
layer. I really hope not.
I enjoy programming because its about reasoning, thinking, models,
concepts, expression, communication, ethics, reading, learning, making,
and process. Its an art and a practice that is best done with other
people.
Increasingly I think its imperative for programming to be done more
slowly, more deliberatively, and as part of more conversations with
more people. The furious automation of everything is eating the world.
Programs need to run more efficiently. Programs need to be well
understood, by a more diverse and varied set of people. Programs need
to be robust and resilient. Programs need to be easier to change.
Can Copilot help with these [29]goals? I think the answer is no,
because it doesnt actually understand anything, and more importantly,
it doesnt promote understanding.
__________________________________________________________________
Update (2023-06-09): For another take on Copilot that uses this post as
a jumping off point see Vivek Haldars [30]Re: Why I dont use Copilot.
Unless otherwise noted all the content here is licensed [31]CC-BY
References
1. https://inkdroid.org/feed.xml
2. file:///
3. file:///about/
4. file:///tags/
5. http://pinboard.in/u:edsu
6. https://www.flickr.com/photos/inkdroid
7. file:///podcasts/feed.opml
8. https://bandcamp.com/edsu
9. https://github.com/edsu
10. https://social.coop/@edsu
11. file:///talks/
12. file:///web-archives/archives/
13. file:///feed.xml
14. https://bookshop.org/wishlists/d7c0224f5440df8d2c174ad2cc38b3fca1aa813f
15. file:///tag/programming
16. file:///tag/artificial-intelligence
17. https://commons.wikimedia.org/wiki/File:Rubber_duck_assisting_with_debugging.jpg
18. https://en.wikipedia.org/wiki/GitHub_Copilot
19. https://en.wikipedia.org/wiki/Pair_programming
20. https://changelog.com/podcast/534
21. https://www.wired.com/story/tech-confronts-use-labels-master-slave/
22. https://dl.acm.org/doi/pdf/10.1145/3442188.3445922
23. https://www.washingtonpost.com/technology/2023/06/05/chatgpt-hidden-cost-gpu-compute/
24. https://www.jasonhickel.org/less-is-more
25. https://en.wikipedia.org/wiki/Software_design_description
26. https://graydon2.dreamwidth.org/193447.html
27. https://en.wikipedia.org/wiki/Rubber_duck_debugging
28. https://en.wikipedia.org/wiki/Code_review
29. https://permacomputing.net/
30. https://vivekhaldar.com/articles/re--why-i-don-t-use-copilot/
31. https://creativecommons.org/licenses/by/4.0/

View File

@@ -0,0 +1,197 @@
[1]Yes, Mike will do.
(BUTTON)
* [2]About
* [3]Tags
* [4]Categories
* [5]Search
* [6]Feed
[7]Home » [8]Posts
Daily notes for 2023-07-17
July 17, 2023
Table of Contents
* [9]Notes on conflict
* [10]The INT650
Notes on conflict[11]#
When my master and I were walking in the rain, he would say, “Do not
walk so fast, the rain is everywhere.”
—Shunryu Suzuki
For a very long time — too much of my life — I thought conflict was a
sign that there was a problem. I didnt like disagreeing with people
about much of anything. Im using “conflict” in a broad sense: Over
resources, points of view, vision, beliefs, tastes.
Over time I shifted on the matter a little, but when I look back on it
I realize I wasnt really evolving my attitude toward conflict, I was
just evolving my response to its existence, while still believing that
being in a state of conflict is a problem. I just got better at keeping
my blood pressure low and gritting through it. I think I was looking at
conflict as a thing that you have to acknowledge exists, but that you
need to get through as quickly as possible, because its a bad place to
be.
That attitude created some problems:
* When youre bad at being in conflict, youre at a disadvantage with
people who are good at it and mean you harm; and youre annoying
people who are good at it and mean you no harm.
* When you look at conflict as a thing to grit through and end
quickly its hard to maintain your integrity. (See above: The
people who dont want whats best for you (or the business, or the
world, or etc.) understand this, and the ones who are really good
at it and a little indifferent toward whats best for you are
counting on you to do all the work to get out of conflict.)
* When youd rather do anything than admit that youre in a state of
conflict, you will eventually do something about your problem that
is less skillful for having waited than if youd admitted it to
yourself (and whoever youre in conflict with) sooner. Or, as one
of my past managers put it to me, “dont be that guy who
hockey-sticks.” (I nodded then kind of hockey-sticked.)
* When youre bad at being in conflict, and youre willing to be set
aside your integrity or do other things to get out of it quickly,
youll eventually get tired of “losing” and figure out ways to
“win” that cause others to see you as, at best, baffling and
frustrating, and at worst Machiavellian and treacherous.
That, anyhow, is a rough categorization of my many hundreds of
mishandlings of conflict. Maybe the most interesting thing to me about
all those mishandlings is that over time I managed to convince myself
that failing to be in conflict well was a sign of virtue. Moral
sophistication. “Taking the high road.” “Not worth the stress.”
“Learning how to play the game.” “Protecting the team.”
Over the past few years, Ive changed on the matter: On balance, I
definitely dont think its existence is a sign theres a problem. Its
just a sign that theres a conflict.
I still feel a little cautious about conflict when I dont know the
person Im in conflict with very well. Caution is useful, because
people who are bad at being in conflict but mean well — people who are
“good eggs” — can still sort of mess things up, because if I have to
bet on whether someone hates “losing” or just grinning and bearing it
more, my money is on them hating losing more. When things get to a
place where it feels existential to them, even good eggs can act sort
of rotten. So you have to take time and attend to the interaction so
they can be in conflict and feel safe about it.
I still think I have a responsibility to introduce the existence of
conflict with kindness, or receive the news that Ive entered into a
state of conflict in a manner that invites a full airing. “Relaxed and
possibly delighted curiosity,” I suppose Id call it, rather than a
furrowing of the brow and assurances that I want to restore harmony at
once. Because I dont want to restore harmony at once. I want to
understand why we want different things, then figure out how we can
both behave with integrity while we sort that out.
The INT650[12]#
I finally quit waffling on what to do with the Royal Enfield Himalayan.
I took it up to [13]Sabatino Moto in St. Johns and traded it in for
another Royal Enfield: An INT650 (“Interceptor” everywhere else in the
world, but not in North America where Honda owns the rights to the
name.)
Its a pretty night and day difference. The Himalayan is a mountain
goat, and the INT650 is … something a little prettier and a little less
rough. I was never going to ride the Himalayan the way it was meant to
be ridden — fire roads, gravel, dirt — and I didnt have the patience
for the very “work in progress” attitude Royal Enfield took toward it.
One thing you learn from all the Himalayan videos on YouTube is that
the people who love them best dont mind fiddling, tweaking, and
wrenching. After reading hundreds of owners talk about their
experiences, I have come to realize I lost the factory QA lottery on
mine, and that engendered a lack of confidence in it that I never
recovered from.
Also turns out, I think, that I had a bad dealer:
The first RE dealer in the Portland area doesnt really want to sell
them, and it really does not want to do anything other than the most
basic service. I think Ive documented that elsewhere, so I wont go
into it more here, but Ill just offer the observation that REs
strategy of linking up with Harley dealers to build out its US
distribution network did its customers no favors.
The folks at Sabatino, on the other hand, seem to have a genuine
appreciation for the bikes, that extends all the way to acknowledging
that RE has some QA challenges. Sabatino addresses that by doing their
own QA when they uncrate a new bike. And theyre willing to talk about
the ups and downs of each model. My head was briefly turned by another
model, and I got a reasoned, balanced, discussion of why maybe that one
wouldnt work for me.
They also offer test rides. I can name one dealership that grudgingly
made me sign a waiver and write a check for the full amount to test
ride a Grom for five laps around their parking lot, and they only did
that because it was a two-year-old model and theyd sold the newer one
they promised me out from under me. Sabatino made me do the waiver,
share my insurance information, and hand over my license, but then they
tossed me the keys and told me theyd see me when they saw me.
Anyhow, the test ride sold me. Ive been through several configurations
of motorcycle and scooter since getting my motorcycle endorsement —
maxiscoots, normal scoots, mini-moto, cruiser, trail bike, dual-sport —
and none of them have been the thing I first imagined myself riding
when I finally decided to learn how to ride. Well, learn how to ride as
an adult, anyhow. The twin 650 runs and sounds nice, the bike handles
more comfortably than the Himalayan despite there being 40 pounds more
of it, and the super-simple analog speedo and tach are just sort of
pleasant. I ran it around St. Johns for a while, was struck by how
immediately comfortable it was (and how confident I felt on it), and
that was that.
Yesterday I took it on a ride out Foster Road toward Damascus. Theres
a side road I head out onto that eventually rejoins on the other side
of Damascus, close to a back road that joins the highway down to
Estacada. So I headed out past Estacada, to see how it did on a small
back highway. There was a little bit of buffeting — no fairings — but
it ran and handled well. I felt more confident on the little back roads
coming back than I did heading out as I got to know the bike better. I
did decide to detract from its vintage purity a little by ordering a
Dart flyscreen when I got back: People say it helps clean up the
turbulence at highway speeds, and keeps the bugs off the pretty silver
cans.
Anyhow, glad Ive got it in the driveway with so much of the riding
season left, and I can wholeheartedly recommend Sabatino Moto if youre
looking to buy one for yourself.
* [14]journal
* [15]conflict
[16]« Prev
Daily notes for 2023-07-18 [17]Next »
Mission: Incomprehensible © 2023 Mike Hall — [18]Colophon
References
Visible links:
1. https://mike.puddingtime.org/
2. https://mike.puddingtime.org/about/
3. https://mike.puddingtime.org/tags/
4. https://mike.puddingtime.org/categories/
5. https://mike.puddingtime.org/search/
6. https://mike.puddingtime.org/index.xml
7. https://mike.puddingtime.org/
8. https://mike.puddingtime.org/posts/
9. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12623-9641TMP.html#notes-on-conflict
10. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12623-9641TMP.html#the-int650
11. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12623-9641TMP.html#notes-on-conflict
12. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12623-9641TMP.html#the-int650
13. https://www.sabatinomoto.com/
14. https://mike.puddingtime.org/tags/journal/
15. https://mike.puddingtime.org/tags/conflict/
16. https://mike.puddingtime.org/posts/2023-07-18-daily-notes/
17. https://mike.puddingtime.org/posts/2023-07-15-mission--incomprehensible/
18. file:///colophon
Hidden links:
20. https://social.lol/@mph
21. https://pix.puddingtime.org/
22. file://localhost/var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12623-9641TMP.html#top

View File

@@ -0,0 +1,347 @@
#[1]next [2]alternate
[3]Home [4]About [5]New: Concept album
From: Robin Sloan
To: the lab
Sent: March 2023
Phase change
An extremely close-up photograph of a snowflake, looking almost
architectural. [6]Snowflake, Wilson Bentley, ca. 1910
Please excuse the off-schedule transmission. The idea of a steady,
predictable publishing cadence is always so appealing … and then events
overtake me!
I think this lab newsletter will shift into a “whenever appropriate”
schedule for the rest of this year. In this news flash, youll find two
items: a time-sensitive link, and some thoughts on all thats happening
with AI.
This is an archived edition of Robins lab newsletter. You can sign up
to receive future editions using the form at the bottom of the page.
A group of internet thinkers has proposed a [7]Summer of Protocols:
an 18-week program that will run from May 1 to Aug 31, 2023, and
aims to catalyze broad-based and wide-ranging exploration of the
rapidly evolving world of protocols.
[8]Applications are due in just a couple weeks, which is why I wanted
to circulate the link immediately. I dont know a ton about the program
or its organizers, but I like the spirit captured on the website, and
I feel like it might be a generative opportunity for someone(s)
reading this.
Even for those of us who arent going to participate, the introductory
paper makes for a bracing, inspiring read: [9]The Unreasonable
Sufficiency of Protocols.
Now, on to the AI thoughts, which, as youll see, loop around to
connect to protocols again:
[10]Finding a question
Earlier this week, in [11]my main newsletter, I praised a new project
from Matt Webb. Here, I want to come at it from a different angle.
Briefly: Matt has built the [12]Braggoscope, a fun and useful
application for exploring the archives of the beloved BBC radio show In
Our Time, hosted by the inimitable Melvyn Bragg.
In Our Time only provides HTML pages for each episodetheres no
structured data, no sense of “episode X is connected to episode Y
because of shared feature Z”.
As Matt explains [13]in his write-up, he fed the plain-language content
of each episode page into the GPT-3 API, cleverly prompting it to
extract basic metadata, along with a few subtler propertiesincluding
a Dewey Decimal number!?
(Explaining how and why a person might prompt a language model is
beyond the scope of this newsletter; you can [14]read up about it
here.)
Heres [15]a bit of Matts prompt:
Extract the description and a list of guests from the supplied episode notes fro
m a podcast.
Also provide a Dewey Decimal Classification code and label for the description
Return valid JSON conforming to the following Typescript type definition:
{
"description": string,
"guests": {"name": string, "affiliation": string | null}[]
"dewey_decimal": {"code": string, "label": string},
}
Episode synopsis (Markdown):
{notes}
Valid JSON:
Important to say: it doesnt work perfectly. Matt reports that GPT-3
doesnt always return valid JSON, and if you browse the Braggoscope,
youll find plenty of questionable filing choices.
And yet! What a technique. (Matt credits Noah Brier for [16]the
insight.)
It fits into a pattern Ive noticed: while the buzzy application of the
GPT-alikes is chat, the real workhorse might be text transformation.
As Matt writes:
Sure Google is all-in on AI in products, announcing chatbots to
compete with ChatGPT, and synthesised text in the search engine.
BUT.
Using GPT-3 as a function call.
Using GPT-3 as a universal coupling.
It brings a lot within reach.
I think the magnitude of this shift … I would say its on the order
of the web from the mid 90s? There was a radical simplification and
democratisation of software (architecture, development, deployment,
use) that took decades to really unfold.
For me, 2022 and 2023 have presented two thick strands of inquiry: the
web and AI, AI and the web. This is evidenced by the structure of these
lab newsletters, which have tended towards birfucation.
Matts thinking is interesting to me because it brings the
strands together.
One of the pleasures of HTTP (the original version) is that its almost
plain language, though a very simple kind. You can execute an HTTP
request “by hand”: telnet www.google.com 80 followed by GET /.
Language models as universal couplers begin to suggest protocols that
really are plain language. What if the protocol of the GPT-alikes is
just a bare TCP socket carrying free-form requests and instructions?
What if the RSS feed of the future is simply my language model replying
to yours when it asks, “Whats up with Robin lately?”
I like this because I hate it; because its weird, and makes me
feel uncomfortable.
__________________________________________________________________
I think its really challenging to find the appropriate stance towards
this stuff.
On one hand, I find critical deflation, of the kind youll hear from
Ted Chiang, Simon Willison, and Claire Leibowicz in [17]this recent
episode of KQED Forum, appropriate and useful. The hype is so powerful
that any corrective is welcome.
However! On the critical side, the evaluation of whats before us isnt
sufficient; not even close. If we demand humility from AI engineers,
then we ought to match it with imagination.
An important fact about these language modelsone that sets them
apart from, say, the personal computer, or the iPhoneis that their
capabilities have been surprising, often confounding, even to
their creators.
AI at this moment feels like a mash-up of programming and biology. The
programming part is obvious; the biology part becomes apparent when you
see [18]AI engineers probing their own creations the way you might
probe a mouse in a lab.
The simple fact is: even at the highest levels of theory and practice,
no one knows how these language models are doing what theyre doing.
Over the past few years, in the evolution from GPT-2-alikes to
GPT-3-alikes and beyond, its become clear that the “returns to
scale”—both in terms of (1) a models size and (2) the scope of its
training dataare exponential and nonlinear. Simply adding more works
better, and works weirder, than it should.
The nonlinearity is, to me, the most interesting part. As these models
have grown, they have undergone widely observed “phase changes” in
capability, just as sudden and surprising as water frozen or
cream whipped.
At the moment, my deepest engagement with a language model is in a
channel on a Discord server, where our gallant host has set up a
ChatGPT-powered bot and laced a simple personality into its prompt. The
sociability has been a revelationmultiplayer ChatGPT is much, MUCH
more fun than single playerand, of course, the conversation tends
towards goading the bot, testing its boundaries, luring it
into absurdities.
The bot writes poems, sure, and song lyrics, and movie scenes.
The bot also produces ASCII art, and SVG code, and [19]PICO-8 programs,
though they dont always run.
I find myself deeply ambivalent, in the original sense of: thinking
many things at once. Im very aware of the bots limitations, but/and
I find myself stunned by its fluency, its range.
Listen: you can be a skeptic. In some ways, I am! But these phase
changes have happened, and that probably means they will keep
happening, and no one knows (the AI engineers least of all) what might
suddenly become possible.
As ever, [20]Jack Clark is my guide. Hes a journalist turned AI
practioner, involved in policy and planning at the highest levels,
first at OpenAI, now at Anthropic. And if hes no longer a
disinterested observer, he remains deeply grounded and moral, which
makes me trust him when he says, with confidence: this is the biggest
thing going, and we had all better brace for weird times ahead.
__________________________________________________________________
What does that mean, to brace for it?
Ive found it helpful, these past few years, to frame my anxieties and
dissatisfactions as questions. For example, fed up with the state of
social media, [21]I asked: what do I want from the internet, anyway?
It turns out I had an answer to that question.
Where the GPT-alikes are concerned, a question thats emerging for
me is:
What could I do with a universal functiona tool for turning just
about any X into just about any Y with plain language instructions?
I dont pose that question with any sense of wide-eyed expectation; a
reasonable answer might be, eh, nothing much. Not everything in the
world depends on the transformation of symbols. But I think that IS the
question, and I think it takes some legitimate work, some strenuous
imagination, to push yourself to believe it really will be “just about
any X” into “just about any Y”.
I help operate [22]a small olive oil company, and I have actually spent
a fair amount of time lately considering this question in the context
of our business. What might a GPT-alike do for us? What might an even
more capable system do?
My answer, so far, is indeed: eh, nothing much! Its a physical
business, after all, mainly concerned with moving and transforming
matter. The “obvious” application is customer support, which I handle
myself, and which I am unwilling to cede to a computer or, indeed,
anyone who isnt me. The specific quality and character of our support
is important.
(As an aside: every customer support request I receive is a miniature
puzzle, usually requiring deduction across several different systems.
Many of these puzzles are challenging even to the general intelligence
that is me; if it comes to pass that a GPT-alike can handle them
without breaking a sweat, I will be very, very impressed.)
(Of course, its not going to happen like that, is it? Long before
GPT-alikes can solve the same problems Robin can, using the tools Robin
has, the problems themselves will change to meet the GPT-alikes
halfway. The systems will all learn to “speak GPT”, in some sense.)
The simple act of asking and answering the question was clarifying and
calming. It plucked AI out of the realm of abstract dread and plunked
it down on the workbench.
__________________________________________________________________
Jack Clark includes, in all of his AI newsletters, a piece of original
micro-fiction. One of them, [23]sent in December, has stayed with me.
Ill reproduce it here in full:
Reality Authentication
[The internet, 2034]
“To login, spit into the bio-API”
I took a sip of water and swirled it around my mouth a bit, then
hawked some spit into the little cup on my desk, put its lid on,
then flipped over the receptacle and plugged it into the
bio-API system.
“Authenticating … authentication successful, human-user identified.
Enjoy your time on the application!”
I spent a couple of hours logged-on, doing a mixture of work and
pleasure. I was part of an all-human gaming league called the
No-Centaurs; we came second in a mini tournament. I also talked to
my therapist sans his augment, and I sent a few emails over the
BioNet protocol.
When I logged out, I went back to the regular internet. Since the AI
models had got minituarized and proliferated a decade ago, the
internet had radically changed. For one thing, it was so much faster
now. It was also dangerous in ways it hadnt been before - Attention
Harvesters were everywhere and the only reason I was confident in my
browsing was Id paid for a few protection programs.
I think “brace for it” might mean imagining human-only spaces, online
and off. We might be headed, paradoxically, for a golden age of “get
that robot out of my face”.
In the extreme case, if AI doesnt wreck the world, language models
could certainly wreck the internet, like Jacks Attention Harvesters
above. Maybe well look back at the Web Parenthesis, 1990-2030. It was
weird and fun, though no one in the future will quite understand
the appeal.
We are living and thinking together in an interesting time. My
recommendation is to avoid chasing the ball of AI around the field,
always a step behind. Instead, set your stance a little wider and form
a question that actually matters to you.
It might be as simple as: is this kind of capability, extrapolated
forward, useful to me and my work? If so, how?
It might be as wacky as: what kind of protocol could I build around
plain language, the totally sci-fi vision of computers just TALKING to
each other?
It might even be my original question, or a version of it: what do
I want from the internet, anyway?
From Oakland,
Robin
March 2023, Oakland
I'm [24]Robin Sloan, a fiction writer. You can sign up for my
lab newsletter:
____________________ Subscribe
This website doesnt collect any information about you or your reading.
It aspires to the speed and privacy of the printed page.
Dont miss [25]the colophon. Hony soyt qui mal pence
References
1. file:///confirm/main/subscribe/
2. https://www.robinsloan.com/feed.xml
3. file:///
4. file:///about
5. https://ooo.ghostbows.ooo/?utm_source=Robin_Sloan_sent_me
6. https://publicdomainreview.org/essay/the-snowflake-man-of-vermont?utm_source=Robin_Sloan_sent_me
7. https://efdn.notion.site/Summer-of-Protocols-3d7983d922184c4eb72749e9cb60d076?utm_source=Robin_Sloan_sent_me
8. https://efdn.notion.site/Application-5b71c238d6bd44cf9137946ef7767e53?utm_source=Robin_Sloan_sent_me
9. https://efdn.notion.site/Pilot-Study-1bf3e3be6bf34a2eb8156ddf98d3fa67?utm_source=Robin_Sloan_sent_me
10. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L12614-3163TMP.html#gpt
11. https://www.robinsloan.com/newsletters/ring-got-good/?utm_source=Robin_Sloan_sent_me
12. https://genmon.github.io/braggoscope/?utm_source=Robin_Sloan_sent_me
13. https://interconnected.org/home/2023/02/07/braggoscope?utm_source=Robin_Sloan_sent_me
14. https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api?utm_source=Robin_Sloan_sent_me
15. https://news.ycombinator.com/item?id=35073824&utm_source=Robin_Sloan_sent_me
16. https://brxnd.substack.com/p/the-prompt-to-rule-all-prompts-brxnd?utm_source=Robin_Sloan_sent_me
17. https://www.kqed.org/forum/2010101892368/how-to-wrap-our-heads-around-these-new-shockingly-fluent-chatbots?utm_source=Robin_Sloan_sent_me
18. https://www.anthropic.com/index/toy-models-of-superposition-2?utm_source=Robin_Sloan_sent_me
19. https://www.lexaloffle.com/pico-8.php?utm_source=Robin_Sloan_sent_me
20. https://importai.substack.com/?utm_source=Robin_Sloan_sent_me
21. file:///lab/specifying-spring-83/
22. https://fat.gold/?utm_source=Robin_Sloan_sent_me
23. https://us13.campaign-archive.com/?u=67bd06787e84d73db24fb0aa5&&id=a03ebcd500&utm_source=Robin_Sloan_sent_me
24. https://www.robinsloan.com/about?utm_source=Robin_Sloan_sent_me
25. file:///colophon/