davideisinger.com

My personal website
Log | Files | Refs | README

fly-io-g1y72q.txt (22629B)


      1 [1] App performance optimization [2]
      2 [3] Need a Logo? View Our Brand Assets
      3 Open main menu
      4 
      5 Articles
      6     [5] Blog [6] Phoenix Files [7] Laravel Bytes [8] Ruby Dispatch [9] Django
      7     Beats [10] JavaScript Journal
      8 
      9 [11] Security [12] Infra Log [13] Docs [14] Community [15] Status [16] Pricing
     10 [17] Sign In [18] Get Started [19] RSS Feed
     11 [20] Blog [21] Phoenix Files [22] Laravel Bytes [23] Ruby Dispatch [24] Django
     12 Beats [25] JavaScript Journal [26] Security [27] Infra Log [28] Docs [29]
     13 Community (opens an external site) [30] Status (opens an external site) [31]
     14 Pricing [32] Sign In [33] Get Started [34] RSS Feed
     15 Reading time • 16 min [35] Share this post on Twitter [36] Share this post on
     16 Hacker News [37] Share this post on Reddit
     17 
     18 My AI Skeptic Friends Are All Nuts
     19 
     20 Author
     21     Thomas Ptacek
     22 
     23     Name
     24         Thomas Ptacek
     25     @tqbf
     26         [38] @tqbf
     27 
     28 A psychedelic landscape. Image by [39] Annie Ruygt
     29 
     30 A heartfelt provocation about AI-assisted programming.
     31 
     32 Tech execs are mandating LLM adoption. That’s bad strategy. But I get where
     33 they’re coming from.
     34 
     35 Some of the smartest people I know share a bone-deep belief that AI is a fad —
     36 the next iteration of NFT mania. I’ve been reluctant to push back on them,
     37 because, well, they’re smarter than me. But their arguments are unserious, and
     38 worth confronting. Extraordinarily talented people are doing work that LLMs
     39 already do better, out of spite.
     40 
     41 All progress on LLMs could halt today, and LLMs would remain the 2nd most
     42 important thing to happen over the course of my career.
     43 
     44 Important caveat: I’m discussing only the implications of LLMs for software
     45 development. For art, music, and writing? I got nothing. I’m inclined to
     46 believe the skeptics in those fields. I just don’t believe them about mine.
     47 
     48 Bona fides: I’ve been shipping software since the mid-1990s. I started out in
     49 boxed, shrink-wrap C code. Survived an ill-advised [40]Alexandrescu C++ phase.
     50 Lots of Ruby and Python tooling. Some kernel work. A whole lot of server-side
     51 C, Go, and Rust. However you define “serious developer”, I qualify. Even if
     52 only on one of your lower tiers.
     53 
     54 [41]level setting
     55 
     56 † (or, God forbid, 2 years ago with Copilot)
     57 
     58 First, we need to get on the same page. If you were trying and failing to use
     59 an LLM for code 6 months ago †, you’re not doing what most serious LLM-assisted
     60 coders are doing.
     61 
     62 People coding with LLMs today use agents. Agents get to poke around your
     63 codebase on their own. They author files directly. They run tools. They compile
     64 code, run tests, and iterate on the results. They also:
     65 
     66   • pull in arbitrary code from the tree, or from other trees online, into
     67     their context windows,
     68   • run standard Unix tools to navigate the tree and extract information,
     69   • interact with Git,
     70   • run existing tooling, like linters, formatters, and model checkers, and
     71   • make essentially arbitrary tool calls (that you set up) through MCP.
     72 
     73 The code in an agent that actually “does stuff” with code is not, itself, AI.
     74 This should reassure you. It’s surprisingly simple systems code, wired to
     75 ground truth about programming in the same way a Makefile is. You could write
     76 an effective coding agent in a weekend. Its strengths would have more to do
     77 with how you think about and structure builds and linting and test harnesses
     78 than with how advanced o3 or Sonnet have become.
     79 
     80 If you’re making requests on a ChatGPT page and then pasting the resulting
     81 (broken) code into your editor, you’re not doing what the AI boosters are
     82 doing. No wonder you’re talking past each other.
     83 
     84 [42]the positive case
     85 
     86 four quadrants of tedium and importance
     87 
     88 LLMs can write a large fraction of all the tedious code you’ll ever need to
     89 write. And most code on most projects is tedious. LLMs drastically reduce the
     90 number of things you’ll ever need to Google. They look things up themselves.
     91 Most importantly, they don’t get tired; they’re immune to inertia.
     92 
     93 Think of anything you wanted to build but didn’t. You tried to home in on some
     94 first steps. If you’d been in the limerent phase of a new programming language,
     95 you’d have started writing. But you weren’t, so you put it off, for a day, a
     96 year, or your whole career.
     97 
     98 I can feel my blood pressure rising thinking of all the bookkeeping and
     99 Googling and dependency drama of a new project. An LLM can be instructed to
    100 just figure all that shit out. Often, it will drop you precisely at that golden
    101 moment where shit almost works, and development means tweaking code and
    102 immediately seeing things work better. That dopamine hit is why I code.
    103 
    104 There’s a downside. Sometimes, gnarly stuff needs doing. But you don’t wanna do
    105 it. So you refactor unit tests, soothing yourself with the lie that you’re
    106 doing real work. But an LLM can be told to go refactor all your unit tests. An
    107 agent can occupy itself for hours putzing with your tests in a VM and come back
    108 later with a PR. If you listen to me, you’ll know that. You’ll feel worse
    109 yak-shaving. You’ll end up doing… real work.
    110 
    111 [43]but you have no idea what the code is
    112 
    113 Are you a vibe coding Youtuber? Can you not read code? If so: astute point.
    114 Otherwise: what the fuck is wrong with you?
    115 
    116 You’ve always been responsible for what you merge to main. You were five years
    117 go. And you are tomorrow, whether or not you use an LLM.
    118 
    119 If you build something with an LLM that people will depend on, read the code.
    120 In fact, you’ll probably do more than that. You’ll spend 5-10 minutes knocking
    121 it back into your own style. LLMs are [44]showing signs of adapting to local
    122 idiom, but we’re not there yet.
    123 
    124 People complain about LLM-generated code being “probabilistic”. No it isn’t.
    125 It’s code. It’s not Yacc output. It’s knowable. The LLM might be stochastic.
    126 But the LLM doesn’t matter. What matters is whether you can make sense of the
    127 result, and whether your guardrails hold.
    128 
    129 Reading other people’s code is part of the job. If you can’t metabolize the
    130 boring, repetitive code an LLM generates: skills issue! How are you handling
    131 the chaos human developers turn out on a deadline?
    132 
    133 † (because it can hold 50-70kloc in its context window)
    134 
    135 For the last month or so, Gemini 2.5 has been my go-to †. Almost nothing it
    136 spits out for me merges without edits. I’m sure there’s a skill to getting a
    137 SOTA model to one-shot a feature-plus-merge! But I don’t care. I like moving
    138 the code around and chuckling to myself while I delete all the stupid comments.
    139 I have to read the code line-by-line anyways.
    140 
    141 [45]but hallucination
    142 
    143 If hallucination matters to you, your programming language has let you down.
    144 
    145 Agents lint. They compile and run tests. If their LLM invents a new function
    146 signature, the agent sees the error. They feed it back to the LLM, which says
    147 “oh, right, I totally made that up” and then tries again.
    148 
    149 You’ll only notice this happening if you watch the chain of thought log your
    150 agent generates. Don’t. This is why I like [46]Zed’s agent mode: it begs you to
    151 tab away and let it work, and pings you with a desktop notification when it’s
    152 done.
    153 
    154 I’m sure there are still environments where hallucination matters. But
    155 “hallucination” is the first thing developers bring up when someone suggests
    156 using LLMs, despite it being (more or less) a solved problem.
    157 
    158 [47]but the code is shitty, like that of a junior developer
    159 
    160 Does an intern cost $20/month? Because that’s what Cursor.ai costs.
    161 
    162 Part of being a senior developer is making less-able coders productive, be they
    163 fleshly or algebraic. Using agents well is both a both a skill and an
    164 engineering project all its own, of prompts, indices, [48]and (especially)
    165 tooling. LLMs only produce shitty code if you let them.
    166 
    167 † (Also: 100% of all the Bash code you should author ever again)
    168 
    169 Maybe the current confusion is about who’s doing what work. Today, LLMs do a
    170 lot of typing, Googling, test cases †, and edit-compile-test-debug cycles. But
    171 even the most Claude-poisoned serious developers in the world still own
    172 curation, judgement, guidance, and direction.
    173 
    174 Also: let’s stop kidding ourselves about how good our human first cuts really
    175 are.
    176 
    177 [49]but it’s bad at rust
    178 
    179 It’s hard to get a good toolchain for Brainfuck, too. Life’s tough in the
    180 aluminum siding business.
    181 
    182 † (and they surely will; the Rust community takes tooling seriously)
    183 
    184 A lot of LLM skepticism probably isn’t really about LLMs. It’s projection.
    185 People say “LLMs can’t code” when what they really mean is “LLMs can’t write
    186 Rust”. Fair enough! But people select languages in part based on how well LLMs
    187 work with them, so Rust people should get on that †.
    188 
    189 I work mostly in Go. I’m confident the designers of the Go programming language
    190 didn’t set out to produce the most LLM-legible language in the industry. They
    191 succeeded nonetheless. Go has just enough type safety, an extensive standard
    192 library, and a culture that prizes (often repetitive) idiom. LLMs kick ass
    193 generating it.
    194 
    195 All this is to say: I write some Rust. I like it fine. If LLMs and Rust aren’t
    196 working for you, I feel you. But if that’s your whole thing, we’re not having
    197 the same argument.
    198 
    199 [50]but the craft
    200 
    201 Do you like fine Japanese woodworking? All hand tools and sashimono joinery? Me
    202 too. Do it on your own time.
    203 
    204 † (I’m a piker compared to my woodworking friends)
    205 
    206 I have a basic wood shop in my basement †. I could get a lot of satisfaction
    207 from building a table. And, if that table is a workbench or a grill table,
    208 sure, I’ll build it. But if I need, like, a table? For people to sit at? In my
    209 office? I buy a fucking table.
    210 
    211 Professional software developers are in the business of solving practical
    212 problems for people with code. We are not, in our day jobs, artisans. Steve
    213 Jobs was wrong: we do not need to carve the unseen feet in the sculpture.
    214 Nobody cares if the logic board traces are pleasingly routed. If anything we
    215 build endures, it won’t be because the codebase was beautiful.
    216 
    217 Besides, that’s not really what happens. If you’re taking time carefully
    218 golfing functions down into graceful, fluent, minimal functional expressions,
    219 alarm bells should ring. You’re yak-shaving. The real work has depleted your
    220 focus. You’re not building: you’re self-soothing.
    221 
    222 Which, wait for it, is something LLMs are good for. They devour schlep, and
    223 clear a path to the important stuff, where your judgement and values really
    224 matter.
    225 
    226 [51]but the mediocrity
    227 
    228 As a mid-late career coder, I’ve come to appreciate mediocrity. You should be
    229 so lucky as to have it flowing almost effortlessly from a tap.
    230 
    231 We all write mediocre code. Mediocre code: often fine. Not all code is equally
    232 important. Some code should be mediocre. Maximum effort on a random unit test?
    233 You’re doing something wrong. Your team lead should correct you.
    234 
    235 Developers all love to preen about code. They worry LLMs lower the “ceiling”
    236 for quality. Maybe. But they also raise the “floor”.
    237 
    238 Gemini’s floor is higher than my own. My code looks nice. But it’s not as
    239 thorough. LLM code is repetitive. But mine includes dumb contortions where I
    240 got too clever trying to DRY things up.
    241 
    242 And LLMs aren’t mediocre on every axis. They almost certainly have a bigger bag
    243 of algorithmic tricks than you do: radix tries, topological sorts, graph
    244 reductions, and LDPC codes. Humans romanticize rsync ([52]Andrew Tridgell wrote
    245 a paper about it!). To an LLM it might not be that much more interesting than a
    246 SQL join.
    247 
    248 But I’m getting ahead of myself. It doesn’t matter. If truly mediocre code is
    249 all we ever get from LLMs, that’s still huge. It’s that much less mediocre code
    250 humans have to write.
    251 
    252 [53]but it’ll never be AGI
    253 
    254 I don’t give a shit.
    255 
    256 Smart practitioners get wound up by the AI/VC hype cycle. I can’t blame them.
    257 But it’s not an argument. Things either work or they don’t, no matter what
    258 Jensen Huang has to say about it.
    259 
    260 [54]but they take-rr jerbs
    261 
    262 [55]So does open source. We used to pay good money for databases.
    263 
    264 We’re a field premised on automating other people’s jobs away. “Productivity
    265 gains,” say the economists. You get what that means, right? Fewer people doing
    266 the same stuff. Talked to a travel agent lately? Or a floor broker? Or a record
    267 store clerk? Or a darkroom tech?
    268 
    269 When this argument comes up, libertarian-leaning VCs start the chant:
    270 lamplighters, creative destruction, new kinds of work. Maybe. But I’m not
    271 hypnotized. I have no fucking clue whether we’re going to be better off after
    272 LLMs. Things could get a lot worse for us.
    273 
    274 LLMs really might displace many software developers. That’s not a high horse we
    275 get to ride. Our jobs are just as much in tech’s line of fire as everybody
    276 else’s have been for the last 3 decades. We’re not [56]East Coast dockworkers;
    277 we won’t stop progress on our own.
    278 
    279 [57]but the plagiarism
    280 
    281 Artificial intelligence is profoundly — and probably unfairly — threatening to
    282 visual artists in ways that might be hard to appreciate if you don’t work in
    283 the arts.
    284 
    285 We imagine artists spending their working hours pushing the limits of
    286 expression. But the median artist isn’t producing gallery pieces. They produce
    287 on brief: turning out competent illustrations and compositions for magazine
    288 covers, museum displays, motion graphics, and game assets.
    289 
    290 LLMs easily — alarmingly — clear industry quality bars. Gallingly, one of the
    291 things they’re best at is churning out just-good-enough facsimiles of human
    292 creative work. I have family in visual arts. I can’t talk to them about LLMs. I
    293 don’t blame them. They’re probably not wrong.
    294 
    295 Meanwhile, software developers spot code fragments [58]seemingly lifted from
    296 public repositories on Github and lose their shit. What about the licensing? If
    297 you’re a lawyer, I defer. But if you’re a software developer playing this card?
    298 Cut me a little slack as I ask you to shove this concern up your ass. No
    299 profession has demonstrated more contempt for intellectual property.
    300 
    301 The median dev thinks Star Wars and Daft Punk are a public commons. The great
    302 cultural project of developers has been opposing any protection that might
    303 inconvenience a monetizable media-sharing site. When they fail at policy, they
    304 route around it with coercion. They stand up global-scale piracy networks and
    305 sneer at anybody who so much as tries to preserve a new-release window for a TV
    306 show.
    307 
    308 Call any of this out if you want to watch a TED talk about how hard it is to
    309 stream The Expanse on LibreWolf. Yeah, we get it. You don’t believe in IPR.
    310 Then shut the fuck up about IPR. Reap the whirlwind.
    311 
    312 It’s all special pleading anyways. LLMs digest code further than you do. If you
    313 don’t believe a typeface designer can stake a moral claim on the terminals and
    314 counters of a letterform, you sure as hell can’t be possessive about a
    315 red-black tree.
    316 
    317 [59]positive case redux
    318 
    319 When I started writing a couple days ago, I wrote a section to “level set” to
    320 the state of the art of LLM-assisted programming. A bluefish filet has a longer
    321 shelf life than an LLM take. In the time it took you to read this, everything
    322 changed.
    323 
    324 Kids today don’t just use agents; they use asynchronous agents. They wake up,
    325 free-associate 13 different things for their LLMs to work on, make coffee, fill
    326 out a TPS report, drive to the Mars Cheese Castle, and then check their
    327 notifications. They’ve got 13 PRs to review. Three get tossed and re-prompted.
    328 Five of them get the same feedback a junior dev gets. And five get merged.
    329 
    330 “I’m sipping rocket fuel right now,” a friend tells me. “The folks on my team
    331 who aren’t embracing AI? It’s like they’re standing still.” He’s not
    332 bullshitting me. He doesn’t work in SFBA. He’s got no reason to lie.
    333 
    334 There’s plenty of things I can’t trust an LLM with. No LLM has any of access to
    335 prod here. But I’ve been first responder on an incident and fed 4o — not
    336 o4-mini, 4o — log transcripts, and watched it in seconds spot LVM metadata
    337 corruption issues on a host we’ve been complaining about for months. Am I
    338 better than an LLM agent at interrogating OpenSearch logs and Honeycomb traces?
    339 No. No, I am not.
    340 
    341 To the consternation of many of my friends, I’m not a radical or a futurist.
    342 I’m a statist. I believe in the haphazard perseverance of complex systems, of
    343 institutions, of reversions to the mean. I write Go and Python code. I’m not a
    344 Kool-aid drinker.
    345 
    346 But something real is happening. My smartest friends are blowing it off. Maybe
    347 I persuade you. Probably I don’t. But we need to be done making space for bad
    348 arguments.
    349 
    350 [60]but i’m tired of hearing about it
    351 
    352 And here I rejoin your company. I read [61]Simon Willison, and that’s all I
    353 really need. But all day, every day, a sizable chunk of the front page of HN is
    354 allocated to LLMs: incremental model updates, startups doing things with LLMs,
    355 LLM tutorials, screeds against LLMs. It’s annoying!
    356 
    357 But AI is also incredibly — a word I use advisedly — important. It’s getting
    358 the same kind of attention that smart phones got in 2008, and not as much as
    359 the Internet got. That seems about right.
    360 
    361 I think this is going to get clearer over the next year. The cool kid
    362 haughtiness about “stochastic parrots” and “vibe coding” can’t survive much
    363 more contact with reality. I’m snarking about these people, but I meant what I
    364 said: they’re smarter than me. And when they get over this affectation, they’re
    365 going to make coding agents profoundly more effective than they are today.
    366 
    367 Last updated •
    368     Jun 2, 2025
    369 
    370 [62] Share this post on Twitter [63] Share this post on Hacker News [64] Share
    371 this post on Reddit
    372 
    373 Author
    374     Thomas Ptacek
    375 
    376     Name
    377         Thomas Ptacek
    378     @tqbf
    379         [65] @tqbf
    380 
    381 Next post ↑
    382     [66] What are MCP Servers?
    383 Previous post ↓
    384     [67] Using Kamal 2.0 in Production
    385 
    386 Next post ↑
    387     [68] What are MCP Servers?
    388 Previous post ↓
    389     [69] Using Kamal 2.0 in Production
    390 
    391 [70] App performance optimization
    392 
    393 Company
    394     [71]About [72]Pricing [73]Jobs
    395 
    396 Articles
    397     [74]Blog [75]Phoenix Files [76]Laravel Bytes [77]Ruby Dispatch [78]Django
    398     Beats [79]JavaScript Journal
    399 
    400 Resources
    401     [80]Docs [81]Support [82]Support Metrics [83]Status
    402 
    403 Contact
    404     [84]GitHub [85]Twitter [86]Community
    405 
    406 Legal
    407     [87]Security [88]Privacy policy [89]Terms of service [90]Acceptable Use
    408     Policy
    409 
    410 Copyright © 2025 Fly.io
    411 
    412 
    413 References:
    414 
    415 [1] https://fly.io/
    416 [2] https://fly.io/blog/
    417 [3] https://fly.io/docs/about/brand/
    418 [5] https://fly.io/blog/
    419 [6] https://fly.io/phoenix-files/
    420 [7] https://fly.io/laravel-bytes/
    421 [8] https://fly.io/ruby-dispatch/
    422 [9] https://fly.io/django-beats/
    423 [10] https://fly.io/javascript-journal/
    424 [11] https://fly.io/security/
    425 [12] https://fly.io/infra-log/
    426 [13] https://fly.io/docs/
    427 [14] https://community.fly.io/
    428 [15] https://status.flyio.net/
    429 [16] https://fly.io/pricing/
    430 [17] https://fly.io/app/sign-in
    431 [18] https://fly.io/docs/hands-on/start/
    432 [19] https://fly.io/blog/feed.xml
    433 [20] https://fly.io/blog/
    434 [21] https://fly.io/phoenix-files/
    435 [22] https://fly.io/laravel-bytes/
    436 [23] https://fly.io/ruby-dispatch/
    437 [24] https://fly.io/django-beats/
    438 [25] https://fly.io/javascript-journal/
    439 [26] https://fly.io/security/
    440 [27] https://fly.io/infra-log/
    441 [28] https://fly.io/docs/
    442 [29] https://community.fly.io/
    443 [30] https://status.flyio.net/
    444 [31] https://fly.io/pricing/
    445 [32] https://fly.io/app/sign-in
    446 [33] https://fly.io/docs/hands-on/start/
    447 [34] https://fly.io/blog/feed.xml
    448 [35] https://twitter.com/share?text=My%20AI%20Skeptic%20Friends%20Are%20All%20Nuts&url=https://fly.io/blog/youre-all-nuts/&via=flydotio
    449 [36] http://news.ycombinator.com/submitlink?u=https://fly.io/blog/youre-all-nuts/&t=My%20AI%20Skeptic%20Friends%20Are%20All%20Nuts
    450 [37] http://www.reddit.com/submit?url=https://fly.io/blog/youre-all-nuts/&title=My%20AI%20Skeptic%20Friends%20Are%20All%20Nuts
    451 [38] https://twitter.com/tqbf
    452 [39] https://annieruygtillustration.com/
    453 [40] https://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315
    454 [41] https://fly.io/blog/youre-all-nuts/#level-setting
    455 [42] https://fly.io/blog/youre-all-nuts/#the-positive-case
    456 [43] https://fly.io/blog/youre-all-nuts/#but-you-have-no-idea-what-the-code-is
    457 [44] https://github.com/PatrickJS/awesome-cursorrules
    458 [45] https://fly.io/blog/youre-all-nuts/#but-hallucination
    459 [46] https://zed.dev/agentic
    460 [47] https://fly.io/blog/youre-all-nuts/#but-the-code-is-shitty-like-that-of-a-junior-developer
    461 [48] https://fly.io/blog/semgrep-but-for-real-now/
    462 [49] https://fly.io/blog/youre-all-nuts/#but-its-bad-at-rust
    463 [50] https://fly.io/blog/youre-all-nuts/#but-the-craft
    464 [51] https://fly.io/blog/youre-all-nuts/#but-the-mediocrity
    465 [52] https://www.andrew.cmu.edu/course/15-749/READINGS/required/cas/tridgell96.pdf
    466 [53] https://fly.io/blog/youre-all-nuts/#but-itll-never-be-agi
    467 [54] https://fly.io/blog/youre-all-nuts/#but-they-take-rr-jerbs
    468 [55] https://news.ycombinator.com/item?id=43776612
    469 [56] https://en.wikipedia.org/wiki/2024_United_States_port_strike
    470 [57] https://fly.io/blog/youre-all-nuts/#but-the-plagiarism
    471 [58] https://arxiv.org/abs/2311.17035
    472 [59] https://fly.io/blog/youre-all-nuts/#positive-case-redux
    473 [60] https://fly.io/blog/youre-all-nuts/#but-im-tired-of-hearing-about-it
    474 [61] https://simonwillison.net/
    475 [62] https://twitter.com/share?text=My%20AI%20Skeptic%20Friends%20Are%20All%20Nuts&url=https://fly.io/blog/youre-all-nuts/&via=flydotio
    476 [63] http://news.ycombinator.com/submitlink?u=https://fly.io/blog/youre-all-nuts/&t=My%20AI%20Skeptic%20Friends%20Are%20All%20Nuts
    477 [64] http://www.reddit.com/submit?url=https://fly.io/blog/youre-all-nuts/&title=My%20AI%20Skeptic%20Friends%20Are%20All%20Nuts
    478 [65] https://twitter.com/tqbf
    479 [66] https://fly.io/blog/mcps-everywhere/
    480 [67] https://fly.io/blog/kamal-in-production/
    481 [68] https://fly.io/blog/mcps-everywhere/
    482 [69] https://fly.io/blog/kamal-in-production/
    483 [70] https://fly.io/
    484 [71] https://fly.io/about/
    485 [72] https://fly.io/pricing/
    486 [73] https://fly.io/jobs/
    487 [74] https://fly.io/blog/
    488 [75] https://fly.io/phoenix-files/
    489 [76] https://fly.io/laravel-bytes/
    490 [77] https://fly.io/ruby-dispatch/
    491 [78] https://fly.io/django-beats/
    492 [79] https://fly.io/javascript-journal/
    493 [80] https://fly.io/docs/
    494 [81] https://fly.io/docs/support/
    495 [82] https://fly.io/support/
    496 [83] https://status.flyio.net/
    497 [84] https://github.com/superfly/
    498 [85] https://twitter.com/flydotio
    499 [86] https://community.fly.io/
    500 [87] https://fly.io/docs/security/
    501 [88] https://fly.io/legal/privacy-policy
    502 [89] https://fly.io/legal/terms-of-service
    503 [90] https://fly.io/legal/acceptable-use-policy