diff --git a/content/journal/dispatch-10-december-2023/index.md b/content/journal/dispatch-10-december-2023/index.md index d1578d1..45fbd07 100644 --- a/content/journal/dispatch-10-december-2023/index.md +++ b/content/journal/dispatch-10-december-2023/index.md @@ -4,9 +4,26 @@ date: 2023-11-27T22:43:47-05:00 draft: false tags: - 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/ @@ -64,10 +81,20 @@ Reading: Links: -* [Title][17] -* [Title][18] -* [Title][19] +* [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. -[17]: https://example.com/ -[18]: https://example.com/ -[19]: https://example.com/ +* [A Coder Considers the Waning Days of the Craft][19] + + > 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, don’t 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 diff --git a/static/archive/allaboutcoding-ghinda-com-jnjy0d.txt b/static/archive/allaboutcoding-ghinda-com-jnjy0d.txt new file mode 100644 index 0000000..1c6eb3e --- /dev/null +++ b/static/archive/allaboutcoding-ghinda-com-jnjy0d.txt @@ -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 diff --git a/static/archive/www-newyorker-com-41taro.txt b/static/archive/www-newyorker-com-41taro.txt new file mode 100644 index 0000000..1fd635d --- /dev/null +++ b/static/archive/www-newyorker-com-41taro.txt @@ -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 can’t beat a human when it comes to + programming. But it’s 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 children’s + 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, we’d 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 didn’t require a human touch. + + When we’ve taken on projects like this in the past, they’ve had both a + hardware component and a software component, with Ben’s 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 transformer’s 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. He’d 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 Yorker’s 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. It’s 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. + I’d tried a few times and never got beyond something that half worked. + I found Apple’s 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 he’d 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 didn’t 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 what’s + 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 world’s 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 I’ve 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 other’s heads. + + I thought that my brother was a hacker. Like many programmers, I + dreamed of breaking into and controlling remote systems. The point + wasn’t to cause mayhem—it was to find hidden places and learn hidden + things. “My crime is that of curiosity,” goes “The Hacker’s 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 wasn’t. 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 Euclid’s Elements I, the first truly + difficult idea in the book. Those who crossed the bridge would go on to + master geometry; those who didn’t 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 I’d 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 + coder’s 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 you’ve 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 I’d told it to do. The + words “Hello, world” appeared above my cursor, now in the computer’s + 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 I’d 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 + you’d get from a chatbot these days, but nonetheless capable, I + thought, of real poetry: + + I’ll flay him alive + Uncertainly he waited + Heavy of the past + + I began taking coding seriously. I offered to do programming for a + friend’s 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 machine’s + strengths and limits, of what one could make it do. + + At my friend’s 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 you’ve 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—I’ve 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 there’s 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 wasn’t sure I wanted that. I enjoy the act of programming and I like + to feel useful. The tools I’m 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 I’d 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 I’d 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 we’d + written didn’t 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 didn’t 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 bird’s-eye view of what happened that day? A table got a + new header. It’s 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 he’d 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 wasn’t 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. We’d sit down to work on our + crossword project, and I’d say, “Why don’t you try prompting it this + way?” He’d offer me the keyboard. “No, you drive,” I’d 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-4’s. 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 player’s + 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 wasn’t long before I caved. I was making a little search tool at + work and wanted to highlight the parts of the user’s 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 you’d 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.” Dijkstra’s argument became a truism in programming circles. + When the essay made the rounds on Reddit in 2014, a top commenter + wrote, “I’m 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 can’t 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 wasn’t 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 didn’t think about numbers, patterns, or + loops; I didn’t 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 + one’s 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 he’s 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 + can’t 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, it’ll proliferate; programmers will be + tasked with its design, its configuration, and its maintenance. And + though I’ve always found the fiddly parts of programming the most + calming, and the most essential, I’m not especially good at them. I’ve + failed many classic coding interview tests of the kind you find at Big + Tech companies. The thing I’m relatively good at is knowing what’s + 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 isn’t 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 shouldn’t 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. + * What’s the point of [32]reading writing by humans? + * A heat shield for [33]the most important ice on Earth. + * The climate solutions [34]we can’t 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 Can’t We Quit “The Morning Show”? + On Television + Why Can’t We Quit “The Morning Show”? + [42] + Why Can’t We Quit “The Morning Show”? + Apple’s 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 England’s lowest tier of professional soccer + to its highest with a single team. + + By Simon Akam + [45]Why the Godfather of A.I. Fears What He’s Built + Profiles + Why the Godfather of A.I. Fears What He’s Built + [46] + Why the Godfather of A.I. Fears What He’s 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 Huang’s Nvidia Is Powering the A.I. Revolution + Brave New World Dept. + How Jensen Huang’s Nvidia Is Powering the A.I. Revolution + [48] + How Jensen Huang’s Nvidia Is Powering the A.I. Revolution + The company’s 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/ diff --git a/static/archive/www-nytimes-com-s2rtib.txt b/static/archive/www-nytimes-com-s2rtib.txt new file mode 100644 index 0000000..ac364e2 --- /dev/null +++ b/static/archive/www-nytimes-com-s2rtib.txt @@ -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 Dur’m, 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 label’s 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 war’s 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]Ideal’s is a sandwich shop in East Durham with lines out the + door at lunchtime. + * [27]Mike D’s 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]Rose’s 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 University’s East Campus, a + short walk from many restaurants, bars, breweries and music venues. + + Getting around + * Downtown Durham is walkable but you’ll need a car to reach + locations farther afield. If you don’t 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 University’s + [43]Nasher Museum of Art, “Act as if You Are a Curator,” which was + organized not by museum staff but by ChatGPT, OpenAI’s popular chatbot + (through Jan. 14; free admission). The eclectic A.I.-generated + exhibition spans Mesoamerican stone figures and Salvador Dalí works + selected from the museum’s 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 hasn’t 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 chef’s 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 Asheville’s [46]Dssolvr and + [47]Hi-Wire Brewing — have opened Durham taprooms in an area that’s + 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 Bartender’s Blend ($1). + A view of a white water tower rising against a blue sky. A logo on the + tower reads: + Durham’s 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 site’s 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. You’ll know you’ve + found [53]Ideal’s, a sandwich shop that opened in 2021, by the line + snaking down the sidewalk (don’t 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 D’s 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, there’s 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 Raleigh’s [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 city’s 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 Sennett’s 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 Sennett’s 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]Rose’s 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>m_auth=tfA + zqo1rYDLgYhmTnSjPqw>m_preview=env-130>m_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>m_auth=tfAzqo1rYDLgYhmTnSjPqw>m_preview=env-130>m_cookies_win=x + + Hidden links: + 96. file://localhost/ diff --git a/static/archive/www-programmablemutter-com-8wp6z1.txt b/static/archive/www-programmablemutter-com-8wp6z1.txt new file mode 100644 index 0000000..b5fce92 --- /dev/null +++ b/static/archive/www-programmablemutter-com-8wp6z1.txt @@ -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, OpenAI’s board wouldn’t + have toppled him if there weren’t 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 Altman’s 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 OpenAI’s 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 + Newman’s 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. Today’s + 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 FT’s 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 OpenAI’s 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 don’t obsess on the + underbelly of American intellectual history - was the 1.0 version of L. + Ron Hubbard’s 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 didn’t 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 Rainbow’s 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 Kurzweil’s + 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 hadn’t 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: + Kurzweil’s doorstopper should really have been titled The Singularity + is Nigh. + + Science fiction was the gateway drug, but it can’t 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 don’t 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. + + I’ve 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 won’t 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]Roko’s 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 Langford’s 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 Vinge’s core ideas, sez rationalism, and you’ll 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 approach’s somewhat disreputable + origins. + + All this would be sociologically fascinating, but of little real world + consequence, if it hadn’t 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 rationalism’s 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 didn’t affect his theories: he had already done his + major work. Imagine, however, a parallel universe, where Shannon’s + 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 doesn’t 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 don’t 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, don’t 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 today’s 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 don’t work and are useless for any purpose other than + fleecing punters. + + The second (which is closely related) is that Scientology’s 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. + + It’s 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: + + It’s hard to fathom how much human-level AI could benefit society, + and it’s equally hard to imagine how much it could damage society if + built or used incorrectly. Because of AI’s surprising history, it’s + hard to predict when human-level AI might come within reach. When it + does, it’ll be important to have a leading research institution + which can prioritize a good outcome for all over its + own self-interest. + + We’re 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. We’ll freely collaborate + with others across many institutions and expect to work with + companies to research and deploy new technologies. + + That … isn’t 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 + OpenAI’s 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. OpenAI’s 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 OpenAI’s ambitions have grown, that vision has been watered down + in favor of making money. I’ve heard that there were a lot of people in + the AI community who were really unhappy with OpenAI’s 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 wouldn’t 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 isn’t 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 that’s 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 + Newman’s 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 Sutskever’s 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