Finish December dispatch

This commit is contained in:
David Eisinger
2023-12-06 20:45:00 -05:00
parent 612e9ee00e
commit 8d69d12da4
5 changed files with 2515 additions and 7 deletions

View File

@@ -4,9 +4,26 @@ date: 2023-11-27T22:43:47-05:00
draft: false draft: false
tags: tags:
- dispatch - dispatch
references:
- title: "36 Hours in Durham, North Carolina: Things to Do and See - The New York Times"
url: https://www.nytimes.com/interactive/2023/11/02/travel/things-to-do-durham-nc.html
date: 2023-12-07T01:32:04Z
file: www-nytimes-com-s2rtib.txt
- title: "A Coder Considers the Waning Days of the Craft | The New Yorker"
url: https://www.newyorker.com/magazine/2023/11/20/a-coder-considers-the-waning-days-of-the-craft?currentPage=all
date: 2023-12-07T01:36:38Z
file: www-newyorker-com-41taro.txt
- title: "What OpenAI shares with Scientology - by Henry Farrell"
url: https://www.programmablemutter.com/p/look-at-scientology-to-understand
date: 2023-12-07T01:40:06Z
file: www-programmablemutter-com-8wp6z1.txt
- title: "Feedbin: Ruby Open Source RSS Reader"
url: https://allaboutcoding.ghinda.com/ruby-open-source-feedbin
date: 2023-12-07T01:41:18Z
file: allaboutcoding-ghinda-com-jnjy0d.txt
--- ---
We spent the week of Thanksgiving with my sister near Albany, New York. Tough drive, but it was great to get the whole family together and for Nev to get some extended time with her cousins. Highlights included the [Catskill Mountain Road Polar Express][1] and some unexpected snowfall. We spent the week of Thanksgiving with my sister near Albany, New York. Tough drive, but it was great to get the whole family together and for Nev to get some extended time with her cousins. Highlights included the [Catskill Mountain Railroad Polar Express][1] and some unexpected snowfall.
[1]: https://catskillmountainrailroad.com/event/the-polar-express/ [1]: https://catskillmountainrailroad.com/event/the-polar-express/
@@ -64,10 +81,20 @@ Reading:
Links: Links:
* [Title][17] * [36 Hours in Durham, North Carolina: Things to Do and See][17] -- this is a pretty good guide to my city (though don't sleep on [Viceroy][18]) but I'm mostly including this because you can see a couple tables I made in the upper left corner of the main image.
* [Title][18]
* [Title][19]
[17]: https://example.com/ * [A Coder Considers the Waning Days of the Craft][19]
[18]: https://example.com/
[19]: https://example.com/ > Coding has always felt to me like an endlessly deep and rich domain. Now I find myself wanting to write a eulogy for it.
* [What OpenAI shares with Scientology][20]
> Even if you, as an AI risk person, dont buy the full intellectual package, you find yourself looking for work in a field where the funding, the incentives, and the organizational structures mostly point in a single direction.
* [Feedbin: Ruby Open Source RSS Reader][21] -- I've been a user and fan since Google shut down Reader; neat that it's written in my preferred language/framework.
[17]: https://www.nytimes.com/interactive/2023/11/02/travel/things-to-do-durham-nc.html
[18]: https://www.viceroydurham.com/
[19]: https://www.newyorker.com/magazine/2023/11/20/a-coder-considers-the-waning-days-of-the-craft?currentPage=all
[20]: https://www.programmablemutter.com/p/look-at-scientology-to-understand
[21]: https://allaboutcoding.ghinda.com/ruby-open-source-feedbin

View File

@@ -0,0 +1,792 @@
(BUTTON)
Lucian Ghinda
All about coding
(BUTTON) (BUTTON)
Follow
[1]All about coding
Follow
Ruby open source: feedbin Ruby open source: feedbin
Ruby open source: feedbin
[2]Lucian Ghinda's photo Lucian Ghinda's photo
[3]Lucian Ghinda
·[4]Nov 17, 2023·
11 min read
Table of contents
* [5]The product
* [6]Open source
+ [7]License
* [8]Technical review
+ [9]Ruby and Rails version
+ [10]Architecture
+ [11]Stats
+ [12]Style Guide
+ [13]Storage, Persistence and in-memory storage
+ [14]Gems used
+ [15]Code & Design Patterns
o [16]Code Organisation
o [17]Routes
o [18]Controllers
o [19]Models
o [20]Jobs
o [21]Presenters
o [22]ApplicationComponents
o [23]ComponentsPreview
* [24]Testing
+ [25]Custom assertions
* [26]Conclusion
The product
[27]https://feedbin.com
"Feedbin is the best way to enjoy content on the Web. By combining
RSS, and newsletters, you can get all the good parts of the Web in
one convenient location"
Open source
The open-source repository can be found at
[28]https://github.com/feedbin/feedbin
License
The [29]license they use is MIT:
Technical review
Ruby and Rails version
They are currently using:
* Ruby version 3.2.2
* They used a fork of Rails at [30]https://github.com/feedbin/rails
forked from [31]https://github.com/Shopify/rails. They are using a
branch called [32]7-1-stable-invalid-cache-entries - It seems to be
Rails 7.1 and about 1 month behind the Shopify/rails which is
usually pretty up to date with main Rails
Architecture
Code Architecture:
* They are using the standard Rails organisation of MVC.
Database:
* The DB is PostgreSQL
Jobs queue:
* Sidekiq
On the front-end side:
* They use .html.erb
* They are using Phlex for [33]components
* They are using [34]Jquery for the JS library
* They have some custom JS code written in [35]CoffeeScript
* They are using Hotwire via [36]importmaps
* They are using [37]Tailwind
Stats
Running /bin/rails stats will output the following:
Running VSCodeCounter will give the following stats:
Style Guide
For Ruby:
* They are using [38]standardrb as the Style Guide with no
customisations.
Storage, Persistence and in-memory storage
The DB is PostgreSQL.
They are not using the schema.rb but the [39]structure.sql format for
DB schema dump is configured via application.rb:
module Feedbin
class Application < Rails::Application
# other configs
config.active_record.schema_format = :sql
# other configs
end
end
Enabled PSQL extensions:
* hstore - "data type for storing sets of (key, value) pairs"
* pg_stat_statements - "track planning and execution statistics of
all SQL statements executed"
* uuid-ossp - "generate universally unique identifiers (UUIDs)"
CREATE EXTENSION IF NOT EXISTS hstore WITH SCHEMA public;
COMMENT ON EXTENSION hstore IS 'data type for storing sets of (key, value) pairs
';
CREATE EXTENSION IF NOT EXISTS pg_stat_statements WITH SCHEMA public;
COMMENT ON EXTENSION pg_stat_statements IS 'track planning and execution statist
ics of all SQL statements executed';
CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public;
COMMENT ON EXTENSION "uuid-ossp" IS 'generate universally unique identifiers (UU
IDs)';
Redis is configured to be used with Sidekiq.
This is what the [40]redis initializer looks like:
# https://github.com/feedbin/feedbin/blob/main/config/initializers/redis.rb#L1
defaults = {connect_timeout: 5, timeout: 5}
defaults[:url] = ENV["REDIS_URL"] if ENV["REDIS_URL"]
$redis = {}.tap do |hash|
options2 = defaults.dup
if ENV["REDIS_URL_PUBLIC_IDS"] || ENV["REDIS_URL_CACHE"]
options2[:url] = ENV["REDIS_URL_PUBLIC_IDS"] || ENV["REDIS_URL_CACHE"]
end
hash[:refresher] = ConnectionPool.new(size: 10) { Redis.new(options2) }
end
Further, there is a [41]RedisLock configured like this:
# https://github.com/feedbin/feedbin/blob/main/app/models/redis_lock.rb#L1
class RedisLock
def self.acquire(lock_name, expiration_in_seconds = 55)
Sidekiq.redis { _1.set(lock_name, "locked", ex: expiration_in_seconds, nx: t
rue) }
end
end
Further down this is used in a [42]clock.rb (that defines scheduled
tasks to run):
# https://github.com/feedbin/feedbin/blob/main/lib/clock.rb#L8
every(10.seconds, "clockwork.very_frequent") do
if RedisLock.acquire("clockwork:send_stats:v3", 8)
SendStats.perform_async
end
if RedisLock.acquire("clockwork:cache_entry_views", 8)
CacheEntryViews.perform_async(nil, true)
end
if RedisLock.acquire("clockwork:downloader_migration", 8)
FeedCrawler::PersistCrawlData.perform_async
end
end
every(1.minutes, "clockwork.frequent") do
if RedisLock.acquire("clockwork:feed:refresher:scheduler:v2")
FeedCrawler::ScheduleAll.perform_async
end
if RedisLock.acquire("clockwork:harvest:embed:data")
HarvestEmbeds.perform_async(nil, true)
end
end
every(1.day, "clockwork.daily", at: "7:00", tz: "UTC") do
if RedisLock.acquire("clockwork:delete_entries:v2")
EntryDeleterScheduler.perform_async
end
if RedisLock.acquire("clockwork:trial_expiration:v2")
TrialExpiration.perform_async
end
if RedisLock.acquire("clockwork:web_sub_maintenance")
WebSub::Maintenance.perform_async
end
end
Gems used
Here are some of the gems used:
* [43]sax-machine - "A declarative sax parsing library backed by
Nokogiri"
* [44]feedjira - "Feedjira is a Ruby library designed to parse feeds"
* [45]html-pipeline - "HTML processing filters and utilities. This
module is a small framework for defining CSS-based content filters
and applying them to user provided content"
* [46]apnotic - "A Ruby APNs HTTP/2 gem able to provide instant
feedback"
* [47]autoprefixer-rails - "Autoprefixer is a tool to parse CSS and
add vendor prefixes to CSS rules using values from the Can I Use
database. This gem provides Ruby and Ruby on Rails integration with
this JavaScript tool"
* [48]clockwork - "Clockwork is a cron replacement. It runs as a
lightweight, long-running Ruby process which sits alongside your
web processes (Mongrel/Thin) and your worker processes
(DJ/Resque/Minion/Stalker) to schedule recurring work at particular
times or dates"
* [49]down - "Streaming downloads using net/http, http.rb, HTTPX or
wget"
* [50]phlex-rails - "Phlex is a framework that lets you compose web
views in pure Ruby"
* [51]premailer-rails - "This gem is a drop in solution for styling
HTML emails with CSS without having to do the hard work yourself"
* [52]raindrops - "raindrops is a real-time stats toolkit to show
statistics for Rack HTTP servers. It is designed for preforking
servers such as unicorn, but should support any Rack HTTP server on
platforms supporting POSIX shared memory"
* [53]strong_migrations - "Catch unsafe migrations in development"
* [54]web-push - "This gem makes it possible to send push messages to
web browsers from Ruby backends using the Web Push Protocol"
* [55]stripe-ruby-mock - "A drop-in library to test stripe without
hitting their servers"
* [56]rails-controller-testing - "Brings back assigns and
assert_template to your Rails tests"
There are many other gems used, I only selected few here. Browse the
[57]Gemfile to discover more.
What could be mentioned is that they use their fork for some of the
gems included in the file:
# https://github.com/feedbin/feedbin/blob/main/Gemfile
# other gems
gem "rails", github: "feedbin/rails", branch: "7-1-stable-invalid-cache-entries"
# some other gems
gem "http", github: "feedbin/http", branch: "feedb
in"
gem "carrierwave", github: "feedbin/carrierwave", branch: "feedb
in"
gem "sax-machine", github: "feedbin/sax-machine", branch: "feedb
in"
gem "feedjira", github: "feedbin/feedjira", branch: "f2"
gem "feedkit", github: "feedbin/feedkit", branch: "maste
r"
gem "html-pipeline", github: "feedbin/html-pipeline", branch: "feedb
in"
gem "html_diff", github: "feedbin/html_diff", ref: "013e1bb"
gem "twitter", github: "feedbin/twitter", branch: "feedb
in"
# other gems
group :development, :test do
gem "stripe-ruby-mock", github: "feedbin/stripe-ruby-mock", branch: "feedbin",
require: "stripe_mock"
# other gems
end
# other gem groups
Code & Design Patterns
Code Organisation
Under /app there are 3 folders different from the ones that Rails comes
with:
* presenters
* uploaders
* validators
The lib folder includes very few extra objects. Most of them seems to
be related to communicating with external services.
Maybe worth mentioning from lib folder is the
[58]ConditionalSassCompressor
# https://github.com/feedbin/feedbin/blob/main/lib/conditional_sass_compressor.r
b#L1
class ConditionalSassCompressor
def compress(string)
return string if string =~ /tailwindcss/
options = { syntax: :scss, cache: false, read_cache: false, style: :compress
ed}
begin
Sprockets::Autoload::SassC::Engine.new(string, options).render
rescue => e
puts "Could not compress '#{string[0..65]}'...: #{e.message}, skipping com
pression"
string
end
end
end
This is used to configure:
# https://github.com/feedbin/feedbin/blob/main/config/application.rb#L47
config.assets.css_compressor = ConditionalSassCompressor.new
Routes
There is a combination of RESTful routes and non-restful routes.
Here is an example from entries in the [59]routes.rb :
# https://github.com/feedbin/feedbin/blob/main/config/routes.rb#L133
resources :entries, only: [:show, :index, :destroy] do
member do
post :content
post :unread_entries, to: "unread_entries#update"
post :starred_entries, to: "starred_entries#update"
post :mark_as_read, to: "entries#mark_as_read"
post :recently_read, to: "recently_read_entries#create"
post :recently_played, to: "recently_played_entries#create"
get :push_view
get :newsletter
end
collection do
get :starred
get :unread
get :preload
get :search
get :recently_read, to: "recently_read_entries#index"
get :recently_played, to: "recently_played_entries#index"
get :updated, to: "updated_entries#index"
post :mark_all_as_read
post :mark_direction_as_read
end
end
Controllers
The controllers are mostly what I would call vanilla Rails controllers.
Three notes about them:
* Some of them are responding with JS usually using USJ or JQuery to
change elements from the page.
* They contain non-Rails standard actions (actions that are not show,
index, new, create ...)
* There is a namespaced api folder that contains APIs used by mobile
apps
Here is one simple example for DELETE /entries/:id , the controller
looks like this:
# https://github.com/feedbin/feedbin/blob/main/app/controllers/entries_controlle
r.rb#L238
def destroy
@user = current_user
@entry = @user.entries.find(params[:id])
if @entry.feed.pages?
EntryDeleter.new.delete_entries(@entry.feed_id, @entry.id)
end
end
And here is the view [60]destroy.js.erb :
$('[data-behavior~=entries_target] [data-entry-id=<%= @entry.id %>]').remove();
feedbin.Counts.get().removeEntry(<%= @entry.id %>, <%= @entry.feed_id %>, 'unrea
d')
feedbin.Counts.get().removeEntry(<%= @entry.id %>, <%= @entry.feed_id %>, 'starr
ed')
feedbin.applyCounts(true)
feedbin.clearEntry();
feedbin.fullScreen(false)
The main pattern adopted to controllers is to have some logic in them
and delegate to jobs some part of the processing.
The repo contains mostly straight-forward controllers like this one:
# https://github.com/feedbin/feedbin/blob/main/app/controllers/pages_internal_co
ntroller.rb#L1
class PagesInternalController < ApplicationController
def create
@entry = SavePage.new.perform(current_user.id, params[:url], nil)
get_feeds_list
end
end
But also few controllers that include some logic:
# https://github.com/feedbin/feedbin/blob/main/app/controllers/api/podcasts/v1/f
eeds_controller.rb#L8
def show
url = hex_decode(params[:id])
@feed = Feed.find_by_feed_url(url)
if @feed.present?
if @feed.standalone_request_at.blank?
FeedStatus.new.perform(@feed.id)
FeedUpdate.new.perform(@feed.id)
end
else
feeds = FeedFinder.feeds(url)
@feed = feeds.first
end
if @feed.present?
@feed.touch(:standalone_request_at)
else
status_not_found
end
rescue => exception
if Rails.env.production?
ErrorService.notify(exception)
status_not_found
else
raise exception
end
end
Even with this structure, I find all controllers easy to read and I
think they can be easier to change.
Models
The app/models folders contain both ActiveRecord and normal Ruby
objects. With few exceptions, they are not namespaced.
Jobs
The jobs folder contains Sidekiq jobs which are used to do processing
on various objects. They are usually called from controllers and most
of them are async.
Here is one job that is caching views:
# https://github.com/feedbin/feedbin/blob/main/app/jobs/cache_entry_views.rb#L1
class CacheEntryViews
include Sidekiq::Worker
include SidekiqHelper
SET_NAME = "#{name}-ids"
def perform(entry_id, process = false)
if process
cache_views
else
add_to_queue(SET_NAME, entry_id)
end
end
def cache_views
entry_ids = dequeue_ids(SET_NAME)
entries = Entry.where(id: entry_ids).includes(feed: [:favicon])
ApplicationController.render({
partial: "entries/entry",
collection: entries,
format: :html,
cached: true
})
ApplicationController.render({
layout: nil,
template: "api/v2/entries/index",
assigns: {entries: entries},
format: :html,
locals: {
params: {mode: "extended"}
}
})
end
end
Presenters
There is a [61]BasePresenter and all other presenters are extending it
via inheritance:
This controller defines a private method called presents:
# https://github.com/feedbin/feedbin/blob/main/app/presenters/base_presenter.rb#
L1
class BasePresenter
def initialize(object, locals, template)
@object = object
@locals = locals
@template = template
end
# ...
private
def self.presents(name)
define_method(name) do
@object
end
end
end
and it is used like this for example:
# https://github.com/feedbin/feedbin/blob/main/app/presenters/user_presenter.rb#
L2
class UserPresenter < BasePresenter
presents :user
delegate_missing_to :user
# ... more code
def theme
result = settings["theme"].present? ? settings["theme"] : nil
result || user.theme || "auto"
end
# ... other code
end
To use the presenters, there is a helper defined in ApplicationHelper
will instantiate the proper helper based on the object class:
module ApplicationHelper
def present(object, locals = nil, klass = nil)
klass ||= "#{object.class}Presenter".constantize
presenter = klass.new(object, locals, self)
yield presenter if block_given?
presenter
end
# more code ...
end
and it is used [62]like this in views:
<% present @user do |user_presenter| %>
<% @class = "settings-body settings-#{params[:action]} theme-#{user_presente
r.theme}"%>
<% end %>
ApplicationComponents
Components are based on Phlex and they inherit from
[63]ApplicationComponent
It defines a method to add Stimulus controller in components like this:
# https://github.com/feedbin/feedbin/blob/main/app/views/components/application_
component.rb#L25
def stimulus(controller:, actions: {}, values: {}, outlets: {}, classes: {}, d
ata: {})
stimulus_controller = controller.to_s.dasherize
action = actions.map do |event, function|
"#{event}->#{stimulus_controller}##{function.camelize(:lower)}"
end.join(" ").presence
values.transform_keys! do |key|
[controller, key, "value"].join("_").to_sym
end
outlets.transform_keys! do |key|
[controller, key, "outlet"].join("_").to_sym
end
classes.transform_keys! do |key|
[controller, key, "class"].join("_").to_sym
end
{ controller: stimulus_controller, action: }.merge!({ **values, **outlets, *
*classes, **data})
end
Where we can also see a bit of hash literal omission at {controller:
stimulus_controller, action: }
But more interesting that this method that helps defining a Stimulus
controller, is the method used to define a Stimulus item that uses
binding to get variables from the object where it is used:
# https://github.com/feedbin/feedbin/blob/main/app/views/components/application_
component.rb#L47
def stimulus_item(target: nil, actions: {}, params: {}, data: {}, for:)
stimulus_controller = binding.local_variable_get(:for).to_s.dasherize
action = actions.map do |event, function|
"#{event}->#{stimulus_controller}##{function.to_s.camelize(:lower)}"
end.join(" ").presence
params.transform_keys! do |key|
:"#{binding.local_variable_get(:for)}_#{key}_param"
end
defaults = { **params, **data }
if action
defaults[:action] = action
end
if target
defaults[:"#{binding.local_variable_get(:for)}_target"] = target.to_s.came
lize(:lower)
end
defaults
end
The part with binding does the following:
* stimulus_controller =
binding.local_variable_get(:for).to_s.dasherize This line retrieves
the value of the local variable for, converts it to a string, and
then applies the dasherize method (presumably to format it for use
in a specific context, like a CSS class or an identifier in HTML).
* Apparently binding.local_variable_get should not be needed as the
variable is passed a keyword parameter to the method. But the name
of the variable is for which is a reserved word and thus if the
code would have been stimulus_controller = for.to_s_dasherize that
would have raised syntax error, unexpected '.' (SyntaxError)
This is a way to have keyword arguments named as reserved words and
still be able to use them.
ComponentsPreview
All components can be previewed via Lookbook and they can be found in
test/components
Testing
For testing it uses Minitest, the default testing framework from Rails.
It uses fixtures to set up the test db.
Tests are simple and direct, containing all preconditions and
postconditions in each test. This is great for following what each test
is doing.
There are controller tests, model tests, job tests and some system
tests. There are more controller tests than system tests making the
test suite run quite fast. Also the jobs are covered pretty good with
testing as there is a log of logic in the jobs.
Custom assertions
There are some custom assertions created specifically to work with
collections: assert_has_keys will check if all keys are included in the
hash and assert_equal_ids will check if the two collections provided
have the same ids (one being a collection of objects and the other one
being a hash).
# https://github.com/feedbin/feedbin/blob/main/test/support/assertions.rb#L3
def assert_has_keys(keys, hash)
assert(keys.all? { |key| hash.key?(key) })
end
def assert_equal_ids(collection, results)
expected = Set.new(collection.map(&:id))
actual = Set.new(results.map { |result| result["id"] })
assert_equal(expected, actual)
end
Conclusion
In conclusion, Feedbin is an open-source project that combines RSS
feeds and newsletters into a convenient platform.
It utilizes Ruby on Rails, PostgreSQL, Sidekiq, and various other
technologies to provide a robust and efficient service.
The code is well-organized and simple to follow the logic and what is
happening. I think it will make it easy for anyone to contribute to
this repo. If you want to run this yourself locally you should take a
look at the [64]feedbin-docker.
__________________________________________________________________
Enjoyed this article?
Join my [65]Short Ruby News newsletter for weekly Ruby updates from the
community. For more Ruby learning resources, visit
[66]rubyandrails.info. You can also find me on [67]Ruby.social or
[68]Linkedin or [69]Twitter where I post mostly about Ruby and Rails.
Did you find this article valuable?
Support Lucian Ghinda by becoming a sponsor. Any amount is appreciated!
(BUTTON) Sponsor
[70]See recent sponsors | [71]Learn more about Hashnode Sponsors
[72]Ruby[73]Ruby on Rails[74]Open Source[75]coding[76]Programming Blogs
References
Visible links:
1. file:///?source=top_nav_blog_home
2. https://hashnode.com/@lucianghinda
3. https://hashnode.com/@lucianghinda
4. https://allaboutcoding.ghinda.com/ruby-open-source-feedbin
5. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-the-product
6. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-open-source
7. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-license
8. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-technical-review
9. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-ruby-and-rails-version
10. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-architecture
11. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-stats
12. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-style-guide
13. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-storage-persistence-and-in-memory-storage
14. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-gems-used
15. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-code-amp-design-patterns
16. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-code-organisation
17. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-routes
18. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-controllers
19. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-models
20. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-jobs
21. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-presenters
22. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-applicationcomponents
23. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-componentspreview
24. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-testing
25. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-custom-assertions
26. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L39092-8199TMP.html#heading-conclusion
27. https://feedbin.com/
28. https://github.com/feedbin/feedbin/blob/main/LICENSE.md
29. https://github.com/feedbin/feedbin/blob/main/LICENSE.md
30. https://github.com/feedbin/rails
31. https://github.com/Shopify/rails
32. https://github.com/feedbin/rails/tree/7-1-stable-invalid-cache-entries
33. https://github.com/feedbin/feedbin/tree/main/app/views/components
34. https://github.com/feedbin/feedbin/blob/main/Gemfile#L38
35. https://github.com/feedbin/feedbin/tree/main/app/assets/javascripts/web
36. https://github.com/feedbin/feedbin/blob/abf1ad883dab8a3464fe12e4653de6323296175b/config/importmap.rb#L1
37. https://github.com/feedbin/feedbin/blob/abf1ad883dab8a3464fe12e4653de6323296175b/Gemfile#L66
38. https://github.com/feedbin/feedbin/blob/abf1ad883dab8a3464fe12e4653de6323296175b/Gemfile#L94
39. https://github.com/feedbin/feedbin/blob/main/db/structure.sql
40. https://github.com/feedbin/feedbin/blob/abf1ad883dab8a3464fe12e4653de6323296175b/config/initializers/redis.rb#L1
41. https://github.com/feedbin/feedbin/blob/main/app/models/redis_lock.rb#L1
42. https://github.com/feedbin/feedbin/blob/main/lib/clock.rb#L8
43. https://github.com/pauldix/sax-machine
44. https://github.com/feedjira/feedjira
45. https://github.com/feedbin/html-pipeline
46. https://github.com/ostinelli/apnotic
47. https://github.com/ai/autoprefixer-rails
48. https://github.com/Rykian/clockwork
49. https://github.com/janko/down
50. https://github.com/phlex-ruby/phlex-rails
51. https://github.com/fphilipe/premailer-rails
52. https://rubygems.org/gems/raindrops
53. https://github.com/ankane/strong_migrations
54. https://github.com/pushpad/web-push
55. https://github.com/stripe-ruby-mock/stripe-ruby-mock
56. https://github.com/rails/rails-controller-testing
57. https://github.com/feedbin/feedbin/blob/main/Gemfile
58. https://github.com/feedbin/feedbin/blob/main/lib/conditional_sass_compressor.rb#L1
59. https://github.com/feedbin/feedbin/blob/main/config/routes.rb#L133
60. https://github.com/feedbin/feedbin/blob/main/app/views/entries/destroy.js.erb#L1
61. https://github.com/feedbin/feedbin/blob/main/app/presenters/base_presenter.rb#L1
62. https://github.com/feedbin/feedbin/blob/main/app/views/layouts/settings.html.erb#L1
63. https://github.com/feedbin/feedbin/blob/main/app/views/components/application_component.rb#L3
64. https://github.com/angristan/feedbin-docker
65. https://shortruby.com/
66. http://rubyandrails.info/
67. http://Ruby.social/
68. https://linkedin.com/in/lucianghinda
69. https://x.com/lucianghinda
70. file:///sponsor
71. https://hashnode.com/sponsors
72. file:///tag/ruby?source=tags_bottom_blogs
73. file:///tag/ruby-on-rails?source=tags_bottom_blogs
74. file:///tag/opensource?source=tags_bottom_blogs
75. file:///tag/coding?source=tags_bottom_blogs
76. file:///tag/programming-blogs?source=tags_bottom_blogs
Hidden links:
78. file://localhost/
79. file://localhost/?source=top_nav_blog_home
80. https://twitter.com/lucianghinda
81. https://github.com/lucianghinda
82. https://shortruby.com/
83. https://hashnode.com/@lucianghinda
84. https://app.daily.dev/lucianghinda
85. https://linkedin.com/in/lucianghinda
86. https://ruby.social/@lucian
87. file://localhost/rss.xml
88. https://feedbin.com/about
89. https://github.com/feedbin/feedbin/blob/main/LICENSE.md
90. http://rubyandrails.info/
91. https://ruby.social/@lucian

View File

@@ -0,0 +1,725 @@
#[1]alternate
IFRAME: [2]https://www.googletagmanager.com/ns.html?id=GTM-NX5LSK3
[3]Skip to main content
[4]The New Yorker
* [5]Newsletter
To revisit this article, select My Account, then [6]View saved stories
(BUTTON) Close Alert
[7]Sign In
[8]Search
* [9]The Latest
* [10]2023 in Review
* [11]News
* [12]Books & Culture
* [13]Fiction & Poetry
* [14]Humor & Cartoons
* [15]Magazine
* [16]Puzzles & Games
* [17]Video
* [18]Podcasts
* [19]Goings On
* [20]Shop
(BUTTON) Open Navigation Menu
Find anything you save across the site in your account
(BUTTON) Close Alert
[21]The New Yorker
[22]Personal History
A Coder Considers the Waning Days of the Craft
Coding has always felt to me like an endlessly deep and rich domain.
Now I find myself wanting to write a eulogy for it.
By [23]James Somers
November 13, 2023
*
*
*
*
*
(BUTTON) Play/Pause Button
Artificial intelligence still cant beat a human when it comes to
programming. But its only a matter of time.Illustration by Dev
Valladares
(BUTTON) Save this story
(BUTTON) Save this story
I have always taken it for granted that, just as my parents made sure
that I could read and write, I would make sure that my kids could
program computers. It is among the newer arts but also among the most
essential, and ever more so by the day, encompassing everything from
filmmaking to physics. Fluency with code would round out my childrens
literacy—and keep them employable. But as I write this my wife is
pregnant with our first child, due in about three weeks. I code
professionally, but, by the time that child can type, coding as a
valuable skill might have faded from the world.
I first began to believe this on a Friday morning this past summer,
while working on a small hobby project. A few months back, my friend
Ben and I had resolved to create a Times-style crossword puzzle
entirely by computer. In 2018, wed made a Saturday puzzle with the
help of software and were surprised by how little we contributed—just
applying our taste here and there. Now we would attempt to build a
crossword-making program that didnt require a human touch.
When weve taken on projects like this in the past, theyve had both a
hardware component and a software component, with Bens strengths
running toward the former. We once made a neon sign that would glow
when the subway was approaching the stop near our apartments. Ben bent
the glass and wired up the transformers circuit board. I wrote code to
process the transit data. Ben has some professional coding experience
of his own, but it was brief, shallow, and now about twenty years out
of date; the serious coding was left to me. For the new crossword
project, though, Ben had introduced a third party. Hed signed up for a
ChatGPT Plus subscription and was using GPT-4 as a coding assistant.
[24]More on A.I.
[25]Sign up for The New Yorkers weekly Science & Technology
newsletter.
Something strange started happening. Ben and I would talk about a bit
of software we wanted for the project. Then, a shockingly short time
later, Ben would deliver it himself. At one point, we wanted a command
that would print a hundred random lines from a dictionary file. I
thought about the problem for a few minutes, and, when thinking failed,
tried Googling. I made some false starts using what I could gather, and
while I did my thing—programming—Ben told GPT-4 what he wanted and got
code that ran perfectly.
Fine: commands like those are notoriously fussy, and everybody looks
them up anyway. Its not real programming. A few days later, Ben talked
about how it would be nice to have an iPhone app to rate words from the
dictionary. But he had no idea what a pain it is to make an iPhone app.
Id tried a few times and never got beyond something that half worked.
I found Apples programming environment forbidding. You had to learn
not just a new language but a new program for editing and running code;
you had to learn a zoo of “U.I. components” and all the complicated
ways of stitching them together; and, finally, you had to figure out
how to package the app. The mountain of new things to learn never
seemed worth it. The next morning, I woke up to an app in my in-box
that did exactly what Ben had said he wanted. It worked perfectly, and
even had a cute design. Ben said that hed made it in a few hours.
GPT-4 had done most of the heavy lifting.
By now, most people have had experiences with A.I. Not everyone has
been impressed. Ben recently said, “I didnt start really respecting it
until I started having it write code for me.” I suspect that
non-programmers who are skeptical by nature, and who have seen ChatGPT
turn out wooden prose or bogus facts, are still underestimating whats
happening.
Bodies of knowledge and skills that have traditionally taken lifetimes
to master are being swallowed at a gulp. Coding has always felt to me
like an endlessly deep and rich domain. Now I find myself wanting to
write a eulogy for it. I keep thinking of Lee Sedol. Sedol was one of
the worlds best Go players, and a national hero in South Korea, but is
now best known for losing, in 2016, to a computer program called
AlphaGo. Sedol had walked into the competition believing that he would
easily defeat the A.I. By the end of the days-long match, he was proud
of having eked out a single game. As it became clear that he was going
to lose, Sedol said, in a press conference, “I want to apologize for
being so powerless.” He retired three years later. Sedol seemed weighed
down by a question that has started to feel familiar, and urgent: What
will become of this thing Ive given so much of my life to?
My first enchantment with computers came when I was about six years
old, in Montreal in the early nineties, playing Mortal Kombat with my
oldest brother. He told me about some “fatalities”—gruesome, witty ways
of killing your opponent. Neither of us knew how to inflict them. He
dialled up an FTP server (where files were stored) in an MS-DOS
terminal and typed obscure commands. Soon, he had printed out a page of
codes—instructions for every fatality in the game. We went back to the
basement and exploded each others heads.
I thought that my brother was a hacker. Like many programmers, I
dreamed of breaking into and controlling remote systems. The point
wasnt to cause mayhem—it was to find hidden places and learn hidden
things. “My crime is that of curiosity,” goes “The Hackers Manifesto,”
written in 1986 by Loyd Blankenship. My favorite scene from the 1995
movie “Hackers” is when Dade Murphy, a newcomer, proves himself at an
underground club. Someone starts pulling a rainbow of computer books
out of a backpack, and Dade recognizes each one from the cover: the
green book on international Unix environments; the red one on
N.S.A.-trusted networks; the one with the pink-shirted guy on I.B.M.
PCs. Dade puts his expertise to use when he turns on the sprinkler
system at school, and helps right the ballast of an oil tanker—all by
tap-tapping away at a keyboard. The lesson was that knowledge is power.
But how do you actually learn to hack? My family had settled in New
Jersey by the time I was in fifth grade, and when I was in high school
I went to the Borders bookstore in the Short Hills mall and bought
“Beginning Visual C++,” by Ivor Horton. It ran to twelve hundred
pages—my first grimoire. Like many tutorials, it was easy at first and
then, suddenly, it wasnt. Medieval students called the moment at which
casual learners fail the pons asinorum, or “bridge of asses.” The term
was inspired by Proposition 5 of Euclids Elements I, the first truly
difficult idea in the book. Those who crossed the bridge would go on to
master geometry; those who didnt would remain dabblers. Section 4.3 of
“Beginning Visual C++,” on “Dynamic Memory Allocation,” was my bridge
of asses. I did not cross.
But neither did I drop the subject. I remember the moment things began
to turn. I was on a long-haul flight, and Id brought along a boxy
black laptop and a CD-ROM with the Borland C++ compiler. A compiler
translates code you write into code that the machine can run; I had
been struggling for days to get this one to work. By convention, every
coders first program does nothing but generate the words “Hello,
world.” When I tried to run my version, I just got angry error
messages. Whenever I fixed one problem, another cropped up. I had read
the “Harry Potter” books and felt as if I were in possession of a broom
but had not yet learned the incantation to make it fly. Knowing what
might be possible if I did, I kept at it with single-minded devotion.
What I learned was that programming is not really about knowledge or
skill but simply about patience, or maybe obsession. Programmers are
people who can endure an endless parade of tedious obstacles. Imagine
explaining to a simpleton how to assemble furniture over the phone,
with no pictures, in a language you barely speak. Imagine, too, that
the only response you ever get is that youve suggested an absurdity
and the whole thing has gone awry. All the sweeter, then, when you
manage to get something assembled. I have a distinct memory of lying on
my stomach in the airplane aisle, and then hitting Enter one last time.
I sat up. The computer, for once, had done what Id told it to do. The
words “Hello, world” appeared above my cursor, now in the computers
own voice. It seemed as if an intelligence had woken up and introduced
itself to me.
Most of us never became the kind of hackers depicted in “Hackers.” To
“hack,” in the parlance of a programmer, is just to tinker—to express
ingenuity through code. I never formally studied programming; I just
kept messing around, making computers do helpful or delightful little
things. In my freshman year of college, I knew that Id be on the road
during the third round of the 2006 Masters Tournament, when Tiger Woods
was moving up the field, and I wanted to know what was happening in
real time. So I made a program that scraped the leaderboard on
pgatour.com and sent me a text message anytime he birdied or bogeyed.
Later, after reading “Ulysses” in an English class, I wrote a program
that pulled random sentences from the book, counted their syllables,
and assembled haikus—a more primitive regurgitation of language than
youd get from a chatbot these days, but nonetheless capable, I
thought, of real poetry:
Ill flay him alive
Uncertainly he waited
Heavy of the past
I began taking coding seriously. I offered to do programming for a
friends startup. The world of computing, I came to learn, is vast but
organized almost geologically, as if deposited in layers. From the Web
browser down to the transistor, each sub-area or system is built atop
some other, older sub-area or system, the layers dense but legible. The
more one digs, the more one develops what the race-car driver Jackie
Stewart called “mechanical sympathy,” a sense for the machines
strengths and limits, of what one could make it do.
At my friends company, I felt my mechanical sympathy developing. In my
sophomore year, I was watching “Jeopardy!” with a friend when he
suggested that I make a playable version of the show. I thought about
it for a few hours before deciding, with much disappointment, that it
was beyond me. But when the idea came up again, in my junior year, I
could see a way through it. I now had a better sense of what one could
do with the machine. I spent the next fourteen hours building the game.
Within weeks, playing “Jimbo Jeopardy!” had become a regular activity
among my friends. The experience was profound. I could understand why
people poured their lives into craft: there is nothing quite like
watching someone enjoy a thing youve made.
In the midst of all this, I had gone full “Paper Chase” and begun
ignoring my grades. I worked voraciously, just not on my coursework.
One night, I took over a half-dozen machines in a basement computer lab
to run a program in parallel. I laid printouts full of numbers across
the floor, thinking through a pathfinding algorithm. The cost was that
I experienced for real that recurring nightmare in which you show up
for a final exam knowing nothing of the material. (Mine was in Real
Analysis, in the math department.) In 2009, during the most severe
financial crisis in decades, I graduated with a 2.9 G.P.A.
And yet I got my first full-time job easily. I had work experience as a
programmer; nobody asked about my grades. For the young coder, these
were boom times. Companies were getting into bidding wars over top
programmers. Solicitations for experienced programmers were so
aggressive that they complained about “recruiter spam.” The popularity
of university computer-science programs was starting to explode. (My
degree was in economics.) Coding “boot camps” sprang up that could
credibly claim to turn beginners into high-salaried programmers in less
than a year. At one of my first job interviews, in my early twenties,
the C.E.O. asked how much I thought I deserved to get paid. I dared to
name a number that faintly embarrassed me. He drew up a contract on the
spot, offering ten per cent more. The skills of a “software engineer”
were vaunted. At one company where I worked, someone got in trouble for
using HipChat, a predecessor to Slack, to ask one of my colleagues a
question. “Never HipChat an engineer directly,” he was told. We were
too important for that.
This was an era of near-zero interest rates and extraordinary
tech-sector growth. Certain norms were established. Companies like
Google taught the industry that coders were to have free espresso and
catered hot food, world-class health care and parental leave, on-site
gyms and bike rooms, a casual dress code, and “twenty-per-cent time,”
meaning that they could devote one day a week to working on whatever
they pleased. Their skills were considered so crucial and delicate that
a kind of superstition developed around the work. For instance, it was
considered foolish to estimate how long a coding task might take, since
at any moment the programmer might turn over a rock and discover a
tangle of bugs. Deadlines were anathema. If the pressure to deliver
ever got too intense, a coder needed only to speak the word “burnout”
to buy a few months.
From the beginning, I had the sense that there was something
wrongheaded in all this. Was what we did really so precious? How long
could the boom last? In my teens, I had done a little Web design, and,
at the time, that work had been in demand and highly esteemed. You
could earn thousands of dollars for a project that took a weekend. But
along came tools like Squarespace, which allowed pizzeria owners and
freelance artists to make their own Web sites just by clicking around.
For professional coders, a tranche of high-paying, relatively
low-effort work disappeared.
[26]“I should have known he has absolutely no morals—Ive seen how he
loads a dishwasher.”
“I should have known he has absolutely no morals—Ive seen how he loads
a dishwasher.”
Cartoon by Hartley Lin
(BUTTON) Copy link to cartoon
Link copied
(BUTTON) Shop
The response from the programmer community to these developments was
just, Yeah, you have to keep levelling up your skills. Learn difficult,
obscure things. Software engineers, as a species, love automation.
Inevitably, the best of them build tools that make other kinds of work
obsolete. This very instinct explained why we were so well taken care
of: code had immense leverage. One piece of software could affect the
work of millions of people. Naturally, this sometimes displaced
programmers themselves. We were to think of these advances as a tide
coming in, nipping at our bare feet. So long as we kept learning we
would stay dry. Sound advice—until theres a tsunami.
When we were first allowed to use A.I. chatbots at work, for
programming assistance, I studiously avoided them. I expected that my
colleagues would, too. But soon I started seeing the telltale colors of
an A.I. chat session—the zebra pattern of call-and-response—on
programmers screens as I walked to my desk. A common refrain was that
these tools made you more productive; in some cases, they helped you
solve problems ten times faster.
I wasnt sure I wanted that. I enjoy the act of programming and I like
to feel useful. The tools Im familiar with, like the text editor I use
to format and to browse code, serve both ends. They enhance my practice
of the craft—and, though they allow me to deliver work faster, I still
feel that I deserve the credit. But A.I., as it was being described,
seemed different. It provided a lot of help. I worried that it would
rob me of both the joy of working on puzzles and the satisfaction of
being the one who solved them. I could be infinitely productive, and
all Id have to show for it would be the products themselves.
The actual work product of most programmers is rarely exciting. In
fact, it tends to be almost comically humdrum. A few months ago, I came
home from the office and told my wife about what a great day Id had
wrestling a particularly fun problem. I was working on a program that
generated a table, and someone had wanted to add a header that spanned
more than one column—something that the custom layout engine wed
written didnt support. The work was urgent: these tables were being
used in important documents, wanted by important people. So I
sequestered myself in a room for the better part of the afternoon.
There were lots of lovely sub-problems: How should I allow users of the
layout engine to convey that they want a column-spanning header? What
should their code look like? And there were fiddly details that, if
ignored, would cause bugs. For instance, what if one of the columns
that the header was supposed to span got dropped because it didnt have
any data? I knew it was a good day because I had to pull out pen and
pad—I was drawing out possible scenarios, checking and double-checking
my logic.
But taking a birds-eye view of what happened that day? A table got a
new header. Its hard to imagine anything more mundane. For me, the
pleasure was entirely in the process, not the product. And what would
become of the process if it required nothing more than a three-minute
ChatGPT session? Yes, our jobs as programmers involve many things
besides literally writing code, such as coaching junior hires and
designing systems at a high level. But coding has always been the root
of it. Throughout my career, I have been interviewed and selected
precisely for my ability to solve fiddly little programming puzzles.
Suddenly, this ability was less important.
I had gathered as much from Ben, who kept telling me about the
spectacular successes hed been having with GPT-4. It turned out that
it was not only good at the fiddly stuff but also had the qualities of
a senior engineer: from a deep well of knowledge, it could suggest ways
of approaching a problem. For one project, Ben had wired a small
speaker and a red L.E.D. light bulb into the frame of a portrait of
King Charles, the light standing in for the gem in his crown; the idea
was that when you entered a message on an accompanying Web site the
speaker would play a tune and the light would flash out the message in
Morse code. (This was a gift for an eccentric British expat.)
Programming the device to fetch new messages eluded Ben; it seemed to
require specialized knowledge not just of the microcontroller he was
using but of Firebase, the back-end server technology that stored the
messages. Ben asked me for advice, and I mumbled a few possibilities;
in truth, I wasnt sure that what he wanted would be possible. Then he
asked GPT-4. It told Ben that Firebase had a capability that would make
the project much simpler. Here it was—and here was some code to use
that would be compatible with the microcontroller.
Afraid to use GPT-4 myself—and feeling somewhat unclean about the
prospect of paying OpenAI twenty dollars a month for it—I nonetheless
started probing its capabilities, via Ben. Wed sit down to work on our
crossword project, and Id say, “Why dont you try prompting it this
way?” Hed offer me the keyboard. “No, you drive,” Id say. Together,
we developed a sense of what the A.I. could do. Ben, who had more
experience with it than I did, seemed able to get more out of it in a
stroke. As he later put it, his own neural network had begun to align
with GPT-4s. I would have said that he had achieved mechanical
sympathy. Once, in a feat I found particularly astonishing, he had the
A.I. build him a Snake game, like the one on old Nokia phones. But
then, after a brief exchange with GPT-4, he got it to modify the game
so that when you lost it would show you how far you strayed from the
most efficient route. It took the bot about ten seconds to achieve
this. It was a task that, frankly, I was not sure I could do myself.
In chess, which for decades now has been dominated by A.I., a players
only hope is pairing up with a bot. Such half-human, half-A.I. teams,
known as centaurs, might still be able to beat the best humans and the
best A.I. engines working alone. Programming has not yet gone the way
of chess. But the centaurs have arrived. GPT-4 on its own is, for the
moment, a worse programmer than I am. Ben is much worse. But Ben plus
GPT-4 is a dangerous thing.
It wasnt long before I caved. I was making a little search tool at
work and wanted to highlight the parts of the users query that matched
the results. But I was splitting up the query by words in a way that
made things much more complicated. I found myself short on patience. I
started thinking about GPT-4. Perhaps instead of spending an afternoon
programming I could spend some time “prompting,” or having a
conversation with an A.I.
In a 1978 essay titled “On the Foolishness of Natural Language
Programming, ” the computer scientist Edsger W. Dijkstra argued that
if you were to instruct computers not in a specialized language like
C++ or Python but in your native tongue youd be rejecting the very
precision that made computers useful. Formal programming languages, he
wrote, are “an amazingly effective tool for ruling out all sorts of
nonsense that, when we use our native tongues, are almost impossible to
avoid.” Dijkstras argument became a truism in programming circles.
When the essay made the rounds on Reddit in 2014, a top commenter
wrote, “Im not sure which of the following is scariest. Just how
trivially obvious this idea is” or the fact that “many still do not
know it.”
When I first used GPT-4, I could see what Dijkstra was talking about.
You cant just say to the A.I., “Solve my problem.” That day may come,
but for now it is more like an instrument you must learn to play. You
have to specify what you want carefully, as though talking to a
beginner. In the search-highlighting problem, I found myself asking
GPT-4 to do too much at once, watching it fail, and then starting over.
Each time, my prompts became less ambitious. By the end of the
conversation, I wasnt talking about search or highlighting; I had
broken the problem into specific, abstract, unambiguous sub-problems
that, together, would give me what I wanted.
Having found the A.I.s level, I felt almost instantly that my working
life had been transformed. Everywhere I looked I could see GPT-4-size
holes; I understood, finally, why the screens around the office were
always filled with chat sessions—and how Ben had become so productive.
I opened myself up to trying it more often.
I returned to the crossword project. Our puzzle generator printed its
output in an ugly text format, with lines like
"s""c""a""r""*""k""u""n""i""s""*" "a""r""e""a". I wanted to turn output
like that into a pretty Web page that allowed me to explore the words
in the grid, showing scoring information at a glance. But I knew the
task would be tricky: each letter had to be tagged with the words it
belonged to, both the across and the down. This was a detailed problem,
one that could easily consume the better part of an evening. With the
baby on the way, I was short on free evenings. So I began a
conversation with GPT-4. Some back-and-forth was required; at one
point, I had to read a few lines of code myself to understand what it
was doing. But I did little of the kind of thinking I once believed to
be constitutive of coding. I didnt think about numbers, patterns, or
loops; I didnt use my mind to simulate the activity of the computer.
As another coder, Geoffrey Litt, wrote after a similar experience, “I
never engaged my detailed programmer brain.” So what did I do?
Perhaps what pushed Lee Sedol to retire from the game of Go was the
sense that the game had been forever cheapened. When I got into
programming, it was because computers felt like a form of magic. The
machine gave you powers but required you to study its arcane secrets—to
learn a spell language. This took a particular cast of mind. I felt
selected. I devoted myself to tedium, to careful thinking, and to the
accumulation of obscure knowledge. Then, one day, it became possible to
achieve many of the same ends without the thinking and without the
knowledge. Looked at in a certain light, this can make quite a lot of
ones working life seem like a waste of time.
But whenever I think about Sedol I think about chess. After machines
conquered that game, some thirty years ago, the fear was that there
would be no reason to play it anymore. Yet chess has never been more
popular—A.I. has enlivened the game. A friend of mine picked it up
recently. At all hours, he has access to an A.I. coach that can feed
him chess problems just at the edge of his ability and can tell him,
after hes lost a game, exactly where he went wrong. Meanwhile, at the
highest levels, grandmasters study moves the computer proposes as if
reading tablets from the gods. Learning chess has never been easier;
studying its deepest secrets has never been more exciting.
Computing is not yet overcome. GPT-4 is impressive, but a layperson
cant wield it the way a programmer can. I still feel secure in my
profession. In fact, I feel somewhat more secure than before. As
software gets easier to make, itll proliferate; programmers will be
tasked with its design, its configuration, and its maintenance. And
though Ive always found the fiddly parts of programming the most
calming, and the most essential, Im not especially good at them. Ive
failed many classic coding interview tests of the kind you find at Big
Tech companies. The thing Im relatively good at is knowing whats
worth building, what users like, how to communicate both technically
and humanely. A friend of mine has called this A.I. moment “the revenge
of the so-so programmer.” As coding per se begins to matter less, maybe
softer skills will shine.
That still leaves open the matter of what to teach my unborn child. I
suspect that, as my child comes of age, we will think of “the
programmer” the way we now look back on “the computer,” when that
phrase referred to a person who did calculations by hand. Programming
by typing C++ or Python yourself might eventually seem as ridiculous as
issuing instructions in binary onto a punch card. Dijkstra would be
appalled, but getting computers to do precisely what you want might
become a matter of asking politely.
So maybe the thing to teach isnt a skill but a spirit. I sometimes
think of what I might have been doing had I been born in a different
time. The coders of the agrarian days probably futzed with waterwheels
and crop varietals; in the Newtonian era, they might have been obsessed
with glass, and dyes, and timekeeping. I was reading an oral history of
neural networks recently, and it struck me how many of the people
interviewed—people born in and around the nineteen-thirties—had played
with radios when they were little. Maybe the next cohort will spend
their late nights in the guts of the A.I.s their parents once regarded
as black boxes. I shouldnt worry that the era of coding is winding
down. Hacking is forever. ♦
Published in the print edition of the [27]November 20, 2023, issue,
with the headline “Begin End.”
More Science and Technology
* Can we [28]stop runaway A.I.?
* Saving the climate will depend on blue-collar workers. Can we train
enough of them [29]before time runs out?
* There are ways of controlling A.I.—but first we [30]need to stop
mythologizing it.
* A security camera [31]for the entire planet.
* Whats the point of [32]reading writing by humans?
* A heat shield for [33]the most important ice on Earth.
* The climate solutions [34]we cant live without.
[35]Sign up for our daily newsletter to receive the best stories from
The New Yorker.
[36]James Somers is a writer and a programmer based in New York.
Weekly
Enjoy our flagship newsletter as a digest delivered once a week.
E-mail address
____________________
(BUTTON) Sign up
By signing up, you agree to our [37]User Agreement and [38]Privacy
Policy & Cookie Statement. This site is protected by reCAPTCHA and the
Google[39] Privacy Policy and[40] Terms of Service apply.
Read More
[41]
Why Cant We Quit “The Morning Show”?
On Television
Why Cant We Quit “The Morning Show”?
[42]
Why Cant We Quit “The Morning Show”?
Apples glossy experiment in prestige melodrama is utterly baffling—and
must-watch TV.
By Inkoo Kang
[43]The Man Who “Completed Football”
The Sporting Scene
The Man Who “Completed Football”
[44]
The Man Who “Completed Football”
Pelly Ruddock Mpanzu, a central midfielder for Luton Town F.C., is the
first player to rise from Englands lowest tier of professional soccer
to its highest with a single team.
By Simon Akam
[45]Why the Godfather of A.I. Fears What Hes Built
Profiles
Why the Godfather of A.I. Fears What Hes Built
[46]
Why the Godfather of A.I. Fears What Hes Built
Geoffrey Hinton has spent a lifetime teaching computers to learn. Now
he worries that artificial brains are better than ours.
By Joshua Rothman
[47]How Jensen Huangs Nvidia Is Powering the A.I. Revolution
Brave New World Dept.
How Jensen Huangs Nvidia Is Powering the A.I. Revolution
[48]
How Jensen Huangs Nvidia Is Powering the A.I. Revolution
The companys C.E.O. bet it all on a new kind of chip. Now that Nvidia
is one of the biggest companies in the world, what will he do next?
By Stephen Witt
[49]The New Yorker
(BUTTON) Sections
* [50]News
* [51]Books & Culture
* [52]Fiction & Poetry
* [53]Humor & Cartoons
* [54]Magazine
* [55]Crossword
* [56]Video
* [57]Podcasts
* [58]Archive
* [59]Goings On
(BUTTON) More
* [60]Customer Care
* [61]Shop The New Yorker
* [62]Buy Covers and Cartoons
* [63]Condé Nast Store
* [64]Digital Access
* [65]Newsletters
* [66]Jigsaw Puzzle
* [67]RSS
* [68]About
* [69]Careers
* [70]Contact
* [71]F.A.Q.
* [72]Media Kit
* [73]Press
* [74]Accessibility Help
© 2023 Condé Nast. All rights reserved. Use of this site constitutes
acceptance of our [75]User Agreement and [76]Privacy Policy and Cookie
Statement and [77]Your California Privacy Rights. The New Yorker may
earn a portion of sales from products that are purchased through our
site as part of our Affiliate Partnerships with retailers. The material
on this site may not be reproduced, distributed, transmitted, cached or
otherwise used, except with the prior written permission of Condé Nast.
[78]Ad Choices
*
*
*
*
*
(BUTTON) Do Not Sell My Personal Info
References
Visible links:
1. https://www.newyorker.com/feed/rss
2. https://www.googletagmanager.com/ns.html?id=GTM-NX5LSK3
3. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38432-7220TMP.html#main-content
4. file:///
5. file:///newsletters
6. file:///account/saved
7. file:///auth/initiate?redirectURL=/magazine/2023/11/20/a-coder-considers-the-waning-days-of-the-craft&source=VERSO_NAVIGATION
8. file:///search
9. file:///latest
10. file:///culture/2023-in-review
11. file:///news
12. file:///culture
13. file:///fiction-and-poetry
14. file:///humor
15. file:///magazine
16. file:///crossword-puzzles-and-games
17. file:///video
18. file:///podcasts
19. file:///goings-on
20. https://store.newyorker.com/
21. file:///
22. file:///magazine/personal-history
23. file:///contributors/james-somers
24. https://www.newyorker.com/newsletter/science-technology
25. https://www.newyorker.com/newsletter/science-technology
26. https://www.newyorker.com/cartoon/a27287
27. file:///magazine/2023/11/20
28. file:///science/annals-of-artificial-intelligence/can-we-stop-the-singularity
29. file:///news/dept-of-energy/the-great-electrician-shortage
30. file:///science/annals-of-artificial-intelligence/there-is-no-ai
31. file:///news/annals-of-climate-action/a-security-camera-for-the-planet
32. file:///news/our-columnists/whats-the-point-of-reading-writing-by-humans
33. file:///news/the-control-of-nature/a-heat-shield-for-the-most-important-ice-on-earth
34. file:///news/annals-of-a-warming-planet/the-climate-solutions-we-cant-live-without
35. https://www.newyorker.com/newsletter/daily?sourceCode=BottomStories
36. file:///contributors/james-somers
37. https://www.condenast.com/user-agreement
38. https://www.condenast.com/privacy-policy
39. https://policies.google.com/privacy
40. https://policies.google.com/terms
41. https://www.newyorker.com/culture/on-television/why-cant-we-quit-the-morning-show#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1
42. https://www.newyorker.com/culture/on-television/why-cant-we-quit-the-morning-show#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1
43. https://www.newyorker.com/sports/sporting-scene/the-man-who-completed-football#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1
44. https://www.newyorker.com/sports/sporting-scene/the-man-who-completed-football#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1
45. https://www.newyorker.com/magazine/2023/11/20/geoffrey-hinton-profile-ai#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1_fallback_text2vec1
46. https://www.newyorker.com/magazine/2023/11/20/geoffrey-hinton-profile-ai#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1_fallback_text2vec1
47. https://www.newyorker.com/magazine/2023/12/04/how-jensen-huangs-nvidia-is-powering-the-ai-revolution#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1_fallback_text2vec1
48. https://www.newyorker.com/magazine/2023/12/04/how-jensen-huangs-nvidia-is-powering-the-ai-revolution#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1_fallback_text2vec1
49. file:///
50. file:///news
51. file:///culture
52. file:///fiction-and-poetry
53. file:///humor
54. file:///magazine
55. file:///crossword-puzzles-and-games
56. https://video.newyorker.com/
57. file:///podcast
58. file:///archive
59. file:///goings-on-about-town
60. http://w1.buysub.com/servlet/CSGateway?cds_mag_code=NYR
61. https://store.newyorker.com/
62. https://condenaststore.com/art/new+yorker+covers
63. https://condenaststore.com/conde-nast-brand/thenewyorker
64. file:///digital-editions
65. file:///newsletter
66. file:///jigsaw
67. file:///about/feeds
68. file:///about/us
69. file:///about/careers
70. file:///about/contact
71. file:///about/faq
72. https://www.condenast.com/advertising
73. file:///about/press
74. file:///about/accessibility-help
75. https://www.condenast.com/user-agreement/
76. http://www.condenast.com/privacy-policy#privacypolicy
77. http://www.condenast.com/privacy-policy#privacypolicy-california
78. http://www.condenast.com/privacy-policy#privacypolicy-optout
Hidden links:
80. file://localhost/account/saved
81. https://www.facebook.com/dialog/feed?&display=popup&caption=A%20Coder%20Considers%20the%20Waning%20Days%20of%20the%20Craft&app_id=1147169538698836&link=https%3A%2F%2Fwww.newyorker.com%2Fmagazine%2F2023%2F11%2F20%2Fa-coder-considers-the-waning-days-of-the-craft%3Futm_source%3Dfacebook%26utm_medium%3Dsocial%26utm_campaign%3Donsite-share%26utm_brand%3Dthe-new-yorker%26utm_social-type%3Dearned
82. https://twitter.com/intent/tweet/?url=https%3A%2F%2Fwww.newyorker.com%2Fmagazine%2F2023%2F11%2F20%2Fa-coder-considers-the-waning-days-of-the-craft%3Futm_source%3Dtwitter%26utm_medium%3Dsocial%26utm_campaign%3Donsite-share%26utm_brand%3Dthe-new-yorker%26utm_social-type%3Dearned&text=A%20Coder%20Considers%20the%20Waning%20Days%20of%20the%20Craft&via=NewYorker
83. mailto:?subject=A%20Coder%20Considers%20the%20Waning%20Days%20of%20the%20Craft&body=https%3A%2F%2Fwww.newyorker.com%2Fmagazine%2F2023%2F11%2F20%2Fa-coder-considers-the-waning-days-of-the-craft%3Futm_source%3Donsite-share%26utm_medium%3Demail%26utm_campaign%3Donsite-share%26utm_brand%3Dthe-new-yorker
84. file://localhost/var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38432-7220TMP.html
85. file://localhost/var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38432-7220TMP.html
86. https://www.newyorker.com/culture/on-television/why-cant-we-quit-the-morning-show#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1
87. https://www.newyorker.com/sports/sporting-scene/the-man-who-completed-football#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1
88. https://www.newyorker.com/magazine/2023/11/20/geoffrey-hinton-profile-ai#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1_fallback_text2vec1
89. https://www.newyorker.com/magazine/2023/12/04/how-jensen-huangs-nvidia-is-powering-the-ai-revolution#intcid=_the-new-yorker-bottom-recirc-v2_cdc35741-5fcf-4fa7-807c-c9e46fae6a71_roberta-similarity1_fallback_text2vec1
90. https://www.facebook.com/newyorker/
91. https://twitter.com/NewYorker/
92. https://www.snapchat.com/add/newyorkermag
93. https://www.youtube.com/user/NewYorkerDotCom/
94. https://instagram.com/newyorkermag/

View File

@@ -0,0 +1,458 @@
[1]Skip to content[2]Skip to site index
(BUTTON)
[3]Comments
[4]36 Hours in Durham, N.C.[5]Skip to Comments
The comments section is closed. To submit a letter to the editor for
publication, write to [6]letters@nytimes.com.
36 Hours
36 Hours in Durham, N.C.
By [7]Ingrid K. WilliamsUpdated Nov. 2, 2023
* (BUTTON)
* (BUTTON)
* (BUTTON)
164
A birds-eye view over a quiet city street during the daytime. The
treetops vary from green to orange to red.
[8]36 Hours
Durham, N.C.
Jump to:
[9]Recommendations
[10]Itinerary
[11]Google Map
By Ingrid K. Williams Photographs by Kate Medley for The New York Times
Nov. 2, 2023
Ingrid K. Williams is a regular contributor to the Travel section and a
former Durham resident who has reported on North Carolina since 2010.
The evolution of Durham from a faded tobacco town to a diverse cultural
and culinary destination has been years in the making. But the ongoing
development of this central North Carolina city seems to have reached a
new stage. The resurgent downtown area — long a transitional
neighborhood with pockets of progress — is now brimming with new
restaurants, boutiques, bars and breweries. And while construction
continues apace amid the historic [12]brick warehouses, [13]tobacco
factories and [14]textile mills — for [15]good and [16]ill — visitors
today have reason to venture farther afield, to emerging hotspots in
East Durham and the Old Five Points neighborhood. This season, only the
brilliant fall foliage can compete with all the terrific food, drink
and local color there is to discover across Durm, as residents
affectionately call the dynamic Bull City.
Recommendations
Key stops
* The [17]Nasher Museum of Art, on Duke University's Central Campus,
presents rotating exhibitions, including a current exhibition
curated by ChatGPT.
* [18]Saltbox Seafood Joint serves fresh, seasonal seafood caught off
the North Carolina coast, along with honey-drizzled hush puppies.
* [19]Mystic Farm & Distillery is a 22-acre bourbon distillery that
offers weekend tours and free tastings of the labels full range of
spirits.
* [20]The Velvet Hippo is a lively new bar serving fruity slushies
and creative cocktails on a rooftop downtown.
Attractions and outdoor activities
* At the [21]Sarah P. Duke Gardens, five miles of pathways wind past
magnolias, blooming roses and a lake framed by vibrant foliage in
the fall.
* [22]Bennett Place is a Civil War site, with a small on-site museum,
where Union and Confederate generals negotiated the wars largest
troop surrender in the home of a local family.
* At [23]Eno River State Park and in [24]West Point on the Eno, a
city park five miles north of downtown, there are dozens of trails
to choose from.
Restaurants and bars
* [25]Ponysaurus Brewing Co. is a downtown craft brewery with
crackling fire pits in a leafy garden strung with lights.
* [26]Ideals is a sandwich shop in East Durham with lines out the
door at lunchtime.
* [27]Mike Ds BBQ, also in East Durham, is a new barbecue joint
serving brisket and smoked beans.
* [28]Little Bull is a new restaurant in the Old Five Points
neighborhood that serves dumplings stuffed with goat birria in a
bowl of rich consomé.
* [29]Motorco Music Hall is a concert venue that also hosts dance
parties.
* [30]Corpse Reviver is a cocktail bar in a former coffin shop.
* [31]Monuts is a bustling Ninth Street bakery and cafe that began as
a tricycle vendor peddling doughnuts at the Durham Farmers Market.
* [32]Roses Noodles, Dumplings and Sweets is a former meat market
and sweets shop that evolved into a casual East Asian-inspired
eatery.
Shopping
* [33]Durham Vintage Collective is a new and inviting second-hand
shop downtown.
* [34]Chet Miller is a well-stocked gift shop with Durham-themed
throw pillows, small-press travel guides, cookbooks from local
chefs and jigsaw puzzles.
* [35]EUtopia Design opened downtown last year and sells Polish
glassware and handcrafted ceramics.
* [36]Ella West Gallery is a sunny space that opened in August
showcasing contemporary art.
* [37]Carolina Soul Records and [38]Bull City Records are two spots
to browse vinyl on Main Street.
Where to stay
* For a small city, Durham has an impressive selection of cool
hotels. Most notable is [39]the Durham, a 53-room boutique property
in a landmark building with midcentury modern architecture, mod
décor and a scenic rooftop bar. Double rooms from around $240.
* [40]Unscripted Durham opened in the former Jack Tar Motel, another
1960s property that is now home to 74 modern guest rooms and a
rooftop pool. Doubles from $189.
* [41]21c Museum Hotel is a more contemporary option downtown with
125 rooms, an art-filled restaurant and an on-site art gallery.
Doubles from $189.
* Look for a short-term rental in Trinity Park, a leafy residential
district between downtown and Duke Universitys East Campus, a
short walk from many restaurants, bars, breweries and music venues.
Getting around
* Downtown Durham is walkable but youll need a car to reach
locations farther afield. If you dont have your own, there are
ride-share options, including Uber and Lyft. [42]Buses also run
throughout the city (and are free through June 2024).
Itinerary
Friday
A square, beige-brick building with a colorful banner that reads:
Nasher Museum of Art
3:30 p.m. Visit a campus museum
Anyone concerned that artificial intelligence will eventually do their
job may be put at ease by the new exhibition at Duke Universitys
[43]Nasher Museum of Art, “Act as if You Are a Curator,” which was
organized not by museum staff but by ChatGPT, OpenAIs popular chatbot
(through Jan. 14; free admission). The eclectic A.I.-generated
exhibition spans Mesoamerican stone figures and Salvador Dalí works
selected from the museums nearly 14,000-piece collection, though many
were mislabeled by the chatbot (as noted by a flesh-and-blood curator).
More cohesive is the moving — and human-curated — exhibition of
photographs and collage installations from the artist Lyle Ashton
Harris (through Jan. 7). While on campus, stroll through the nearby
[44]Sarah P. Duke Gardens, where five miles of serene pathways wind
past magnolias, blooming roses and a lake reflecting autumnal colors.
A square, beige-brick building with a colorful banner that reads:
Nasher Museum of Art
Two people sit at a wooden table with plastic orange seats. They are
looking at two chalkboard menus advertising seafood options above an
open kitchen. An orange life preserver hangs on the wall between the
two chalkboard menus.
Saltbox Seafood Joint
6 p.m. Feast on Carolina seafood
Fresh, seasonal seafood caught off the North Carolina coast is the
simple, winning formula at [45]Saltbox Seafood Joint, a restaurant
owned by the chef Ricky Moore, who earned the 2022 James Beard Award
for the best chef in the Southeast. What began as a tiny takeaway shack
in the Old Five Points neighborhood is now a spacious, but still
frill-free, sit-down locale on Durham-Chapel Hill Boulevard. Luckily,
the menu hasnt changed much: You can still get heaping plates of fried
oysters, blue crab, mullet and clams with generous portions of fried
potatoes and collard greens. My go-to is the fried catfish sandwich
topped with citrusy red-cabbage slaw ($14) and a side of Hush-Honeys,
the chefs trademarked take on cornmeal fritters drizzled with honey
($4).
Two people sit at a wooden table with plastic orange seats. They are
looking at two chalkboard menus advertising seafood options above an
open kitchen. An orange life preserver hangs on the wall between the
two chalkboard menus.
Saltbox Seafood Joint
8:30 p.m. Try a local beer by the firepit
The competition is growing among the many craft breweries downtown,
where out-of-town brewers — like Ashevilles [46]Dssolvr and
[47]Hi-Wire Brewing — have opened Durham taprooms in an area thats
already home to longtime local favorites like [48]Fullsteam Brewery and
the [49]Durty Bull Brewing Company. But on a crisp fall evening, the
most atmospheric place for a locally brewed pint is easily
[50]Ponysaurus Brewing Co., an independent craft brewery with crackling
fire pits in a leafy garden strung with lights. Try the
tangerine-tinged Golden Rule Saison ($6) and a scoop of the house snack
mixes, like the pretzel-and-peanutty Bartenders Blend ($1).
A view of a white water tower rising against a blue sky. A logo on the
tower reads:
Durhams downtown brims with new restaurants, boutiques and breweries
amid historic brick warehouses, tobacco factories and textile mills.
Saturday
The interior of an old-fashioned room with wooden floors, wooden walls
and a wooden ceiling. It is sparsely furnished, with two wooden chairs
and a wooden chest. Sunlight comes into the room from a window.
Bennett Place
9:30 a.m. Take a history lesson
Swing by [51]Monuts, a Ninth Street bakery and cafe, to pick up a
cinnamon-and-molasses-glazed pumpkin-spice doughnut ($2.50) and Hot
Apple Chai-der, a steaming blend of apple cider and chai tea ($5.50),
before heading out west for a dive into North Carolina history. Beyond
Civil War scholars, few are likely to recall what transpired at
[52]Bennett Place, a historic farmstead about six miles northwest of
downtown. One of the few Civil War sites not associated with battle,
this out-of-the-way landmark is where the Union general William T.
Sherman and the Confederate general Joseph E. Johnston negotiated the
largest troop surrender of the war — nearly 90,000 soldiers from the
Carolinas, Georgia and Florida — inside the home of a local family in
1865. Begin a visit in the small museum, where a short video explains
the sites significance, then head across the lawn to tour the
reconstructed farmhouse and surrounding outbuildings where the generals
hashed out the terms (free admission).
The interior of an old-fashioned room with wooden floors, wooden walls
and a wooden ceiling. It is sparsely furnished, with two wooden chairs
and a wooden chest. Sunlight comes into the room from a window.
Bennett Place
12 p.m. Seek sandwiches in the east
A former food desert, East Durham has emerged as a lunchtime
destination for hungry diners from across the city. Youll know youve
found [53]Ideals, a sandwich shop that opened in 2021, by the line
snaking down the sidewalk (dont worry, it moves quickly). Here,
freshly baked rolls — sesame-crusted hoagies and rosemary focaccia —
are the foundation for superb deli sandwiches. Best is the Philly-style
roast pork with provolone and garlicky broccoli rabe ($8.50 for a
half-hoagie) and the thick-cut garlic-and-onion potato chips ($1.75).
Another notable newcomer is [54]Mike Ds BBQ, a barbecue joint that
opened nearby in July. Go there for a brisket sandwich doused with the
signature smoky-sweet sauce ($10), a side of smoked beans ($5) and
sweet tea ($4).
Rows of barrels that have the word
Mystic Farm & Distillery
2 p.m. Sip North Carolina bourbon
Whatever your preferred spirit, theres likely someone in Durham
distilling it. Small-production craft booze — from [55]mead and
[56]cider to [57]gin and [58]rye — have exploded in popularity
recently, and one producer worth seeking out is [59]Mystic Farm &
Distillery, about six miles east of downtown. Drop in at this bucolic
22-acre bourbon distillery for a free tasting of the full range of
spirits, including the award-winning Broken Oak bourbon and a smooth
cacao-finished version made with cacao nibs from Raleighs [60]Videri
Chocolate Factory. Small group tours are also offered on weekends ($20;
reserve in advance).
Rows of barrels that have the word
Mystic Farm & Distillery
4 p.m. Flip through records and second-hand finds
Supporting local businesses is a point of pride in this fiercely loyal
city, as evidenced by the growing number of small independent shops
downtown. Start on West Parrish Street at the [61]Durham Vintage
Collective, an inviting second-hand boutique that opened in July, where
you might find plaid miniskirts, leather jackets or a framed
Jean-Michel Basquiat lithograph. Across the street, explore [62]Chet
Miller, a well-stocked gift shop with Durham-themed throw pillows,
small-press travel guides, cookbooks from local chefs and game-night
jigsaw puzzles. Right next door, [63]EUtopia Design opened last year
selling exquisite Polish glassware and handcrafted ceramics. Scope out
the latest color-splashed exhibition at [64]Ella West Gallery, a sunny
space that opened in August showcasing contemporary art from Black,
female and other diverse and underrepresented artists. Then continue to
East Main Street to browse vinyl albums of jazz, soul, rock and
bluegrass at [65]Carolina Soul Records and at the new location of
[66]Bull City Records across the street.
A glass dish with sliced fish that is garnished with flowers.
Little Bull
7 p.m. Dine on fresh Mexican-American flavors
Downtown Durham is packed with great restaurants, but head a bit north
to the Old Five Points neighborhood where the citys latest hotspot,
[67]Little Bull, opened on a quiet block in June. The chef Oscar Diaz,
already well-known in Raleigh for his Mexican-American cuisine, again
tapped his heritage when creating the playful menu. Highlights of a
recent meal included crudo with North Carolina tuna, aguachile, wasabi
and flying-fish roe ($18), plantain empanadas ($16) and soft dumplings
stuffed with goat birria in a bowl of rich consomé ($16). Stick to the
small plates as portions are generous, and save room for dessert: The
churro balls with chocolate sauce ($9) are divine.
A glass dish with sliced fish that is garnished with flowers.
Little Bull
A person with a tattooed arm holds a drink in a martini glass. A skewer
with three stuffed green olives rests on top of the glass.
Corpse Reviver
9 p.m. Sip martinis in a former coffin shop
At the end of 2022, the city designated most of downtown a social
district called [68]the Bullpen, where folks are permitted to walk
around with alcoholic beverages purchased in the area. So if the bar is
packed at [69]the Velvet Hippo, a lively rooftop lounge that opened in
August serving fruity slushies and creative cocktails, you can take
that frozen Hawaiian Rum Punch ($13) to go and stroll over to
[70]Motorco Music Hall, a concert venue that also hosts dance parties,
like a recent Taylor Fest for local Swifties. Or continue to [71]Corpse
Reviver, a cocktail bar associated with the [72]Durham Distillery,
which opened in 2020 in a former coffin shop and serves dirty martinis
garnished with bacon-and-blue-cheese-stuffed olives ($15).
A person with a tattooed arm holds a drink in a martini glass. A skewer
with three stuffed green olives rests on top of the glass.
Corpse Reviver
The West Point Mill along the Eno River. Follow the yellow trail
markers from the mill to reach Sennetts Hole, a popular summertime
swimming spot.
Sunday
Eno River State Park
9 a.m. Hike along the river
Catch the season at its most colorful along the Eno River, where there
are dozens of trails to choose from in the [73]Eno River State Park and
in [74]West Point on the Eno, a city park five miles north of downtown
that is anchored by the historic West Point Mill. One scenic route
begins at the mill, then climbs through the forest along the river
(follow the yellow trail markers). After about 20 minutes, hop across
the rocks crossing a shallow tributary to reach Sennetts Hole, a
natural pool — and popular summertime swimming spot — with small
waterfalls and turtles warming themselves on the rocks on sunny days.
Eno River State Park
11 a.m. Slurp some noodles
Refuel after a hike with brunch at [75]Roses Noodles, Dumplings and
Sweets, a former meat market and sweets shop near Brightleaf Square
that evolved into a casual East Asian-inspired eatery serving fragrant
bowls of beef pho ($17) and Thai rice soup ($14). The selection of
cakes, cookies and pastries is impressive, but best are the ice-cream
sandwiches that easily serve two — my favorite is the white miso flavor
between chewy gingersnaps ($7).
(BUTTON) Read Comments
Correction:
Nov. 2, 2023
An earlier version of this article misstated the days that Monuts, a
bakery and cafe, is open on the weekend. It is open on Saturdays, not
Sundays.
(BUTTON) Read 164 Comments
* (BUTTON)
* (BUTTON)
* (BUTTON)
164
Advertisement
[76]SKIP ADVERTISEMENT
Site Index
Site Information Navigation
* [77]© 2023 The New York Times Company
* [78]NYTCo
* [79]Contact Us
* [80]Accessibility
* [81]Work with us
* [82]Advertise
* [83]T Brand Studio
* [84]Your Ad Choices
* [85]Privacy Policy
* [86]Terms of Service
* [87]Terms of Sale
* [88]Site Map
* [89]Canada
* [90]International
* [91]Help
* [92]Subscriptions
* [93]Manage Privacy Preferences
IFRAME:
[94]https://www.googletagmanager.com/ns.html?id=GTM-P528B3&gtm_auth=tfA
zqo1rYDLgYhmTnSjPqw&gtm_preview=env-130&gtm_cookies_win=x
References
Visible links:
1. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38031-3567TMP.html#site-content
2. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38031-3567TMP.html#site-index
3. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38031-3567TMP.html#commentsContainer
4. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38031-3567TMP.html
5. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38031-3567TMP.html
6. mailto:letters@nytimes.com
7. https://www.nytimes.com/by/ingrid-k-williams
8. https://www.nytimes.com/column/36-hours
9. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38031-3567TMP.html#recommendations
10. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38031-3567TMP.html#itinerary
11. https://maps.app.goo.gl/EimCs7T5YjC3DZi27
12. https://www.brightleafdurham.com/
13. https://americantobacco.co/
14. https://goldenbeltarts.com/
15. https://indyweek.com/music/missy-lanes-assembly-room-cicely-mitchell/
16. https://www.nytimes.com/2018/05/01/business/durham-real-estate-growth.html
17. https://nasher.duke.edu/
18. https://www.saltboxseafoodjoint.com/
19. https://www.whatismystic.com/
20. https://www.velvethippodurham.com/
21. https://gardens.duke.edu/
22. https://historicsites.nc.gov/all-sites/bennett-place
23. https://www.ncparks.gov/state-parks/eno-river-state-park
24. https://www.dprplaymore.org/facilities/facility/details/West-Point-on-the-Eno-76
25. https://www.ponysaurusbrewing.com/
26. https://idealsdeli.com/
27. https://www.mikedsbbq.com/
28. https://www.littlebullnc.com/
29. https://motorcomusic.com/
30. https://durhamdistillery.com/pages/corpse-reviver-cocktail-bar-and-lounge
31. https://www.monutsdonuts.com/
32. https://rosesdurham.com/
33. https://www.instagram.com/durhamvintagecollective/?hl=en
34. https://www.chetmillershop.com/
35. https://www.instagram.com/eutopia.design/?hl=en
36. https://www.ellawestgallery.com/
37. https://www.carolinasoul.com/
38. https://www.bullcityrecords.com/
39. https://www.thedurham.com/
40. https://www.unscriptedhotels.com/
41. https://www.21cmuseumhotels.com/durham/
42. https://godurhamtransit.org/
43. https://nasher.duke.edu/
44. https://gardens.duke.edu/
45. https://www.saltboxseafoodjoint.com/
46. https://dssolvr.com/
47. https://hiwirebrewing.com/durham/
48. https://www.fullsteam.ag/
49. https://www.durtybull.com/
50. https://www.ponysaurusbrewing.com/
51. https://www.monutsdonuts.com/
52. https://historicsites.nc.gov/all-sites/bennett-place
53. https://idealsdeli.com/
54. https://www.mikedsbbq.com/
55. https://www.honeygirlmeadery.com/
56. https://www.bullcityciderworks.com/
57. https://durhamdistillery.com/
58. https://www.libertyandplenty.com/
59. https://www.whatismystic.com/
60. https://viderichocolatefactory.com/
61. https://www.instagram.com/durhamvintagecollective/?hl=en
62. https://www.chetmillershop.com/
63. https://www.instagram.com/eutopia.design/?hl=en
64. https://www.ellawestgallery.com/
65. https://www.carolinasoul.com/
66. https://www.bullcityrecords.com/
67. https://www.littlebullnc.com/
68. https://downtowndurham.com/bullpen/
69. https://www.velvethippodurham.com/
70. https://motorcomusic.com/
71. https://durhamdistillery.com/pages/corpse-reviver-cocktail-bar-and-lounge
72. https://durhamdistillery.com/
73. https://www.ncparks.gov/state-parks/eno-river-state-park
74. https://www.dprplaymore.org/facilities/facility/details/West-Point-on-the-Eno-76
75. https://rosesdurham.com/
76. file:///var/folders/q9/qlz2w5251kzdfgn0np7z2s4c0000gn/T/L38031-3567TMP.html#after-bottom
77. https://help.nytimes.com/hc/en-us/articles/115014792127-Copyright-notice
78. https://www.nytco.com/
79. https://help.nytimes.com/hc/en-us/articles/115015385887-Contact-Us
80. https://help.nytimes.com/hc/en-us/articles/115015727108-Accessibility
81. https://www.nytco.com/careers/
82. https://nytmediakit.com/
83. https://www.tbrandstudio.com/
84. https://www.nytimes.com/privacy/cookie-policy#how-do-i-manage-trackers
85. https://www.nytimes.com/privacy/privacy-policy
86. https://help.nytimes.com/hc/en-us/articles/115014893428-Terms-of-service
87. https://help.nytimes.com/hc/en-us/articles/115014893968-Terms-of-sale
88. file:///sitemap/
89. https://www.nytimes.com/ca/
90. https://www.nytimes.com/international/
91. https://help.nytimes.com/hc/en-us
92. https://www.nytimes.com/subscription?campaignId=37WXW
93. file:///privacy/manage-settings/?fides-toggle=true&fides-override=true
94. https://www.googletagmanager.com/ns.html?id=GTM-P528B3&gtm_auth=tfAzqo1rYDLgYhmTnSjPqw&gtm_preview=env-130&gtm_cookies_win=x
Hidden links:
96. file://localhost/

View File

@@ -0,0 +1,506 @@
#[1]Programmable Mutter
[2][https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimage
s%2F6676303a-e6a9-4e7d-b10e-8662cfcfb435_1024x1024.png]
[3]Programmable Mutter
(BUTTON) (BUTTON)
Subscribe
(BUTTON) Sign in
(BUTTON)
Share this post
What OpenAI shares with Scientology
www.programmablemutter.com
(BUTTON)
Copy link
(BUTTON)
Facebook
(BUTTON)
Email
(BUTTON)
Note
(BUTTON)
Other
Discover more from Programmable Mutter
Technology and politics in an interdependent world
Over 1,000 subscribers
____________________
(BUTTON) Subscribe
Continue reading
Sign in
What OpenAI shares with Scientology
Strange beliefs, fights over money and bad science fiction
[4]Henry Farrell
Nov 20, 2023
72
(BUTTON)
Share this post
What OpenAI shares with Scientology
www.programmablemutter.com
(BUTTON)
Copy link
(BUTTON)
Facebook
(BUTTON)
Email
(BUTTON)
Note
(BUTTON)
Other
17
Share
When Sam Altman was ousted as CEO of OpenAI, some hinted that lurid
depravities lay behind his downfall. Surely, OpenAIs board wouldnt
have toppled him if there werent some sordid story about to hit the
headlines? But the [5]reporting all seems to be saying that it was God,
not Sex, that lay behind Altmans downfall. And Money, that third great
driver of human behavior, seems to have driven his attempted return and
his [6]new job at Microsoft, which is OpenAIs biggest investor by far.
As the NYT describes the people who pushed Altman out:
Thanks for reading Programmable Mutter! Subscribe for free to receive
new posts. And if you want to support my work, [7]buy my and Abe
Newmans new book, [8]Underground Empire, and sing its praises (so long
as you actually liked it), on Amazon, Goodreads, social media and
everywhere else that people find out about good books.
____________________
(BUTTON) Subscribe
Ms. McCauley and Ms. Toner [HF - two board members] have ties to the
Rationalist and Effective Altruist movements, a community that is
deeply concerned that A.I. could one day destroy humanity. Todays
A.I. technology cannot destroy humanity. But this community believes
that as the technology grows increasingly powerful, these dangers
will arise.
McCauley and Toner reportedly worried that Altman was pushing too hard,
too quickly for new and potentially dangerous forms of AI (similar
fears led some OpenAI people to bail out and found a competitor,
Anthropic, a couple of years ago). The FTs reporting [9]confirms that
the fight was over how quickly to commercialize AI
The back-story to all of this is actually much weirder than the average
sex scandal. The field of AI (in particular, its debates around Large
Language Models (LLMs) like OpenAIs GPT-4) is profoundly shaped by
cultish debates among people with some very strange beliefs.
As LLMs have become increasingly powerful, theological arguments have
begun to mix it up with the profit motive. That explains why OpenAI has
such an unusual corporate form - it is a non-profit, with a for-profit
structure retrofitted on top, sweatily entangled with a
profit-maximizing corporation (Microsoft). It also plausibly explains
why these tensions have exploded into the open.
********
I joked on Bluesky that the OpenAI saga was as if “the 1990s browser
wars were being waged by rival factions of Dianetics striving to
control the future.” Dianetics - for those who dont obsess on the
underbelly of American intellectual history - was the 1.0 version of L.
Ron Hubbards Scientology. Hubbard [10]hatched it in collaboration with
the science fiction editor John W. Campbell (who had a major science
fiction award named after him until 2019, when his racism finally
caught up with his reputation).
The AI safety debate too is an unintended consequence of genre fiction.
In 1987, multiple-Hugo award winning science-fiction critic Dave
Langford [11]began a discussion of the “newish” genre of cyberpunk with
a complaint about an older genre of story on information technology, in
which “the ultimate computer is turned on and asked the ultimate
question, and replies `Yes, now there is a God!'
However, the cliche didnt go away. Instead, it cross-bred with
cyberpunk to produce some quite surprising progeny. The midwife was the
writer Vernor Vinge, who proposed a revised meaning for “singularity.”
This was a term already familiar to science fiction readers as the
place inside a black hole where the ordinary predictions of physics
broke down. Vinge suggested that we would soon likely create true AI,
which would be far better at thinking than baseline humans, and would
change the world in an accelerating process, creating a historical
[12]singularity, after which the future of the human species would be
radically unpredictable.
These ideas were turned into novels by Vinge himself, including A Fire
Upon the Deep (fun!) and Rainbows End (weak!). Other SF writers like
Charles Stross wrote novels about humans doing their best to co-exist
with “weakly godlike” machine intelligence (also fun!). Others who had
no notable talent for writing, like the futurist Ray Kurzweil, tried to
turn the Singularity into the foundation stone of a new account of
human progress. I still possess a mostly-unread copy of Kurzweils
mostly-unreadable magnum opus, The Singularity is Near, which was
distributed en masse to bloggers like meself in an early 2000s
marketing campaign. If I dug hard enough in my archives, I might even
be able to find the message from a publicity flack expressing
disappointment that I hadnt written about the book after they sent it.
All this speculation had a strong flavor of end-of-days. As the Scots
science fiction writer, Ken MacLeod memorably put it, the Singularity
was the “Rapture of the Nerds.” Ken, being the [13]offspring of a Free
Presbyterian preacher, knows a millenarian religion when he sees it:
Kurzweils doorstopper should really have been titled The Singularity
is Nigh.
Science fiction was the gateway drug, but it cant really be blamed for
everything that happened later. Faith in the Singularity has roughly
the same relationship to SF as UFO-cultism. A small minority of SF
writers are true believers; most are hearty skeptics, but recognize
that superhuman machine intelligences are (a) possible) and (b) an
extremely handy engine of plot. But the combination of cultish
Singularity beliefs and science fiction has influenced a lot of
external readers, who dont distinguish sharply between the religious
and fictive elements, but mix and meld them to come up with strange new
hybrids.
Just such a syncretic religion provides the final part of the
back-story to the OpenAI crisis. In the 2010s, ideas about the
Singularity cross-fertilized with notions about Bayesian reasoning and
some really terrible fanfic to create the online “rationalist” movement
mentioned in the NYT.
Ive never read a text on rationalism, whether by true believers, by
hangers-on, or by bitter enemies (often erstwhile true believers), that
really gets the totality of what you see if you dive into its core
texts and apocrypha. And I wont even try to provide one here. It is
some Very Weird Shit and there is really great religious sociology to
be written about it. The fights around [14]Rokos Basilisk are perhaps
the best known example of rationalism in action outside the community,
and give you some flavor of the style of debate. But the very short
version is that [15]Eliezer Yudkowsky, and his multitudes of online
fans embarked on a massive collective intellectual project, which can
reasonably be described as resurrecting David Langfords hoary 1980s SF
cliche, and treating it as the most urgent dilemma facing human beings
today. We are about to create God. What comes next? Add Bayes Theorem
to Vinges core ideas, sez rationalism, and youll likely find the
answer.
The consequences are what you might expect when a crowd of bright but
rather naive (and occasionally creepy) computer science and adjacent
people try to re-invent theology from first principles, to model what
human-created gods might do, and how they ought be constrained. They
include the following, non-comprehensive list: all sorts of strange
mental exercises, postulated superhuman entities benign and malign and
how to think about them; the jumbling of parts from fan-fiction,
computer science, home-brewed philosophy and ARGs to create grotesque
and interesting intellectual chimeras; Nick Bostrom, and a crew of very
well funded philosophers; Effective Altruism, whose fancier adherents
often prefer not to acknowledge the approachs somewhat disreputable
origins.
All this would be sociologically fascinating, but of little real world
consequence, if it hadnt profoundly influenced the founders of the
organizations pushing AI forward. These luminaries think about the
technologies that they were creating in terms that they have borrowed
wholesale from the Yudkowsky extended universe. The risks and rewards
of AI are seen as largely commensurate with the risks and rewards of
creating superhuman intelligences, modeling how they might behave, and
ensuring that we end up in a Good Singularity, where AIs do not destroy
or enslave humanity as a species, rather than a bad one.
Even if rationalisms answers are uncompelling, it asks interesting
questions that might have real human importance. However, it is at best
unclear that theoretical debates about immantenizing the eschaton tell
us very much about actually-existing “AI,” a family of important and
sometimes very powerful statistical techniques, which are being applied
today, with emphatically non-theoretical risks and benefits.
Ah, well, nevertheless. The rationalist agenda has demonstrably shaped
the questions around which the big AI debates regularly revolve, as
[16]demonstrated by the Rishi Sunak/Sam Altman/Elon Musk love-fest “AI
Summit” in London a few weeks ago.
We are on a very strange timeline. My laboured Dianetics/Scientology
joke can be turned into an interesting hypothetical. It actually turns
out (I only stumbled across this recently) that Claude Shannon, the
creator of information theory (and, by extension, the computer
revolution) was an [17]L. Ron Hubbard fan in later life. In our
continuum, this didnt affect his theories: he had already done his
major work. Imagine, however, a parallel universe, where Shannons
science and standom had become intertwined and wildly influential, so
that debates in information science obsessed over whether we could
eliminate the noise of our [18]engrams, and isolate the signal of our
True Selves, allowing us all to become [19]Operating Thetans. Then
reflect on how your imagination doesnt have to work nearly as hard as
it ought to. A similarly noxious blend of garbage ideas and actual
science is the foundation stone of the Grand AI Risk Debates that are
happening today.
To be clear - not everyone working on existential AI risk (or x risk
as it is usually summarized) is a true believer in Strong Eliezer
Rationalism. Most, very probably, are not. But you dont need all that
many true believers to keep the machine running. At least, that is how
I interpret this [20]Shazeda Ahmed essay, which describes how some core
precepts of a very strange set of beliefs have become normalized as the
background assumptions for thinking about the promise and problems of
AI. Even if you, as an AI risk person, dont buy the full intellectual
package, you find yourself looking for work in a field where the
funding, the incentives, and the organizational structures mostly point
in a single direction (NB - this is my jaundiced interpretation, not
hers).
********
There are two crucial differences between todays AI cult and golden
age Scientology. The first was already mentioned in passing. Machine
learning works, and has some very important real life uses.
[21]E-meters dont work and are useless for any purpose other than
fleecing punters.
The second (which is closely related) is that Scientologys ideology
and money-hustle reinforce each other. The more that you buy into
stories about the evils of mainstream psychology, the baggage of
engrams that is preventing you from reaching your true potential and so
on and so on, the more you want to spend on Scientology counselling. In
AI, in contrast, God and Money have a rather more tentative
relationship. If you are profoundly worried about the risks of AI,
should you be unleashing it on the world for profit? That tension helps
explain the fight that has just broken out into the open.
Its easy to forget that OpenAI was founded as an explicitly
non-commercial entity, the better to balance the rewards and the risks
of these new technologies. To quote from its [22]initial manifesto:
Its hard to fathom how much human-level AI could benefit society,
and its equally hard to imagine how much it could damage society if
built or used incorrectly. Because of AIs surprising history, its
hard to predict when human-level AI might come within reach. When it
does, itll be important to have a leading research institution
which can prioritize a good outcome for all over its
own self-interest.
Were hoping to grow OpenAI into such an institution. As a
non-profit, our aim is to build value for everyone rather than
shareholders. Researchers will be strongly encouraged to publish
their work, whether as papers, blog posts, or code, and our patents
(if any) will be shared with the world. Well freely collaborate
with others across many institutions and expect to work with
companies to research and deploy new technologies.
That … isnt quite how it worked out. The Sam Altman justification for
deviation from this vision, laid out in various interviews, is that it
turned out to just be too damned expensive to train the models as they
grew bigger, and bigger and bigger. This necessitated the creation of
an add-on structure, which would sidle into profitable activity. It
also required massive cash infusions from Microsoft (reportedly in
[23]the range of $13 billion), which also has an exclusive license to
OpenAIs most recent LLM, GPT-4. Microsoft, it should be noted, is not
in the business of prioritizing “a good outcome for all over its own
self-interest.” It looks instead, to invest its resources along the
very best Friedmanite principles, so as to create whopping returns for
shareholders. And $13 billion is a lot of invested resources.
This, very plausibly explains the current crisis. OpenAIs governance
arrangements are shaped by the fact that it was a non-profit until
relatively recently. The board is a non-profit board. The two members
already mentioned, McCauley and Toner, are not the kind of people you
would expect to see making the big decisions for a major commercial
entity. They plausibly represent the older rationalist vision of what
OpenAI was supposed to do, and the risks that it was supposed to avert.
But as OpenAIs ambitions have grown, that vision has been watered down
in favor of making money. Ive heard that there were a lot of people in
the AI community who were really unhappy with OpenAIs initial decision
to let GPT rip. That spurred the race for commercial domination of AI
which has shaped pretty well everything that has happened since,
leading to model after model being launched, and to hell with the
consequences. People like Altman still talk about the dangers of AGI.
But their organizations and businesses keep releasing more, and more
powerful systems, which can be, and are being, used in all sorts of
unanticipated ways, for good and for ill.
It would perhaps be too cynical to say that AGI existential risk
rhetoric has become a cynical hustle, intended to redirect the
attentions of regulators toward possibly imaginary future risks in the
future, and away from problematic but profitable activities that are
happening right now. Human beings have an enormous capacity to
fervently believe in things that it is in their self-interest to
believe, and to update those beliefs as the interests change or become
clearer. I wouldnt be surprised at all if Altman sincerely thinks that
he is still acting for the good of humankind (there are certainly
enough people assuring him that he is). But it isnt surprising either
that the true believers are revolting, as Altman stretches their
ideology ever further and thinner to facilitate raking in the
benjamins.
The OpenAI saga is a fight between God and Money; between a quite
peculiar quasi-religious movement, and a quite ordinary desire to make
cold hard cash. You should probably be putting your bets on Money
prevailing in whatever strange arrangement of forces is happening as
Altman is beamed up into the Microsoft mothership. But we might not be
all that better off in this particular case if the forces of God were
to prevail, and the rationalists who toppled Altman were to win a
surprising victory. They want to slow down AI, which is good, but for
all sorts of weird reasons, which are unlikely to provide good
solutions for the actual problems that AI generates. The important
questions about AI are the ones that neither God or [24]Mammon has
particularly good answers for - but thats a topic for future posts.
Thanks for reading Programmable Mutter! Subscribe for free to receive
new posts. And if you want to support my work, [25]buy my and Abe
Newmans new book, [26]Underground Empire, and sing its praises (as
long as you actually liked it) on Amazon, Goodreads, social media and
everywhere else that people find out about good books.
____________________
(BUTTON) Subscribe
72
(BUTTON)
Share this post
What OpenAI shares with Scientology
www.programmablemutter.com
(BUTTON)
Copy link
(BUTTON)
Facebook
(BUTTON)
Email
(BUTTON)
Note
(BUTTON)
Other
17
Share
17 Comments
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
(BUTTON)
Share this discussion
What OpenAI shares with Scientology
www.programmablemutter.com
(BUTTON)
Copy link
(BUTTON)
Facebook
(BUTTON)
Email
(BUTTON)
Note
(BUTTON)
Other
Tarik Najeddine
[27]Writes Factual Dispatch
[28]Nov 20
ChatGPT is just Zapp Brannigan or a McKinsey consultant. A veneer of
confidence and a person to blame when the executive "needs" to make a
hard decision. You previously blamed the Bain consultants when you
offshored a factory, now you blame AI.
Expand full comment
Reply
Share
(BUTTON)
Gerben Wierda
[29]Nov 21·edited Nov 21
Came here via Dave Karpf's link. Beautiful stuff, and "The Singularity
is Nigh" made me laugh out loud.
The psychological and sociological/cultural side of the current
GPT-fever is indeed far more important and telling than the technical
reality. Short summary: quantity has its own certain quality, but the
systems may be impressive, we humans are impressionable.
Recently, Sam Altman received a Hawking Fellowship for the OpenAI Team
and he spoke for a few minutes followed by a Q&A (available on
YouTube). In that session he was asked what are important qualities for
'founders' of these innovative tech firms. He answered that founders
should have deeply held convictions that are stable without a lot of
positive external reinforcement, obsession with a problem, and a
super powerful internal drive. They needed to be an 'evangelist'. The
link with religion shows here too.
([30]https://erikjlarson.substack.com/p/gerben-wierda-on-chatgpt-altman
-and). TED just released Ilya Sutskevers talk and you see it there
too. We have strong believers turned evangelists and we have a world of
disciples and followers. It is indeed a very good analogy.
Expand full comment
Reply
Share
(BUTTON)
[31]15 more comments...
Top
New
Community
No posts
Ready for more?
____________________
(BUTTON) Subscribe
© 2023 Henry Farrell
[32]Privacy ∙ [33]Terms ∙ [34]Collection notice
Start Writing[35]Get the app
[36]Substack is the home for great writing
This site requires JavaScript to run correctly. Please [37]turn on
JavaScript or unblock scripts
References
Visible links:
1. file:///feed
2. file:///
3. file:///
4. https://substack.com/@henryfarrell
5. https://www.nytimes.com/2023/11/18/technology/open-ai-sam-altman-what-happened.html
6. https://www.ft.com/content/54e36c93-08e5-4a9e-bda6-af673c3e9bb5
7. https://amzn.to/3PbIyqX
8. https://amzn.to/3PbIyqX
9. https://www.ft.com/content/54e36c93-08e5-4a9e-bda6-af673c3e9bb5
10. https://longreads.com/2017/02/01/xenus-paradox-the-fiction-of-l-ron-hubbard/
11. https://ansible.uk/ai/pcwplus/pcwp1987.html
12. https://edoras.sdsu.edu/~vinge/misc/singularity.html
13. https://www.heraldscotland.com/life_style/arts_ents/14479010.science-fiction-writer-ken-macleod-free-presbyterian-childhood-time-communist-party-member-future-humanity/
14. https://www.lesswrong.com/tag/rokos-basilisk
15. https://en.wikipedia.org/wiki/Eliezer_Yudkowsky
16. https://www.politico.eu/article/rishi-sunak-artificial-intelligence-pivot-safety-summit-united-kingdom-silicon-valley-effective-altruism/
17. https://longreads.com/2018/10/23/the-dawn-of-dianetics-l-ron-hubbard-john-w-campbell-and-the-origins-of-scientology/
18. https://en.wikipedia.org/wiki/Engram_(Dianetics)
19. https://en.wikipedia.org/wiki/Operating_Thetan
20. https://crookedtimber.org/2023/11/16/from-algorithmic-monoculture-to-epistemic-monoculture-understanding-the-rise-of-ai-safety/
21. https://en.wikipedia.org/wiki/E-meter
22. https://openai.com/blog/introducing-openai
23. https://www.bloomberg.com/news/newsletters/2023-06-15/how-chatgpt-openai-made-microsoft-an-ai-tech-giant-big-take
24. https://www.newadvent.org/cathen/09580b.htm
25. https://amzn.to/3PbIyqX
26. https://amzn.to/3PbIyqX
27. https://factualdispatch.substack.com/?utm_source=substack&utm_medium=web&utm_content=comment_metadata
28. https://www.programmablemutter.com/p/look-at-scientology-to-understand/comment/43988738
29. https://www.programmablemutter.com/p/look-at-scientology-to-understand/comment/44033603
30. https://erikjlarson.substack.com/p/gerben-wierda-on-chatgpt-altman-and
31. https://www.programmablemutter.com/p/look-at-scientology-to-understand/comments
32. https://www.programmablemutter.com/privacy?utm_source=
33. https://substack.com/tos
34. https://substack.com/ccpa#personal-data-collected
35. https://substack.com/app/app-store-redirect?utm_campaign=app-marketing&utm_content=web-footer-button
36. https://substack.com/
37. https://enable-javascript.com/
Hidden links:
39. https://substack.com/profile/557668-henry-farrell
40. https://www.programmablemutter.com/p/look-at-scientology-to-understand/comments
41. javascript:void(0)
42. https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F555fe47f-ac07-4614-b78b-5d269fde7539_1024x1024.webp
43. https://www.programmablemutter.com/p/look-at-scientology-to-understand/comments
44. javascript:void(0)
45. https://substack.com/profile/1263175-tarik-najeddine
46. https://substack.com/profile/1263175-tarik-najeddine
47. https://substack.com/profile/23165546-gerben-wierda
48. https://substack.com/profile/23165546-gerben-wierda
49. https://substack.com/signup?utm_source=substack&utm_medium=web&utm_content=footer