diff --git a/content/4years.article b/content/4years.article
index d6d2cad..4122617 100644
--- a/content/4years.article
+++ b/content/4years.article
@@ -28,47 +28,131 @@
 
 But where is the interest coming from?
 
-The open source community has embraced Go, with our community wiki listing [[https://golang.org/wiki/Projects][hundreds of Go projects]]. Some popular ones:
+The open source community has embraced Go,
+with our community wiki listing [[https://golang.org/wiki/Projects][hundreds of Go projects]]. Some popular ones:
 
-- [[http://docker.io][Docker]] is a tool for packaging and running applications in lightweight containers. Docker makes it easy to isolate, package, and deploy applications, and is beloved by system administrators. Its creator Solomon Hykes cited Go's standard library, concurrency primitives, and ease of deployment as key factors, and said "To put it simply, if Docker had not been written in Go, it would not have been as successful."
+- [[http://docker.io][Docker]] is a tool for packaging and running applications
+  in lightweight containers.
+  Docker makes it easy to isolate, package,
+  and deploy applications, and is beloved by system administrators.
+  Its creator Solomon Hykes cited Go's standard library,
+  concurrency primitives, and ease of deployment as key factors,
+  and said "To put it simply, if Docker had not been written in Go,
+  it would not have been as successful."
 
-- [[http://packer.io][Packer]] is a tool for automating the creation of machine images for deployment to virtual machines or cloud services. Its author, Mitchell Hashimoto, is now working on another Go project, [[http://www.serfdom.io/][serf]], a decentralized discovery service. Like Docker, these projects help with management of large-scale, cluster-based services.
+- [[http://packer.io][Packer]] is a tool for automating the creation of
+  machine images for deployment to virtual machines or cloud services.
+  Its author, Mitchell Hashimoto, is now working on another Go project,
+  [[http://www.serfdom.io/][serf]], a decentralized discovery service.
+  Like Docker, these projects help with management of large-scale,
+  cluster-based services.
 
-- [[http://bit.ly][Bitly]]'s [[http://bitly.github.io/nsq/][NSQ]] is a realtime distributed messaging platform designed for fault-tolerance and high-availability, and is used in production at bitly and a bunch of other companies.
+- [[http://bit.ly][Bitly]]'s [[http://bitly.github.io/nsq/][NSQ]] is a realtime
+  distributed messaging platform designed for fault-tolerance and high-availability,
+  and is used in production at bitly and a bunch of other companies.
 
-- [[http://canonical.com/][Canonical]]'s [[https://juju.ubuntu.com/][JuJu]] infrastructure automation system was rewritten in Go. Project lead Gustavo Niemeyer said "It's not a single aspect of Go that makes it a compelling choice, but rather the careful organization of well-crafted small pieces."
+- [[http://canonical.com/][Canonical]]'s [[https://juju.ubuntu.com/][JuJu]]
+  infrastructure automation system was rewritten in Go.
+  Project lead Gustavo Niemeyer said "It's not a single aspect of Go that
+  makes it a compelling choice,
+  but rather the careful organization of well-crafted small pieces."
 
-- The [[https://github.com/goraft/raft][raft]] package provides an implementation of the [[https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf][Raft]] distributed consensus protocol. It is the basis of Go projects like [[https://github.com/coreos/etcd][etcd]] and [[https://github.com/skynetservices/skydns][SkyDNS]].
+- The [[https://github.com/goraft/raft][raft]] package provides an implementation
+  of the [[https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf][Raft]]
+  distributed consensus protocol.
+  It is the basis of Go projects like [[https://github.com/coreos/etcd][etcd]]
+  and [[https://github.com/skynetservices/skydns][SkyDNS]].
 
-- Other popular projects include [[https://github.com/biogo/biogo][biogo]], the [[http://www.gorillatoolkit.org/][Gorilla Web Toolkit]], [[https://github.com/golang/groupcache][groupcache]], Mozilla's [[https://github.com/mozilla-services/heka][heka]], the [[https://github.com/cznic/kv][kv]] and [[https://github.com/cznic/ql][ql]] lightweight storage systems, and the [[http://skydb.io/][Sky]] behavioral database. 
+- Other popular projects include [[https://github.com/biogo/biogo][biogo]],
+  the [[http://www.gorillatoolkit.org/][Gorilla Web Toolkit]],
+  [[https://github.com/golang/groupcache][groupcache]],
+  Mozilla's [[https://github.com/mozilla-services/heka][heka]],
+  the [[https://github.com/cznic/kv][kv]] and [[https://github.com/cznic/ql][ql]]
+  lightweight storage systems,
+  and the [[http://skydb.io/][Sky]] behavioral database.
 
-But this is just the tip of the iceberg. The number of high-quality open source Go projects is phenomenal. Prolific Go hacker [[http://xph.us/software/][Keith Rarick]] put it well: "The state of the Go ecosystem after only four years is astounding. Compare Go in 2013 to Python in 1995 or Java in 1999. Or C++ in 1987!"
+But this is just the tip of the iceberg. The number of high-quality open
+source Go projects is phenomenal.
+Prolific Go hacker [[http://xph.us/software/][Keith Rarick]] put it well:
+"The state of the Go ecosystem after only four years is astounding.
+Compare Go in 2013 to Python in 1995 or Java in 1999. Or C++ in 1987!"
 
-Businesses are enjoying Go, too. The [[https://golang.org/wiki/GoUsers][Go Users wiki page]] lists dozens of success stories (and if you use Go, please add yourself to it). Some examples:
+Businesses are enjoying Go, too. The [[https://golang.org/wiki/GoUsers][Go Users wiki page]]
+lists dozens of success stories (and if you use Go,
+please add yourself to it). Some examples:
 
-- [[https://blog.cloudflare.com/go-at-cloudflare][CloudFlare]] built their distributed DNS service entirely with Go, and are in the process of migrating their gigabytes-per-minute logging infrastructure to the language. Programmer John Graham-Cumming said "We've found Go to be the perfect match for our needs: the combination of familiar syntax, a powerful type system, a strong network library and built-in concurrency means that more and more projects are being built here in Go." 
+- [[https://blog.cloudflare.com/go-at-cloudflare][CloudFlare]] built their
+  distributed DNS service entirely with Go,
+  and are in the process of migrating their gigabytes-per-minute logging infrastructure to the language.
+  Programmer John Graham-Cumming said "We've found Go to be the perfect match for our needs:
+  the combination of familiar syntax, a powerful type system,
+  a strong network library and built-in concurrency means that more and more
+  projects are being built here in Go."
 
-- [[http://soundcloud.com][SoundCloud]] is an audio distribution service that has "dozens of [[http://backstage.soundcloud.com/2012/07/go-at-soundcloud/][systems in Go]], touching almost every part of the site, and in many cases powering features from top to bottom." Engineer Peter Bourgon said "Go demonstrates that the cruft that burdens other languages and ecosystems—stuff that developers have learned to deal with, often in anger—is simply not a necessary part of modern programming. With Go, I have a straightforward and non-adversarial relationship with my tools, from development to production."
+- [[http://soundcloud.com][SoundCloud]] is an audio distribution service
+  that has "dozens of [[http://backstage.soundcloud.com/2012/07/go-at-soundcloud/][systems in Go]],
+  touching almost every part of the site, and in many cases powering features
+  from top to bottom." Engineer Peter Bourgon said "Go demonstrates that the
+  cruft that burdens other languages and ecosystems—stuff that developers
+  have learned to deal with,
+  often in anger—is simply not a necessary part of modern programming.
+  With Go, I have a straightforward and non-adversarial relationship with my tools,
+  from development to production."
 
-- The [[https://ngrok.com/][ngrok]] service allows web developers to provide remote access to their development environments. Its author Alan Shreve said that "ngrok's success as a project is due in no small part to choosing Go as the implementation language," citing Go's HTTP libraries, efficiency, cross-platform compatibility, and ease of deployment as the major benefits.
+- The [[https://ngrok.com/][ngrok]] service allows web developers to provide
+  remote access to their development environments.
+  Its author Alan Shreve said that "ngrok's success as a project is due in
+  no small part to choosing Go as the implementation language," citing Go's HTTP libraries,
+  efficiency, cross-platform compatibility,
+  and ease of deployment as the major benefits.
 
-- [[http://poptip.com][Poptip]] provides social analytics services, and product engineer Andy Bonventre said "What started as an experiment in writing a single service in Go turned into moving almost our entire infrastructure over to it. What I love about Go the most is not necessarily the features of the language, but the focus on tooling, testing, and other elements that make writing large applications much more manageable."
+- [[http://poptip.com][Poptip]] provides social analytics services,
+  and product engineer Andy Bonventre said "What started as an experiment
+  in writing a single service in Go turned into moving almost our entire infrastructure over to it.
+  What I love about Go the most is not necessarily the features of the language,
+  but the focus on tooling, testing, and other elements that make writing
+  large applications much more manageable."
 
-- Music collaboration startup [[http://splice.com][Splice]] chose to build their service with Go. Co-founder Matt Aimonetti said "We seriously studied and considered many programming languages, but Go's simplicity, efficiency, philosophy and community won us over."
+- Music collaboration startup [[http://splice.com][Splice]] chose to build
+  their service with Go.
+  Co-founder Matt Aimonetti said "We seriously studied and considered many
+  programming languages,
+  but Go's simplicity, efficiency, philosophy and community won us over."
 
-- And, of course, engineering teams across Google are moving to Go. Engineer Matt Welsh recently [[http://matt-welsh.blogspot.com.au/2013/08/rewriting-large-production-system-in-go.html][shared his experience]] rewriting a large production service in Go. Other notable public examples include YouTube's [[https://github.com/youtube/vitess][vitess project]] and [[https://talks.golang.org/2013/oscon-dl.slide][dl.google.com]]. We hope to share more stories like these soon.
+- And, of course, engineering teams across Google are moving to Go.
+  Engineer Matt Welsh recently [[http://matt-welsh.blogspot.com.au/2013/08/rewriting-large-production-system-in-go.html][shared his experience]]
+  rewriting a large production service in Go.
+  Other notable public examples include YouTube's [[https://github.com/youtube/vitess][vitess project]]
+  and [[https://talks.golang.org/2013/oscon-dl.slide][dl.google.com]].
+  We hope to share more stories like these soon.
 
-In September 2012, [[http://apcera.com/][Apcera]] CEO Derek Collison [[https://twitter.com/derekcollison/status/245522124666716160][predicted]] that "Go will become the dominant language for systems work in [Infastructure-as-a-Service], Orchestration, and [Platform-as-a-Service] in 24 months." Looking at the list above, it's easy to believe that prediction.
+In September 2012, [[http://apcera.com/][Apcera]] CEO Derek Collison [[https://twitter.com/derekcollison/status/245522124666716160][predicted]]
+that "Go will become the dominant language for systems work in [Infastructure-as-a-Service],
+Orchestration, and [Platform-as-a-Service] in 24 months." Looking at the list above,
+it's easy to believe that prediction.
 
-So how can you get involved? Whether you're a seasoned Go programmer or just Go-curious, there are many ways to get started in the Go community:
+So how can you get involved? Whether you're a seasoned Go programmer or just Go-curious,
+there are many ways to get started in the Go community:
 
-- [[https://blog.golang.org/getthee-to-go-meetup][Join your nearest Go User Group]], where your local gophers meet to share their knowledge and experience. These groups are popping up all over the world. I have personally spoken at Go groups in Amsterdam, Berlin, Gothenburg, London, Moscow, Munich, New York City, Paris, San Francisco, Seoul, Stockholm, Sydney, Tokyo, and Warsaw; but there are [[https://golang.org/wiki/GoUserGroups][many more]]!
+- [[https://blog.golang.org/getthee-to-go-meetup][Join your nearest Go User Group]],
+  where your local gophers meet to share their knowledge and experience.
+  These groups are popping up all over the world.
+  I have personally spoken at Go groups in Amsterdam,
+  Berlin, Gothenburg, London, Moscow, Munich,
+  New York City, Paris, San Francisco, Seoul,
+  Stockholm, Sydney, Tokyo, and Warsaw;
+  but there are [[https://golang.org/wiki/GoUserGroups][many more]]!
 
-- Create or contribute to an open source Go project (or [[https://golang.org/doc/contribute.html][to Go itself]]). (And if you're building something, we'd love to hear from you on the [[http://groups.google.com/group/golang-nuts][Go mailing list]].)
+- Create or contribute to an open source Go project (or [[https://golang.org/doc/contribute.html][to Go itself]]).
+  (And if you're building something, we'd love to hear from you on the [[http://groups.google.com/group/golang-nuts][Go mailing list]].)
 
-- If you're in Europe in February 2014, come along to the [[https://code.google.com/p/go-wiki/wiki/Fosdem2014][Go Devroom]] at [[https://fosdem.org/2014/][FOSDEM 2014]].
+- If you're in Europe in February 2014, come along to the [[https://code.google.com/p/go-wiki/wiki/Fosdem2014][Go Devroom]]
+  at [[https://fosdem.org/2014/][FOSDEM 2014]].
 
-- Attend [[http://gophercon.com][GopherCon]], the first major Go conference, in Denver in April 2014. The event is organized by the [[http://www.gopheracademy.com][Gopher Academy]], who also run a [[http://www.gopheracademy.com/jobs][Go job board]].
+- Attend [[http://gophercon.com][GopherCon]],
+  the first major Go conference, in Denver in April 2014.
+  The event is organized by the [[http://www.gopheracademy.com][Gopher Academy]],
+  who also run a [[http://www.gopheracademy.com/jobs][Go job board]].
 
 The Go team has been amazed by the growth of the Go community over the past
 four years. We are thrilled to see so many great things being built with Go,
diff --git a/content/8years.article b/content/8years.article
index 4af0fd6..78876ca 100644
--- a/content/8years.article
+++ b/content/8years.article
@@ -71,7 +71,8 @@
 Go Bridge and Women Who Go.
 
 This year we had two significant firsts for the Go project. We had our first
-[[https://blog.golang.org/contributors-summit][contributor summit]] where people from across the Go community came together to
+[[https://blog.golang.org/contributors-summit][contributor summit]] where
+people from across the Go community came together to
 discuss the needs and future of the Go project. Shortly after, we had the
 first [[https://blog.golang.org/contributor-workshop][Go contributor workshop]] 
 where hundreds of people came to make their first Go contribution.
@@ -87,23 +88,47 @@
 thousands of additional applications and libraries at [[https://github.com/avelino/awesome-go][awesome-go]]. Here are
 just a handful of the most popular:
 
-- [[https://mobyproject.org/][Moby]] (formerly Docker) is a tool for packaging and running applications in lightweight containers. Its creator Solomon Hykes cited Go's standard library, concurrency primitives, and ease of deployment as key factors, and said "To put it simply, if Docker had not been written in Go, it would not have been as successful."
+- [[https://mobyproject.org/][Moby]] (formerly Docker) is a tool for packaging
+  and running applications in lightweight containers.
+  Its creator Solomon Hykes cited Go's standard library,
+  concurrency primitives, and ease of deployment as key factors,
+  and said "To put it simply, if Docker had not been written in Go,
+  it would not have been as successful."
 
-- [[https://kubernetes.io/][Kubernetes]] is a system for automating deployment, scaling and management of containerized applications. Initially designed by Google and used in the Google cloud, Kubernetes now is a critical part of every major cloud offering. 
+- [[https://kubernetes.io/][Kubernetes]] is a system for automating deployment,
+  scaling and management of containerized applications.
+  Initially designed by Google and used in the Google cloud,
+  Kubernetes now is a critical part of every major cloud offering.
 
-- [[https://gohugo.io/][Hugo]] is now the most popular open-source static website engine. With its amazing speed and flexibility, Hugo makes building websites fun again. According to [[https://w3techs.com/technologies/overview/content_management/all][w3techs]], Hugo now has nearly 3x the usage of Jekyll, the former leader. 
+- [[https://gohugo.io/][Hugo]] is now the most popular open-source static website engine.
+  With its amazing speed and flexibility, Hugo makes building websites fun again.
+  According to [[https://w3techs.com/technologies/overview/content_management/all][w3techs]],
+  Hugo now has nearly 3x the usage of Jekyll, the former leader.
 
-- [[https://prometheus.io/][Prometheus]] is an open source monitoring solution and time series database that powers metrics and alerting designed to be the system you go to during an outage to allow you to quickly diagnose problems.
+- [[https://prometheus.io/][Prometheus]] is an open source monitoring solution
+  and time series database that powers metrics and alerting designed to be
+  the system you go to during an outage to allow you to quickly diagnose problems.
 
-- [[https://grafana.com/][Grafana]] is an open source, feature-rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB.
+- [[https://grafana.com/][Grafana]] is an open source,
+  feature-rich metrics dashboard and graph editor for Graphite,
+  Elasticsearch, OpenTSDB, Prometheus and InfluxDB.
 
 - [[https://getlantern.org/][Lantern]] delivers fast, reliable and secure access to blocked websites and apps. 
 
-- [[https://syncthing.net/][Syncthing]] is an open-source cross platform peer-to-peer continuous file synchronization application
+- [[https://syncthing.net/][Syncthing]] is an open-source cross platform
+  peer-to-peer continuous file synchronization application
 
-- [[https://keybase.io/][Keybase]] is a new and free security app for mobile phones and computers. Think of it as an open source Dropbox & Slack with end-to-end encryption public-key cryptography. 
+- [[https://keybase.io/][Keybase]] is a new and free security app for mobile
+  phones and computers.
+  Think of it as an open source Dropbox & Slack with end-to-end encryption
+  public-key cryptography.
 
-- [[https://github.com/junegunn/fzf][Fzf]] is an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc. Fzf supports Unix, macOS and has beta support for Windows. It also can operate as a vim plugin. 
+- [[https://github.com/junegunn/fzf][Fzf]] is an interactive Unix filter
+  for command-line that can be used with any list;
+  files, command history, processes, hostnames,
+  bookmarks, git commits, etc.
+  Fzf supports Unix, macOS and has beta support for Windows.
+  It also can operate as a vim plugin.
 
 Many of these authors have said that their projects would not exist without
 Go. Some like Kubernetes and Docker created entirely new solutions. Others
diff --git a/content/a-new-go-api-for-protocol-buffers.article b/content/a-new-go-api-for-protocol-buffers.article
index 9e8d6eb..5230db7 100644
--- a/content/a-new-go-api-for-protocol-buffers.article
+++ b/content/a-new-go-api-for-protocol-buffers.article
@@ -207,11 +207,20 @@
 
 - `github.com/golang/protobuf@v1.3.4` is the most recent pre-APIv2 version of APIv1.
 
-- `github.com/golang/protobuf@v1.4.0` is a version of APIv1 implemented in terms of APIv2. The API is the same, but the underlying implementation is backed by the new one. This version contains functions to convert between the APIv1 and APIv2 `proto.Message` interfaces to ease the transition between the two.
+- `github.com/golang/protobuf@v1.4.0` is a version of APIv1 implemented in terms of APIv2.
+  The API is the same, but the underlying implementation is backed by the new one.
+  This version contains functions to convert between the APIv1 and APIv2 `proto.Message`
+  interfaces to ease the transition between the two.
 
-- `google.golang.org/protobuf@v1.20.0` is APIv2. This module depends upon `github.com/golang/protobuf@v1.4.0`, so any program which uses APIv2 will automatically pick a version of APIv1 which integrates with it.
+- `google.golang.org/protobuf@v1.20.0` is APIv2.
+  This module depends upon `github.com/golang/protobuf@v1.4.0`,
+  so any program which uses APIv2 will automatically pick a version of APIv1
+  which integrates with it.
 
-(Why start at version `v1.20.0`? To provide clarity. We do not anticipate APIv1 to ever reach `v1.20.0`, so the version number alone should be enough to unambiguously differentiate between APIv1 and APIv2.)
+(Why start at version `v1.20.0`? To provide clarity.
+We do not anticipate APIv1 to ever reach `v1.20.0`,
+so the version number alone should be enough to unambiguously differentiate
+between APIv1 and APIv2.)
 
 We intend to maintain support for APIv1 indefinitely.
 
diff --git a/content/advanced-go-concurrency-patterns.article b/content/advanced-go-concurrency-patterns.article
index 10970f2..c3f1eab 100644
--- a/content/advanced-go-concurrency-patterns.article
+++ b/content/advanced-go-concurrency-patterns.article
@@ -6,10 +6,21 @@
 
 * Introduction
 
-At Google I/O a year ago Rob Pike presented [[https://talks.golang.org/2012/concurrency.slide][_Go_Concurrency_Patterns_]], an introduction to Go's concurrency model. Last week, at I/O 2013, Go team member Sameer Ajmani continued the story with [[http://talks.golang.org/2013/advconc.slide][_Advanced_Go_Concurrency_Patterns_]], an in-depth look at a real concurrent programming problem. The talk shows how to detect and avoid deadlocks and race conditions, and demonstrates the implementation of deadlines, cancellation, and more. For those who want to take their Go programming to the next level, this is a must-see.
+At Google I/O a year ago Rob Pike presented [[https://talks.golang.org/2012/concurrency.slide][_Go_Concurrency_Patterns_]],
+an introduction to Go's concurrency model.
+Last week, at I/O 2013, Go team member Sameer Ajmani continued the story
+with [[http://talks.golang.org/2013/advconc.slide][_Advanced_Go_Concurrency_Patterns_]],
+an in-depth look at a real concurrent programming problem.
+The talk shows how to detect and avoid deadlocks and race conditions,
+and demonstrates the implementation of deadlines,
+cancellation, and more.
+For those who want to take their Go programming to the next level, this is a must-see.
 
 .iframe //www.youtube.com/embed/QDDwwePbDtw?rel=0 309 549
 
-The slides are [[https://talks.golang.org/2013/advconc.slide][available here]] (use the left and right arrows to navigate).
+The slides are [[https://talks.golang.org/2013/advconc.slide][available here]]
+(use the left and right arrows to navigate).
 
-The slides were produced with [[https://godoc.org/golang.org/x/tools/present][the present tool]], and the runnable code snippets are powered by the [[http://play.golang.org/][Go Playground]]. The source code for this talk is in [[https://github.com/golang/talks/tree/master/content/2013/advconc][the go.talks sub-repository]].
+The slides were produced with [[https://godoc.org/golang.org/x/tools/present][the present tool]],
+and the runnable code snippets are powered by the [[http://play.golang.org/][Go Playground]].
+The source code for this talk is in [[https://github.com/golang/talks/tree/master/content/2013/advconc][the go.talks sub-repository]].
diff --git a/content/building-stathat-with-go.article b/content/building-stathat-with-go.article
index 81479ec..ccf3daa 100644
--- a/content/building-stathat-with-go.article
+++ b/content/building-stathat-with-go.article
@@ -6,11 +6,24 @@
 
 * Introduction
 
-My name is Patrick Crosby and I'm the founder of a company called Numerotron. We recently released [[http://www.stathat.com][StatHat]].  This post is about why we chose to develop StatHat in [[https://golang.org][Go]], including details about how we are using Go.
+My name is Patrick Crosby and I'm the founder of a company called Numerotron.
+We recently released [[http://www.stathat.com][StatHat]].
+This post is about why we chose to develop StatHat in [[https://golang.org][Go]],
+including details about how we are using Go.
 
-[[http://www.stathat.com][StatHat]] is a tool to track statistics and events in your code.  Everyone from HTML designers to backend engineers can use StatHat easily, as it supports sending stats from HTML, JavaScript, Go, and twelve other languages.
+[[http://www.stathat.com][StatHat]] is a tool to track statistics and events in your code.
+Everyone from HTML designers to backend engineers can use StatHat easily,
+as it supports sending stats from HTML, JavaScript,
+Go, and twelve other languages.
 
-You send your numbers to StatHat; it generates beautiful, fully-embeddable graphs of your data.  StatHat will alert you when specified triggers occur, send you daily email reports, and much more.  So instead of spending time writing tracking or reporting tools for your application, you can concentrate on the code.  While you do the real work, StatHat remains intensely vigilant, like an eagle in its mountaintop nest, or a babysitter on meth.
+You send your numbers to StatHat; it generates beautiful,
+fully-embeddable graphs of your data.
+StatHat will alert you when specified triggers occur,
+send you daily email reports, and much more.
+So instead of spending time writing tracking or reporting tools for your application,
+you can concentrate on the code.
+While you do the real work, StatHat remains intensely vigilant,
+like an eagle in its mountaintop nest, or a babysitter on meth.
 
 Here's an example of a StatHat graph of the temperature in NYC, Chicago, and San Francisco:
 
@@ -18,11 +31,30 @@
 
 * Architecture Overview
 
-StatHat consists of two main services:  incoming statistic/event API calls and the web application for viewing and analyzing stats.  We wanted to keep these as separate as possible to isolate the data collection from the data interaction.   We did this for many reasons, but one major reason is that we anticipate handling a ton of automated incoming API HTTP requests and would thus have different optimization strategies for the API service than a web application interacting with humans.
+StatHat consists of two main services:  incoming statistic/event API calls
+and the web application for viewing and analyzing stats.
+We wanted to keep these as separate as possible to isolate the data collection
+from the data interaction.
+We did this for many reasons, but one major reason is that we anticipate
+handling a ton of automated incoming API HTTP requests and would thus have
+different optimization strategies for the API service than a web application
+interacting with humans.
 
 .image building-stathat-with-go_stathat_architecture.png
 
-The web application service is multi-tiered.  The web server processes all requests and sends them to an interactor layer.  For simple tasks, the interactor will handle generating any necessary data.  For complex tasks, the interactor relies on multiple application servers to handle tasks like generating graphs or analyzing data sets.  After the interactor is finished, the web server sends the result to a presenter.  The presenter responds to the HTTP request with either HTML or JSON.  We can horizontally scale the web, API, application servers, and databases as the demand for services grows and changes over time.  There is no single point of failure as each application server has multiple copies running.  The interactor layer allows us to have different interfaces to the system:  http, command line, automated tests, mobile API.  StatHat uses MySQL for data storage.
+The web application service is multi-tiered.
+The web server processes all requests and sends them to an interactor layer.
+For simple tasks, the interactor will handle generating any necessary data.
+For complex tasks, the interactor relies on multiple application servers
+to handle tasks like generating graphs or analyzing data sets.
+After the interactor is finished, the web server sends the result to a presenter.
+The presenter responds to the HTTP request with either HTML or JSON.
+We can horizontally scale the web, API, application servers,
+and databases as the demand for services grows and changes over time.
+There is no single point of failure as each application server has multiple copies running.
+The interactor layer allows us to have different interfaces to the system:
+http, command line, automated tests, mobile API.
+StatHat uses MySQL for data storage.
 
 * Choosing Go
 
@@ -48,43 +80,108 @@
 
 We evaluated many popular and not-so-popular web technologies and ended up choosing to develop it in Go.
 
-When Go was released in November 2009, I immediately installed it and loved the fast compilation times, goroutines, channels, garbage collection, and all the packages that were available.  I was especially pleased with how few lines of code my applications were using.  I soon experimented with making a web app called [[http://langalot.com/][Langalot]] that concurrently searched through five foreign language dictionaries as you typed in a query.  It was blazingly fast.  I put it online and it's been running since February, 2010.
+When Go was released in November 2009, I immediately installed it and loved
+the fast compilation times,
+goroutines, channels, garbage collection,
+and all the packages that were available.
+I was especially pleased with how few lines of code my applications were using.
+I soon experimented with making a web app called [[http://langalot.com/][Langalot]]
+that concurrently searched through five foreign language dictionaries as
+you typed in a query.
+It was blazingly fast.  I put it online and it's been running since February, 2010.
 
 The following sections detail how Go meets StatHat's requirements and our experience using Go to solve our problems.
 
 * Runtime
 
-We use the standard Go [[https://golang.org/pkg/http/][http package]] for our API and web app servers.  All requests first go through Nginx and any non-file requests are proxied to the Go-powered http servers.  The backend servers are all written in Go and use the [[https://golang.org/pkg/rpc/][rpc package]] to communicate with the frontend.
+We use the standard Go [[https://golang.org/pkg/http/][http package]] for
+our API and web app servers.
+All requests first go through Nginx and any non-file requests are proxied
+to the Go-powered http servers.
+The backend servers are all written in Go and use the [[https://golang.org/pkg/rpc/][rpc package]]
+to communicate with the frontend.
 
 * Templating
 
-We built a template system using the standard [[https://golang.org/pkg/template/][template package]].  Our system adds layouts, some common formatting functions, and the ability to recompile templates on-the-fly during development.  We are very pleased with the performance and functionality of the Go templates.
+We built a template system using the standard [[https://golang.org/pkg/template/][template package]].
+Our system adds layouts, some common formatting functions,
+and the ability to recompile templates on-the-fly during development.
+We are very pleased with the performance and functionality of the Go templates.
 
 * Tinkering
 
-In a previous job, I worked on a video game called Throne of Darkness that was written in C++.  We had a few header files that, when modified, required a full rebuild of the entire system, 20-30 minutes long.  If anyone ever changed `Character.h`, he would be subject to the wrath of every other programmer.  Besides this suffering, it also slowed down development time significantly.
+In a previous job, I worked on a video game called Throne of Darkness that was written in C++.
+We had a few header files that, when modified,
+required a full rebuild of the entire system, 20-30 minutes long.
+If anyone ever changed `Character.h`, he would be subject to the wrath of
+every other programmer.
+Besides this suffering, it also slowed down development time significantly.
 
-Since then, I've always tried to choose technologies that allowed fast, frequent tinkering.  With Go, compilation time is a non-issue.  We can recompile the entire system in seconds, not minutes.  The development web server starts instantly, tests complete in a few seconds.  As mentioned previously, templates are recompiled as they change.  The result is that the StatHat system is very easy to work with, and the compiler is not a bottleneck.
+Since then, I've always tried to choose technologies that allowed fast, frequent tinkering.
+With Go, compilation time is a non-issue.
+We can recompile the entire system in seconds, not minutes.
+The development web server starts instantly,
+tests complete in a few seconds.
+As mentioned previously, templates are recompiled as they change.
+The result is that the StatHat system is very easy to work with,
+and the compiler is not a bottleneck.
 
 * RPC
 
-Since StatHat is a multi-tiered system, we wanted an RPC layer so that all communication was standard.  With Go, we are using the [[https://golang.org/pkg/rpc/][rpc package]] and the [[https://golang.org/pkg/gob/][gob package]] for encoding Go objects.  In Go, the RPC server just takes any Go object and registers its exported methods.  There is no need for an intermediary interface description language.  We've found it very easy to use and many of our core application servers are under 300 lines of code.
+Since StatHat is a multi-tiered system, we wanted an RPC layer so that all
+communication was standard.
+With Go, we are using the [[https://golang.org/pkg/rpc/][rpc package]] and
+the [[https://golang.org/pkg/gob/][gob package]] for encoding Go objects.
+In Go, the RPC server just takes any Go object and registers its exported methods.
+There is no need for an intermediary interface description language.
+We've found it very easy to use and many of our core application servers
+are under 300 lines of code.
 
 * Libraries
 
-We don't want to spend time rewriting libraries for things like SSL, database drivers, JSON/XML parsers.  Although Go is a young language, it has a lot of system packages and a growing number of user-contributed packages.  With only a few exceptions, we have found Go packages for everything we have needed.
+We don't want to spend time rewriting libraries for things like SSL,
+database drivers, JSON/XML parsers.
+Although Go is a young language, it has a lot of system packages and a growing
+number of user-contributed packages.
+With only a few exceptions, we have found Go packages for everything we have needed.
 
 * Open source
 
-In our experience, it has been invaluable to work with open source tools. If something is going awry, it is immensely helpful to be able to examine the source through every layer and not have any black boxes.  Having the code for the language, web server, packages, and tools allows us to understand how every piece of the system works.  Everything in Go is open source.  In the Go codebase, we frequently read the tests as they often give great examples of how to use packages and language features.
+In our experience, it has been invaluable to work with open source tools.
+If something is going awry, it is immensely helpful to be able to examine
+the source through every layer and not have any black boxes.
+Having the code for the language, web server,
+packages, and tools allows us to understand how every piece of the system works.
+Everything in Go is open source.  In the Go codebase,
+we frequently read the tests as they often give great examples of how to
+use packages and language features.
 
 * Performance
 
-People rely on StatHat for up to the minute analysis of their data and we need the system to be as responsive as possible.  In our tests, Go's performance blew away most of the competition.  We tested it against Rails, Sinatra, OpenResty, and Node.  StatHat has always monitored itself by tracking all kinds of performance metrics about requests, the duration of certain tasks, the amount of memory in use.  Because of this, we were able to easily evaluate different technologies.  We've also taken advantage of the benchmark performance testing features of the Go testing package.
+People rely on StatHat for up to the minute analysis of their data and we
+need the system to be as responsive as possible.
+In our tests, Go's performance blew away most of the competition.
+We tested it against Rails, Sinatra, OpenResty, and Node.
+StatHat has always monitored itself by tracking all kinds of performance
+metrics about requests,
+the duration of certain tasks, the amount of memory in use.
+Because of this, we were able to easily evaluate different technologies.
+We've also taken advantage of the benchmark performance testing features
+of the Go testing package.
 
 * Application-Level Concurrency
 
-In a former life, I was the CTO at OkCupid.  My experience there using OKWS taught me the importance of async programming, especially when it comes to dynamic web applications.  There is no reason you should ever do something like this synchronously:  load a user from the database, then find their stats, then find their alerts.  These should all be done concurrently, yet surprisingly, many popular frameworks have no async support.  Go supports this at the language level without any callback spaghetti.  StatHat uses goroutines extensively to run multiple functions concurrently and channels for sharing data between goroutines.
+In a former life, I was the CTO at OkCupid.
+My experience there using OKWS taught me the importance of async programming,
+especially when it comes to dynamic web applications.
+There is no reason you should ever do something like this synchronously:
+load a user from the database, then find their stats,
+then find their alerts.
+These should all be done concurrently, yet surprisingly,
+many popular frameworks have no async support.
+Go supports this at the language level without any callback spaghetti.
+StatHat uses goroutines extensively to run multiple functions concurrently
+and channels for sharing data between goroutines.
 
 * Hosting and Deployment
 
@@ -98,12 +195,24 @@
 
 - Database
 
-There are at least two of each type of server, and they are in different zones for high availability.  Adding a new server to the mix takes just a couple of minutes.
+There are at least two of each type of server,
+and they are in different zones for high availability.
+Adding a new server to the mix takes just a couple of minutes.
 
-To deploy, we first build the entire system into a time-stamped directory. Our packaging script builds the Go applications, compresses the CSS and JS files, and copies all the scripts and configuration files.  This directory is then distributed to all the servers, so they all have an identical distribution.  A script on each server queries its EC2 tags and determines what it is responsible for running and starts/stops/restarts any services. We frequently only deploy to a subset of the servers.
+To deploy, we first build the entire system into a time-stamped directory.
+Our packaging script builds the Go applications,
+compresses the CSS and JS files, and copies all the scripts and configuration files.
+This directory is then distributed to all the servers,
+so they all have an identical distribution.
+A script on each server queries its EC2 tags and determines what it is responsible
+for running and starts/stops/restarts any services.
+We frequently only deploy to a subset of the servers.
 
 * More
 
-For more information on StatHat, please visit [[http://www.stathat.com][stathat.com]]. We are releasing some of the Go code we've written. Go to [[http://www.stathat.com/src][www.stathat.com/src]] for all of the open source StatHat projects.
+For more information on StatHat, please visit [[http://www.stathat.com][stathat.com]].
+We are releasing some of the Go code we've written.
+Go to [[http://www.stathat.com/src][www.stathat.com/src]] for all of the
+open source StatHat projects.
 
 To learn more about Go, visit [[https://golang.org/][golang.org]].
diff --git a/content/c-go-cgo.article b/content/c-go-cgo.article
index 19a01f3..2ee6e92 100644
--- a/content/c-go-cgo.article
+++ b/content/c-go-cgo.article
@@ -6,9 +6,11 @@
 
 * Introduction
 
-Cgo lets Go packages call C code. Given a Go source file written with some special features, cgo outputs Go and C files that can be combined into a single Go package.
+Cgo lets Go packages call C code. Given a Go source file written with some special features,
+cgo outputs Go and C files that can be combined into a single Go package.
 
-To lead with an example, here's a Go package that provides two functions - `Random` and `Seed` - that wrap C's `random` and `srandom` functions.
+To lead with an example, here's a Go package that provides two functions -
+`Random` and `Seed` - that wrap C's `random` and `srandom` functions.
 
 	package rand
 
@@ -27,11 +29,20 @@
 
 Let's look at what's happening here, starting with the import statement.
 
-The `rand` package imports `"C"`, but you'll find there's no such package in the standard Go library. That's because `C` is a "pseudo-package", a special name interpreted by cgo as a reference to C's name space.
+The `rand` package imports `"C"`, but you'll find there's no such package
+in the standard Go library.
+That's because `C` is a "pseudo-package",
+a special name interpreted by cgo as a reference to C's name space.
 
-The `rand` package contains four references to the `C` package: the calls to `C.random` and `C.srandom`, the conversion `C.uint(i)`, and the `import` statement.
+The `rand` package contains four references to the `C` package:
+the calls to `C.random` and `C.srandom`, the conversion `C.uint(i)`,
+and the `import` statement.
 
-The `Random` function calls the standard C library's `random` function and returns the result.  In C, `random` returns a value of the C type `long`, which cgo represents as the type `C.long`. It must be converted to a Go type before it can be used by Go code outside this package, using an ordinary Go type conversion:
+The `Random` function calls the standard C library's `random` function and returns the result.
+In C, `random` returns a value of the C type `long`,
+which cgo represents as the type `C.long`.
+It must be converted to a Go type before it can be used by Go code outside this package,
+using an ordinary Go type conversion:
 
 	func Random() int {
 	    return int(C.random())
@@ -44,13 +55,17 @@
 	    return int(r)
 	}
 
-The `Seed` function does the reverse, in a way. It takes a regular Go `int`, converts it to the C `unsigned`int` type, and passes it to the C function `srandom`.
+The `Seed` function does the reverse, in a way.
+It takes a regular Go `int`, converts it to the C `unsigned`int` type,
+and passes it to the C function `srandom`.
 
 	func Seed(i int) {
 	    C.srandom(C.uint(i))
 	}
 
-Note that cgo knows the `unsigned`int` type as `C.uint`; see the [[https://golang.org/cmd/cgo][cgo documentation]] for a complete list of these numeric type names.
+Note that cgo knows the `unsigned`int` type as `C.uint`;
+see the [[https://golang.org/cmd/cgo][cgo documentation]] for a complete
+list of these numeric type names.
 
 The one detail of this example we haven't examined yet is the comment above the `import` statement.
 
@@ -59,9 +74,19 @@
 	*/
 	import "C"
 
-Cgo recognizes this comment.  Any lines starting with `#cgo` followed by a space character are removed; these become directives for cgo. The remaining lines are used as a header when compiling the C parts of the package.  In this case those lines are just a single `#include` statement, but they can be almost any C code.  The `#cgo` directives are used to provide flags for the compiler and linker when building the C parts of the package.
+Cgo recognizes this comment.  Any lines starting with `#cgo` followed by
+a space character are removed;
+these become directives for cgo.
+The remaining lines are used as a header when compiling the C parts of the package.
+In this case those lines are just a single `#include` statement,
+but they can be almost any C code.
+The `#cgo` directives are used to provide flags for the compiler and linker
+when building the C parts of the package.
 
-There is a limitation: if your program uses any `//export` directives, then the C code in the comment may only include declarations (`extern`int`f();`), not definitions (`int`f()`{`return`1;`}`).  You can use `//export` directives to make Go functions accessible to C code.
+There is a limitation: if your program uses any `//export` directives,
+then the C code in the comment may only include declarations (`extern`int`f();`),
+not definitions (`int`f()`{`return`1;`}`).
+You can use `//export` directives to make Go functions accessible to C code.
 
 The `#cgo` and `//export` directives are documented in the [[https://golang.org/cmd/cgo/][cgo documentation]].
 
@@ -69,9 +94,12 @@
 
 Unlike Go, C doesn't have an explicit string type. Strings in C are represented by a zero-terminated array of chars.
 
-Conversion between Go and C strings is done with the `C.CString`, `C.GoString`, and `C.GoStringN` functions. These conversions make a copy of the string data.
+Conversion between Go and C strings is done with the `C.CString`,
+`C.GoString`, and `C.GoStringN` functions.
+These conversions make a copy of the string data.
 
-This next example implements a `Print` function that writes a string to standard output using C's `fputs` function from the `stdio` library:
+This next example implements a `Print` function that writes a string to
+standard output using C's `fputs` function from the `stdio` library:
 
 	package print
 
@@ -86,9 +114,17 @@
 	    C.free(unsafe.Pointer(cs))
 	}
 
-Memory allocations made by C code are not known to Go's memory manager. When you create a C string with `C.CString` (or any C memory allocation) you must remember to free the memory when you're done with it by calling `C.free`.
+Memory allocations made by C code are not known to Go's memory manager.
+When you create a C string with `C.CString` (or any C memory allocation)
+you must remember to free the memory when you're done with it by calling `C.free`.
 
-The call to `C.CString` returns a pointer to the start of the char array, so before the function exits we convert it to an [[https://golang.org/pkg/unsafe/#Pointer][`unsafe.Pointer`]] and release the memory allocation with `C.free`. A common idiom in cgo programs is to [[https://golang.org/doc/articles/defer_panic_recover.html][`defer`]] the free immediately after allocating (especially when the code that follows is more complex than a single function call), as in this rewrite of `Print`:
+The call to `C.CString` returns a pointer to the start of the char array,
+so before the function exits we convert it to an [[https://golang.org/pkg/unsafe/#Pointer][`unsafe.Pointer`]]
+and release the memory allocation with `C.free`.
+A common idiom in cgo programs is to [[https://golang.org/doc/articles/defer_panic_recover.html][`defer`]]
+the free immediately after allocating (especially when the code that follows
+is more complex than a single function call),
+as in this rewrite of `Print`:
 
 	func Print(s string) {
 	    cs := C.CString(s)
@@ -98,10 +134,16 @@
 
 * Building cgo packages
 
-To build cgo packages, just use [[https://golang.org/cmd/go/#Compile_packages_and_dependencies][`go`build`]] or [[https://golang.org/cmd/go/#Compile_and_install_packages_and_dependencies][`go`install`]] as usual. The go tool recognizes the special `"C"` import and automatically uses cgo for those files.
+To build cgo packages, just use [[https://golang.org/cmd/go/#Compile_packages_and_dependencies][`go`build`]]
+or [[https://golang.org/cmd/go/#Compile_and_install_packages_and_dependencies][`go`install`]] as usual.
+The go tool recognizes the special `"C"` import and automatically uses cgo for those files.
 
 * More cgo resources
 
-The [[https://golang.org/cmd/cgo/][cgo command]] documentation has more detail about the C pseudo-package and the build process. The [[https://golang.org/misc/cgo/][cgo examples]] in the Go tree demonstrate more advanced concepts.
+The [[https://golang.org/cmd/cgo/][cgo command]] documentation has more
+detail about the C pseudo-package and the build process.
+The [[https://golang.org/misc/cgo/][cgo examples]] in the Go tree demonstrate
+more advanced concepts.
 
-Finally, if you're curious as to how all this works internally, take a look at the introductory comment of the runtime package's [[https://golang.org/src/runtime/cgocall.go][cgocall.go]].
+Finally, if you're curious as to how all this works internally,
+take a look at the introductory comment of the runtime package's [[https://golang.org/src/runtime/cgocall.go][cgocall.go]].
diff --git a/content/concurrency-is-not-parallelism.article b/content/concurrency-is-not-parallelism.article
index 19c7cb6..41563e9 100644
--- a/content/concurrency-is-not-parallelism.article
+++ b/content/concurrency-is-not-parallelism.article
@@ -6,14 +6,26 @@
 
 * Introduction
 
-If there's one thing most people know about Go, is that it is designed for concurrency. No introduction to Go is complete without a demonstration of its goroutines and channels.
+If there's one thing most people know about Go,
+is that it is designed for concurrency.
+No introduction to Go is complete without a demonstration of its goroutines and channels.
 
-But when people hear the word _concurrency_ they often think of _parallelism_, a related but quite distinct concept. In programming, concurrency is the _composition_ of independently executing processes, while parallelism is the simultaneous _execution_ of (possibly related) computations. Concurrency is about _dealing_with_ lots of things at once. Parallelism is about _doing_ lots of things at once.
+But when people hear the word _concurrency_ they often think of _parallelism_,
+a related but quite distinct concept.
+In programming, concurrency is the _composition_ of independently executing processes,
+while parallelism is the simultaneous _execution_ of (possibly related) computations.
+Concurrency is about _dealing_with_ lots of things at once.
+Parallelism is about _doing_ lots of things at once.
 
-To clear up this conflation, Rob Pike gave a talk at [[http://heroku.com/][Heroku]]'s [[http://waza.heroku.com/][Waza]] conference entitled _Concurrency_is_not_parallelism_, and a video recording of the talk was released a few months ago.
+To clear up this conflation, Rob Pike gave a talk at [[http://heroku.com/][Heroku]]'s
+[[http://waza.heroku.com/][Waza]] conference entitled _Concurrency_is_not_parallelism_,
+and a video recording of the talk was released a few months ago.
 
 .iframe //player.vimeo.com/video/49718712?badge=0 281 500
 
-The slides are available at [[https://talks.golang.org/2012/waza.slide][talks.golang.org]] (use the left and right arrow keys to navigate).
+The slides are available at [[https://talks.golang.org/2012/waza.slide][talks.golang.org]]
+(use the left and right arrow keys to navigate).
 
-To learn about Go's concurrency primitives, watch [[http://www.youtube.com/watch?v=f6kdp27TYZs][Go concurrency patterns]] ([[https://talks.golang.org/2012/concurrency.slide][slides]]).
+To learn about Go's concurrency primitives,
+watch [[http://www.youtube.com/watch?v=f6kdp27TYZs][Go concurrency patterns]]
+([[https://talks.golang.org/2012/concurrency.slide][slides]]).
diff --git a/content/constants.article b/content/constants.article
index 7258aa9..36c4edc 100644
--- a/content/constants.article
+++ b/content/constants.article
@@ -14,8 +14,10 @@
 
 * Background: C
 
-In the early days of thinking about Go, we talked about a number of problems caused by the way C and its descendants let you mix and match numeric types.
-Many mysterious bugs, crashes, and portability problems are caused by expressions that combine integers of different sizes and "signedness".
+In the early days of thinking about Go, we talked about a number of problems
+caused by the way C and its descendants let you mix and match numeric types.
+Many mysterious bugs, crashes, and portability problems are caused by expressions
+that combine integers of different sizes and "signedness".
 Although to a seasoned C programmer the result of a calculation like
 
 	unsigned int u = 1e9;
@@ -29,7 +31,9 @@
 
 Nasty bugs lurk here.
 
-C has a set of rules called "the usual arithmetic conversions" and it is an indicator of their subtlety that they have changed over the years (introducing yet more bugs, retroactively).
+C has a set of rules called "the usual arithmetic conversions" and it is
+an indicator of their subtlety that they have changed over the years (introducing
+yet more bugs, retroactively).
 
 When designing Go, we decided to avoid this minefield by mandating that there is _no_ mixing of numeric types.
 If you want to add `i` and `u`, you must be explicit about what you want the result to be.
@@ -38,20 +42,27 @@
 	var u uint
 	var i int
 
-you can write either `uint(i)+u` or `i+int(u)`, with both the meaning and type of the addition clearly expressed, but unlike in C you cannot write `i+u`.
+you can write either `uint(i)+u` or `i+int(u)`,
+with both the meaning and type of the addition clearly expressed,
+but unlike in C you cannot write `i+u`.
 You can't even mix `int` and `int32`, even when `int` is a 32-bit type.
 
 This strictness eliminates a common cause of bugs and other failures.
 It is a vital property of Go.
-But it has a cost: it sometimes requires programmers to decorate their code with clumsy numeric conversions to express their meaning clearly.
+But it has a cost: it sometimes requires programmers to decorate their code
+with clumsy numeric conversions to express their meaning clearly.
 
 And what about constants?
 Given the declarations above, what would make it legal to write `i` `=` `0` or `u` `=` `0`?
 What is the _type_ of `0`?
 It would be unreasonable to require constants to have type conversions in simple contexts such as `i` `=` `int(0)`.
 
-We soon realized the answer lay in making numeric constants work differently from how they behave in other C-like languages.
-After much thinking and experimentation, we came up with a design that we believe feels right almost always, freeing the programmer from converting constants all the time yet being able to write things like `math.Sqrt(2)` without being chided by the compiler.
+We soon realized the answer lay in making numeric constants work differently
+from how they behave in other C-like languages.
+After much thinking and experimentation, we came up with a design that we
+believe feels right almost always,
+freeing the programmer from converting constants all the time yet being
+able to write things like `math.Sqrt(2)` without being chided by the compiler.
 
 In short, constants in Go just work, most of the time anyway.
 Let's see how that happens.
@@ -61,37 +72,47 @@
 First, a quick definition.
 In Go, `const` is a keyword introducing a name for a scalar value such as `2` or `3.14159` or `"scrumptious"`.
 Such values, named or otherwise, are called _constants_ in Go.
-Constants can also be created by expressions built from constants, such as `2+3` or `2+3i` or `math.Pi/2` or `("go"+"pher")`.
+Constants can also be created by expressions built from constants,
+such as `2+3` or `2+3i` or `math.Pi/2` or `("go"+"pher")`.
 
-Some languages don't have constants, and others have a more general definition of constant or application of the word `const`.
-In C and C++, for instance, `const` is a type qualifier that can codify more intricate properties of more intricate values.
+Some languages don't have constants, and others have a more general definition
+of constant or application of the word `const`.
+In C and C++, for instance, `const` is a type qualifier that can codify
+more intricate properties of more intricate values.
 
 But in Go, a constant is just a simple, unchanging value, and from here on we're talking only about Go.
 
 * String constants
 
-There are many kinds of numeric constants—integers, floats, runes, signed, unsigned, imaginary, complex—so let's start with a simpler form of constant: strings.
-String constants are easy to understand and provide a smaller space in which to explore the type issues of constants in Go.
+There are many kinds of numeric constants—integers,
+floats, runes, signed, unsigned, imaginary,
+complex—so let's start with a simpler form of constant: strings.
+String constants are easy to understand and provide a smaller space in which
+to explore the type issues of constants in Go.
 
 A string constant encloses some text between double quotes.
-(Go also has raw string literals, enclosed by backquotes ``````, but for the purpose of this discussion they have all the same properties.)
+(Go also has raw string literals, enclosed by backquotes ``````,
+but for the purpose of this discussion they have all the same properties.)
 Here is a string constant:
 
 	"Hello, 世界"
 
-(For much more detail about the representation and interpretation of strings, see [[https://blog.golang.org/strings][this blog post]].)
+(For much more detail about the representation and interpretation of strings,
+see [[https://blog.golang.org/strings][this blog post]].)
 
 What type does this string constant have?
 The obvious answer is `string`, but that is _wrong_.
 
-This is an _untyped_string_constant_, which is to say it is a constant textual value that does not yet have a fixed type.
+This is an _untyped_string_constant_, which is to say it is a constant textual
+value that does not yet have a fixed type.
 Yes, it's a string, but it's not a Go value of type `string`.
 It remains an untyped string constant even when given a name:
 
 	const hello = "Hello, 世界"
 
 After this declaration, `hello` is also an untyped string constant.
-An untyped constant is just a value, one not yet given a defined type that would force it to obey the strict rules that prevent combining differently typed values.
+An untyped constant is just a value, one not yet given a defined type that
+would force it to obey the strict rules that prevent combining differently typed values.
 
 It is this notion of an _untyped_ constant that makes it possible for us to use constants in Go with great freedom.
 
@@ -119,7 +140,9 @@
 
 .play -edit constants/string4.go /START/,/STOP/
 
-Returning to our _untyped_ string constant, it has the helpful property that, since it has no type, assigning it to a typed variable does not cause a type error.
+Returning to our _untyped_ string constant,
+it has the helpful property that, since it has no type,
+assigning it to a typed variable does not cause a type error.
 That is, we can write
 
 	m = "Hello, 世界"
@@ -128,10 +151,13 @@
 
 	m = hello
 
-because, unlike the typed constants `typedHello` and `myStringHello`, the untyped constants `"Hello,`世界"` and `hello` _have_no_type_.
+because, unlike the typed constants `typedHello` and `myStringHello`,
+the untyped constants `"Hello,`世界"` and `hello` _have_no_type_.
 Assigning them to a variable of any type compatible with strings works without error.
 
-These untyped string constants are strings, of course, so they can only be used where a string is allowed, but they do not have _type_ `string`.
+These untyped string constants are strings,
+of course, so they can only be used where a string is allowed,
+but they do not have _type_ `string`.
 
 * Default type
 
@@ -140,7 +166,8 @@
 	str := "Hello, 世界"
 
 and by now you might be asking, "if the constant is untyped, how does `str` get a type in this variable declaration?"
-The answer is that an untyped constant has a default type, an implicit type that it transfers to a value if a type is needed where none is provided.
+The answer is that an untyped constant has a default type,
+an implicit type that it transfers to a value if a type is needed where none is provided.
 For untyped string constants, that default type is obviously `string`, so
 
 	str := "Hello, 世界"
@@ -153,9 +180,14 @@
 
 	var str string = "Hello, 世界"
 
-One way to think about untyped constants is that they live in a kind of ideal space of values, a space less restrictive than Go's full type system.
-But to do anything with them, we need to assign them to variables, and when that happens the _variable_ (not the constant itself) needs a type, and the constant can tell the variable what type it should have.
-In this example, `str` becomes a value of type `string` because the untyped string constant gives the declaration its default type, `string`.
+One way to think about untyped constants is that they live in a kind of
+ideal space of values,
+a space less restrictive than Go's full type system.
+But to do anything with them, we need to assign them to variables,
+and when that happens the _variable_ (not the constant itself) needs a type,
+and the constant can tell the variable what type it should have.
+In this example, `str` becomes a value of type `string` because the untyped
+string constant gives the declaration its default type, `string`.
 
 In such a declaration, a variable is declared with a type and initial value.
 Sometimes when we use a constant, however, the destination of the value is not so clear.
@@ -172,7 +204,8 @@
 to pass as an argument, and the concrete type stored for that argument is the default type of the constant.
 This process is analogous to what we saw earlier when declaring an initialized value using an untyped string constant.
 
-You can see the result in this example, which uses the format `%v` to print the value and `%T` to print the type of the value being passed to `fmt.Printf`:
+You can see the result in this example, which uses the format `%v` to print
+the value and `%T` to print the type of the value being passed to `fmt.Printf`:
 
 .play -edit constants/default2.go /START/,/STOP/
 
@@ -180,10 +213,12 @@
 
 .play -edit constants/default3.go /START/,/STOP/
 
-(For more information about how interface values work, see the first sections of [[https://blog.golang.org/laws-of-reflection][this blog post]].)
+(For more information about how interface values work,
+see the first sections of [[https://blog.golang.org/laws-of-reflection][this blog post]].)
 
 In summary, a typed constant obeys all the rules of typed values in Go.
-On the other hand, an untyped constant does not carry a Go type in the same way and can be mixed and matched more freely.
+On the other hand, an untyped constant does not carry a Go type in the same
+way and can be mixed and matched more freely.
 It does, however, have a default type that is exposed when, and only when, no other type information is available.
 
 * Default type determined by syntax
@@ -191,7 +226,9 @@
 The default type of an untyped constant is determined by its syntax.
 For string constants, the only possible implicit type is `string`.
 For [[https://golang.org/ref/spec#Numeric_types][numeric constants]], the implicit type has more variety.
-Integer constants default to `int`, floating-point constants `float64`, rune constants to `rune` (an alias for `int32`), and imaginary constants to `complex128`.
+Integer constants default to `int`, floating-point constants `float64`,
+rune constants to `rune` (an alias for `int32`),
+and imaginary constants to `complex128`.
 Here's our canonical print statement used repeatedly to show the default types in action:
 
 .play -edit constants/syntax.go /START/,/STOP/
@@ -235,7 +272,8 @@
 .play -edit constants/float3.go /Println/
 
 The error is, "constant 1.00000e+1000 overflows float64", which is true.
-But `Huge` might be useful: we can use it in expressions with other constants and use the value of those expressions if the result
+But `Huge` might be useful: we can use it in expressions with other constants
+and use the value of those expressions if the result
 can be represented in the range of a `float64`.
 The statement,
 
@@ -243,24 +281,29 @@
 
 prints `10`, as one would expect.
 
-In a related way, floating-point constants may have very high precision, so that arithmetic involving them is more accurate.
+In a related way, floating-point constants may have very high precision,
+so that arithmetic involving them is more accurate.
 The constants defined in the [[https://golang.org/pkg/math][math]] package are given with many more digits than are
 available in a `float64`. Here is the definition of `math.Pi`:
 
 	Pi	= 3.14159265358979323846264338327950288419716939937510582097494459
 
-When that value is assigned to a variable, some of the precision will be lost; the assignment will create the `float64` (or `float32`)
+When that value is assigned to a variable,
+some of the precision will be lost;
+the assignment will create the `float64` (or `float32`)
 value closest to the high-precision value. This snippet
 
 .play -edit constants/float5.go /START/,/STOP/
 
 prints `3.141592653589793`.
 
-Having so many digits available means that calculations like `Pi/2` or other more intricate evaluations can carry more precision
+Having so many digits available means that calculations like `Pi/2` or other
+more intricate evaluations can carry more precision
 until the result is assigned, making calculations involving constants easier to write without losing precision.
 It also means that there is no occasion in which the floating-point corner cases like infinities,
 soft underflows, and `NaNs` arise in constant expressions.
-(Division by a constant zero is a compile-time error, and when everything is a number there's no such thing as "not a number".)
+(Division by a constant zero is a compile-time error,
+and when everything is a number there's no such thing as "not a number".)
 
 * Complex numbers
 
@@ -271,7 +314,8 @@
 
 The default type of a complex number is `complex128`, the larger-precision version composed of two `float64` values.
 
-For clarity in our example, we wrote out the full expression `(0.0+1.0i)`, but this value can be shortened to `0.0+1.0i`,
+For clarity in our example, we wrote out the full expression `(0.0+1.0i)`,
+but this value can be shortened to `0.0+1.0i`,
 `1.0i` or even `1i`.
 
 Let's play a trick.
@@ -288,7 +332,8 @@
 .play -edit constants/complex2.go /START/,/STOP/
 
 prints `complex128:` `(2+0i)`.
-But numerically, `Two` can be stored in a scalar floating-point number, a `float64` or `float32`, with no loss of information.
+But numerically, `Two` can be stored in a scalar floating-point number,
+a `float64` or `float32`, with no loss of information.
 Thus we can assign `Two` to a `float64`, either in an initialization or an assignment, without problems:
 
 .play -edit constants/complex3.go /START/,/STOP/
@@ -300,7 +345,8 @@
 * Integers
 
 At last we come to integers.
-They have more moving parts—[[https://golang.org/ref/spec#Numeric_types][many sizes, signed or unsigned, and more]]—but they play by the same rules.
+They have more moving parts—[[https://golang.org/ref/spec#Numeric_types][many sizes, signed or unsigned, and more]]—but
+they play by the same rules.
 For the last time, here is our familiar example, using just `int` this time:
 
 .play -edit constants/int1.go /START/,/STOP/
@@ -312,27 +358,36 @@
 	uintptr
 
 (plus the aliases `byte` for `uint8` and `rune` for `int32`).
-That's a lot, but the pattern in the way constants work should be familiar enough by now that you can see how things will play out.
+That's a lot, but the pattern in the way constants work should be familiar
+enough by now that you can see how things will play out.
 
-As mentioned above, integers come in a couple of forms and each form has its own default type: `int` for simple constants like `123` or `0xFF` or `-14`
+As mentioned above, integers come in a couple of forms and each form has
+its own default type:
+`int` for simple constants like `123` or `0xFF` or `-14`
 and `rune` for quoted characters like 'a', '世' or '\r'.
 
 No constant form has as its default type an unsigned integer type.
-However, the flexibility of untyped constants means we can initialize unsigned integer variables using simple constants as long as we are clear about the type.
+However, the flexibility of untyped constants means we can initialize unsigned
+integer variables using simple constants as long as we are clear about the type.
 It's analogous to how we can initialize a `float64` using a complex number with zero imaginary part.
-Here are several different ways to initialize a `uint`; all are equivalent, but all must mention the type explicitly for the result to be unsigned.
+Here are several different ways to initialize a `uint`;
+all are equivalent, but all must mention the type explicitly for the result to be unsigned.
 
 	var u uint = 17
 	var u = uint(17)
 	u := uint(17)
 
-Similarly to the range issue mentioned in the section on floating-point values, not all integer values can fit in all integer types.
-There are two problems that might arise: the value might be too large, or it might be a negative value being assigned to an unsigned integer type.
-For instance, `int8` has range -128 through 127, so constants outside of that range can never be assigned to a variable of type `int8`:
+Similarly to the range issue mentioned in the section on floating-point values,
+not all integer values can fit in all integer types.
+There are two problems that might arise: the value might be too large,
+or it might be a negative value being assigned to an unsigned integer type.
+For instance, `int8` has range -128 through 127,
+so constants outside of that range can never be assigned to a variable of type `int8`:
 
 .play -edit constants/int2.go /var/
 
-Similarly, `uint8`, also known as `byte`, has range 0 through 255, so a large or negative constant cannot be assigned to a `uint8`:
+Similarly, `uint8`, also known as `byte`,
+has range 0 through 255, so a large or negative constant cannot be assigned to a `uint8`:
 
 .play -edit constants/int3.go /var/
 
@@ -362,7 +417,8 @@
 
 .play -edit constants/exercise1.go /const/
 
-but that is illegal because -1 cannot be represented by an unsigned variable; `-1` is not in the range of unsigned values.
+but that is illegal because -1 cannot be represented by an unsigned variable;
+`-1` is not in the range of unsigned values.
 A conversion won't help either, for the same reason:
 
 .play -edit constants/exercise2.go /const/
@@ -373,11 +429,13 @@
 
 .play -edit constants/exercise3.go /START/,/STOP/
 
-but only because `v` is a variable; if we made `v` a constant, even an untyped constant, we'd be back in forbidden territory:
+but only because `v` is a variable; if we made `v` a constant,
+even an untyped constant, we'd be back in forbidden territory:
 
 .play -edit constants/exercise4.go /START/,/STOP/
 
-We return to our previous approach, but instead of `-1` we try `^0`, the bitwise negation of an arbitrary number of zero bits.
+We return to our previous approach, but instead of `-1` we try `^0`,
+the bitwise negation of an arbitrary number of zero bits.
 But that fails too, for a similar reason:
 In the space of numeric values,
 `^0` represents an infinite number of ones, so we lose information if we assign that to any fixed-size integer:
@@ -401,13 +459,17 @@
 (on the [[https://blog.golang.org/playground][playground]], it's 32),
 this constant correctly represents the largest value a variable of type `uint` can hold.
 
-If you understand the analysis that got us to this result, you understand all the important points about constants in Go.
+If you understand the analysis that got us to this result,
+you understand all the important points about constants in Go.
 
 * Numbers
 
-The concept of untyped constants in Go means that all the numeric constants, whether integer, floating-point, complex, or even character values,
+The concept of untyped constants in Go means that all the numeric constants,
+whether integer, floating-point, complex,
+or even character values,
 live in a kind of unified space.
-It's when we bring them to the computational world of variables, assignments, and operations that the actual types matter.
+It's when we bring them to the computational world of variables,
+assignments, and operations that the actual types matter.
 But as long as we stay in the world of numeric constants, we can mix and match values as we like.
 All these constants have numeric value 1:
 
@@ -419,7 +481,8 @@
 	'b' - 'a'
 	1.0+3i-3.0i
 
-Therefore, although they have different implicit default types, written as untyped constants they can be assigned to a variable of any integer type:
+Therefore, although they have different implicit default types,
+written as untyped constants they can be assigned to a variable of any integer type:
 
 .play -edit constants/numbers1.go /START/,/STOP/
 
@@ -432,7 +495,8 @@
 which yields 145.5, which is pointless except to prove a point.
 
 But the real point of these rules is flexibility.
-That flexibility means that, despite the fact that in Go it is illegal in the same expression to mix floating-point and integer variables,
+That flexibility means that, despite the fact that in Go it is illegal in
+the same expression to mix floating-point and integer variables,
 or even `int` and `int32` variables, it is fine to write
 
 	sqrt2 := math.Sqrt(2)
diff --git a/content/debugging-go-code-status-report.article b/content/debugging-go-code-status-report.article
index 0706d14..9da89e1 100644
--- a/content/debugging-go-code-status-report.article
+++ b/content/debugging-go-code-status-report.article
@@ -6,9 +6,18 @@
 
 * Introduction
 
-When it comes to debugging, nothing beats a few strategic print statements to inspect variables or a well-placed panic to obtain a stack trace.  However, sometimes you’re missing either the patience or the source code, and in those cases a good debugger can be invaluable.  That's why over the past few releases we have been improving the support in Go’s gc linker (6l, 8l) for GDB, the GNU debugger.
+When it comes to debugging, nothing beats a few strategic print statements
+to inspect variables or a well-placed panic to obtain a stack trace.
+However, sometimes you’re missing either the patience or the source code,
+and in those cases a good debugger can be invaluable.
+That's why over the past few releases we have been improving the support
+in Go’s gc linker (6l,
+8l) for GDB, the GNU debugger.
 
-In the latest release (2010-11-02), the 6l and 8l linkers emit DWARF3 debugging information when writing ELF (Linux, FreeBSD) or Mach-O (Mac OS X) binaries.  The DWARF code is rich enough to let you do the following:
+In the latest release (2010-11-02), the 6l and 8l linkers emit DWARF3 debugging
+information when writing ELF (Linux,
+FreeBSD) or Mach-O (Mac OS X) binaries.
+The DWARF code is rich enough to let you do the following:
 
 - load a Go program in GDB version 7.x,
 - list all Go, C, and assembly source files by line (parts of the Go runtime are written in C and assembly),
@@ -18,10 +27,28 @@
 
 There are still some inconveniences:
 
-- The emitted DWARF code is unreadable by the GDB version 6.x that ships with Mac OS X. We would gladly accept patches to make the DWARF output compatible with the standard OS X GDB, but until that’s fixed you’ll need to download, build, and install GDB 7.x to use it under OS X. The source can be found at [[http://sourceware.org/gdb/download/][http://sourceware.org/gdb/download/]].  Due to the particulars of OS X you’ll need to install the binary on a local file system with `chgrp`procmod` and `chmod`g+s`.
-- Names are qualified with a package name and, as GDB doesn't understand Go packages, you must reference each item by its full name. For example, the variable named `v` in package `main` must be referred to as `'main.v'`, in single quotes. A consequence of this is that tab completion of variable and function names does not work.
-- Lexical scoping information is somewhat obfuscated. If there are multiple variables of the same name, the nth instance will have a suffix of the form ‘#n’. We plan to fix this, but it will require some changes to the data exchanged between the compiler and linker.
-- Slice and string variables are represented as their underlying structure in the runtime library. They will look something like `{data`=`0x2aaaaab3e320,`len`=`1,`cap`=`1}.` For slices, you must dereference the data pointer to inspect the elements.
+- The emitted DWARF code is unreadable by the GDB version 6.x that ships with Mac OS X.
+  We would gladly accept patches to make the DWARF output compatible with
+  the standard OS X GDB,
+  but until that’s fixed you’ll need to download,
+  build, and install GDB 7.x to use it under OS X.
+  The source can be found at [[http://sourceware.org/gdb/download/][http://sourceware.org/gdb/download/]].
+  Due to the particulars of OS X you’ll need to install the binary on a
+  local file system with `chgrp`procmod` and `chmod`g+s`.
+- Names are qualified with a package name and,
+  as GDB doesn't understand Go packages, you must reference each item by its full name.
+  For example, the variable named `v` in package `main` must be referred to
+  as `'main.v'`, in single quotes.
+  A consequence of this is that tab completion of variable and function names does not work.
+- Lexical scoping information is somewhat obfuscated.
+  If there are multiple variables of the same name,
+  the nth instance will have a suffix of the form ‘#n’.
+  We plan to fix this, but it will require some changes to the data exchanged
+  between the compiler and linker.
+- Slice and string variables are represented as their underlying structure
+  in the runtime library.
+  They will look something like `{data`=`0x2aaaaab3e320,`len`=`1,`cap`=`1}.` For slices,
+  you must dereference the data pointer to inspect the elements.
 
 Some things don't work yet:
 
@@ -29,6 +56,10 @@
 - Only Go variables are annotated with type information; the runtime's C variables are not.
 - Windows and ARM binaries do not contain DWARF debugging information and, as such, cannot be inspected with GDB.
 
-Over the coming months we intend to address these issues, either by changing the compiler and linker or by using the Python extensions to GDB. In the meantime, we hope that Go programmers will benefit from having better access to this well-known debugging tool.
+Over the coming months we intend to address these issues,
+either by changing the compiler and linker or by using the Python extensions to GDB.
+In the meantime, we hope that Go programmers will benefit from having better
+access to this well-known debugging tool.
 
-P.S. The DWARF information can also be read by tools other than GDB.  For example, on Linux you can use it with the sysprof system-wide profiler.
+P.S. The DWARF information can also be read by tools other than GDB.
+For example, on Linux you can use it with the sysprof system-wide profiler.
diff --git a/content/debugging-go-programs-with-gnu-debugger.article b/content/debugging-go-programs-with-gnu-debugger.article
index 6988636..2df3997 100644
--- a/content/debugging-go-programs-with-gnu-debugger.article
+++ b/content/debugging-go-programs-with-gnu-debugger.article
@@ -6,7 +6,13 @@
 
 * Introduction
 
-Last year we [[https://blog.golang.org/2010/11/debugging-go-code-status-report.html][reported]] that Go's [[https://golang.org/cmd/gc/][gc]]/[[https://golang.org/cmd/6l/][ld]] toolchain produces DWARFv3 debugging information that can be read by the GNU Debugger (GDB). Since then, work has continued steadily on improving support for debugging Go code with GDB.
-Among the improvements are the ability to inspect goroutines and to print native Go data types, including structs, slices, strings, maps, interfaces, and channels.
+Last year we [[https://blog.golang.org/2010/11/debugging-go-code-status-report.html][reported]]
+that Go's [[https://golang.org/cmd/gc/][gc]]/[[https://golang.org/cmd/6l/][ld]]
+toolchain produces DWARFv3 debugging information that can be read by the GNU Debugger (GDB).
+Since then, work has continued steadily on improving support for debugging Go code with GDB.
+Among the improvements are the ability to inspect goroutines and to print
+native Go data types,
+including structs, slices, strings, maps,
+interfaces, and channels.
 
 To learn more about Go and GDB, see the [[https://golang.org/doc/debugging_with_gdb.html][Debugging with GDB]] article.
diff --git a/content/debugging-what-you-deploy.article b/content/debugging-what-you-deploy.article
index b197359..9d1fde8 100644
--- a/content/debugging-what-you-deploy.article
+++ b/content/debugging-what-you-deploy.article
@@ -6,35 +6,73 @@
 
 * Introduction
 
-Go 1.11 and Go 1.12 make significant progress toward allowing developers to debug the same optimized binaries that they deploy to production.
+Go 1.11 and Go 1.12 make significant progress toward allowing developers
+to debug the same optimized binaries that they deploy to production.
 
-As the Go compiler has become increasingly aggressive in producing faster binaries, we've lost ground in debuggability. In Go 1.10, users needed to disable optimizations entirely in order to have a good debugging experience from interactive tools like Delve. But users shouldn’t have to trade performance for debuggability, especially when running production services. If your problem is occurring in production, you need to debug it in production, and that shouldn’t require deploying unoptimized binaries.
+As the Go compiler has become increasingly aggressive in producing faster binaries,
+we've lost ground in debuggability.
+In Go 1.10, users needed to disable optimizations entirely in order to have
+a good debugging experience from interactive tools like Delve.
+But users shouldn’t have to trade performance for debuggability,
+especially when running production services.
+If your problem is occurring in production,
+you need to debug it in production, and that shouldn’t require deploying
+unoptimized binaries.
 
-For Go 1.11 and 1.12, we focused on improving the debugging experience on optimized binaries (the default setting of the Go compiler). Improvements include
+For Go 1.11 and 1.12, we focused on improving the debugging experience on
+optimized binaries (the default setting of the Go compiler).
+Improvements include
 
 - More accurate value inspection, in particular for arguments at function entry;
-- More precisely identifying statement boundaries so that stepping is less jumpy and breakpoints more often land where the programmer expects;
-- And preliminary support for Delve to call Go functions (goroutines and garbage collection make this trickier than it is in C and C++).
+- More precisely identifying statement boundaries so that stepping is less
+  jumpy and breakpoints more often land where the programmer expects;
+- And preliminary support for Delve to call Go functions (goroutines and
+  garbage collection make this trickier than it is in C and C++).
 
 * Debugging optimized code with Delve
 
-[[https://github.com/go-delve/delve][Delve]] is a debugger for Go on x86 supporting both Linux and macOS. Delve is aware of goroutines and other Go features and provides one of the best Go debugging experiences. Delve is also the debugging engine behind [[https://www.jetbrains.com/go/][GoLand]], [[https://code.visualstudio.com/][VS Code]], and [[https://github.com/fatih/vim-go][Vim]].
+[[https://github.com/go-delve/delve][Delve]] is a debugger for Go on x86
+supporting both Linux and macOS.
+Delve is aware of goroutines and other Go features and provides one of the
+best Go debugging experiences.
+Delve is also the debugging engine behind [[https://www.jetbrains.com/go/][GoLand]],
+[[https://code.visualstudio.com/][VS Code]],
+and [[https://github.com/fatih/vim-go][Vim]].
 
-Delve normally rebuilds the code it is debugging with `-gcflags`"all=-N`-l"`, which disables inlining and most optimizations.  To debug optimized code with delve, first build the optimized binary, then use `dlv`exec`your_program` to debug it.  Or, if you have a core file from a crash, you can examine it with `dlv`core`your_program`your_core`. With 1.12 and the latest Delve releases, you should be able to examine many variables, even in optimized binaries.
+Delve normally rebuilds the code it is debugging with `-gcflags`"all=-N`-l"`,
+which disables inlining and most optimizations.
+To debug optimized code with delve, first build the optimized binary,
+then use `dlv`exec`your_program` to debug it.
+Or, if you have a core file from a crash,
+you can examine it with `dlv`core`your_program`your_core`.
+With 1.12 and the latest Delve releases, you should be able to examine many variables,
+even in optimized binaries.
 
 * Improved value inspection
 
-When debugging optimized binaries produced by Go 1.10, variable values were usually completely unavailable. In contrast, starting with Go 1.11, variables can usually be examined even in optimized binaries, unless they’ve been optimized away completely. In Go 1.11 the compiler began emitting DWARF location lists so debuggers can track variables as they move in and out of registers and reconstruct complex objects that are split across different registers and stack slots.
+When debugging optimized binaries produced by Go 1.10,
+variable values were usually completely unavailable.
+In contrast, starting with Go 1.11, variables can usually be examined even
+in optimized binaries,
+unless they’ve been optimized away completely.
+In Go 1.11 the compiler began emitting DWARF location lists so debuggers
+can track variables as they move in and out of registers and reconstruct
+complex objects that are split across different registers and stack slots.
 
 * Improved stepping
 
-This shows an example of stepping through a simple function in a debugger in 1.10, with flaws (skipped and repeated lines) highlighted by red arrows.
+This shows an example of stepping through a simple function in a debugger in 1.10,
+with flaws (skipped and repeated lines) highlighted by red arrows.
 
 .image debugging-what-you-deploy.svg _ 450
 
-Flaws like this make it easy to lose track of where you are when stepping through a program and interfere with hitting breakpoints.
+Flaws like this make it easy to lose track of where you are when stepping
+through a program and interfere with hitting breakpoints.
 
-Go 1.11 and 1.12 record statement boundary information and do a better job of tracking source line numbers through optimizations and inlining. As a result, in Go 1.12, stepping through this code stops on every line and does so in the order you would expect.
+Go 1.11 and 1.12 record statement boundary information and do a better job
+of tracking source line numbers through optimizations and inlining.
+As a result, in Go 1.12, stepping through this code stops on every line
+and does so in the order you would expect.
 
 * Function calls
 
@@ -48,12 +86,30 @@
 
 * The path forward
 
-Go 1.12 is a step toward a better debugging experience for optimized binaries and we have plans to improve it even further.
+Go 1.12 is a step toward a better debugging experience for optimized binaries
+and we have plans to improve it even further.
 
-There are fundamental tradeoffs between debuggability and performance, so we’re focusing on the highest-priority debugging defects, and working to collect automated metrics to monitor our progress and catch regressions.
+There are fundamental tradeoffs between debuggability and performance,
+so we’re focusing on the highest-priority debugging defects,
+and working to collect automated metrics to monitor our progress and catch regressions.
 
-We’re focusing on generating correct information for debuggers about variable locations, so if a variable can be printed, it is printed correctly. We’re also looking at making variable values available more of the time, particularly at key points like call sites, though in many cases improving this would require slowing down program execution. Finally, we’re working on improving stepping: we’re focusing on the order of stepping with panics, the order of stepping around loops, and generally trying to follow source order where possible.
+We’re focusing on generating correct information for debuggers about variable locations,
+so if a variable can be printed, it is printed correctly.
+We’re also looking at making variable values available more of the time,
+particularly at key points like call sites,
+though in many cases improving this would require slowing down program execution.
+Finally, we’re working on improving stepping:
+we’re focusing on the order of stepping with panics,
+the order of stepping around loops, and generally trying to follow source
+order where possible.
 
 * A note on macOS support
 
-Go 1.11 started compressing debug information to reduce binary sizes. This is natively supported by Delve, but neither LLDB nor GDB support compressed debug info on macOS. If you are using LLDB or GDB, there are two workarounds: build binaries with `-ldflags=-compressdwarf=false`, or use [[https://godoc.org/golang.org/x/tools/cmd/splitdwarf][splitdwarf]] (`go`get`golang.org/x/tools/cmd/splitdwarf`) to decompress the debug information in an existing binary.
+Go 1.11 started compressing debug information to reduce binary sizes.
+This is natively supported by Delve, but neither LLDB nor GDB support compressed
+debug info on macOS.
+If you are using LLDB or GDB, there are two workarounds:
+build binaries with `-ldflags=-compressdwarf=false`,
+or use [[https://godoc.org/golang.org/x/tools/cmd/splitdwarf][splitdwarf]]
+(`go`get`golang.org/x/tools/cmd/splitdwarf`) to decompress the debug information
+in an existing binary.
diff --git a/content/defer-panic-and-recover.article b/content/defer-panic-and-recover.article
index 2c4018c..8bea0ab 100644
--- a/content/defer-panic-and-recover.article
+++ b/content/defer-panic-and-recover.article
@@ -6,10 +6,16 @@
 
 * Introduction
 
-Go has the usual mechanisms for control flow: if, for, switch, goto.  It also has the go statement to run code in a separate goroutine.  Here I'd like to discuss some of the less common ones: defer, panic, and recover.
+Go has the usual mechanisms for control flow:
+if, for, switch, goto.
+It also has the go statement to run code in a separate goroutine.
+Here I'd like to discuss some of the less common ones:
+defer, panic, and recover.
 
  
-A *defer*statement* pushes a function call onto a list. The list of saved calls is executed after the surrounding function returns. Defer is commonly used to simplify functions that perform various clean-up actions.
+A *defer*statement* pushes a function call onto a list.
+The list of saved calls is executed after the surrounding function returns.
+Defer is commonly used to simplify functions that perform various clean-up actions.
 
  
 For example, let's look at a function that opens two files and copies the contents of one file to the other:
@@ -32,7 +38,12 @@
 	    return
 	}
 
-This works, but there is a bug. If the call to os.Create fails, the function will return without closing the source file. This can be easily remedied by putting a call to src.Close before the second return statement, but if the function were more complex the problem might not be so easily noticed and resolved. By introducing defer statements we can ensure that the files are always closed:
+This works, but there is a bug. If the call to os.Create fails,
+the function will return without closing the source file.
+This can be easily remedied by putting a call to src.Close before the second return statement,
+but if the function were more complex the problem might not be so easily
+noticed and resolved.
+By introducing defer statements we can ensure that the files are always closed:
 
  
 	func CopyFile(dstName, srcName string) (written int64, err error) {
@@ -51,13 +62,16 @@
 	    return io.Copy(dst, src)
 	}
 
-Defer statements allow us to think about closing each file right after opening it, guaranteeing that, regardless of the number of return statements in the function, the files _will_ be closed.
+Defer statements allow us to think about closing each file right after opening it,
+guaranteeing that, regardless of the number of return statements in the function,
+the files _will_ be closed.
 
 The behavior of defer statements is straightforward and predictable. There are three simple rules:
  
 1. _A_deferred_function's_arguments_are_evaluated_when_the_defer_statement_is_evaluated._
  
-In this example, the expression "i" is evaluated when the Println call is deferred. The deferred call will print "0" after the function returns.
+In this example, the expression "i" is evaluated when the Println call is deferred.
+The deferred call will print "0" after the function returns.
 
  
 	func a() {
@@ -80,7 +94,9 @@
  
 3. _Deferred_functions_may_read_and_assign_to_the_returning_function's_named_return_values._
  
-In this example, a deferred function increments the return value i _after_ the surrounding function returns. Thus, this function returns 2:
+In this example, a deferred function increments the return value i _after_
+the surrounding function returns.
+Thus, this function returns 2:
 
 	func c() (i int) {
 	    defer func() { i++ }()
@@ -91,10 +107,23 @@
 This is convenient for modifying the error return value of a function; we will see an example of this shortly.
 
  
-*Panic* is a built-in function that stops the ordinary flow of control and begins _panicking_. When the function F calls panic, execution of F stops, any deferred functions in F are executed normally, and then F returns to its caller. To the caller, F then behaves like a call to panic. The process continues up the stack until all functions in the current goroutine have returned, at which point the program crashes. Panics can be initiated by invoking panic directly. They can also be caused by runtime errors, such as out-of-bounds array accesses.
+*Panic* is a built-in function that stops the ordinary flow of control and begins _panicking_.
+When the function F calls panic, execution of F stops,
+any deferred functions in F are executed normally,
+and then F returns to its caller.
+To the caller, F then behaves like a call to panic.
+The process continues up the stack until all functions in the current goroutine have returned,
+at which point the program crashes.
+Panics can be initiated by invoking panic directly.
+They can also be caused by runtime errors,
+such as out-of-bounds array accesses.
 
  
-*Recover* is a built-in function that regains control of a panicking goroutine. Recover is only useful inside deferred functions. During normal execution, a call to recover will return nil and have no other effect. If the current goroutine is panicking, a call to recover will capture the value given to panic and resume normal execution.
+*Recover* is a built-in function that regains control of a panicking goroutine.
+Recover is only useful inside deferred functions.
+During normal execution, a call to recover will return nil and have no other effect.
+If the current goroutine is panicking, a call to recover will capture the
+value given to panic and resume normal execution.
 
  
 Here's an example program that demonstrates the mechanics of panic and defer:
@@ -130,7 +159,11 @@
 	}
 
  
-The function g takes the int i, and panics if i is greater than 3, or else it calls itself with the argument i+1. The function f defers a function that calls recover and prints the recovered value (if it is non-nil). Try to picture what the output of this program might be before reading on.
+The function g takes the int i, and panics if i is greater than 3,
+or else it calls itself with the argument i+1.
+The function f defers a function that calls recover and prints the recovered
+value (if it is non-nil).
+Try to picture what the output of this program might be before reading on.
 
  
 The program will output:
@@ -151,7 +184,10 @@
 
  
 
-If we remove the deferred function from f the panic is not recovered and reaches the top of the goroutine's call stack, terminating the program. This modified program will output:
+If we remove the deferred function from f the panic is not recovered and
+reaches the top of the goroutine's call stack,
+terminating the program.
+This modified program will output:
 
  
 	Calling g.
@@ -171,9 +207,17 @@
 
  
 
-For a real-world example of *panic* and *recover*, see the [[https://golang.org/pkg/encoding/json/][json package]] from the Go standard library. It encodes an interface with a set of recursive functions. If an error occurs when traversing the value, panic is called to unwind the stack to the top-level function call, which recovers from the panic and returns an appropriate error value (see the 'error' and 'marshal' methods of the encodeState type in [[https://golang.org/src/pkg/encoding/json/encode.go][encode.go]]).
+For a real-world example of *panic* and *recover*,
+see the [[https://golang.org/pkg/encoding/json/][json package]] from the
+Go standard library.
+It encodes an interface with a set of recursive functions.
+If an error occurs when traversing the value,
+panic is called to unwind the stack to the top-level function call,
+which recovers from the panic and returns an appropriate error value (see
+the 'error' and 'marshal' methods of the encodeState type in [[https://golang.org/src/pkg/encoding/json/encode.go][encode.go]]).
 
-The convention in the Go libraries is that even when a package uses panic internally, its external API still presents explicit error return values.
+The convention in the Go libraries is that even when a package uses panic internally,
+its external API still presents explicit error return values.
 
  
 Other uses of *defer* (beyond the file.Close example given earlier) include releasing a mutex:
@@ -194,4 +238,7 @@
 and more.
 
  
-In summary, the defer statement (with or without panic and recover) provides an unusual and powerful mechanism for control flow.  It can be used to model a number of features implemented by special-purpose structures in other programming languages. Try it out.
+In summary, the defer statement (with or without panic and recover) provides
+an unusual and powerful mechanism for control flow.
+It can be used to model a number of features implemented by special-purpose
+structures in other programming languages. Try it out.
diff --git a/content/error-handling-and-go.article b/content/error-handling-and-go.article
index 95aed00..07d84d5 100644
--- a/content/error-handling-and-go.article
+++ b/content/error-handling-and-go.article
@@ -6,11 +6,15 @@
 
 * Introduction
 
-If you have written any Go code you have probably encountered the built-in `error` type. Go code uses `error` values to indicate an abnormal state. For example, the `os.Open` function returns a non-nil `error` value when it fails to open a file.
+If you have written any Go code you have probably encountered the built-in `error` type.
+Go code uses `error` values to indicate an abnormal state.
+For example, the `os.Open` function returns a non-nil `error` value when
+it fails to open a file.
 
 	func Open(name string) (file *File, err error)
 
-The following code uses `os.Open` to open a file. If an error occurs it calls `log.Fatal` to print the error message and stop.
+The following code uses `os.Open` to open a file.
+If an error occurs it calls `log.Fatal` to print the error message and stop.
 
 	    f, err := os.Open("filename.ext")
 	    if err != nil {
@@ -18,19 +22,26 @@
 	    }
 	    // do something with the open *File f
 
-You can get a lot done in Go knowing just this about the `error` type, but in this article we'll take a closer look at `error` and discuss some good practices for error handling in Go.
+You can get a lot done in Go knowing just this about the `error` type,
+but in this article we'll take a closer look at `error` and discuss some
+good practices for error handling in Go.
 
 * The error type
 
-The `error` type is an interface type. An `error` variable represents any value that can describe itself as a string. Here is the interface's declaration:
+The `error` type is an interface type. An `error` variable represents any
+value that can describe itself as a string.
+Here is the interface's declaration:
 
 	type error interface {
 	    Error() string
 	}
 
-The `error` type, as with all built in types, is [[https://golang.org/doc/go_spec.html#Predeclared_identifiers][predeclared]] in the [[https://golang.org/doc/go_spec.html#Blocks][universe block]].
+The `error` type, as with all built in types,
+is [[https://golang.org/doc/go_spec.html#Predeclared_identifiers][predeclared]]
+in the [[https://golang.org/doc/go_spec.html#Blocks][universe block]].
 
-The most commonly-used `error` implementation is the [[https://golang.org/pkg/errors/][errors]] package's unexported `errorString` type.
+The most commonly-used `error` implementation is the [[https://golang.org/pkg/errors/][errors]]
+package's unexported `errorString` type.
 
 	// errorString is a trivial implementation of error.
 	type errorString struct {
@@ -41,7 +52,9 @@
 	    return e.s
 	}
 
-You can construct one of these values with the `errors.New` function. It takes a string that it converts to an `errors.errorString` and returns as an `error` value.
+You can construct one of these values with the `errors.New` function.
+It takes a string that it converts to an `errors.errorString` and returns
+as an `error` value.
 
 	// New returns an error that formats as the given text.
 	func New(text string) error {
@@ -57,7 +70,11 @@
 	    // implementation
 	}
 
-A caller passing a negative argument to `Sqrt` receives a non-nil `error` value (whose concrete representation is an `errors.errorString` value). The caller can access the error string ("math: square root of...") by calling the `error`'s `Error` method, or by just printing it:
+A caller passing a negative argument to `Sqrt` receives a non-nil `error`
+value (whose concrete representation is an `errors.errorString` value).
+The caller can access the error string ("math:
+square root of...") by calling the `error`'s `Error` method,
+or by just printing it:
 
 	    f, err := Sqrt(-1)
 	    if err != nil {
@@ -66,17 +83,27 @@
 
 The [[https://golang.org/pkg/fmt/][fmt]] package formats an `error` value by calling its `Error()`string` method.
 
-It is the error implementation's responsibility to summarize the context. The error returned by `os.Open` formats as "open /etc/passwd: permission denied," not just "permission denied."  The error returned by our `Sqrt` is missing information about the invalid argument.
+It is the error implementation's responsibility to summarize the context.
+The error returned by `os.Open` formats as "open /etc/passwd:
+permission denied," not just "permission denied."  The error returned by
+our `Sqrt` is missing information about the invalid argument.
 
-To add that information, a useful function is the `fmt` package's `Errorf`. It formats a string according to `Printf`'s rules and returns it as an `error` created by `errors.New`.
+To add that information, a useful function is the `fmt` package's `Errorf`.
+It formats a string according to `Printf`'s rules and returns it as an `error`
+created by `errors.New`.
 
 	    if f < 0 {
 	        return 0, fmt.Errorf("math: square root of negative number %g", f)
 	    }
 
-In many cases `fmt.Errorf` is good enough, but since `error` is an interface, you can use arbitrary data structures as error values, to allow callers to inspect the details of the error.
+In many cases `fmt.Errorf` is good enough,
+but since `error` is an interface, you can use arbitrary data structures as error values,
+to allow callers to inspect the details of the error.
 
-For instance, our hypothetical callers might want to recover the invalid argument passed to `Sqrt`. We can enable that by defining a new error implementation instead of using `errors.errorString`:
+For instance, our hypothetical callers might want to recover the invalid
+argument passed to `Sqrt`.
+We can enable that by defining a new error implementation instead of using
+`errors.errorString`:
 
 	type NegativeSqrtError float64
 
@@ -84,9 +111,14 @@
 	    return fmt.Sprintf("math: square root of negative number %g", float64(f))
 	}
 
-A sophisticated caller can then use a [[https://golang.org/doc/go_spec.html#Type_assertions][type assertion]] to check for a `NegativeSqrtError` and handle it specially, while callers that just pass the error to `fmt.Println` or `log.Fatal` will see no change in behavior.
+A sophisticated caller can then use a [[https://golang.org/doc/go_spec.html#Type_assertions][type assertion]]
+to check for a `NegativeSqrtError` and handle it specially,
+while callers that just pass the error to `fmt.Println` or `log.Fatal` will
+see no change in behavior.
 
-As another example, the [[https://golang.org/pkg/encoding/json/][json]] package specifies a `SyntaxError` type that the `json.Decode` function returns when it encounters a syntax error parsing a JSON blob.
+As another example, the [[https://golang.org/pkg/encoding/json/][json]]
+package specifies a `SyntaxError` type that the `json.Decode` function returns
+when it encounters a syntax error parsing a JSON blob.
 
 	type SyntaxError struct {
 	    msg    string // description of error
@@ -95,7 +127,8 @@
 
 	func (e *SyntaxError) Error() string { return e.msg }
 
-The `Offset` field isn't even shown in the default formatting of the error, but callers can use it to add file and line information to their error messages:
+The `Offset` field isn't even shown in the default formatting of the error,
+but callers can use it to add file and line information to their error messages:
 
 	    if err := dec.Decode(&val); err != nil {
 	        if serr, ok := err.(*json.SyntaxError); ok {
@@ -105,9 +138,14 @@
 	        return err
 	    }
 
-(This is a slightly simplified version of some [[https://github.com/camlistore/go4/blob/03efcb870d84809319ea509714dd6d19a1498483/jsonconfig/eval.go#L123-L135][actual code]] from the [[http://camlistore.org][Camlistore]] project.)
+(This is a slightly simplified version of some [[https://github.com/camlistore/go4/blob/03efcb870d84809319ea509714dd6d19a1498483/jsonconfig/eval.go#L123-L135][actual code]]
+from the [[http://camlistore.org][Camlistore]] project.)
 
-The `error` interface requires only a `Error` method; specific error implementations might have additional methods. For instance, the [[https://golang.org/pkg/net/][net]] package returns errors of type `error`, following the usual convention, but some of the error implementations have additional methods defined by the `net.Error` interface:
+The `error` interface requires only a `Error` method;
+specific error implementations might have additional methods.
+For instance, the [[https://golang.org/pkg/net/][net]] package returns errors of type `error`,
+following the usual convention, but some of the error implementations have
+additional methods defined by the `net.Error` interface:
 
 	package net
 
@@ -117,7 +155,10 @@
 	    Temporary() bool // Is the error temporary?
 	}
 
-Client code can test for a `net.Error` with a type assertion and then distinguish transient network errors from permanent ones. For instance, a web crawler might sleep and retry when it encounters a temporary error and give up otherwise.
+Client code can test for a `net.Error` with a type assertion and then distinguish
+transient network errors from permanent ones.
+For instance, a web crawler might sleep and retry when it encounters a temporary
+error and give up otherwise.
 
 	        if nerr, ok := err.(net.Error); ok && nerr.Temporary() {
 	            time.Sleep(1e9)
@@ -129,9 +170,15 @@
 
 * Simplifying repetitive error handling
 
-In Go, error handling is important. The language's design and conventions encourage you to explicitly check for errors where they occur (as distinct from the convention in other languages of throwing exceptions and sometimes catching them). In some cases this makes Go code verbose, but fortunately there are some techniques you can use to minimize repetitive error handling.
+In Go, error handling is important. The language's design and conventions
+encourage you to explicitly check for errors where they occur (as distinct
+from the convention in other languages of throwing exceptions and sometimes catching them).
+In some cases this makes Go code verbose,
+but fortunately there are some techniques you can use to minimize repetitive error handling.
 
-Consider an [[https://cloud.google.com/appengine/docs/go/][App Engine]] application with an HTTP handler that retrieves a record from the datastore and formats it with a template.
+Consider an [[https://cloud.google.com/appengine/docs/go/][App Engine]]
+application with an HTTP handler that retrieves a record from the datastore
+and formats it with a template.
 
 	func init() {
 	    http.HandleFunc("/view", viewRecord)
@@ -150,7 +197,13 @@
 	    }
 	}
 
-This function handles errors returned by the `datastore.Get` function and `viewTemplate`'s `Execute` method. In both cases, it presents a simple error message to the user with the HTTP status code 500 ("Internal Server Error"). This looks like a manageable amount of code, but add some more HTTP handlers and you quickly end up with many copies of identical error handling code.
+This function handles errors returned by the `datastore.Get` function and
+`viewTemplate`'s `Execute` method.
+In both cases, it presents a simple error message to the user with the HTTP
+status code 500 ("Internal Server Error").
+This looks like a manageable amount of code,
+but add some more HTTP handlers and you quickly end up with many copies
+of identical error handling code.
 
 To reduce the repetition we can define our own HTTP `appHandler` type that includes an `error` return value:
 
@@ -168,7 +221,11 @@
 	    return viewTemplate.Execute(w, record)
 	}
 
-This is simpler than the original version, but the [[https://golang.org/pkg/net/http/][http]] package doesn't understand functions that return `error`. To fix this we can implement the `http.Handler` interface's `ServeHTTP` method on `appHandler`:
+This is simpler than the original version,
+but the [[https://golang.org/pkg/net/http/][http]] package doesn't understand
+functions that return `error`.
+To fix this we can implement the `http.Handler` interface's `ServeHTTP`
+method on `appHandler`:
 
 	func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	    if err := fn(w, r); err != nil {
@@ -176,15 +233,25 @@
 	    }
 	}
 
-The `ServeHTTP` method calls the `appHandler` function and displays the returned error (if any) to the user.  Notice that the method's receiver, `fn`, is a function. (Go can do that!) The method invokes the function by calling the receiver in the expression `fn(w,`r)`.
+The `ServeHTTP` method calls the `appHandler` function and displays the
+returned error (if any) to the user.
+Notice that the method's receiver, `fn`, is a function.
+(Go can do that!) The method invokes the function by calling the receiver
+in the expression `fn(w,`r)`.
 
-Now when registering `viewRecord` with the http package we use the `Handle` function (instead of `HandleFunc`) as `appHandler` is an `http.Handler` (not an `http.HandlerFunc`).
+Now when registering `viewRecord` with the http package we use the `Handle`
+function (instead of `HandleFunc`) as `appHandler` is an `http.Handler`
+(not an `http.HandlerFunc`).
 
 	func init() {
 	    http.Handle("/view", appHandler(viewRecord))
 	}
 
-With this basic error handling infrastructure in place, we can make it more user friendly. Rather than just displaying the error string, it would be better to give the user a simple error message with an appropriate HTTP status code, while logging the full error to the App Engine developer console for debugging purposes.
+With this basic error handling infrastructure in place,
+we can make it more user friendly.
+Rather than just displaying the error string,
+it would be better to give the user a simple error message with an appropriate HTTP status code,
+while logging the full error to the App Engine developer console for debugging purposes.
 
 To do this we create an `appError` struct containing an `error` and some other fields:
 
@@ -198,9 +265,14 @@
 
 	type appHandler func(http.ResponseWriter, *http.Request) *appError
 
-(It's usually a mistake to pass back the concrete type of an error rather than `error`, for reasons discussed in [[https://golang.org/doc/go_faq.html#nil_error][the Go FAQ]], but it's the right thing to do here because `ServeHTTP` is the only place that sees the value and uses its contents.)
+(It's usually a mistake to pass back the concrete type of an error rather than `error`,
+for reasons discussed in [[https://golang.org/doc/go_faq.html#nil_error][the Go FAQ]],
+but it's the right thing to do here because `ServeHTTP` is the only place
+that sees the value and uses its contents.)
 
-And make `appHandler`'s `ServeHTTP` method display the `appError`'s `Message` to the user with the correct HTTP status `Code` and log the full `Error` to the developer console:
+And make `appHandler`'s `ServeHTTP` method display the `appError`'s `Message`
+to the user with the correct HTTP status `Code` and log the full `Error`
+to the developer console:
 
 	func (fn appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 	    if e := fn(w, r); e != nil { // e is *appError, not os.Error.
@@ -210,7 +282,8 @@
 	    }
 	}
 
-Finally, we update `viewRecord` to the new function signature and have it return more context when it encounters an error:
+Finally, we update `viewRecord` to the new function signature and have it
+return more context when it encounters an error:
 
 	func viewRecord(w http.ResponseWriter, r *http.Request) *appError {
 	    c := appengine.NewContext(r)
@@ -225,7 +298,9 @@
 	    return nil
 	}
 
-This version of `viewRecord` is the same length as the original, but now each of those lines has specific meaning and we are providing a friendlier user experience.
+This version of `viewRecord` is the same length as the original,
+but now each of those lines has specific meaning and we are providing a
+friendlier user experience.
 
 It doesn't end there; we can further improve the error handling in our application. Some ideas:
 
@@ -235,8 +310,15 @@
 
 - write a constructor function for `appError` that stores the stack trace for easier debugging,
 
-- recover from panics inside the `appHandler`, logging the error to the console as "Critical," while telling the user "a serious error has occurred." This is a nice touch to avoid exposing the user to inscrutable error messages caused by programming errors. See the [[https://golang.org/doc/articles/defer_panic_recover.html][Defer, Panic, and Recover]] article for more details.
+- recover from panics inside the `appHandler`,
+  logging the error to the console as "Critical," while telling the user "a
+  serious error has occurred." This is a nice touch to avoid exposing the
+  user to inscrutable error messages caused by programming errors.
+  See the [[https://golang.org/doc/articles/defer_panic_recover.html][Defer, Panic, and Recover]]
+  article for more details.
 
 * Conclusion
 
-Proper error handling is an essential requirement of good software. By employing the techniques described in this post you should be able to write more reliable and succinct Go code.
+Proper error handling is an essential requirement of good software.
+By employing the techniques described in this post you should be able to
+write more reliable and succinct Go code.
diff --git a/content/first-class-functions-in-go-and-new-go.article b/content/first-class-functions-in-go-and-new-go.article
index 1458b83..29cab3a 100644
--- a/content/first-class-functions-in-go-and-new-go.article
+++ b/content/first-class-functions-in-go-and-new-go.article
@@ -6,6 +6,12 @@
 
 * Introduction
 
-Programmers new to Go are often surprised by its support for function types, functions as values, and closures. The [[https://golang.org/doc/codewalk/functions/][First Class Functions in Go]] code walk demonstrates these features with a simulation of the dice game [[http://en.wikipedia.org/wiki/Pig_(dice)][Pig]]. It is a pretty program that uses the language to great effect, and a fun read for Go beginners and veterans alike.
+Programmers new to Go are often surprised by its support for function types,
+functions as values, and closures.
+The [[https://golang.org/doc/codewalk/functions/][First Class Functions in Go]]
+code walk demonstrates these features with a simulation of the dice game
+[[http://en.wikipedia.org/wiki/Pig_(dice)][Pig]].
+It is a pretty program that uses the language to great effect,
+and a fun read for Go beginners and veterans alike.
 
 More resources are available at [[https://golang.org/doc/docs.html][golang.org]].
diff --git a/content/from-zero-to-go-launching-on-google.article b/content/from-zero-to-go-launching-on-google.article
index 0d95ef9..fc47fd9 100644
--- a/content/from-zero-to-go-launching-on-google.article
+++ b/content/from-zero-to-go-launching-on-google.article
@@ -8,21 +8,52 @@
 
 _This_article_was_written_by_Reinaldo_Aguiar,_a_software_engineer_from_the_Search_team_at_Google._He_shares_his_experience_developing_his_first_Go_program_and_launching_it_to_an_audience_of_millions_-_all_in_one_day!_
 
-I was recently given the opportunity to collaborate on a small but highly visible "20% project": the [[http://www.google.com/logos/2011/thanksgiving.html][Thanksgiving 2011 Google Doodle]]. The doodle features a turkey produced by randomly combining different styles of head, wings, feathers and legs. The user can customize it by clicking on the different parts of the turkey. This interactivity is implemented in the browser by a combination of JavaScript, CSS and of course HTML, creating turkeys on the fly.
+I was recently given the opportunity to collaborate on a small but highly
+visible "20% project":
+the [[http://www.google.com/logos/2011/thanksgiving.html][Thanksgiving 2011 Google Doodle]].
+The doodle features a turkey produced by randomly combining different styles of head,
+wings, feathers and legs.
+The user can customize it by clicking on the different parts of the turkey.
+This interactivity is implemented in the browser by a combination of JavaScript,
+CSS and of course HTML, creating turkeys on the fly.
 
 .image from-zero-to-go-launching-on-google_image00.png
 
-Once the user has created a personalized turkey it can be shared with friends and family by posting to Google+. Clicking a "Share" button (not pictured here) creates in the user's Google+ stream a post containing a snapshot of the turkey. The snapshot is a single image that matches the turkey the user created.
+Once the user has created a personalized turkey it can be shared with friends
+and family by posting to Google+.
+Clicking a "Share" button (not pictured here) creates in the user's Google+
+stream a post containing a snapshot of the turkey.
+The snapshot is a single image that matches the turkey the user created.
 
-With 13 alternatives for each of 8 parts of the turkey (heads, pairs of legs, distinct feathers, etc.) there are more than than 800 million possible snapshot images that could be generated. To pre-compute them all is clearly infeasible. Instead, we must generate the snapshots on the fly. Combining that problem with a need for immediate scalability and high availability, the choice of platform is obvious: Google App Engine!
+With 13 alternatives for each of 8 parts of the turkey (heads,
+pairs of legs, distinct feathers, etc.) there are more than than 800 million
+possible snapshot images that could be generated.
+To pre-compute them all is clearly infeasible.
+Instead, we must generate the snapshots on the fly.
+Combining that problem with a need for immediate scalability and high availability,
+the choice of platform is obvious: Google App Engine!
 
-The next thing we needed to decide was which App Engine runtime to use. Image manipulation tasks are CPU-bound, so performance is the deciding factor in this case.
+The next thing we needed to decide was which App Engine runtime to use.
+Image manipulation tasks are CPU-bound, so performance is the deciding factor in this case.
 
-To make an informed decision we ran a test. We quickly prepared a couple of equivalent demo apps for the new [[http://code.google.com/appengine/docs/python/python27/newin27.html][Python 2.7 runtime]] (which provides [[http://www.pythonware.com/products/pil/][PIL]], a C-based imaging library) and the Go runtime. Each app generates an image composed of several small images, encodes the image as a JPEG, and sends the JPEG data as the HTTP response. The Python 2.7 app served requests with a median latency of 65 milliseconds, while the Go app ran with a median latency of just 32 milliseconds.
+To make an informed decision we ran a test.
+We quickly prepared a couple of equivalent demo apps for the new [[http://code.google.com/appengine/docs/python/python27/newin27.html][Python 2.7 runtime]]
+(which provides [[http://www.pythonware.com/products/pil/][PIL]],
+a C-based imaging library) and the Go runtime.
+Each app generates an image composed of several small images,
+encodes the image as a JPEG, and sends the JPEG data as the HTTP response.
+The Python 2.7 app served requests with a median latency of 65 milliseconds,
+while the Go app ran with a median latency of just 32 milliseconds.
 
 This problem therefore seemed the perfect opportunity to try the experimental Go runtime.
 
-I had no previous experience with Go and the timeline was tight: two days to be production ready. This was intimidating, but I saw it as an opportunity to test Go from a different, often overlooked angle: development velocity. How fast can a person with no Go experience pick it up and build something that performs and scales?
+I had no previous experience with Go and the timeline was tight:
+two days to be production ready.
+This was intimidating, but I saw it as an opportunity to test Go from a different,
+often overlooked angle:
+development velocity.
+How fast can a person with no Go experience pick it up and build something
+that performs and scales?
 
 * Design
 
@@ -32,19 +63,29 @@
 
 .image from-zero-to-go-launching-on-google_image01.jpg
 
-A valid request URL might look like this: `http://google-turkey.appspot.com/thumb/20332620][http://google-turkey.appspot.com/thumb/20332620`
+A valid request URL might look like this:
+`http://google-turkey.appspot.com/thumb/20332620][http://google-turkey.appspot.com/thumb/20332620`
 
-The alphanumeric string that follows "/thumb/" indicates (in hexadecimal) which choice to draw for each layout element, as illustrated by this image:
+The alphanumeric string that follows "/thumb/" indicates (in hexadecimal)
+which choice to draw for each layout element,
+as illustrated by this image:
 
 .image from-zero-to-go-launching-on-google_image03.png
 
-The program's request handler parses the URL to determine which element is selected for each component, draws the appropriate images on top of the background image, and serves the result as a JPEG.
+The program's request handler parses the URL to determine which element
+is selected for each component,
+draws the appropriate images on top of the background image,
+and serves the result as a JPEG.
 
-If an error occurs, a default image is served. There's no point serving an error page because the user will never see it - the browser is almost certainly loading this URL into an image tag.
+If an error occurs, a default image is served.
+There's no point serving an error page because the user will never see it -
+the browser is almost certainly loading this URL into an image tag.
 
 * Implementation
 
-In the package scope we declare some data structures to describe the elements of the turkey, the location of the corresponding images, and where they should be drawn on the background image.
+In the package scope we declare some data structures to describe the elements of the turkey,
+the location of the corresponding images,
+and where they should be drawn on the background image.
 
 	var (
 	    // dirs maps each layout element to its location on disk.
@@ -77,9 +118,12 @@
 	    }
 	)
 
-The geometry of the points above was calculated by measuring the actual location and size of each layout element within the image.
+The geometry of the points above was calculated by measuring the actual
+location and size of each layout element within the image.
 
-Loading the images from disk on each request would be wasteful repetition, so we load all 106 images (13 * 8 elements + 1 background + 1 default) into global variables upon receipt of the first request.
+Loading the images from disk on each request would be wasteful repetition,
+so we load all 106 images (13 * 8 elements + 1 background + 1 default) into
+global variables upon receipt of the first request.
 
 	var (
 	    // elements maps each layout element to its images.
@@ -123,7 +167,8 @@
 
 - Return the image to user by writing the JPEG directly to the HTTP response writer.
 
-Should any error occur, we serve the defaultImage to the user and log the error to the App Engine dashboard for later analysis.
+Should any error occur, we serve the defaultImage to the user and log the
+error to the App Engine dashboard for later analysis.
 
 Here's the code for the request handler with explanatory comments:
 
@@ -181,23 +226,48 @@
 	    jpeg.Encode(w, m, &imageQuality)
 	}
 
-For brevity, I've omitted several helper functions from these code listings. See the [[http://code.google.com/p/go-thanksgiving/source/browse/][source code]] for the full scoop.
+For brevity, I've omitted several helper functions from these code listings.
+See the [[http://code.google.com/p/go-thanksgiving/source/browse/][source code]] for the full scoop.
 
 * Performance
 
 .image from-zero-to-go-launching-on-google_image02.png
 
-This chart - taken directly from the App Engine dashboard - shows average request latency during launch. As you can see, even under load it never exceeds 60 ms, with a median latency of 32 milliseconds. This is wicked fast, considering that our request handler is doing image manipulation and encoding on the fly.
+This chart - taken directly from the App Engine dashboard - shows average
+request latency during launch.
+As you can see, even under load it never exceeds 60 ms,
+with a median latency of 32 milliseconds.
+This is wicked fast, considering that our request handler is doing image
+manipulation and encoding on the fly.
 
 * Conclusions
 
-I found Go's syntax to be intuitive, simple and clean. I have worked a lot with interpreted languages in the past, and although Go is instead a statically typed and compiled language, writing this app felt more like working with a dynamic, interpreted language.
+I found Go's syntax to be intuitive, simple and clean.
+I have worked a lot with interpreted languages in the past,
+and although Go is instead a statically typed and compiled language,
+writing this app felt more like working with a dynamic,
+interpreted language.
 
-The development server provided with the [[http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Go][SDK]] quickly recompiles the program after any change, so I could iterate as fast as I would with an interpreted language. It's dead simple, too - it took less than a minute to set up my development environment.
+The development server provided with the [[http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Go][SDK]]
+quickly recompiles the program after any change,
+so I could iterate as fast as I would with an interpreted language.
+It's dead simple, too - it took less than a minute to set up my development environment.
 
-Go's great documentation also helped me put this together fast. The docs are generated from the source code, so each function's documentation links directly to the associated source code. This not only allows the developer to understand very quickly what a particular function does but also encourages the developer to dig into the package implementation, making it easier to learn good style and conventions.
+Go's great documentation also helped me put this together fast.
+The docs are generated from the source code,
+so each function's documentation links directly to the associated source code.
+This not only allows the developer to understand very quickly what a particular
+function does but also encourages the developer to dig into the package implementation,
+making it easier to learn good style and conventions.
 
-In writing this application I used just three resources: App Engine's [[http://code.google.com/appengine/docs/go/gettingstarted/helloworld.html][Hello World Go example]], [[https://golang.org/pkg/][the Go packages documentation]], and [[https://blog.golang.org/2011/09/go-imagedraw-package.html][a blog post showcasing the Draw package]]. Thanks to the rapid iteration made possible by the development server and the language itself, I was able to pick up the language and build a super fast, production ready, doodle generator in less than 24 hours.
+In writing this application I used just three resources:
+App Engine's [[http://code.google.com/appengine/docs/go/gettingstarted/helloworld.html][Hello World Go example]],
+[[https://golang.org/pkg/][the Go packages documentation]],
+and [[https://blog.golang.org/2011/09/go-imagedraw-package.html][a blog post showcasing the Draw package]].
+Thanks to the rapid iteration made possible by the development server and
+the language itself,
+I was able to pick up the language and build a super fast,
+production ready, doodle generator in less than 24 hours.
 
 Download the full app source code (including images) at [[http://code.google.com/p/go-thanksgiving/source/browse/][the Google Code project]].
 
diff --git a/content/gccgo-in-gcc-471.article b/content/gccgo-in-gcc-471.article
index d239f4b..6c90a93 100644
--- a/content/gccgo-in-gcc-471.article
+++ b/content/gccgo-in-gcc-471.article
@@ -6,20 +6,64 @@
 
 * Introduction
 
-The Go language has always been defined by a [[https://golang.org/ref/spec][spec]], not an implementation.  The Go team has written two different compilers that implement that spec: gc and gccgo.  Having two different implementations helps ensure that the spec is complete and correct: when the compilers disagree, we fix the spec, and change one or both compilers accordingly.  Gc is the original compiler, and the go tool uses it by default.  Gccgo is a different implementation with a different focus, and in this post we’ll take a closer look at it.
+The Go language has always been defined by a [[https://golang.org/ref/spec][spec]],
+not an implementation.
+The Go team has written two different compilers that implement that spec: gc and gccgo.
+Having two different implementations helps ensure that the spec is complete and correct:
+when the compilers disagree, we fix the spec,
+and change one or both compilers accordingly.
+Gc is the original compiler, and the go tool uses it by default.
+Gccgo is a different implementation with a different focus,
+and in this post we’ll take a closer look at it.
 
-Gccgo is distributed as part of GCC, the GNU Compiler Collection.  GCC supports several different frontends for different languages; gccgo is a Go frontend connected to the GCC backend.  The Go frontend is separate from the GCC project and is designed to be able to connect to other compiler backends, but currently only supports GCC.
+Gccgo is distributed as part of GCC, the GNU Compiler Collection.
+GCC supports several different frontends for different languages;
+gccgo is a Go frontend connected to the GCC backend.
+The Go frontend is separate from the GCC project and is designed to be able
+to connect to other compiler backends,
+but currently only supports GCC.
 
-Compared to gc, gccgo is slower to compile code but supports more powerful optimizations, so a CPU-bound program built by gccgo will usually run faster.  All the optimizations implemented in GCC over the years are available, including inlining, loop optimizations, vectorization, instruction scheduling, and more.  While it does not always produce better code, in some cases programs compiled with gccgo can run 30% faster.
+Compared to gc, gccgo is slower to compile code but supports more powerful optimizations,
+so a CPU-bound program built by gccgo will usually run faster.
+All the optimizations implemented in GCC over the years are available,
+including inlining, loop optimizations, vectorization,
+instruction scheduling, and more.
+While it does not always produce better code,
+in some cases programs compiled with gccgo can run 30% faster.
 
-The gc compiler supports only the most popular processors: x86 (32-bit and 64-bit) and ARM.  Gccgo, however, supports all the processors that GCC supports.  Not all those processors have been thoroughly tested for gccgo, but many have, including x86 (32-bit and 64-bit), SPARC, MIPS, PowerPC and even Alpha.  Gccgo has also been tested on operating systems that the gc compiler does not support, notably Solaris.
+The gc compiler supports only the most popular processors:
+x86 (32-bit and 64-bit) and ARM.
+Gccgo, however, supports all the processors that GCC supports.
+Not all those processors have been thoroughly tested for gccgo,
+but many have, including x86 (32-bit and 64-bit),
+SPARC, MIPS, PowerPC and even Alpha.
+Gccgo has also been tested on operating systems that the gc compiler does
+not support, notably Solaris.
 
-Gccgo provides the standard, complete Go library.  Many of the core features of the Go runtime are the same in both gccgo and gc, including the goroutine scheduler, channels, the memory allocator, and the garbage collector.  Gccgo supports splitting goroutine stacks as the gc compiler does, but currently only on x86 (32-bit or 64-bit) and only when using the gold linker (on other processors, each goroutine will have a large stack, and a deep series of function calls may run past the end of the stack and crash the program).
+Gccgo provides the standard, complete Go library.
+Many of the core features of the Go runtime are the same in both gccgo and gc,
+including the goroutine scheduler, channels,
+the memory allocator, and the garbage collector.
+Gccgo supports splitting goroutine stacks as the gc compiler does,
+but currently only on x86 (32-bit or 64-bit) and only when using the gold
+linker (on other processors,
+each goroutine will have a large stack, and a deep series of function calls
+may run past the end of the stack and crash the program).
 
-Gccgo distributions do not yet include a version of the go command.  However, if you install the go command from a standard Go release, it already supports gccgo via the `-compiler` option: go build `-compiler`gccgo`myprog`.  The tools used for calls between Go and C/C++, cgo and SWIG, also support gccgo.
+Gccgo distributions do not yet include a version of the go command.
+However, if you install the go command from a standard Go release,
+it already supports gccgo via the `-compiler` option:
+go build `-compiler`gccgo`myprog`.
+The tools used for calls between Go and C/C++,
+cgo and SWIG, also support gccgo.
 
 We have put the Go frontend under the same BSD license as the rest of the Go
 tools.  You can download the source code for the frontend at the
-[[https://github.com/golang/gofrontend][gofrontend project]]. Note that when the Go frontend is linked with the GCC backend to make gccgo, GCC’s GPL license takes precedence.
+[[https://github.com/golang/gofrontend][gofrontend project]].
+Note that when the Go frontend is linked with the GCC backend to make gccgo,
+GCC’s GPL license takes precedence.
 
-The latest release of GCC, 4.7.1, includes gccgo with support for Go 1.  If you need better performance for CPU-bound Go programs, or you need to support processors or operating systems that the gc compiler does not support, gccgo might be the answer.
+The latest release of GCC, 4.7.1, includes gccgo with support for Go 1.
+If you need better performance for CPU-bound Go programs,
+or you need to support processors or operating systems that the gc compiler does not support,
+gccgo might be the answer.
diff --git a/content/gcdk-whats-new-in-march-2019.article b/content/gcdk-whats-new-in-march-2019.article
index b67a096..29bff99 100644
--- a/content/gcdk-whats-new-in-march-2019.article
+++ b/content/gcdk-whats-new-in-march-2019.article
@@ -5,11 +5,21 @@
 
 * Introduction
 
-Last July, we [[https://blog.golang.org/go-cloud][introduced]] the [[https://gocloud.dev][Go Cloud Development Kit]] (previously referred to as simply "Go Cloud"), an open source project building libraries and tools to improve the experience of developing for the cloud with Go. We've made a lot of progress since then -- thank you to early contributors! We look forward to growing the Go CDK community of users and contributors, and are excited to work closely with early adopters.
+Last July, we [[https://blog.golang.org/go-cloud][introduced]] the [[https://gocloud.dev][Go Cloud Development Kit]]
+(previously referred to as simply "Go Cloud"),
+an open source project building libraries and tools to improve the experience
+of developing for the cloud with Go.
+We've made a lot of progress since then -- thank you to early contributors!
+We look forward to growing the Go CDK community of users and contributors,
+and are excited to work closely with early adopters.
 
 * Portable APIs
 
-Our first initiative is a set of portable APIs for common cloud services. You write your application using these APIs, and then deploy it on any combination of providers, including AWS, GCP, Azure, on-premise, or on a single developer machine for testing. Additional providers can be added by implementing an interface.
+Our first initiative is a set of portable APIs for common cloud services.
+You write your application using these APIs,
+and then deploy it on any combination of providers,
+including AWS, GCP, Azure, on-premise, or on a single developer machine for testing.
+Additional providers can be added by implementing an interface.
 
 These portable APIs are a great fit if any of the following are true:
 
@@ -18,20 +28,39 @@
 - You want portability across multiple clouds.
 - You are creating a new Go application that will use cloud services.
 
-Unlike traditional approaches where you would need to write new application code for each cloud provider, with the Go CDK you write your application code once using our portable APIs to access the set of services listed below. Then, you can run your application on any supported cloud with minimal config changes.
+Unlike traditional approaches where you would need to write new application
+code for each cloud provider,
+with the Go CDK you write your application code once using our portable
+APIs to access the set of services listed below.
+Then, you can run your application on any supported cloud with minimal config changes.
 
 Our current set of APIs includes:
 
-- [[https://godoc.org/gocloud.dev/blob][blob]], for persistence of blob data. Supported providers include: AWS S3, Google Cloud Storage (GCS), Azure Storage, the filesystem, and in-memory.
-- [[https://godoc.org/gocloud.dev/pubsub][pubsub]] for publishing/subscribing of messages to a topic. Supported providers include: Amazon SNS/SQS, Google Pub/Sub, Azure Service Bus, RabbitMQ, and in-memory.
-- [[https://godoc.org/gocloud.dev/runtimevar][runtimevar]], for watching external configuration variables. Supported providers include AWS Parameter Store, Google Runtime Configurator, etcd, and the filesystem.
-- [[https://godoc.org/gocloud.dev/secrets][secrets]], for encryption/decryption. Supported providers include AWS KMS, GCP KMS, Hashicorp Vault, and local symmetric keys.
+- [[https://godoc.org/gocloud.dev/blob][blob]],
+  for persistence of blob data.
+  Supported providers include: AWS S3, Google Cloud Storage (GCS),
+  Azure Storage, the filesystem, and in-memory.
+- [[https://godoc.org/gocloud.dev/pubsub][pubsub]] for publishing/subscribing
+  of messages to a topic.
+  Supported providers include: Amazon SNS/SQS,
+  Google Pub/Sub, Azure Service Bus, RabbitMQ, and in-memory.
+- [[https://godoc.org/gocloud.dev/runtimevar][runtimevar]],
+  for watching external configuration variables.
+  Supported providers include AWS Parameter Store,
+  Google Runtime Configurator, etcd, and the filesystem.
+- [[https://godoc.org/gocloud.dev/secrets][secrets]],
+  for encryption/decryption.
+  Supported providers include AWS KMS, GCP KMS,
+  Hashicorp Vault, and local symmetric keys.
 - Helpers for connecting to cloud SQL providers. Supported providers include AWS RDS and Google Cloud SQL.
 - We are also working on a document storage API (e.g. MongoDB, DynamoDB, Firestore).
 
 * Feedback
 
-We hope you're as excited about the Go CDK as we are -- check out our [[https://godoc.org/gocloud.dev][godoc]], walk through our [[https://github.com/google/go-cloud/tree/master/samples/tutorial][tutorial]], and use the Go CDK in your application(s). We'd love to hear your ideas for other APIs and API providers you'd like to see.
+We hope you're as excited about the Go CDK as we are -- check out our [[https://godoc.org/gocloud.dev][godoc]],
+walk through our [[https://github.com/google/go-cloud/tree/master/samples/tutorial][tutorial]],
+and use the Go CDK in your application(s).
+We'd love to hear your ideas for other APIs and API providers you'd like to see.
 
 If you're digging into Go CDK please share your experiences with us:
 
diff --git a/content/getthee-to-go-meetup.article b/content/getthee-to-go-meetup.article
index d2f586a..6f12947 100644
--- a/content/getthee-to-go-meetup.article
+++ b/content/getthee-to-go-meetup.article
@@ -6,10 +6,27 @@
 
 * Introduction
 
-Last week, David Symonds and I each gave talks at Sydney's Go meetup, [[http://www.meetup.com/golang-syd/][golang-syd]]. Dave spoke about [[http://talks.godoc.org/github.com/dsymonds/talks/2013-feb-golang-syd/golang-syd.slide][Go API design in the context of Protocol Buffers]], and I discussed some neat tricks in the construction of [[http://talks.godoc.org/github.com/nf/streak/talk.slide][a small command-line program]]. The presentations were short but provoked some good questions and interesting discussion. Of the 50-odd attendees, most were regular Go programmers and a fair chunk write Go code professionally. It was a fun night.
+Last week, David Symonds and I each gave talks at Sydney's Go meetup,
+[[http://www.meetup.com/golang-syd/][golang-syd]].
+Dave spoke about [[http://talks.godoc.org/github.com/dsymonds/talks/2013-feb-golang-syd/golang-syd.slide][Go API design in the context of Protocol Buffers]],
+and I discussed some neat tricks in the construction of [[http://talks.godoc.org/github.com/nf/streak/talk.slide][a small command-line program]].
+The presentations were short but provoked some good questions and interesting discussion.
+Of the 50-odd attendees, most were regular Go programmers and a fair chunk
+write Go code professionally. It was a fun night.
 
-It would have been great to see you there but, statistically, you're not from Sydney. Despair not, however, as there are likely some people in your area who either run a Go meetup or want to start one.
+It would have been great to see you there but,
+statistically, you're not from Sydney.
+Despair not, however, as there are likely some people in your area who either
+run a Go meetup or want to start one.
 
-The Go wiki lists [[https://golang.org/wiki/GoUserGroups][Go user groups]] around the world, so if there's one nearby you should consider going along to the next event.
+The Go wiki lists [[https://golang.org/wiki/GoUserGroups][Go user groups]] around the world,
+so if there's one nearby you should consider going along to the next event.
 
-If not, why not start your own? To gauge interest, ask around in the [[https://plus.google.com/communities/114112804251407510571][Go+ Community]] and the [[http://groups.google.com/group/golang-nuts][golang-nuts mailing list]], and take a look at this [[http://golang.meetup.com/all/][list of people]] waiting for a Go meetup in their area. Once you have a few people interested - and at least one person willing to present something - pick a venue and set a date. If you build it, they will come.
+If not, why not start your own? To gauge interest,
+ask around in the [[https://plus.google.com/communities/114112804251407510571][Go+ Community]] and
+the [[http://groups.google.com/group/golang-nuts][golang-nuts mailing list]], and
+take a look at this [[http://golang.meetup.com/all/][list of people]] waiting
+for a Go meetup in their area.
+Once you have a few people interested - and at least one person willing
+to present something - pick a venue and set a date.
+If you build it, they will come.
diff --git a/content/getting-to-know-go-community.article b/content/getting-to-know-go-community.article
index 9b51ab3..fc2db7a 100644
--- a/content/getting-to-know-go-community.article
+++ b/content/getting-to-know-go-community.article
@@ -6,9 +6,15 @@
 
 * Introduction
 
-Over the past couple of years Go has attracted a lot of users and contributors, and I've had a great time meeting and talking with many of you. However, for every Gopher I know there are dozens I know nothing about. In order to address this imbalance I've prepared a survey for Go users everywhere.
+Over the past couple of years Go has attracted a lot of users and contributors,
+and I've had a great time meeting and talking with many of you.
+However, for every Gopher I know there are dozens I know nothing about.
+In order to address this imbalance I've prepared a survey for Go users everywhere.
 
-The survey is short. It asks about you, your involvement with Go, and and your interest in Go-related events. Among other things, this data will help myself and the rest of the Go team plan future Go events and schedule conference appearances.
+The survey is short. It asks about you, your involvement with Go,
+and and your interest in Go-related events.
+Among other things, this data will help myself and the rest of the Go team
+plan future Go events and schedule conference appearances.
 
 Please take a minute to [[https://docs.google.com/spreadsheet/viewform?hl=en_US&formkey=dFdxOTU1Mm92VFA3eHdkekFPamJjUnc6MQ#gid=0][complete the survey now]].
 
diff --git a/content/gif-decoder-exercise-in-go-interfaces.article b/content/gif-decoder-exercise-in-go-interfaces.article
index 6e63817..9d58e57 100644
--- a/content/gif-decoder-exercise-in-go-interfaces.article
+++ b/content/gif-decoder-exercise-in-go-interfaces.article
@@ -6,9 +6,14 @@
 
 * Introduction
 
-At the Google I/O conference in San Francisco on May 10, 2011, we announced that the Go language is now available on Google App Engine.  Go is the first language to be made available on App Engine that compiles directly to machine code, which makes it a good choice for CPU-intensive tasks such as image manipulation.
+At the Google I/O conference in San Francisco on May 10,
+2011, we announced that the Go language is now available on Google App Engine.
+Go is the first language to be made available on App Engine that compiles
+directly to machine code,
+which makes it a good choice for CPU-intensive tasks such as image manipulation.
 
-In that vein, we demonstrated a program called [[http://moustach-io.appspot.com/][Moustachio]] that makes it easy to improve a picture such as this one:
+In that vein, we demonstrated a program called [[http://moustach-io.appspot.com/][Moustachio]]
+that makes it easy to improve a picture such as this one:
 
 .image gif-decoder-exercise-in-go-interfaces_image00.jpg
 
@@ -16,29 +21,66 @@
 
 .image gif-decoder-exercise-in-go-interfaces_image02.jpg
 
-All the graphical processing, including rendering the antialiased moustache, is done by a Go program running on App Engine. (The source is available at [[http://code.google.com/p/appengine-go/source/browse/example/moustachio/][the appengine-go project]].)
+All the graphical processing, including rendering the antialiased moustache,
+is done by a Go program running on App Engine.
+(The source is available at [[http://code.google.com/p/appengine-go/source/browse/example/moustachio/][the appengine-go project]].)
 
-Although most images on the web—at least those likely to be moustachioed—are JPEGs, there are countless other formats floating around, and it seemed reasonable for Moustachio to accept uploaded images in a few of them. JPEG and PNG decoders already existed in the Go image library, but the venerable GIF format was not represented, so we decided to write a GIF decoder in time for the announcement. That decoder contains a few pieces that demonstrate how Go's interfaces make some problems easier to solve. The rest of this blog post describes a couple of instances.
+Although most images on the web—at least those likely to be moustachioed—are JPEGs,
+there are countless other formats floating around,
+and it seemed reasonable for Moustachio to accept uploaded images in a few of them.
+JPEG and PNG decoders already existed in the Go image library,
+but the venerable GIF format was not represented,
+so we decided to write a GIF decoder in time for the announcement.
+That decoder contains a few pieces that demonstrate how Go's interfaces
+make some problems easier to solve.
+The rest of this blog post describes a couple of instances.
 
 * The GIF format
 
-First, a quick tour of the GIF format.  A GIF image file is _paletted_, that is, each pixel value is an index into a fixed color map that is included in the file. The GIF format dates from a time when there were usually no more than 8 bits per pixel on the display, and a color map was used to convert the limited set of values into the RGB (red, green, blue) triples needed to light the screen. (This is in contrast to a JPEG, for example, which has no color map because the encoding represents the distinct color signals separately.)
+First, a quick tour of the GIF format.  A GIF image file is _paletted_,
+that is, each pixel value is an index into a fixed color map that is included in the file.
+The GIF format dates from a time when there were usually no more than 8
+bits per pixel on the display,
+and a color map was used to convert the limited set of values into the RGB (red,
+green, blue) triples needed to light the screen.
+(This is in contrast to a JPEG, for example,
+which has no color map because the encoding represents the distinct color
+signals separately.)
 
 A GIF image can contain anywhere from 1 to 8 bits per pixel, inclusive, but 8 bits per pixel is the most common.
 
-Simplifying somewhat, a GIF file contains a header defining the pixel depth and image dimensions, a color map (256 RGB triples for an 8-bit image), and then the pixel data.  The pixel data is stored as a one-dimensional bit stream, compressed using the LZW algorithm, which is quite effective for computer-generated graphics although not so good for photographic imagery. The compressed data is then broken into length-delimited blocks with a one-byte count (0-255) followed by that many bytes:
+Simplifying somewhat, a GIF file contains a header defining the pixel depth
+and image dimensions,
+a color map (256 RGB triples for an 8-bit image),
+and then the pixel data.
+The pixel data is stored as a one-dimensional bit stream,
+compressed using the LZW algorithm, which is quite effective for computer-generated
+graphics although not so good for photographic imagery.
+The compressed data is then broken into length-delimited blocks with a one-byte
+count (0-255) followed by that many bytes:
 
 .image gif-decoder-exercise-in-go-interfaces_image03.gif
 
 * Deblocking the pixel data
 
-To decode GIF pixel data in Go, we can use the LZW decompressor from the `compress/lzw` package. It has a NewReader function that returns an object that, as [[https://golang.org/pkg/compress/lzw/#NewReader][the documentation]] says, "satisfies reads by decompressing the data read from r":
+To decode GIF pixel data in Go, we can use the LZW decompressor from the
+`compress/lzw` package.
+It has a NewReader function that returns an object that,
+as [[https://golang.org/pkg/compress/lzw/#NewReader][the documentation]] says,
+"satisfies reads by decompressing the data read from r":
 
 	func NewReader(r io.Reader, order Order, litWidth int) io.ReadCloser
 
-Here `order` defines the bit-packing order and `litWidth` is the word size in bits, which for a GIF file corresponds to the pixel depth, typically 8.
+Here `order` defines the bit-packing order and `litWidth` is the word size in bits,
+which for a GIF file corresponds to the pixel depth, typically 8.
 
-But we can't just give `NewReader` the input file as its first argument because the decompressor needs a stream of bytes but the GIF data is a stream of blocks that must be unpacked. To address this problem, we can wrap the input `io.Reader` with some code to deblock it, and make that code again implement `Reader`. In other words, we put the deblocking code into the `Read` method of a new type, which we call `blockReader`.
+But we can't just give `NewReader` the input file as its first argument
+because the decompressor needs a stream of bytes but the GIF data is a stream
+of blocks that must be unpacked.
+To address this problem, we can wrap the input `io.Reader` with some code to deblock it,
+and make that code again implement `Reader`.
+In other words, we put the deblocking code into the `Read` method of a new type,
+which we call `blockReader`.
 
 Here's the data structure for a `blockReader`.
 
@@ -48,7 +90,11 @@
 	   tmp   [256]byte // Storage for slice.
 	}
 
-The reader, `r`, will be the source of the image data, perhaps a file or HTTP connection.  The `slice` and `tmp` fields will be used to manage the deblocking. Here's the `Read` method in its entirety. It's a nice example of the use of slices and arrays in Go.
+The reader, `r`, will be the source of the image data,
+perhaps a file or HTTP connection.
+The `slice` and `tmp` fields will be used to manage the deblocking.
+Here's the `Read` method in its entirety.
+It's a nice example of the use of slices and arrays in Go.
 
 	1  func (b *blockReader) Read(p []byte) (int, os.Error) {
 	2      if len(p) == 0 {
@@ -72,27 +118,54 @@
 	20      return n, nil
 	21  }
 
-Lines 2-4 are just a sanity check: if there's no place to put data, return zero.  That should never happen, but it's good to be safe.
+Lines 2-4 are just a sanity check: if there's no place to put data, return zero.
+That should never happen, but it's good to be safe.
 
-Line 5 asks if there's data left over from a previous call by checking the length of `b.slice`.  If there isn't, the slice will have length zero and we need to read the next block from `r`.
+Line 5 asks if there's data left over from a previous call by checking the
+length of `b.slice`.
+If there isn't, the slice will have length zero and we need to read the
+next block from `r`.
 
-A GIF block starts with a byte count, read on line 6.  If the count is zero, GIF defines this to be a terminating block, so we return `EOF` on line 11.
+A GIF block starts with a byte count, read on line 6.
+If the count is zero, GIF defines this to be a terminating block,
+so we return `EOF` on line 11.
 
-Now we know we should read `blockLen` bytes, so we point `b.slice` to the first `blockLen` bytes of `b.tmp` and then use the helper function `io.ReadFull` to read that many bytes.  That function will return an error if it can't read exactly that many bytes, which should never happen.  Otherwise we have `blockLen` bytes ready to read.
+Now we know we should read `blockLen` bytes,
+so we point `b.slice` to the first `blockLen` bytes of `b.tmp` and then
+use the helper function `io.ReadFull` to read that many bytes.
+That function will return an error if it can't read exactly that many bytes,
+which should never happen.
+Otherwise we have `blockLen` bytes ready to read.
 
-Lines 18-19 copy the data from `b.slice` to the caller's buffer. We are implementing `Read`, not `ReadFull`, so we are allowed to return fewer than the requested number of bytes.  That makes it easy: we just copy the data from `b.slice` to the caller's buffer (`p`), and the return value from copy is the number of bytes transferred.  Then we reslice `b.slice` to drop the first `n` bytes, ready for the next call.
+Lines 18-19 copy the data from `b.slice` to the caller's buffer.
+We are implementing `Read`, not `ReadFull`,
+so we are allowed to return fewer than the requested number of bytes.
+That makes it easy: we just copy the data from `b.slice` to the caller's buffer (`p`),
+and the return value from copy is the number of bytes transferred.
+Then we reslice `b.slice` to drop the first `n` bytes,
+ready for the next call.
 
-It's a nice technique in Go programming to couple a slice (`b.slice`) to an array (`b.tmp`).  In this case, it means `blockReader` type's `Read` method never does any allocations. It also means we don't need to keep a count around (it's implicit in the slice length), and the built-in `copy` function guarantees we never copy more than we should. (For more about slices, see [[https://blog.golang.org/2011/01/go-slices-usage-and-internals.html][this post from the Go Blog]].)
+It's a nice technique in Go programming to couple a slice (`b.slice`) to an array (`b.tmp`).
+In this case, it means `blockReader` type's `Read` method never does any allocations.
+It also means we don't need to keep a count around (it's implicit in the slice length),
+and the built-in `copy` function guarantees we never copy more than we should.
+(For more about slices, see [[https://blog.golang.org/2011/01/go-slices-usage-and-internals.html][this post from the Go Blog]].)
 
-Given the `blockReader` type, we can unblock the image data stream just by wrapping the input reader, say a file, like this:
+Given the `blockReader` type, we can unblock the image data stream just
+by wrapping the input reader,
+say a file, like this:
 
 	deblockingReader := &blockReader{r: imageFile}
 
-This wrapping turns a block-delimited GIF image stream into a simple stream of bytes accessible by calls to the `Read` method of the `blockReader`.
+This wrapping turns a block-delimited GIF image stream into a simple stream
+of bytes accessible by calls to the `Read` method of the `blockReader`.
 
 * Connecting the pieces
 
-With `blockReader` implemented and the LZW compressor available from the library, we have all the pieces we need to decode the image data stream.  We stitch them together with this thunderclap, straight from the code:
+With `blockReader` implemented and the LZW compressor available from the library,
+we have all the pieces we need to decode the image data stream.
+We stitch them together with this thunderclap,
+straight from the code:
 
 	lzwr := lzw.NewReader(&blockReader{r: d.r}, lzw.LSB, int(litWidth))
 	if _, err = io.ReadFull(lzwr, m.Pix); err != nil {
@@ -101,17 +174,36 @@
 
 That's it.
 
-The first line creates a `blockReader` and passes it to `lzw.NewReader` to create a decompressor.  Here `d.r` is the `io.Reader` holding the image data, `lzw.LSB` defines the byte order in the LZW decompressor, and `litWidth` is the pixel depth.
+The first line creates a `blockReader` and passes it to `lzw.NewReader`
+to create a decompressor.
+Here `d.r` is the `io.Reader` holding the image data,
+`lzw.LSB` defines the byte order in the LZW decompressor,
+and `litWidth` is the pixel depth.
 
-Given the decompressor, the second line calls `io.ReadFull` to decompress the data and store it in the image, `m.Pix`. When `ReadFull` returns, the image data is decompressed and stored in the image, `m`, ready to be displayed.
+Given the decompressor, the second line calls `io.ReadFull` to decompress
+the data and store it in the image, `m.Pix`.
+When `ReadFull` returns, the image data is decompressed and stored in the image,
+`m`, ready to be displayed.
 
 This code worked first time. Really.
 
-We could avoid the temporary variable `lzwr` by placing the `NewReader` call into the argument list for `ReadFull`, just as we built the `blockReader` inside the call to `NewReader`, but that might be packing too much into a single line of code.
+We could avoid the temporary variable `lzwr` by placing the `NewReader`
+call into the argument list for `ReadFull`,
+just as we built the `blockReader` inside the call to `NewReader`,
+but that might be packing too much into a single line of code.
 
 * Conclusion
 
-Go's interfaces make it easy to construct software by assembling piece parts like this to restructure data.  In this example, we implemented GIF decoding by chaining together a deblocker and a decompressor using the `io.Reader` interface, analogous to a type-safe Unix pipeline. Also, we wrote the deblocker as an (implicit) implementation of a `Reader` interface, which then required no extra declaration or boilerplate to fit it into the processing pipeline. It's hard to implement this decoder so compactly yet cleanly and safely in most languages, but the interface mechanism plus a few conventions make it almost natural in Go.
+Go's interfaces make it easy to construct software by assembling piece parts
+like this to restructure data.
+In this example, we implemented GIF decoding by chaining together a deblocker
+and a decompressor using the `io.Reader` interface,
+analogous to a type-safe Unix pipeline.
+Also, we wrote the deblocker as an (implicit) implementation of a `Reader` interface,
+which then required no extra declaration or boilerplate to fit it into the
+processing pipeline.
+It's hard to implement this decoder so compactly yet cleanly and safely in most languages,
+but the interface mechanism plus a few conventions make it almost natural in Go.
 
 That deserves another picture, a GIF this time:
 
diff --git a/content/go-11-is-released.article b/content/go-11-is-released.article
index 18e2839..7f55938 100644
--- a/content/go-11-is-released.article
+++ b/content/go-11-is-released.article
@@ -10,21 +10,46 @@
 
 .image go-11-is-released_gopherbiplane5.jpg
 
-In March last year we released Go 1.0, and since then we have released three minor "point releases". The point releases were made to fix only critical issues, so the Go 1.0.3 you use today is still, in essence, the Go 1.0 we released in March 2012.
+In March last year we released Go 1.0, and since then we have released three
+minor "point releases".
+The point releases were made to fix only critical issues,
+so the Go 1.0.3 you use today is still, in essence,
+the Go 1.0 we released in March 2012.
 
 Go 1.1 includes many improvements over 1.0.
 
-The most significant improvements are performance-related. We have made optimizations in the compiler and linker, garbage collector, goroutine scheduler, map implementation, and parts of the standard library. It is likely that your Go code will run noticeably faster when built with Go 1.1.
+The most significant improvements are performance-related.
+We have made optimizations in the compiler and linker,
+garbage collector, goroutine scheduler, map implementation,
+and parts of the standard library.
+It is likely that your Go code will run noticeably faster when built with Go 1.1.
 
-There are some minor changes to the language itself, two of which are worth singling out here: the [[https://golang.org/doc/go1.1#return][changes to return requirements]] will lead to more succinct and correct programs, and the introduction of [[https://golang.org/doc/go1.1#method_values][method values]] provides an expressive way to bind a method to its receiver as a function value.
+There are some minor changes to the language itself,
+two of which are worth singling out here:
+the [[https://golang.org/doc/go1.1#return][changes to return requirements]] will
+lead to more succinct and correct programs,
+and the introduction of [[https://golang.org/doc/go1.1#method_values][method values]] provides
+an expressive way to bind a method to its receiver as a function value.
 
-Concurrent programming is safer in Go 1.1 with the addition of a race detector for finding memory synchronization errors in your programs. We will discuss the race detector more in an upcoming article, but for now [[https://golang.org/doc/articles/race_detector.html][the manual]] is a great place to get started.
+Concurrent programming is safer in Go 1.1 with the addition of a race
+detector for finding memory synchronization errors in your programs.
+We will discuss the race detector more in an upcoming article,
+but for now [[https://golang.org/doc/articles/race_detector.html][the manual]] is
+a great place to get started.
 
-The tools and standard library have been improved and expanded. You can read the full story in the [[https://golang.org/doc/go1.1][release notes]].
+The tools and standard library have been improved and expanded.
+You can read the full story in the [[https://golang.org/doc/go1.1][release notes]].
 
-As per our [[https://golang.org/doc/go1compat.html][compatibility guidelines]], Go 1.1 remains compatible with Go 1.0 and we recommend all Go users upgrade to the new release.
+As per our [[https://golang.org/doc/go1compat.html][compatibility guidelines]],
+Go 1.1 remains compatible with Go 1.0 and we recommend all Go users upgrade to the new release.
 
-All this would not have been possible without the help of our contributors from the open source community. Since Go 1.0, the core received more than 2600 commits from 161 people outside Google. Thank you everyone for your time and effort. In particular, we would like to thank Shenghou Ma, Rémy Oudompheng, Dave Cheney, Mikio Hara, Alex Brainman, Jan Ziak, and Daniel Morsing for their outstanding contributions.
+All this would not have been possible without the help of our contributors from
+the open source community.
+Since Go 1.0, the core received more than 2600 commits from 161 people outside Google.
+Thank you everyone for your time and effort.
+In particular, we would like to thank Shenghou Ma,
+Rémy Oudompheng, Dave Cheney, Mikio Hara,
+Alex Brainman, Jan Ziak, and Daniel Morsing for their outstanding contributions.
 
 To grab the new release, follow the usual [[https://golang.org/doc/install][installation instructions]]. Happy hacking!
 
diff --git a/content/go-and-google-app-engine.article b/content/go-and-google-app-engine.article
index a2f32ef..ec0f3ca 100644
--- a/content/go-and-google-app-engine.article
+++ b/content/go-and-google-app-engine.article
@@ -10,20 +10,66 @@
 
 * Introduction
 
-Google’s App Engine provides a reliable, scalable, easy way to build and deploy applications for the web. Over a hundred thousand apps are hosted at appspot.com and custom domains using the App Engine infrastructure. Originally written for Python apps, in 2009 the system added a Java runtime. And today, at Google I/O, we’re thrilled to announce that Go will be next. It’s marked as an experimental App Engine feature for now, because it’s early days, but both the App Engine and Go teams are very excited about this milestone.
+Google’s App Engine provides a reliable,
+scalable, easy way to build and deploy applications for the web.
+Over a hundred thousand apps are hosted at appspot.com and custom domains
+using the App Engine infrastructure.
+Originally written for Python apps, in 2009 the system added a Java runtime.
+And today, at Google I/O, we’re thrilled to announce that Go will be next.
+It’s marked as an experimental App Engine feature for now,
+because it’s early days, but both the App Engine and Go teams are very
+excited about this milestone.
 
-By early days, we mean that it’s still rolling out. As of today, the App Engine SDK for Go is [[http://code.google.com/p/googleappengine/downloads/list][available for download]], and we will soon enable deployment of Go apps into the App Engine hosting infrastructure. Today, through the SDK, you’ll be able to write web apps, learn about the APIs (and the language, if it’s new to you), and run your web app locally.  Once full deployment is enabled, it’ll be easy to push your app to Google’s cloud.
+By early days, we mean that it’s still rolling out.
+As of today, the App Engine SDK for Go is [[http://code.google.com/p/googleappengine/downloads/list][available for download]],
+and we will soon enable deployment of Go apps into the App Engine hosting infrastructure.
+Today, through the SDK, you’ll be able to write web apps,
+learn about the APIs (and the language, if it’s new to you),
+and run your web app locally.
+Once full deployment is enabled, it’ll be easy to push your app to Google’s cloud.
 
-One of the cool but less obvious things about this news is that it provides a very easy way to play with Go. You don’t even need to have Go installed beforehand because the SDK is fully self-contained. Just download the SDK, unzip it, and start coding. Moreover, the SDK’s “dev app server” means you don’t even need to run the compiler yourself; everything is delightfully automatic.
+One of the cool but less obvious things about this news is that it provides
+a very easy way to play with Go.
+You don’t even need to have Go installed beforehand because the SDK is
+fully self-contained.
+Just download the SDK, unzip it, and start coding.
+Moreover, the SDK’s “dev app server” means you don’t even need to
+run the compiler yourself;
+everything is delightfully automatic.
 
-What you’ll find in the SDK is many of the standard App Engine APIs, custom designed in good Go style, including Datastore, Blobstore, URL Fetch, Mail, Users, and so on. More APIs will be added as the environment develops. The runtime provides the full Go language and almost all the standard libraries, except for a few things that don’t make sense in the App Engine environment. For instance, there is no `unsafe` package and the `syscall` package is trimmed. (The implementation uses an expanded version of the setup in the [[https://golang.org/doc/play/][Go Playground]] on [[https://golang.org/][golang.org]].)
+What you’ll find in the SDK is many of the standard App Engine APIs,
+custom designed in good Go style, including Datastore,
+Blobstore, URL Fetch, Mail, Users, and so on.
+More APIs will be added as the environment develops.
+The runtime provides the full Go language and almost all the standard libraries,
+except for a few things that don’t make sense in the App Engine environment.
+For instance, there is no `unsafe` package and the `syscall` package is trimmed.
+(The implementation uses an expanded version of the setup in the [[https://golang.org/doc/play/][Go Playground]]
+on [[https://golang.org/][golang.org]].)
 
-Also, although goroutines and channels are present, when a Go app runs on App Engine only one thread is run in a given instance.  That is, all goroutines run in a single operating system thread, so there is no CPU parallelism available for a given client request.  We expect this restriction will be lifted at some point.
+Also, although goroutines and channels are present,
+when a Go app runs on App Engine only one thread is run in a given instance.
+That is, all goroutines run in a single operating system thread,
+so there is no CPU parallelism available for a given client request.
+We expect this restriction will be lifted at some point.
 
-Despite these minor restrictions, it’s the real language: Code is deployed in source form and compiled in the cloud using the 64-bit x86 compiler (6g), making it the first true compiled language that runs on App Engine. Go on App Engine makes it possible to deploy efficient, CPU-intensive web applications.
+Despite these minor restrictions, it’s the real language:
+Code is deployed in source form and compiled in the cloud using the 64-bit x86 compiler (6g),
+making it the first true compiled language that runs on App Engine.
+Go on App Engine makes it possible to deploy efficient,
+CPU-intensive web applications.
 
-If you want to know more, read the [[http://code.google.com/appengine/docs/go/][documentation]] (start with “[[http://code.google.com/appengine/docs/go/gettingstarted/][Getting Started]]”). The libraries and SDK are open source, hosted at [[http://code.google.com/p/appengine-go/][http://code.google.com/p/appengine-go/]].  We’ve created a new [[http://groups.google.com/group/google-appengine-go][google-appengine-go]] mailing list; feel free to contact us there with App Engine-specific questions. The [[http://code.google.com/p/googleappengine/issues/list][issue tracker for App Engine]] is the place for reporting issues related to the new Go SDK.
+If you want to know more, read the [[http://code.google.com/appengine/docs/go/][documentation]]
+(start with “[[http://code.google.com/appengine/docs/go/gettingstarted/][Getting Started]]”).
+The libraries and SDK are open source, hosted at [[http://code.google.com/p/appengine-go/][http://code.google.com/p/appengine-go/]].
+We’ve created a new [[http://groups.google.com/group/google-appengine-go][google-appengine-go]] mailing list;
+feel free to contact us there with App Engine-specific questions.
+The [[http://code.google.com/p/googleappengine/issues/list][issue tracker for App Engine]]
+is the place for reporting issues related to the new Go SDK.
 
-The Go App Engine SDK is [[http://code.google.com/p/googleappengine/downloads/list][available]] for Linux and Mac OS X (10.5 or greater); we hope a Windows version will also be available soon.
+The Go App Engine SDK is [[http://code.google.com/p/googleappengine/downloads/list][available]]
+for Linux and Mac OS X (10.5 or greater);
+we hope a Windows version will also be available soon.
 
-We’d like to offer our thanks for all the help and enthusiasm we received from Google’s App Engine team in making this happen.
+We’d like to offer our thanks for all the help and enthusiasm we received
+from Google’s App Engine team in making this happen.
diff --git a/content/go-and-google-cloud-platform.article b/content/go-and-google-cloud-platform.article
index 4299960..2da1591 100644
--- a/content/go-and-google-cloud-platform.article
+++ b/content/go-and-google-cloud-platform.article
@@ -5,7 +5,13 @@
 
 * Introduction
 
-In 2011 we announced the [[https://developers.google.com/appengine/docs/go/overview][Go runtime for App Engine]]. Since then, we have continued to improve the Go App Engine experience, and generally improved Go support for the Google Cloud Platform. For instance, the [[http://code.google.com/p/google-api-go-client][google-api-go-client]] provides a Go interface to a range of Google's public APis, including Compute Engine, Cloud Storage, BigQuery, Drive, and many more.
+In 2011 we announced the [[https://developers.google.com/appengine/docs/go/overview][Go runtime for App Engine]].
+Since then, we have continued to improve the Go App Engine experience,
+and generally improved Go support for the Google Cloud Platform.
+For instance, the [[http://code.google.com/p/google-api-go-client][google-api-go-client]] provides
+a Go interface to a range of Google's public APis,
+including Compute Engine, Cloud Storage, BigQuery,
+Drive, and many more.
 
 Learn more by watching these talks from Google I/O this year:
 
diff --git a/content/go-app-engine-sdk-155-released.article b/content/go-app-engine-sdk-155-released.article
index dbe8dd5..2666a77 100644
--- a/content/go-app-engine-sdk-155-released.article
+++ b/content/go-app-engine-sdk-155-released.article
@@ -6,20 +6,37 @@
 
 * Introduction
 
-Today we released version 1.5.5 the Go App Engine SDK. You can download it from the [[http://code.google.com/appengine/downloads.html][App Engine downloads page]].
+Today we released version 1.5.5 the Go App Engine SDK.
+You can download it from the [[http://code.google.com/appengine/downloads.html][App Engine downloads page]].
 
-This release includes changes and improvements to the App Engine APIs and brings the supporting Go tool chain to [[https://golang.org/doc/devel/release.html#r60][release.r60.2]] (the current stable release). Also included in this release are the [[https://golang.org/cmd/godoc/][godoc]], [[https://golang.org/cmd/gofmt/][gofmt]], and [[https://golang.org/cmd/gofix/][gofix]] tools from the Go tool chain. They can be found in the root directory of the SDK.
+This release includes changes and improvements to the App Engine APIs and
+brings the supporting Go tool chain to [[https://golang.org/doc/devel/release.html#r60][release.r60.2]]
+(the current stable release).
+Also included in this release are the [[https://golang.org/cmd/godoc/][godoc]],
+[[https://golang.org/cmd/gofmt/][gofmt]],
+and [[https://golang.org/cmd/gofix/][gofix]] tools from the Go tool chain.
+They can be found in the root directory of the SDK.
 
-Some changes made in this release are backwards-incompatible, so we have incremented the SDK `api_version` to 3. Existing apps will require code changes when migrating to `api_version` 3.
+Some changes made in this release are backwards-incompatible,
+so we have incremented the SDK `api_version` to 3.
+Existing apps will require code changes when migrating to `api_version` 3.
 
-The gofix tool that ships with the SDK has been customized with App Engine-specific modules. It can be used to automatically update Go apps to work with the latest appengine packages and the updated Go standard library. To update your apps, run:
+The gofix tool that ships with the SDK has been customized with App Engine-specific modules.
+It can be used to automatically update Go apps to work with the latest appengine
+packages and the updated Go standard library.
+To update your apps, run:
 
 	    /path/to/sdk/gofix /path/to/your/app
 
-The SDK now includes the appengine package source code, so you can use the local godoc to read App Engine API documentation:
+The SDK now includes the appengine package source code,
+so you can use the local godoc to read App Engine API documentation:
 
 	    /path/to/sdk/godoc appengine/datastore Get
 
-*Important*note:* We have deprecated `api_version` 2. Go apps that use `api_version` 2 will stop working after 16 December 2011. Please update your apps to use `api_version` 3 before then.
+*Important*note:* We have deprecated `api_version` 2.
+Go apps that use `api_version` 2 will stop working after 16 December 2011.
+Please update your apps to use `api_version` 3 before then.
 
-See the [[http://code.google.com/p/googleappengine/wiki/SdkForGoReleaseNotes][release notes]] for a full list of changes. Please direct any questions about the new SDK to the [[http://groups.google.com/group/google-appengine-go][Go App Engine discussion group]].
+See the [[http://code.google.com/p/googleappengine/wiki/SdkForGoReleaseNotes][release notes]]
+for a full list of changes.
+Please direct any questions about the new SDK to the [[http://groups.google.com/group/google-appengine-go][Go App Engine discussion group]].
diff --git a/content/go-at-google-io-2011-videos.article b/content/go-at-google-io-2011-videos.article
index 50dc6f2..909bfa9 100644
--- a/content/go-at-google-io-2011-videos.article
+++ b/content/go-at-google-io-2011-videos.article
@@ -6,17 +6,27 @@
 
 * Introduction
 
-The Go team had a great time at Google I/O 2011. It was a pleasure to meet so many programmers who share our enthusiasm for Go, and to share our work of the past few months. For those of you that couldn’t be there in person, you can now watch videos of our two Go presentations on YouTube.
+The Go team had a great time at Google I/O 2011.
+It was a pleasure to meet so many programmers who share our enthusiasm for Go,
+and to share our work of the past few months.
+For those of you that couldn’t be there in person,
+you can now watch videos of our two Go presentations on YouTube.
 
 * Writing Web Apps in Go
 
-In “[[http://www.youtube.com/watch?v=-i0hat7pdpk][Writing Web Apps in Go]]” we announce the [[https://blog.golang.org/2011/05/go-and-google-app-engine.html][Go runtime for Google App Engine]] and walk through the development and deployment of [[http://moustach-io.appspot.com/][Moustachio]], the first Go App Engine app.
+In “[[http://www.youtube.com/watch?v=-i0hat7pdpk][Writing Web Apps in Go]]”
+we announce the [[https://blog.golang.org/2011/05/go-and-google-app-engine.html][Go runtime for Google App Engine]]
+and walk through the development and deployment of [[http://moustach-io.appspot.com/][Moustachio]],
+the first Go App Engine app.
 
 .iframe //www.youtube.com/embed/-i0hat7pdpk 349 560
 
 (See the [[https://golang.org/doc/talks/io2011/Writing_Web_Apps_in_Go.pdf][presentation slides]].)
 
-The [[https://code.google.com/p/appengine-go/source/browse/example/moustachio][source code]] for Moustachio is available as part of [[http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Go][the SDK]] along with some other examples, such as this [[http://mandelbrot-tiles.appspot.com/][Mandelbrot demo]].
+The [[https://code.google.com/p/appengine-go/source/browse/example/moustachio][source code]]
+for Moustachio is available as part of [[http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Go][the SDK]]
+along with some other examples,
+such as this [[http://mandelbrot-tiles.appspot.com/][Mandelbrot demo]].
 
 Most important, this talk features the debut of the plush gopher.
 
@@ -26,8 +36,11 @@
 
 * Real World Go
 
-“[[http://www.youtube.com/watch?v=7QDVRowyUQA][Real World Go]]”, presented at [[http://io-bootcamp.com][I/O Bootcamp]], gives a brief introduction to Go and four case studies of its use in solving real problems:
-- [[http://heroku.com][Heroku]] with [[https://github.com/ha/doozerd][Doozer]], a highly available consistent data store,
+“[[http://www.youtube.com/watch?v=7QDVRowyUQA][Real World Go]]”,
+presented at [[http://io-bootcamp.com][I/O Bootcamp]],
+gives a brief introduction to Go and four case studies of its use in solving real problems:
+- [[http://heroku.com][Heroku]] with [[https://github.com/ha/doozerd][Doozer]],
+  a highly available consistent data store,
 
 - [[http://mroffice.org/telephony.html][MROffice Dialer]], a VOIP system for call centers,
 
diff --git a/content/go-at-heroku.article b/content/go-at-heroku.article
index b2785b7..6663b6c 100644
--- a/content/go-at-heroku.article
+++ b/content/go-at-heroku.article
@@ -8,20 +8,65 @@
 
 * Introduction
 
-_This_week’s_blog_post_is_written_by_ [[http://xph.us/][_Keith_Rarick_]] _and_ [[http://itsbonus.heroku.com/][_Blake_Mizerany_]], _systems_engineers_at_ [[http://www.heroku.com/][Heroku]]. _In_their_own_words,_they_"eat,_drink,_and_sleep_distributed_systems."_Here_they_discuss_their_experiences_using_Go._
+_This_week’s_blog_post_is_written_by_ [[http://xph.us/][_Keith_Rarick_]]
+_and_ [[http://itsbonus.heroku.com/][_Blake_Mizerany_]],
+_systems_engineers_at_ [[http://www.heroku.com/][Heroku]].
+_In_their_own_words,_they_"eat,_drink,_and_sleep_distributed_systems."_Here_they_discuss_their_experiences_using_Go._
 
-A big problem that comes with building distributed systems is the coordination of physical servers. Each server needs to know various facts about the system as a whole. This critical data includes locks, configuration data, and so on, and it must be consistent and available even during data store failures, so we need a data store with solid consistency guarantees. Our solution to this problem is [[http://xph.us/2011/04/13/introducing-doozer.html][Doozer]], a new, consistent, highly-available data store written in Go.
+A big problem that comes with building distributed systems is the coordination
+of physical servers.
+Each server needs to know various facts about the system as a whole.
+This critical data includes locks, configuration data,
+and so on, and it must be consistent and available even during data store failures,
+so we need a data store with solid consistency guarantees.
+Our solution to this problem is [[http://xph.us/2011/04/13/introducing-doozer.html][Doozer]],
+a new, consistent, highly-available data store written in Go.
 
-At Doozer's core is [[http://en.wikipedia.org/wiki/Paxos_(computer_science)][Paxos]], a family of protocols for solving consensus in an unreliable network of unreliable nodes. While Paxos is essential to running a fault-tolerant system, it is notorious for being difficult to implement. Even example implementations that can be found online are complex and hard to follow, despite being simplified for educational purposes. Existing production systems have a reputation for being worse.
+At Doozer's core is [[http://en.wikipedia.org/wiki/Paxos_(computer_science)][Paxos]],
+a family of protocols for solving consensus in an unreliable network of unreliable nodes.
+While Paxos is essential to running a fault-tolerant system,
+it is notorious for being difficult to implement.
+Even example implementations that can be found online are complex and hard to follow,
+despite being simplified for educational purposes.
+Existing production systems have a reputation for being worse.
 
-Fortunately, Go's concurrency primitives made the task much easier. Paxos is defined in terms of independent, concurrent processes that communicate via passing messages. In Doozer, these processes are implemented as goroutines, and their communications as channel operations. In the same way that garbage collectors improve upon malloc and free, we found that [[https://blog.golang.org/2010/07/share-memory-by-communicating.html][goroutines and channels]] improve upon the lock-based approach to concurrency. These tools let us avoid complex bookkeeping and stay focused on the problem at hand. We are still amazed at how few lines of code it took to achieve something renowned for being difficult.
+Fortunately, Go's concurrency primitives made the task much easier.
+Paxos is defined in terms of independent,
+concurrent processes that communicate via passing messages.
+In Doozer, these processes are implemented as goroutines,
+and their communications as channel operations.
+In the same way that garbage collectors improve upon malloc and free,
+we found that [[https://blog.golang.org/2010/07/share-memory-by-communicating.html][goroutines and channels]]
+improve upon the lock-based approach to concurrency.
+These tools let us avoid complex bookkeeping and stay focused on the problem at hand.
+We are still amazed at how few lines of code it took to achieve something
+renowned for being difficult.
 
-The standard packages in Go were another big win for Doozer. The Go team is very pragmatic about what goes into them. For instance, a package we quickly found useful was [[https://golang.org/pkg/websocket/][websocket]]. Once we had a working data store, we needed an easy way to introspect it and visualize activity. Using the websocket package, Keith was able to add the web viewer on his train ride home and without requiring external dependencies. This is a real testament to how well Go mixes systems and application programming.
+The standard packages in Go were another big win for Doozer.
+The Go team is very pragmatic about what goes into them.
+For instance, a package we quickly found useful was [[https://golang.org/pkg/websocket/][websocket]].
+Once we had a working data store, we needed an easy way to introspect it
+and visualize activity.
+Using the websocket package, Keith was able to add the web viewer on his
+train ride home and without requiring external dependencies.
+This is a real testament to how well Go mixes systems and application programming.
 
-One of our favorite productivity gains was provided by Go's source formatter: [[https://golang.org/cmd/gofmt/][gofmt]]. We never argued over where to put a curly-brace, tabs vs. spaces, or if we should align assignments. We simply agreed that the buck stopped at the default output from gofmt.
+One of our favorite productivity gains was provided by Go's source formatter:
+[[https://golang.org/cmd/gofmt/][gofmt]].
+We never argued over where to put a curly-brace,
+tabs vs. spaces, or if we should align assignments.
+We simply agreed that the buck stopped at the default output from gofmt.
 
-Deploying Doozer was satisfyingly simple. Go builds statically linked binaries which means Doozer has no external dependencies; it's a single file that can be copied to any machine and immediately launched to join a cluster of running Doozers.
+Deploying Doozer was satisfyingly simple.
+Go builds statically linked binaries which means Doozer has no external dependencies;
+it's a single file that can be copied to any machine and immediately launched
+to join a cluster of running Doozers.
 
-Finally, Go's maniacal focus on simplicity and orthogonality aligns with our view of software engineering. Like the Go team, we are pragmatic about what features go into Doozer. We sweat the details, preferring to change an existing feature instead of introducing a new one. In this sense, Go is a perfect match for Doozer.
+Finally, Go's maniacal focus on simplicity and orthogonality aligns with
+our view of software engineering.
+Like the Go team, we are pragmatic about what features go into Doozer.
+We sweat the details, preferring to change an existing feature instead of
+introducing a new one.
+In this sense, Go is a perfect match for Doozer.
 
 We already have future projects in mind for Go. Doozer is just the start of much bigger system.
diff --git a/content/go-at-io-frequently-asked-questions.article b/content/go-at-io-frequently-asked-questions.article
index fb36f84..9b7d009 100644
--- a/content/go-at-io-frequently-asked-questions.article
+++ b/content/go-at-io-frequently-asked-questions.article
@@ -6,28 +6,68 @@
 
 * Introduction
 
-Among the high-profile product launches at Google I/O last week, our small team gave presentations to packed rooms and met many present and future Go programmers. It was especially gratifying to meet with so many people who, after learning a bit about Go, were excited by the potential benefits (both immediate and long-term) they could gain from using it.
+Among the high-profile product launches at Google I/O last week,
+our small team gave presentations to packed rooms and met many present and
+future Go programmers.
+It was especially gratifying to meet with so many people who,
+after learning a bit about Go, were excited by the potential benefits (both
+immediate and long-term) they could gain from using it.
 
 We were asked a lot of good questions during I/O, and in this post I'd like to recap and expand upon some of them.
 
 How suitable is Go for production systems?
-Go is ready and stable now. We are pleased to report that Google is using Go for some production systems, and they are performing well. Of course there is still room for improvement - that's why we're continuing to work on the language, libraries, tools, and runtime.
+Go is ready and stable now. We are pleased to report that Google is using
+Go for some production systems,
+and they are performing well.
+Of course there is still room for improvement - that's why we're continuing
+to work on the language,
+libraries, tools, and runtime.
 
 Do you have plans to implement generics?
-Many proposals for generics-like features have been mooted both publicly and internally, but as yet we haven't found a proposal that is consistent with the rest of the language. We think that one of Go's key strengths is its simplicity, so we are wary of introducing new features that might make the language more difficult to understand. Additionally, the more Go code we write (and thus the better we learn how to write Go code ourselves), the less we feel the need for such a language feature.
+Many proposals for generics-like features have been mooted both publicly and internally,
+but as yet we haven't found a proposal that is consistent with the rest of the language.
+We think that one of Go's key strengths is its simplicity,
+so we are wary of introducing new features that might make the language
+more difficult to understand.
+Additionally, the more Go code we write (and thus the better we learn how
+to write Go code ourselves),
+the less we feel the need for such a language feature.
 
 Do you have any plans to support GPU programming? 
-We don't have any immediate plans to do this, but as Go is architecture-agnostic it's quite possible. The ability to launch a goroutine that runs on a different processor architecture, and to use channels to communicate between goroutines running on separate architectures, seem like good ideas.
+We don't have any immediate plans to do this,
+but as Go is architecture-agnostic it's quite possible.
+The ability to launch a goroutine that runs on a different processor architecture,
+and to use channels to communicate between goroutines running on separate architectures,
+seem like good ideas.
 
 Are there plans to support Go under App Engine?
-Both the Go and App Engine teams would like to see this happen. As always, it is a question of resources and priorities as to if and when it will become a reality.
+Both the Go and App Engine teams would like to see this happen.
+As always, it is a question of resources and priorities as to if and when
+it will become a reality.
 
 Are there plans to support Go under Android?
-Both Go compilers support ARM code generation, so it is possible. While we think Go would be a great language for writing mobile applications, Android support is not something that's being actively worked on.
+Both Go compilers support ARM code generation, so it is possible.
+While we think Go would be a great language for writing mobile applications,
+Android support is not something that's being actively worked on.
 
 What can I use Go for?
-Go was designed with systems programming in mind. Servers, clients, databases, caches, balancers, distributors - these are applications Go is obviously useful for, and  this is how we have begun to use it within Google. However, since Go's open-source release, the community has found a diverse range of applications for the language. From web apps to games to graphics tools, Go promises to shine as a general-purpose programming language. The potential is only limited by library support, which is improving at a tremendous rate. Additionally, educators have expressed interest in using Go to teach programming, citing its succinct syntax and consistency as well-suited to the task.
+Go was designed with systems programming in mind.
+Servers, clients, databases, caches, balancers,
+distributors - these are applications Go is obviously useful for,
+and  this is how we have begun to use it within Google.
+However, since Go's open-source release, the community has found a diverse
+range of applications for the language.
+From web apps to games to graphics tools,
+Go promises to shine as a general-purpose programming language.
+The potential is only limited by library support,
+which is improving at a tremendous rate.
+Additionally, educators have expressed interest in using Go to teach programming,
+citing its succinct syntax and consistency as well-suited to the task.
 
-Thanks to everyone who attended our presentations, or came to talk with us at Office Hours. We hope to see you again at future events.
+Thanks to everyone who attended our presentations,
+or came to talk with us at Office Hours.
+We hope to see you again at future events.
 
-The video of [[http://code.google.com/events/io/2010/sessions/go-programming.html][Rob and Russ' talk]] will be uploaded to YouTube within the next week, and will then be posted on this blog.
+The video of [[http://code.google.com/events/io/2010/sessions/go-programming.html][Rob and Russ' talk]]
+will be uploaded to YouTube within the next week,
+and will then be posted on this blog.
diff --git a/content/go-becomes-more-stable.article b/content/go-becomes-more-stable.article
index 17325e4..011346b 100644
--- a/content/go-becomes-more-stable.article
+++ b/content/go-becomes-more-stable.article
@@ -6,16 +6,44 @@
 
 * Introduction
 
-The Go project is moving fast. As we learn more about Go we are compelled to change our tools, libraries, and occasionally even the language itself. We permit backward-incompatible changes so that we can learn from, rather than immortalize, our mistakes. We believe flexibility at this stage of Go’s development is essential to the project’s development and, ultimately, its longevity.
+The Go project is moving fast. As we learn more about Go we are compelled
+to change our tools,
+libraries, and occasionally even the language itself.
+We permit backward-incompatible changes so that we can learn from,
+rather than immortalize, our mistakes.
+We believe flexibility at this stage of Go’s development is essential
+to the project’s development and,
+ultimately, its longevity.
 
-Since Go's launch we have been making releases approximately once a week. Accompanying each release are [[https://golang.org/doc/devel/release.html][notes describing what changed]], with any backwards-incompatible changes signposted. Questions I hear often are "Is Go stable? How can I be sure that I won’t have to update my Go code every week?" The answer to those questions are now "Yes," and "You won't."
+Since Go's launch we have been making releases approximately once a week.
+Accompanying each release are [[https://golang.org/doc/devel/release.html][notes describing what changed]],
+with any backwards-incompatible changes signposted.
+Questions I hear often are "Is Go stable? How can I be sure that I won’t
+have to update my Go code every week?" The answer to those questions are
+now "Yes," and "You won't."
 
-With this week’s release we’re introducing a new release tagging scheme. We intend to continue with our weekly releases, but have renamed the existing tags from `release` to `weekly`. The `release` tag will now be applied to one hand-picked stable release each month or two. This more relaxed release schedule should make life easier for the average Go programmer.
+With this week’s release we’re introducing a new release tagging scheme.
+We intend to continue with our weekly releases,
+but have renamed the existing tags from `release` to `weekly`.
+The `release` tag will now be applied to one hand-picked stable release each month or two.
+This more relaxed release schedule should make life easier for the average Go programmer.
 
-Users will still need to update their code periodically (this is the cost of using a young language) but with less frequency. An additional benefit is that by tagging stable releases less often we can put more effort into automating updates. To this end we have introduced gofix, a tool that will help you update your code.
+Users will still need to update their code periodically (this is the cost
+of using a young language) but with less frequency.
+An additional benefit is that by tagging stable releases less often we can
+put more effort into automating updates.
+To this end we have introduced gofix, a tool that will help you update your code.
 
-The revision formerly tagged `release.2011-03-07.1` (now `weekly.2011-03-07.1`) has been nominated our first stable release, and has been given the tag `release.r56`. As we tag each stable release we will post an announcement to the new [[http://groups.google.com/group/golang-announce][golang-announce]] mailing list. (Why not [[http://groups.google.com/group/golang-announce/subscribe][subscribe now]]?)
+The revision formerly tagged `release.2011-03-07.1` (now `weekly.2011-03-07.1`)
+has been nominated our first stable release,
+and has been given the tag `release.r56`.
+As we tag each stable release we will post an announcement to the new [[http://groups.google.com/group/golang-announce][golang-announce]] mailing list.
+(Why not [[http://groups.google.com/group/golang-announce/subscribe][subscribe now]]?)
 
-What’s the upshot of all this? You can continue to keep your Go installation updated using `hg`update`release`, but now you should only need to update when we tag a new stable release. If you wish to stay at the leading edge, you should switch to the weekly tag with `hg`update`weekly`.
+What’s the upshot of all this? You can continue to keep your Go installation
+updated using `hg`update`release`,
+but now you should only need to update when we tag a new stable release.
+If you wish to stay at the leading edge, you should switch to the weekly
+tag with `hg`update`weekly`.
 
 Happy coding!
diff --git a/content/go-cloud.article b/content/go-cloud.article
index 84206dc..01ef8aa 100644
--- a/content/go-cloud.article
+++ b/content/go-cloud.article
@@ -7,29 +7,76 @@
 
 * Introduction
 
-Today, the Go team at Google is releasing a new open source project, [[https://github.com/google/go-cloud][Go Cloud]], a library and tools for developing on the [[https://cloud.google.com/open-cloud/][open cloud]]. With this project, we aim to make Go the language of choice for developers building portable cloud applications.
+Today, the Go team at Google is releasing a new open source project,
+[[https://github.com/google/go-cloud][Go Cloud]],
+a library and tools for developing on the [[https://cloud.google.com/open-cloud/][open cloud]].
+With this project, we aim to make Go the language of choice for developers
+building portable cloud applications.
 
 This post explains why we started this project, the details of how Go Cloud works, and how to get involved.
 
 * Why portable cloud programming? Why now?
 
-We estimate there are now [[https://research.swtch.com/gophercount][over one million]] Go developers worldwide. Go powers many of the most critical cloud infrastructure projects, including Kubernetes, Istio, and Docker. Companies like Lyft, Capital One, Netflix and [[https://github.com/golang/go/wiki/GoUsers][many more]] are depending on Go in production. Over the years, we've found that developers love Go for cloud development because of its efficiency, productivity, built-in concurrency, and low latency.
+We estimate there are now [[https://research.swtch.com/gophercount][over one million]]
+Go developers worldwide.
+Go powers many of the most critical cloud infrastructure projects,
+including Kubernetes, Istio, and Docker.
+Companies like Lyft, Capital One, Netflix and [[https://github.com/golang/go/wiki/GoUsers][many more]]
+are depending on Go in production.
+Over the years, we've found that developers love Go for cloud development
+because of its efficiency,
+productivity, built-in concurrency, and low latency.
 
-As part of our work to support Go's rapid growth, we have been interviewing teams who work with Go to understand how they use the language and how the Go ecosystem can improve further. One common theme with many organizations is the need for portability across cloud providers. These teams want to deploy robust applications in [[https://en.wikipedia.org/wiki/Cloud_computing#Multicloud][multi-cloud]] and [[https://en.wikipedia.org/wiki/Cloud_computing#Hybrid_cloud][hybrid-cloud]] environments, and migrate their workloads between cloud providers without significant changes to their code.
+As part of our work to support Go's rapid growth,
+we have been interviewing teams who work with Go to understand how they
+use the language and how the Go ecosystem can improve further.
+One common theme with many organizations is the need for portability across cloud providers.
+These teams want to deploy robust applications in [[https://en.wikipedia.org/wiki/Cloud_computing#Multicloud][multi-cloud]]
+and [[https://en.wikipedia.org/wiki/Cloud_computing#Hybrid_cloud][hybrid-cloud]] environments,
+and migrate their workloads between cloud providers without significant
+changes to their code.
 
-To achieve this, some teams attempt to decouple their applications from provider-specific APIs in order to produce simpler and more portable code. However the short-term pressure to ship features means teams often sacrifice longer-term efforts toward portability. As a result, most Go applications running in the cloud are tightly coupled to their initial cloud provider.
+To achieve this, some teams attempt to decouple their applications from
+provider-specific APIs in order to produce simpler and more portable code.
+However the short-term pressure to ship features means teams often sacrifice
+longer-term efforts toward portability.
+As a result, most Go applications running in the cloud are tightly coupled
+to their initial cloud provider.
 
-As an alternative, teams can use Go Cloud, a set of open generic cloud APIs, to write simpler and more portable cloud applications. Go Cloud also sets the foundation for an ecosystem of portable cloud libraries to be built on top of these generic APIs. Go Cloud makes it possible for teams to meet their feature development goals while also preserving the long-term flexibility for multi-cloud and hybrid-cloud architectures. Go Cloud applications can also migrate to the cloud providers that best meet their needs.
+As an alternative, teams can use Go Cloud,
+a set of open generic cloud APIs, to write simpler and more portable cloud applications.
+Go Cloud also sets the foundation for an ecosystem of portable cloud libraries
+to be built on top of these generic APIs.
+Go Cloud makes it possible for teams to meet their feature development goals
+while also preserving the long-term flexibility for multi-cloud and hybrid-cloud architectures.
+Go Cloud applications can also migrate to the cloud providers that best meet their needs.
 
 * What is Go Cloud?
 
-We have identified common services used by cloud applications and have created generic APIs to work across cloud providers. Today, Go Cloud is launching with blob storage, MySQL database access, runtime configuration, and an HTTP server configured with request logging, tracing, and health checking. Go Cloud offers support for Google Cloud Platform (GCP) and Amazon Web Services (AWS). We plan to work with cloud industry partners and the Go community to add support for additional cloud providers very soon.
+We have identified common services used by cloud applications and have created
+generic APIs to work across cloud providers.
+Today, Go Cloud is launching with blob storage,
+MySQL database access, runtime configuration,
+and an HTTP server configured with request logging,
+tracing, and health checking.
+Go Cloud offers support for Google Cloud Platform (GCP) and Amazon Web Services (AWS).
+We plan to work with cloud industry partners and the Go community to add
+support for additional cloud providers very soon.
 
-Go Cloud aims to develop vendor-neutral generic APIs for the most-used services across cloud providers such that deploying a Go application on another cloud is simple and easy. Go Cloud also lays the foundation for other open source projects to write cloud libraries that work across providers. Community feedback, from all types of developers at all levels, will inform the priority of future APIs in Go Cloud.
+Go Cloud aims to develop vendor-neutral generic APIs for the most-used services
+across cloud providers such that deploying a Go application on another cloud is simple and easy.
+Go Cloud also lays the foundation for other open source projects to write
+cloud libraries that work across providers.
+Community feedback, from all types of developers at all levels,
+will inform the priority of future APIs in Go Cloud.
 
 * How does it work?
 
-At the core of Go Cloud is a collection of generic APIs for portable cloud programming. Let's look at an example of using blob storage. You can use the generic type [[https://godoc.org/github.com/google/go-cloud/blob#Bucket][`*blob.Bucket`]] to copy a file from a local disk to a cloud provider. Let's start by opening an S3 bucket using the included [[https://godoc.org/github.com/google/go-cloud/blob/s3blob][s3blob package]]:
+At the core of Go Cloud is a collection of generic APIs for portable cloud programming.
+Let's look at an example of using blob storage.
+You can use the generic type [[https://godoc.org/github.com/google/go-cloud/blob#Bucket][`*blob.Bucket`]]
+to copy a file from a local disk to a cloud provider.
+Let's start by opening an S3 bucket using the included [[https://godoc.org/github.com/google/go-cloud/blob/s3blob][s3blob package]]:
 
     // setupBucket opens an AWS bucket.
     func setupBucket(ctx context.Context) (*blob.Bucket, error) {
@@ -44,7 +91,10 @@
         return s3blob.OpenBucket(ctx, sess, "go-cloud-bucket")
     }
 
-Once a program has a `*blob.Bucket`, it can create a `*blob.Writer`, which implements `io.Writer`. From there, the program can use the `*blob.Writer` to write data to the bucket, checking that `Close` does not report an error.
+Once a program has a `*blob.Bucket`, it can create a `*blob.Writer`,
+which implements `io.Writer`.
+From there, the program can use the `*blob.Writer` to write data to the bucket,
+checking that `Close` does not report an error.
 
     ctx := context.Background()
     b, err := setupBucket(ctx)
@@ -67,7 +117,12 @@
         log.Fatalf("Failed to close: %v", err)
     }
 
-Notice how the logic of using the bucket does not refer to AWS S3. Go Cloud makes swapping out cloud storage a matter of changing the function used to open the `*blob.Bucket`. The application could instead use Google Cloud Storage by constructing a `*blob.Bucket` using [[https://godoc.org/github.com/google/go-cloud/blob/gcsblob#OpenBucket][`gcsblob.OpenBucket`]] without changing the code that copies the file:
+Notice how the logic of using the bucket does not refer to AWS S3.
+Go Cloud makes swapping out cloud storage a matter of changing the function
+used to open the `*blob.Bucket`.
+The application could instead use Google Cloud Storage by constructing a
+`*blob.Bucket` using [[https://godoc.org/github.com/google/go-cloud/blob/gcsblob#OpenBucket][`gcsblob.OpenBucket`]]
+without changing the code that copies the file:
 
     // setupBucket opens a GCS bucket.
     func setupBucket(ctx context.Context) (*blob.Bucket, error) {
@@ -84,16 +139,44 @@
         return gcsblob.OpenBucket(ctx, "go-cloud-bucket", c)
     }
 
-While different steps are needed to access buckets on different cloud providers, the resulting type used by your application is the same: `*blob.Bucket`. This isolates application code from cloud-specific code. To increase interoperability with existing Go libraries, Go Cloud leverages established interfaces like `io.Writer`, `io.Reader`, and `*sql.DB`.
+While different steps are needed to access buckets on different cloud providers,
+the resulting type used by your application is the same: `*blob.Bucket`.
+This isolates application code from cloud-specific code.
+To increase interoperability with existing Go libraries,
+Go Cloud leverages established interfaces like `io.Writer`,
+`io.Reader`, and `*sql.DB`.
 
-The setup code needed to access cloud services tends to follow a pattern: higher abstractions are constructed from more basic abstractions. While you could write this code by hand, Go Cloud automates this with *Wire*, a tool that generates cloud-specific setup code for you. The [[https://github.com/google/go-cloud/tree/master/wire][Wire documentation]] explains how to install and use the tool and the [[https://github.com/google/go-cloud/tree/master/samples/guestbook][Guestbook sample]] shows Wire in action.
+The setup code needed to access cloud services tends to follow a pattern:
+higher abstractions are constructed from more basic abstractions.
+While you could write this code by hand, Go Cloud automates this with *Wire*,
+a tool that generates cloud-specific setup code for you.
+The [[https://github.com/google/go-cloud/tree/master/wire][Wire documentation]]
+explains how to install and use the tool and the [[https://github.com/google/go-cloud/tree/master/samples/guestbook][Guestbook sample]]
+shows Wire in action.
 
 * How can I get involved and learn more?
 
-To get started, we recommend following [[https://github.com/google/go-cloud/tree/master/samples/tutorial][the tutorial]] and then trying to build an application yourself. If you're already using AWS or GCP, you can try migrating parts of your existing application to use Go Cloud. If you're using a different cloud provider or an on-premise service, you can extend Go Cloud to support it by implementing the driver interfaces (like [[https://godoc.org/github.com/google/go-cloud/blob/driver#Bucket][`driver.Bucket`]]).
+To get started, we recommend following [[https://github.com/google/go-cloud/tree/master/samples/tutorial][the tutorial]]
+and then trying to build an application yourself.
+If you're already using AWS or GCP, you can try migrating parts of your
+existing application to use Go Cloud.
+If you're using a different cloud provider or an on-premise service,
+you can extend Go Cloud to support it by implementing the driver interfaces
+(like [[https://godoc.org/github.com/google/go-cloud/blob/driver#Bucket][`driver.Bucket`]]).
 
-We appreciate any and all input you have about your experience. [[https://github.com/google/go-cloud][Go Cloud's]] development is conducted on GitHub. We are looking forward to contributions, including pull requests. [[https://github.com/google/go-cloud/issues/new][File an issue]] to tell us what could be better or what future APIs the project should support. For updates and discussion about the project, join [[https://groups.google.com/forum/#!forum/go-cloud][the project's mailing list]].
+We appreciate any and all input you have about your experience.
+[[https://github.com/google/go-cloud][Go Cloud's]] development is conducted on GitHub.
+We are looking forward to contributions, including pull requests.
+[[https://github.com/google/go-cloud/issues/new][File an issue]] to tell
+us what could be better or what future APIs the project should support.
+For updates and discussion about the project,
+join [[https://groups.google.com/forum/#!forum/go-cloud][the project's mailing list]].
 
-The project requires contributors to sign the same Contributor License Agreement as that of the Go project. Read the [[https://github.com/google/go-cloud/blob/master/CONTRIBUTING.md][contribution guidelines]] for more details. Please note, Go Cloud is covered by the Go [[https://github.com/google/go-cloud/blob/master/CODE_OF_CONDUCT.md][Code of Conduct]].
+The project requires contributors to sign the same Contributor License Agreement
+as that of the Go project.
+Read the [[https://github.com/google/go-cloud/blob/master/CONTRIBUTING.md][contribution guidelines]] for more details.
+Please note, Go Cloud is covered by the Go [[https://github.com/google/go-cloud/blob/master/CODE_OF_CONDUCT.md][Code of Conduct]].
 
-Thank you for taking the time to learn about Go Cloud. We are excited to work with you to make Go the language of choice for developers building portable cloud applications.
+Thank you for taking the time to learn about Go Cloud.
+We are excited to work with you to make Go the language of choice for developers
+building portable cloud applications.
diff --git a/content/go-concurrency-patterns-timing-out-and.article b/content/go-concurrency-patterns-timing-out-and.article
index 93411fd..0789006 100644
--- a/content/go-concurrency-patterns-timing-out-and.article
+++ b/content/go-concurrency-patterns-timing-out-and.article
@@ -6,7 +6,13 @@
 
 * Introduction
 
-Concurrent programming has its own idioms. A good example is timeouts. Although Go's channels do not support them directly, they are easy to implement. Say we want to receive from the channel `ch`, but want to wait at most one second for the value to arrive. We would start by creating a signalling channel and launching a goroutine that sleeps before sending on the channel:
+Concurrent programming has its own idioms.
+A good example is timeouts. Although Go's channels do not support them directly,
+they are easy to implement.
+Say we want to receive from the channel `ch`,
+but want to wait at most one second for the value to arrive.
+We would start by creating a signalling channel and launching a goroutine
+that sleeps before sending on the channel:
 
 	    timeout := make(chan bool, 1)
 	    go func() {
@@ -14,7 +20,9 @@
 	        timeout <- true
 	    }()
 
-We can then use a `select` statement to receive from either `ch` or `timeout`. If nothing arrives on `ch` after one second, the timeout case is selected and the attempt to read from ch is abandoned.
+We can then use a `select` statement to receive from either `ch` or `timeout`.
+If nothing arrives on `ch` after one second,
+the timeout case is selected and the attempt to read from ch is abandoned.
 
 	    select {
 	    case <-ch:
@@ -23,13 +31,24 @@
 	        // the read from ch has timed out
 	    }
 
-The `timeout` channel is buffered with space for 1 value, allowing the timeout goroutine to send to the channel and then exit. The goroutine doesn't know (or care) whether the value is received. This means the goroutine won't hang around forever if the `ch` receive happens before the timeout is reached. The `timeout` channel will eventually be deallocated by the garbage collector.
+The `timeout` channel is buffered with space for 1 value,
+allowing the timeout goroutine to send to the channel and then exit.
+The goroutine doesn't know (or care) whether the value is received.
+This means the goroutine won't hang around forever if the `ch` receive happens
+before the timeout is reached.
+The `timeout` channel will eventually be deallocated by the garbage collector.
 
-(In this example we used `time.Sleep` to demonstrate the mechanics of goroutines and channels. In real programs you should use ` [[https://golang.org/pkg/time/#After][time.After]]`, a function that returns a channel and sends on that channel after the specified duration.)
+(In this example we used `time.Sleep` to demonstrate the mechanics of goroutines and channels.
+In real programs you should use ` [[https://golang.org/pkg/time/#After][time.After]]`,
+a function that returns a channel and sends on that channel after the specified duration.)
 
-Let's look at another variation of this pattern. In this example we have a program that reads from multiple replicated databases simultaneously. The program needs only one of the answers, and it should accept the answer that arrives first.
+Let's look at another variation of this pattern.
+In this example we have a program that reads from multiple replicated databases simultaneously.
+The program needs only one of the answers,
+and it should accept the answer that arrives first.
 
-The function `Query` takes a slice of database connections and a `query` string. It queries each of the databases in parallel and returns the first response it receives:
+The function `Query` takes a slice of database connections and a `query` string.
+It queries each of the databases in parallel and returns the first response it receives:
 
 	func Query(conns []Conn, query string) Result {
 	    ch := make(chan Result)
@@ -44,8 +63,20 @@
 	    return <-ch
 	}
 
-In this example, the closure does a non-blocking send, which it achieves by using the send operation in `select` statement with a `default` case. If the send cannot go through immediately the default case will be selected. Making the send non-blocking guarantees that none of the goroutines launched in the loop will hang around. However, if the result arrives before the main function has made it to the receive, the send could fail since no one is ready.
+In this example, the closure does a non-blocking send,
+which it achieves by using the send operation in `select` statement with a `default` case.
+If the send cannot go through immediately the default case will be selected.
+Making the send non-blocking guarantees that none of the goroutines launched
+in the loop will hang around.
+However, if the result arrives before the main function has made it to the receive,
+the send could fail since no one is ready.
 
-This problem is a textbook example of what is known as a [[https://en.wikipedia.org/wiki/Race_condition][race condition]], but the fix is trivial. We just make sure to buffer the channel `ch` (by adding the buffer length as the second argument to [[https://golang.org/pkg/builtin/#make][make]]), guaranteeing that the first send has a place to put the value. This ensures the send will always succeed, and the first value to arrive will be retrieved regardless of the order of execution.
+This problem is a textbook example of what is known as a [[https://en.wikipedia.org/wiki/Race_condition][race condition]],
+but the fix is trivial.
+We just make sure to buffer the channel `ch` (by adding the buffer length
+as the second argument to [[https://golang.org/pkg/builtin/#make][make]]),
+guaranteeing that the first send has a place to put the value.
+This ensures the send will always succeed,
+and the first value to arrive will be retrieved regardless of the order of execution.
 
 These two examples demonstrate the simplicity with which Go can express complex interactions between goroutines.
diff --git a/content/go-fmt-your-code.article b/content/go-fmt-your-code.article
index ea6cd13..7b560d7 100644
--- a/content/go-fmt-your-code.article
+++ b/content/go-fmt-your-code.article
@@ -12,15 +12,21 @@
 
 - easier to *write*: never worry about minor formatting concerns while hacking away,
 
-- easier to *read*: when all code looks the same you need not mentally convert others' formatting style into something you can understand.
+- easier to *read*: when all code looks the same you need not mentally convert
+  others' formatting style into something you can understand.
 
-- easier to *maintain*: mechanical changes to the source don't cause unrelated changes to the file's formatting; diffs show only the real changes.
+- easier to *maintain*: mechanical changes to the source don't cause unrelated
+  changes to the file's formatting;
+  diffs show only the real changes.
 
 - *uncontroversial*: never have a debate about spacing or brace position ever again!
 
 * Format your code
 
-We recently conducted a survey of Go packages in the wild and found that about 70% of them are formatted according to gofmt's rules. This was more than expected - and thanks to everyone who uses gofmt - but it would be great to close the gap.
+We recently conducted a survey of Go packages in the wild and found that
+about 70% of them are formatted according to gofmt's rules.
+This was more than expected - and thanks to everyone who uses gofmt - but
+it would be great to close the gap.
 
 To format your code, you can use the gofmt tool directly:
 
@@ -30,33 +36,66 @@
 
 	 go fmt path/to/your/package
 
-To help keep your code in the canonical style, the Go repository contains hooks for editors and version control systems that make it easy to run gofmt on your code.
+To help keep your code in the canonical style,
+the Go repository contains hooks for editors and version control systems
+that make it easy to run gofmt on your code.
 
-For Vim users, the [[https://github.com/fatih/vim-go][Vim plugin for Go]] includes the :Fmt command that runs gofmt on the current buffer.
+For Vim users, the [[https://github.com/fatih/vim-go][Vim plugin for Go]]
+includes the :Fmt command that runs gofmt on the current buffer.
 
-For emacs users, [[https://github.com/dominikh/go-mode.el][go-mode.el]] provides a gofmt-before-save hook that can be installed by adding this line to your .emacs file:
+For emacs users, [[https://github.com/dominikh/go-mode.el][go-mode.el]]
+provides a gofmt-before-save hook that can be installed by adding this line
+to your .emacs file:
 
 	 (add-hook 'before-save-hook #'gofmt-before-save)
 
-For Eclipse or Sublime Text users, the [[https://github.com/GoClipse/goclipse][GoClipse]] and [[https://github.com/DisposaBoy/GoSublime][GoSublime]] projects add a gofmt facility to those editors.
+For Eclipse or Sublime Text users, the [[https://github.com/GoClipse/goclipse][GoClipse]]
+and [[https://github.com/DisposaBoy/GoSublime][GoSublime]] projects add
+a gofmt facility to those editors.
 
-And for Git aficionados, the [[https://github.com/golang/go/blob/release-branch.go1.1/misc/git/pre-commit][misc/git/pre-commit script]] is a pre-commit hook that prevents incorrectly-formatted Go code from being committed. If you use Mercurial, the [[https://bitbucket.org/fhs/hgstyle/overview][hgstyle plugin]] provides a gofmt pre-commit hook.
+And for Git aficionados, the [[https://github.com/golang/go/blob/release-branch.go1.1/misc/git/pre-commit][misc/git/pre-commit script]]
+is a pre-commit hook that prevents incorrectly-formatted Go code from being committed.
+If you use Mercurial, the [[https://bitbucket.org/fhs/hgstyle/overview][hgstyle plugin]]
+provides a gofmt pre-commit hook.
 
 * Mechanical source transformation
 
-One of the greatest virtues of machine-formatted code is that it can be transformed mechanically without generating unrelated formatting noise in the diffs. Mechanical transformation is invaluable when working with large code bases, as it is both more comprehensive and less error prone than making wide-sweeping changes by hand. Indeed, when working at scale (like we do at Google) it often isn't practical to make these kinds of changes manually.
+One of the greatest virtues of machine-formatted code is that it can be
+transformed mechanically without generating unrelated formatting noise in the diffs.
+Mechanical transformation is invaluable when working with large code bases,
+as it is both more comprehensive and less error prone than making wide-sweeping changes by hand.
+Indeed, when working at scale (like we do at Google) it often isn't practical
+to make these kinds of changes manually.
 
-The easiest way to mechanically manipulate Go code is with gofmt's -r flag. The flag specifies a rewrite rule of the form
+The easiest way to mechanically manipulate Go code is with gofmt's -r flag.
+The flag specifies a rewrite rule of the form
 
 	 pattern -> replacement
 
-where both pattern and replacement are valid Go expressions. In the pattern, single-character lowercase identifiers serve as wildcards matching arbitrary sub-expressions, and those expressions are substituted for the same identifiers in the replacement.
+where both pattern and replacement are valid Go expressions.
+In the pattern, single-character lowercase identifiers serve as wildcards
+matching arbitrary sub-expressions,
+and those expressions are substituted for the same identifiers in the replacement.
 
-For example, this[[https://golang.org/cl/7038051][ recent change]] to the Go core rewrote some uses of [[https://golang.org/pkg/bytes/#Compare][bytes.Compare]] to use the more efficient [[https://golang.org/pkg/bytes/#Equal][bytes.Equal]]. The contributor made the change using just two gofmt invocations:
+For example, this[[https://golang.org/cl/7038051][ recent change]] to the
+Go core rewrote some uses of [[https://golang.org/pkg/bytes/#Compare][bytes.Compare]]
+to use the more efficient [[https://golang.org/pkg/bytes/#Equal][bytes.Equal]].
+The contributor made the change using just two gofmt invocations:
 
 	 gofmt -r 'bytes.Compare(a, b) == 0 -> bytes.Equal(a, b)'
 	 gofmt -r 'bytes.Compare(a, b) != 0 -> !bytes.Equal(a, b)'
 
-Gofmt also enables [[https://golang.org/cmd/fix/][gofix]], which can make arbitrarily complex source transformations. Gofix was an invaluable tool during the early days when we regularly made breaking changes to the language and libraries. For example, before Go 1 the built-in error interface didn't exist and the convention was to use the os.Error type. When we [[https://golang.org/doc/go1.html#errors][introduced error]], we provided a gofix module that rewrote all references to os.Error and its associated helper functions to use error and the new [[https://golang.org/pkg/errors/][errors package]]. It would have been daunting to attempt by hand, but with the code in a standard format it was relatively easy to prepare, execute, and review this change which touched almost all Go code in existence.
+Gofmt also enables [[https://golang.org/cmd/fix/][gofix]],
+which can make arbitrarily complex source transformations.
+Gofix was an invaluable tool during the early days when we regularly made
+breaking changes to the language and libraries.
+For example, before Go 1 the built-in error interface didn't exist and the
+convention was to use the os.Error type.
+When we [[https://golang.org/doc/go1.html#errors][introduced error]],
+we provided a gofix module that rewrote all references to os.Error and its
+associated helper functions to use error and the new [[https://golang.org/pkg/errors/][errors package]].
+It would have been daunting to attempt by hand,
+but with the code in a standard format it was relatively easy to prepare,
+execute, and review this change which touched almost all Go code in existence.
 
 For more about gofix, see [[https://blog.golang.org/introducing-gofix][this article]].
diff --git a/content/go-fonts.article b/content/go-fonts.article
index 24cd131..8996237 100644
--- a/content/go-fonts.article
+++ b/content/go-fonts.article
@@ -17,7 +17,8 @@
 the release of a family of high-quality [[https://en.wikipedia.org/wiki/Windows_Glyph_List_4][WGL4]] TrueType fonts, 
 created by the [[http://bigelowandholmes.typepad.com/][Bigelow & Holmes]] type foundry specifically for the Go project.
 
-The font family, called Go (naturally), includes proportional- and fixed-width faces in normal, bold, and italic renderings.
+The font family, called Go (naturally), includes proportional- and fixed-width faces in normal,
+bold, and italic renderings.
 The fonts have been tested for technical uses, particularly programming.
 Go source code looks particularly good when displayed in Go fonts, as its name implies, with things like
 punctuation characters easily distinguishable and operators lined up and placed consistently:
@@ -269,17 +270,27 @@
 * References
 
 
-[1] Morris, R. A., Aquilante, K., Yager, D., & Bigelow, C. (2002, May). P‐13: Serifs Slow RSVP Reading at Very Small Sizes, but Don't Matter at Larger Sizes. In SID Symposium Digest of Technical Papers (Vol. 33, No. 1, pp. 244-247). Blackwell Publishing Ltd.
+[1] Morris, R. A., Aquilante, K., Yager, D., & Bigelow, C.
+(2002, May). P‐13: Serifs Slow RSVP Reading at Very Small Sizes,
+but Don't Matter at Larger Sizes.
+In SID Symposium Digest of Technical Papers (Vol.
+33, No. 1, pp. 244-247). Blackwell Publishing Ltd.
 
 
-[2] Bryan Reimer et al. (2014) “Assessing the impact of typeface design in a text-rich automotive user interface”, Ergonomics, 57:11, 1643-1658.
+[2] Bryan Reimer et al. (2014) “Assessing the impact of typeface design
+in a text-rich automotive user interface”,
+Ergonomics, 57:11, 1643-1658.
 http://www.tandfonline.com/doi/abs/10.1080/00140139.2014.940000
 
 
-[3] Adrian Frutiger - Typefaces: The Complete Works. H. Osterer and P. Stamm, editors. Birkhäuser, Basel, 2009, page 257.
+[3] Adrian Frutiger - Typefaces: The Complete Works.
+H. Osterer and P. Stamm, editors. Birkhäuser,
+Basel, 2009, page 257.
 
 
-[4] Legge, G. E., & Bigelow, C. A. (2011). Does print size matter for reading? A review of findings from vision science and typography. Journal of Vision, 11(5), 8-8. http://jov.arvojournals.org/article.aspx?articleid=2191906
+[4] Legge, G. E., & Bigelow, C. A. (2011).
+Does print size matter for reading? A review of findings from vision science and typography.
+Journal of Vision, 11(5), 8-8. http://jov.arvojournals.org/article.aspx?articleid=2191906
 
 
 [5] Charles Bigelow. "Oh, oh, zero!" TUGboat, Volume 34 (2013), No. 2. 
diff --git a/content/go-for-app-engine-is-now-generally.article b/content/go-for-app-engine-is-now-generally.article
index 1674722..d1a2ac1 100644
--- a/content/go-for-app-engine-is-now-generally.article
+++ b/content/go-for-app-engine-is-now-generally.article
@@ -6,13 +6,28 @@
 
 * Introduction
 
-The Go and App Engine teams are excited to announce that the Go runtime for App Engine is now generally available. This means you can take that Go app you've been working on (or meaning to work on) and deploy it to App Engine right now with the new [[http://code.google.com/appengine/downloads.html][1.5.2 SDK]].
+The Go and App Engine teams are excited to announce that the Go runtime
+for App Engine is now generally available.
+This means you can take that Go app you've been working on (or meaning to
+work on) and deploy it to App Engine right now with the new [[http://code.google.com/appengine/downloads.html][1.5.2 SDK]].
 
-Since we announced the Go runtime at Google I/O we have continued to [[http://code.google.com/p/googleappengine/wiki/SdkForGoReleaseNotes][improve and extend]] Go support for the App Engine APIs and have added the Channels API. The Go Datastore API now supports transactions and ancestor queries, too. See the [[https://code.google.com/appengine/docs/go/][Go App Engine documentation]] for all the details.
+Since we announced the Go runtime at Google I/O we have continued to [[http://code.google.com/p/googleappengine/wiki/SdkForGoReleaseNotes][improve and extend]]
+Go support for the App Engine APIs and have added the Channels API.
+The Go Datastore API now supports transactions and ancestor queries, too.
+See the [[https://code.google.com/appengine/docs/go/][Go App Engine documentation]]
+for all the details.
 
-For those who have been using the Go SDK already, please note that the 1.5.2 release introduces `api_version` 2. This is because the new SDK is based on Go `release.r58.1` (the current stable version of Go) and is not backwards compatible with the previous release. Existing apps may require changes as per the [[https://golang.org/doc/devel/release.html#r58][r58 release notes]]. Once you've updated your code, you should redeploy your app with the line `api_version:`2` in its `app.yaml` file. Apps written against `api_version` 1 will stop working after the 18th of August.
+For those who have been using the Go SDK already,
+please note that the 1.5.2 release introduces `api_version` 2.
+This is because the new SDK is based on Go `release.r58.1` (the current
+stable version of Go) and is not backwards compatible with the previous release.
+Existing apps may require changes as per the [[https://golang.org/doc/devel/release.html#r58][r58 release notes]].
+Once you've updated your code, you should redeploy your app with the line
+`api_version:`2` in its `app.yaml` file.
+Apps written against `api_version` 1 will stop working after the 18th of August.
 
-Finally, we owe a huge thanks to our trusted testers and their many bug reports. Their help was invaluable in reaching this important milestone.
+Finally, we owe a huge thanks to our trusted testers and their many bug reports.
+Their help was invaluable in reaching this important milestone.
 
 _The_fastest_way_to_get_started_with_Go_on_App_Engine_is_with_the_ [[http://code.google.com/appengine/docs/go/gettingstarted/][_Getting_Started_guide_]].
 
diff --git a/content/go-image-package.article b/content/go-image-package.article
index 347c597..2626864 100644
--- a/content/go-image-package.article
+++ b/content/go-image-package.article
@@ -6,11 +6,20 @@
 
 * Introduction
 
-The [[https://golang.org/pkg/image/][image]] and [[https://golang.org/pkg/image/color/][image/color]] packages define a number of types: `color.Color` and `color.Model` describe colors, `image.Point` and `image.Rectangle` describe basic 2-D geometry, and `image.Image` brings the two concepts together to represent a rectangular grid of colors. A [[https://golang.org/doc/articles/image_draw.html][separate article]] covers image composition with the [[https://golang.org/pkg/image/draw/][image/draw]] package.
+The [[https://golang.org/pkg/image/][image]] and [[https://golang.org/pkg/image/color/][image/color]]
+packages define a number of types:
+`color.Color` and `color.Model` describe colors,
+`image.Point` and `image.Rectangle` describe basic 2-D geometry,
+and `image.Image` brings the two concepts together to represent a rectangular grid of colors.
+A [[https://golang.org/doc/articles/image_draw.html][separate article]]
+covers image composition with the [[https://golang.org/pkg/image/draw/][image/draw]] package.
 
 * Colors and Color Models
 
-[[https://golang.org/pkg/image/color/#Color][Color]] is an interface that defines the minimal method set of any type that can be considered a color: one that can be converted to red, green, blue and alpha values. The conversion may be lossy, such as converting from CMYK or YCbCr color spaces.
+[[https://golang.org/pkg/image/color/#Color][Color]] is an interface that
+defines the minimal method set of any type that can be considered a color:
+one that can be converted to red, green, blue and alpha values.
+The conversion may be lossy, such as converting from CMYK or YCbCr color spaces.
 
 	type Color interface {
 	    // RGBA returns the alpha-premultiplied red, green, blue and alpha values
@@ -20,7 +29,17 @@
 	    RGBA() (r, g, b, a uint32)
 	}
 
-There are three important subtleties about the return values. First, the red, green and blue are alpha-premultiplied: a fully saturated red that is also 25% transparent is represented by RGBA returning a 75% r. Second, the channels have a 16-bit effective range: 100% red is represented by RGBA returning an r of 65535, not 255, so that converting from CMYK or YCbCr is not as lossy. Third, the type returned is `uint32`, even though the maximum value is 65535, to guarantee that multiplying two values together won't overflow. Such multiplications occur when blending two colors according to an alpha mask from a third color, in the style of [[https://en.wikipedia.org/wiki/Alpha_compositing][Porter and Duff's]] classic algebra:
+There are three important subtleties about the return values.
+First, the red, green and blue are alpha-premultiplied:
+a fully saturated red that is also 25% transparent is represented by RGBA returning a 75% r.
+Second, the channels have a 16-bit effective range:
+100% red is represented by RGBA returning an r of 65535,
+not 255, so that converting from CMYK or YCbCr is not as lossy.
+Third, the type returned is `uint32`, even though the maximum value is 65535,
+to guarantee that multiplying two values together won't overflow.
+Such multiplications occur when blending two colors according to an alpha
+mask from a third color,
+in the style of [[https://en.wikipedia.org/wiki/Alpha_compositing][Porter and Duff's]] classic algebra:
 
 	dstr, dstg, dstb, dsta := dst.RGBA()
 	srcr, srcg, srcb, srca := src.RGBA()
@@ -30,17 +49,34 @@
 	// The calculation for green, blue and alpha is similar.
 	dstr = (dstr*(M-m) + srcr*m) / M
 
-The last line of that code snippet would have been more complicated if we worked with non-alpha-premultiplied colors, which is why `Color` uses alpha-premultiplied values.
+The last line of that code snippet would have been more complicated if we
+worked with non-alpha-premultiplied colors,
+which is why `Color` uses alpha-premultiplied values.
 
-The image/color package also defines a number of concrete types that implement the `Color` interface. For example, [[https://golang.org/pkg/image/color/#RGBA][`RGBA`]] is a struct that represents the classic "8 bits per channel" color.
+The image/color package also defines a number of concrete types that implement
+the `Color` interface.
+For example, [[https://golang.org/pkg/image/color/#RGBA][`RGBA`]] is a struct
+that represents the classic "8 bits per channel" color.
 
 	type RGBA struct {
 	    R, G, B, A uint8
 	}
 
-Note that the `R` field of an `RGBA` is an 8-bit alpha-premultiplied color in the range [0, 255]. `RGBA` satisfies the `Color` interface by multiplying that value by 0x101 to generate a 16-bit alpha-premultiplied color in the range [0, 65535]. Similarly, the [[https://golang.org/pkg/image/color/#NRGBA][`NRGBA`]] struct type represents an 8-bit non-alpha-premultiplied color, as used by the PNG image format. When manipulating an `NRGBA`'s fields directly, the values are non-alpha-premultiplied, but when calling the `RGBA` method, the return values are alpha-premultiplied.
+Note that the `R` field of an `RGBA` is an 8-bit alpha-premultiplied color
+in the range [0, 255].
+`RGBA` satisfies the `Color` interface by multiplying that value by 0x101
+to generate a 16-bit alpha-premultiplied color in the range [0, 65535].
+Similarly, the [[https://golang.org/pkg/image/color/#NRGBA][`NRGBA`]] struct
+type represents an 8-bit non-alpha-premultiplied color,
+as used by the PNG image format.
+When manipulating an `NRGBA`'s fields directly,
+the values are non-alpha-premultiplied, but when calling the `RGBA` method,
+the return values are alpha-premultiplied.
 
-A [[https://golang.org/pkg/image/color/#Model][`Model`]] is simply something that can convert `Color`s to other `Color`s, possibly lossily. For example, the `GrayModel` can convert any `Color` to a desaturated [[https://golang.org/pkg/image/color/#Gray][`Gray`]]. A `Palette` can convert any `Color` to one from a limited palette.
+A [[https://golang.org/pkg/image/color/#Model][`Model`]] is simply something
+that can convert `Color`s to other `Color`s, possibly lossily.
+For example, the `GrayModel` can convert any `Color` to a desaturated [[https://golang.org/pkg/image/color/#Gray][`Gray`]].
+A `Palette` can convert any `Color` to one from a limited palette.
 
 	type Model interface {
 	    Convert(c Color) Color
@@ -50,7 +86,10 @@
 
 * Points and Rectangles
 
-A [[https://golang.org/pkg/image/#Point][`Point`]] is an (x, y) co-ordinate on the integer grid, with axes increasing right and down. It is neither a pixel nor a grid square. A `Point` has no intrinsic width, height or color, but the visualizations below use a small colored square.
+A [[https://golang.org/pkg/image/#Point][`Point`]] is an (x,
+y) co-ordinate on the integer grid, with axes increasing right and down.
+It is neither a pixel nor a grid square. A `Point` has no intrinsic width,
+height or color, but the visualizations below use a small colored square.
 
 	type Point struct {
 	    X, Y int
@@ -60,15 +99,26 @@
 
 	    p := image.Point{2, 1}
 
-A [[https://golang.org/pkg/image/#Rectangle][`Rectangle`]] is an axis-aligned rectangle on the integer grid, defined by its top-left and bottom-right `Point`.  A `Rectangle` also has no intrinsic color, but the visualizations below outline rectangles with a thin colored line, and call out their `Min` and `Max` `Point`s.
+A [[https://golang.org/pkg/image/#Rectangle][`Rectangle`]] is an axis-aligned
+rectangle on the integer grid,
+defined by its top-left and bottom-right `Point`.
+A `Rectangle` also has no intrinsic color,
+but the visualizations below outline rectangles with a thin colored line,
+and call out their `Min` and `Max` `Point`s.
 
 	type Rectangle struct {
 	    Min, Max Point
 	}
 
-For convenience, `image.Rect(x0,`y0,`x1,`y1)` is equivalent to `image.Rectangle{image.Point{x0,`y0},`image.Point{x1,`y1}}`, but is much easier to type.
+For convenience, `image.Rect(x0,`y0,`x1,`y1)` is equivalent to `image.Rectangle{image.Point{x0,`y0},`image.Point{x1,`y1}}`,
+but is much easier to type.
 
-A `Rectangle` is inclusive at the top-left and exclusive at the bottom-right. For a `Point`p` and a `Rectangle`r`, `p.In(r)` if and only if `r.Min.X`<=`p.X`&&`p.X`<`r.Max.X`, and similarly for `Y`. This is analogous to how a slice `s[i0:i1]` is inclusive at the low end and exclusive at the high end. (Unlike arrays and slices, a `Rectangle` often has a non-zero origin.)
+A `Rectangle` is inclusive at the top-left and exclusive at the bottom-right.
+For a `Point`p` and a `Rectangle`r`, `p.In(r)` if and only if `r.Min.X`<=`p.X`&&`p.X`<`r.Max.X`,
+and similarly for `Y`.
+This is analogous to how a slice `s[i0:i1]` is inclusive at the low end
+and exclusive at the high end.
+(Unlike arrays and slices, a `Rectangle` often has a non-zero origin.)
 
 .image go-image-package_image-package-02.png
 
@@ -76,7 +126,8 @@
 	    // Dx and Dy return a rectangle's width and height.
 	    fmt.Println(r.Dx(), r.Dy(), image.Pt(0, 0).In(r)) // prints 3 4 false
 
-Adding a `Point` to a `Rectangle` translates the `Rectangle`. Points and Rectangles are not restricted to be in the bottom-right quadrant.
+Adding a `Point` to a `Rectangle` translates the `Rectangle`.
+Points and Rectangles are not restricted to be in the bottom-right quadrant.
 
 .image go-image-package_image-package-03.png
 
@@ -91,11 +142,17 @@
 	    // Size returns a rectangle's width and height, as a Point.
 	    fmt.Printf("%#v\n", r.Size()) // prints image.Point{X:2, Y:1}
 
-Points and Rectangles are passed and returned by value. A function that takes a `Rectangle` argument will be as efficient as a function that takes two `Point` arguments, or four `int` arguments.
+Points and Rectangles are passed and returned by value.
+A function that takes a `Rectangle` argument will be as efficient as a function
+that takes two `Point` arguments,
+or four `int` arguments.
 
 * Images
 
-An [[https://golang.org/pkg/image/#Image][Image]] maps every grid square in a `Rectangle` to a `Color` from a `Model`. "The pixel at (x, y)" refers to the color of the grid square defined by the points (x, y), (x+1, y), (x+1, y+1) and (x, y+1).
+An [[https://golang.org/pkg/image/#Image][Image]] maps every grid square
+in a `Rectangle` to a `Color` from a `Model`.
+"The pixel at (x, y)" refers to the color of the grid square defined by the points (x,
+y), (x+1, y), (x+1, y+1) and (x, y+1).
 
 	type Image interface {
 	    // ColorModel returns the Image's color model.
@@ -109,7 +166,11 @@
 	    At(x, y int) color.Color
 	}
 
-A common mistake is assuming that an `Image`'s bounds start at (0, 0). For example, an animated GIF contains a sequence of Images, and each `Image` after the first typically only holds pixel data for the area that changed, and that area doesn't necessarily start at (0, 0). The correct way to iterate over an `Image` m's pixels looks like:
+A common mistake is assuming that an `Image`'s bounds start at (0, 0).
+For example, an animated GIF contains a sequence of Images,
+and each `Image` after the first typically only holds pixel data for the area that changed,
+and that area doesn't necessarily start at (0, 0).
+The correct way to iterate over an `Image` m's pixels looks like:
 
 	b := m.Bounds()
 	for y := b.Min.Y; y < b.Max.Y; y++ {
@@ -118,13 +179,19 @@
 	 }
 	}
 
-`Image` implementations do not have to be based on an in-memory slice of pixel data. For example, a [[https://golang.org/pkg/image/#Uniform][`Uniform`]] is an `Image` of enormous bounds and uniform color, whose in-memory representation is simply that color.
+`Image` implementations do not have to be based on an in-memory slice of pixel data.
+For example, a [[https://golang.org/pkg/image/#Uniform][`Uniform`]] is an
+`Image` of enormous bounds and uniform color,
+whose in-memory representation is simply that color.
 
 	type Uniform struct {
 	    C color.Color
 	}
 
-Typically, though, programs will want an image based on a slice. Struct types like [[https://golang.org/pkg/image/#RGBA][`RGBA`]] and [[https://golang.org/pkg/image/#Gray][`Gray`]] (which other packages refer to as `image.RGBA` and `image.Gray`) hold slices of pixel data and implement the `Image` interface.
+Typically, though, programs will want an image based on a slice.
+Struct types like [[https://golang.org/pkg/image/#RGBA][`RGBA`]] and [[https://golang.org/pkg/image/#Gray][`Gray`]]
+(which other packages refer to as `image.RGBA` and `image.Gray`) hold slices
+of pixel data and implement the `Image` interface.
 
 	type RGBA struct {
 	    // Pix holds the image's pixels, in R, G, B, A order. The pixel at
@@ -141,9 +208,15 @@
 	    m := image.NewRGBA(image.Rect(0, 0, 640, 480))
 	    m.Set(5, 5, color.RGBA{255, 0, 0, 255})
 
-If you're reading or writing a lot of pixel data, it can be more efficient, but more complicated, to access these struct type's `Pix` field directly.
+If you're reading or writing a lot of pixel data,
+it can be more efficient, but more complicated,
+to access these struct type's `Pix` field directly.
 
-The slice-based `Image` implementations also provide a `SubImage` method, which returns an `Image` backed by the same array. Modifying the pixels of a sub-image will affect the pixels of the original image, analogous to how modifying the contents of a sub-slice `s[i0:i1]` will affect the contents of the original slice `s`.
+The slice-based `Image` implementations also provide a `SubImage` method,
+which returns an `Image` backed by the same array.
+Modifying the pixels of a sub-image will affect the pixels of the original image,
+analogous to how modifying the contents of a sub-slice `s[i0:i1]` will affect
+the contents of the original slice `s`.
 
 .image go-image-package_image-package-05.png
 
@@ -152,11 +225,18 @@
 	    fmt.Println(m0.Bounds().Dx(), m1.Bounds().Dx()) // prints 8, 4
 	    fmt.Println(m0.Stride == m1.Stride)             // prints true
 
-For low-level code that works on an image's `Pix` field, be aware that ranging over `Pix` can affect pixels outside an image's bounds. In the example above, the pixels covered by `m1.Pix` are shaded in blue. Higher-level code, such as the `At` and `Set` methods or the [[https://golang.org/pkg/image/draw/][image/draw package]], will clip their operations to the image's bounds.
+For low-level code that works on an image's `Pix` field,
+be aware that ranging over `Pix` can affect pixels outside an image's bounds.
+In the example above, the pixels covered by `m1.Pix` are shaded in blue.
+Higher-level code, such as the `At` and `Set` methods or the [[https://golang.org/pkg/image/draw/][image/draw package]],
+will clip their operations to the image's bounds.
 
 * Image Formats
 
-The standard package library supports a number of common image formats, such as GIF, JPEG and PNG. If you know the format of a source image file, you can decode from an [[https://golang.org/pkg/io/#Reader][`io.Reader`]] directly.
+The standard package library supports a number of common image formats,
+such as GIF, JPEG and PNG.
+If you know the format of a source image file,
+you can decode from an [[https://golang.org/pkg/io/#Reader][`io.Reader`]] directly.
 
 	import (
 	 "image/jpeg"
@@ -173,7 +253,13 @@
 	 return png.Encode(w, img)
 	}
 
-If you have image data of unknown format, the [[https://golang.org/pkg/image/#Decode][`image.Decode`]] function can detect the format. The set of recognized formats is constructed at run time and is not limited to those in the standard package library. An image format package typically registers its format in an init function, and the main package will "underscore import" such a package solely for the side effect of format registration.
+If you have image data of unknown format,
+the [[https://golang.org/pkg/image/#Decode][`image.Decode`]] function can detect the format.
+The set of recognized formats is constructed at run time and is not limited
+to those in the standard package library.
+An image format package typically registers its format in an init function,
+and the main package will "underscore import" such a package solely for
+the side effect of format registration.
 
 	import (
 	 "image"
diff --git a/content/go-imagedraw-package.article b/content/go-imagedraw-package.article
index a7a864e..2e9dade 100644
--- a/content/go-imagedraw-package.article
+++ b/content/go-imagedraw-package.article
@@ -6,26 +6,71 @@
 
 * Introduction
 
-[[https://golang.org/pkg/image/draw/][Package image/draw]] defines only one operation: drawing a source image onto a destination image, through an optional mask image. This one operation is surprisingly versatile and can perform a number of common image manipulation tasks elegantly and efficiently.
+[[https://golang.org/pkg/image/draw/][Package image/draw]] defines only one operation:
+drawing a source image onto a destination image,
+through an optional mask image.
+This one operation is surprisingly versatile and can perform a number of
+common image manipulation tasks elegantly and efficiently.
 
-Composition is performed pixel by pixel in the style of the Plan 9 graphics library and the X Render extension. The model is based on the classic "Compositing Digital Images" paper by Porter and Duff, with an additional mask parameter: `dst`=`(src`IN`mask)`OP`dst`. For a fully opaque mask, this reduces to the original Porter-Duff formula: `dst`=`src`OP`dst`. In Go, a nil mask image is equivalent to an infinitely sized, fully opaque mask image.
+Composition is performed pixel by pixel in the style of the Plan 9 graphics
+library and the X Render extension.
+The model is based on the classic "Compositing Digital Images" paper by Porter and Duff,
+with an additional mask parameter:
+`dst`=`(src`IN`mask)`OP`dst`.
+For a fully opaque mask, this reduces to the original Porter-Duff formula: `dst`=`src`OP`dst`.
+In Go, a nil mask image is equivalent to an infinitely sized,
+fully opaque mask image.
 
-The Porter-Duff paper presented [[http://www.w3.org/TR/SVGCompositing/examples/compop-porterduff-examples.png][12 different composition operators]], but with an explicit mask, only 2 of these are needed in practice: source-over-destination and source. In Go, these operators are represented by the `Over` and `Src` constants. The `Over` operator performs the natural layering of a source image over a destination image: the change to the destination image is smaller where the source (after masking) is more transparent (that is, has lower alpha). The `Src` operator merely copies the source (after masking) with no regard for the destination image's original content. For fully opaque source and mask images, the two operators produce the same output, but the `Src` operator is usually faster.
+The Porter-Duff paper presented [[http://www.w3.org/TR/SVGCompositing/examples/compop-porterduff-examples.png][12 different composition operators]],
+but with an explicit mask, only 2 of these are needed in practice:
+source-over-destination and source.
+In Go, these operators are represented by the `Over` and `Src` constants.
+The `Over` operator performs the natural layering of a source image over
+a destination image:
+the change to the destination image is smaller where the source (after masking)
+is more transparent (that is, has lower alpha).
+The `Src` operator merely copies the source (after masking) with no regard
+for the destination image's original content.
+For fully opaque source and mask images, the two operators produce the same output,
+but the `Src` operator is usually faster.
 
 * Geometric Alignment
 
-Composition requires associating destination pixels with source and mask pixels. Obviously, this requires destination, source and mask images, and a composition operator, but it also requires specifying what rectangle of each image to use. Not every drawing should write to the entire destination: when updating an animating image, it is more efficient to only draw the parts of the image that have changed. Not every drawing should read from the entire source: when using a sprite that combines many small images into one large one, only a part of the image is needed. Not every drawing should read from the entire mask: a mask image that collects a font's glyphs is similar to a sprite. Thus, drawing also needs to know three rectangles, one for each image. Since each rectangle has the same width and height, it suffices to pass a destination rectangle `r` and two points `sp` and `mp`: the source rectangle is equal to `r` translated so that `r.Min` in the destination image aligns with `sp` in the source image, and similarly for `mp`. The effective rectangle is also clipped to each image's bounds in their respective co-ordinate space.
+Composition requires associating destination pixels with source and mask pixels.
+Obviously, this requires destination, source and mask images,
+and a composition operator, but it also requires specifying what rectangle
+of each image to use.
+Not every drawing should write to the entire destination:
+when updating an animating image, it is more efficient to only draw the
+parts of the image that have changed.
+Not every drawing should read from the entire source:
+when using a sprite that combines many small images into one large one,
+only a part of the image is needed.
+Not every drawing should read from the entire mask:
+a mask image that collects a font's glyphs is similar to a sprite.
+Thus, drawing also needs to know three rectangles, one for each image.
+Since each rectangle has the same width and height,
+it suffices to pass a destination rectangle `r` and two points `sp` and `mp`:
+the source rectangle is equal to `r` translated so that `r.Min` in the destination
+image aligns with `sp` in the source image,
+and similarly for `mp`.
+The effective rectangle is also clipped to each image's bounds in their
+respective co-ordinate space.
 
 .image go-imagedraw-package_20.png
 
-The [[https://golang.org/pkg/image/draw/#DrawMask][`DrawMask`]] function takes seven arguments, but an explicit mask and mask-point are usually unnecessary, so the [[https://golang.org/pkg/image/draw/#Draw][`Draw`]] function takes five:
+The [[https://golang.org/pkg/image/draw/#DrawMask][`DrawMask`]] function
+takes seven arguments,
+but an explicit mask and mask-point are usually unnecessary,
+so the [[https://golang.org/pkg/image/draw/#Draw][`Draw`]] function takes five:
 
 	// Draw calls DrawMask with a nil mask.
 	func Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point, op Op)
 	func DrawMask(dst Image, r image.Rectangle, src image.Image, sp image.Point,
 	 mask image.Image, mp image.Point, op Op)
 
-The destination image must be mutable, so the image/draw package defines a [[https://golang.org/pkg/image/draw/#Image][`draw.Image`]] interface which has a `Set` method.
+The destination image must be mutable, so the image/draw package defines
+a [[https://golang.org/pkg/image/draw/#Image][`draw.Image`]] interface which has a `Set` method.
 
 	type Image interface {
 	    image.Image
@@ -35,7 +80,12 @@
   
 * Filling a Rectangle
 
-To fill a rectangle with a solid color, use an `image.Uniform` source. The `ColorImage` type re-interprets a `Color` as a practically infinite-sized `Image` of that color. For those familiar with the design of Plan 9's draw library, there is no need for an explicit "repeat bit" in Go's slice-based image types; the concept is subsumed by `Uniform`.
+To fill a rectangle with a solid color, use an `image.Uniform` source.
+The `ColorImage` type re-interprets a `Color` as a practically infinite-sized
+`Image` of that color.
+For those familiar with the design of Plan 9's draw library,
+there is no need for an explicit "repeat bit" in Go's slice-based image types;
+the concept is subsumed by `Uniform`.
 
 	    // image.ZP is the zero point -- the origin.
 	    draw.Draw(dst, r, &image.Uniform{c}, image.ZP, draw.Src)
@@ -46,7 +96,9 @@
 	    blue := color.RGBA{0, 0, 255, 255}
 	    draw.Draw(m, m.Bounds(), &image.Uniform{blue}, image.ZP, draw.Src)
 
-To reset an image to transparent (or black, if the destination image's color model cannot represent transparency), use `image.Transparent`, which is an `image.Uniform`:
+To reset an image to transparent (or black,
+if the destination image's color model cannot represent transparency),
+use `image.Transparent`, which is an `image.Uniform`:
 
 	    draw.Draw(m, m.Bounds(), image.Transparent, image.ZP, draw.Src)
 
@@ -56,7 +108,9 @@
  
 * Copying an Image
 
-To copy from a rectangle `sr` in the source image to a rectangle starting at a point `dp` in the destination, convert the source rectangle into the destination image's co-ordinate space:
+To copy from a rectangle `sr` in the source image to a rectangle starting
+at a point `dp` in the destination,
+convert the source rectangle into the destination image's co-ordinate space:
 
 	    r := image.Rectangle{dp, dp.Add(sr.Size())}
 	    draw.Draw(dst, r, src, sr.Min, draw.Src)
@@ -76,7 +130,11 @@
  
 * Scrolling an Image
 
-Scrolling an image is just copying an image to itself, with different destination and source rectangles. Overlapping destination and source images are perfectly valid, just as Go's built-in copy function can handle overlapping destination and source slices. To scroll an image m by 20 pixels:
+Scrolling an image is just copying an image to itself,
+with different destination and source rectangles.
+Overlapping destination and source images are perfectly valid,
+just as Go's built-in copy function can handle overlapping destination and source slices.
+To scroll an image m by 20 pixels:
 
 	    b := m.Bounds()
 	    p := image.Pt(0, 20)
@@ -91,7 +149,11 @@
  
 * Converting an Image to RGBA
 
-The result of decoding an image format might not be an `image.RGBA`: decoding a GIF results in an `image.Paletted`, decoding a JPEG results in a `ycbcr.YCbCr`, and the result of decoding a PNG depends on the image data. To convert any image to an `image.RGBA`:
+The result of decoding an image format might not be an `image.RGBA`:
+decoding a GIF results in an `image.Paletted`,
+decoding a JPEG results in a `ycbcr.YCbCr`,
+and the result of decoding a PNG depends on the image data.
+To convert any image to an `image.RGBA`:
 
 	    b := src.Bounds()
 	    m := image.NewRGBA(image.Rect(0, 0, b.Dx(), b.Dy()))
@@ -132,7 +194,10 @@
 
 * Drawing Font Glyphs
 
-To draw a font glyph in blue starting from a point `p`, draw with an `image.ColorImage` source and an `image.Alpha`mask`. For simplicity, we aren't performing any sub-pixel positioning or rendering, or correcting for a font's height above a baseline.
+To draw a font glyph in blue starting from a point `p`,
+draw with an `image.ColorImage` source and an `image.Alpha`mask`.
+For simplicity, we aren't performing any sub-pixel positioning or rendering,
+or correcting for a font's height above a baseline.
 
 	    src := &image.Uniform{color.RGBA{0, 0, 255, 255}}
 	    mask := theGlyphImageForAFont()
@@ -144,4 +209,17 @@
   
 * Performance
 
-The image/draw package implementation demonstrates how to provide an image manipulation function that is both general purpose, yet efficient for common cases. The `DrawMask` function takes arguments of interface types, but immediately makes type assertions that its arguments are of specific struct types, corresponding to common operations like drawing one `image.RGBA` image onto another, or drawing an `image.Alpha` mask (such as a font glyph) onto an `image.RGBA` image. If a type assertion succeeds, that type information is used to run a specialized implementation of the general algorithm. If the assertions fail, the fallback code path uses the generic `At` and `Set` methods. The fast-paths are purely a performance optimization; the resultant destination image is the same either way. In practice, only a small number of special cases are necessary to support typical applications.
+The image/draw package implementation demonstrates how to provide an image
+manipulation function that is both general purpose,
+yet efficient for common cases.
+The `DrawMask` function takes arguments of interface types,
+but immediately makes type assertions that its arguments are of specific struct types,
+corresponding to common operations like drawing one `image.RGBA` image onto another,
+or drawing an `image.Alpha` mask (such as a font glyph) onto an `image.RGBA` image.
+If a type assertion succeeds, that type information is used to run a specialized
+implementation of the general algorithm.
+If the assertions fail, the fallback code path uses the generic `At` and `Set` methods.
+The fast-paths are purely a performance optimization;
+the resultant destination image is the same either way.
+In practice, only a small number of special cases are necessary to support
+typical applications.
diff --git a/content/go-maps-in-action.article b/content/go-maps-in-action.article
index cc6d62c..70fbb8d 100644
--- a/content/go-maps-in-action.article
+++ b/content/go-maps-in-action.article
@@ -6,7 +6,10 @@
 
 * Introduction
 
-One of the most useful data structures in computer science is the hash table. Many hash table implementations exist with varying properties, but in general they offer fast lookups, adds, and deletes. Go provides a built-in map type that implements a hash table.
+One of the most useful data structures in computer science is the hash table.
+Many hash table implementations exist with varying properties,
+but in general they offer fast lookups, adds, and deletes.
+Go provides a built-in map type that implements a hash table.
 
 * Declaration and initialization
 
@@ -14,17 +17,29 @@
 
 	map[KeyType]ValueType
 
-where `KeyType` may be any type that is [[https://golang.org/ref/spec#Comparison_operators][comparable]] (more on this later), and `ValueType` may be any type at all, including another map!
+where `KeyType` may be any type that is [[https://golang.org/ref/spec#Comparison_operators][comparable]]
+(more on this later),
+and `ValueType` may be any type at all, including another map!
 
 This variable `m` is a map of string keys to int values:
 
 	var m map[string]int
 
-Map types are reference types, like pointers or slices, and so the value of `m` above is `nil`; it doesn't point to an initialized map. A nil map behaves like an empty map when reading, but attempts to write to a nil map will cause a runtime panic; don't do that. To initialize a map, use the built in `make` function:
+Map types are reference types, like pointers or slices,
+and so the value of `m` above is `nil`;
+it doesn't point to an initialized map.
+A nil map behaves like an empty map when reading,
+but attempts to write to a nil map will cause a runtime panic; don't do that.
+To initialize a map, use the built in `make` function:
 
 	m = make(map[string]int)
 
-The `make` function allocates and initializes a hash map data structure and returns a map value that points to it. The specifics of that data structure are an implementation detail of the runtime and are not specified by the language itself. In this article we will focus on the _use_ of maps, not their implementation.
+The `make` function allocates and initializes a hash map data structure
+and returns a map value that points to it.
+The specifics of that data structure are an implementation detail of the
+runtime and are not specified by the language itself.
+In this article we will focus on the _use_ of maps,
+not their implementation.
 
 * Working with maps
 
@@ -36,7 +51,8 @@
 
 	i := m["route"]
 
-If the requested key doesn't exist, we get the value type's _zero_value_. In this case the value type is `int`, so the zero value is `0`:
+If the requested key doesn't exist, we get the value type's _zero_value_.
+In this case the value type is `int`, so the zero value is `0`:
 
 	j := m["root"]
 	// j == 0
@@ -55,7 +71,10 @@
 
 	i, ok := m["route"]
 
-In this statement, the first value (`i`) is assigned the value stored under the key `"route"`. If that key doesn't exist, `i` is the value type's zero value (`0`). The second value (`ok`) is a `bool` that is `true` if the key exists in the map, and `false` if not.
+In this statement, the first value (`i`) is assigned the value stored under the key `"route"`.
+If that key doesn't exist, `i` is the value type's zero value (`0`).
+The second value (`ok`) is a `bool` that is `true` if the key exists in
+the map, and `false` if not.
 
 To test for a key without retrieving the value, use an underscore in place of the first value:
 
@@ -84,13 +103,25 @@
 
 It can be convenient that a map retrieval yields a zero value when the key is not present.
 
-For instance, a map of boolean values can be used as a set-like data structure (recall that the zero value for the boolean type is false). This example traverses a linked list of `Nodes` and prints their values. It uses a map of `Node` pointers to detect cycles in the list.
+For instance, a map of boolean values can be used as a set-like data structure
+(recall that the zero value for the boolean type is false).
+This example traverses a linked list of `Nodes` and prints their values.
+It uses a map of `Node` pointers to detect cycles in the list.
 
 .code go-maps-in-action/list.go /START/,/END/
 
-The expression `visited[n]` is `true` if `n` has been visited, or `false` if `n` is not present. There's no need to use the two-value form to test for the presence of `n` in the map; the zero value default does it for us.
+The expression `visited[n]` is `true` if `n` has been visited,
+or `false` if `n` is not present.
+There's no need to use the two-value form to test for the presence of `n` in the map;
+the zero value default does it for us.
 
-Another instance of helpful zero values is a map of slices. Appending to a nil slice just allocates a new slice, so it's a one-liner to append a value to a map of slices; there's no need to check if the key exists. In the following example, the slice people is populated with `Person` values. Each `Person` has a `Name` and a slice of Likes. The example creates a map to associate each like with a slice of people that like it.
+Another instance of helpful zero values is a map of slices.
+Appending to a nil slice just allocates a new slice,
+so it's a one-liner to append a value to a map of slices;
+there's no need to check if the key exists.
+In the following example, the slice people is populated with `Person` values.
+Each `Person` has a `Name` and a slice of Likes.
+The example creates a map to associate each like with a slice of people that like it.
 
 .code go-maps-in-action/people.go /START1/,/END1/
 
@@ -102,21 +133,39 @@
 
 .code go-maps-in-action/people.go /bacon/
 
-Note that since both range and len treat a nil slice as a zero-length slice, these last two examples will work even if nobody likes cheese or bacon (however unlikely that may be).
+Note that since both range and len treat a nil slice as a zero-length slice,
+these last two examples will work even if nobody likes cheese or bacon (however
+unlikely that may be).
 
 * Key types
 
-As mentioned earlier, map keys may be of any type that is comparable. The [[https://golang.org/ref/spec#Comparison_operators][language spec]] defines this precisely, but in short, comparable types are boolean, numeric, string, pointer, channel, and interface types, and structs or arrays that contain only those types. Notably absent from the list are slices, maps, and functions; these types cannot be compared using `==`, and may not be used as map keys.
+As mentioned earlier, map keys may be of any type that is comparable.
+The [[https://golang.org/ref/spec#Comparison_operators][language spec]]
+defines this precisely,
+but in short, comparable types are boolean,
+numeric, string, pointer, channel, and interface types,
+and structs or arrays that contain only those types.
+Notably absent from the list are slices, maps, and functions;
+these types cannot be compared using `==`,
+and may not be used as map keys.
 
-It's obvious that strings, ints, and other basic types should be available as map keys, but perhaps unexpected are struct keys. Struct can be used to key data by multiple dimensions. For example, this map of maps could be used to tally web page hits by country:
+It's obvious that strings, ints, and other basic types should be available as map keys,
+but perhaps unexpected are struct keys.
+Struct can be used to key data by multiple dimensions.
+For example, this map of maps could be used to tally web page hits by country:
 
 	hits := make(map[string]map[string]int)
 
-This is map of string to (map of `string` to `int`). Each key of the outer map is the path to a web page with its own inner map. Each inner map key is a two-letter country code. This expression retrieves the number of times an Australian has loaded the documentation page:
+This is map of string to (map of `string` to `int`).
+Each key of the outer map is the path to a web page with its own inner map.
+Each inner map key is a two-letter country code.
+This expression retrieves the number of times an Australian has loaded the documentation page:
 
 	n := hits["/doc/"]["au"]
 
-Unfortunately, this approach becomes unwieldy when adding data, as for any given outer key you must check if the inner map exists, and create it if needed:
+Unfortunately, this approach becomes unwieldy when adding data,
+as for any given outer key you must check if the inner map exists,
+and create it if needed:
 
 	func add(m map[string]map[string]int, path, country string) {
 	    mm, ok := m[path]
@@ -135,7 +184,8 @@
 	}
 	hits := make(map[Key]int)
 
-When an Vietnamese person visits the home page, incrementing (and possibly creating) the appropriate counter is a one-liner:
+When an Vietnamese person visits the home page,
+incrementing (and possibly creating) the appropriate counter is a one-liner:
 
 	hits[Key{"/", "vn"}]++
 
@@ -145,9 +195,14 @@
 
 * Concurrency
 
-[[https://golang.org/doc/faq#atomic_maps][Maps are not safe for concurrent use]]: it's not defined what happens when you read and write to them simultaneously. If you need to read from and write to a map from concurrently executing goroutines, the accesses must be mediated by some kind of synchronization mechanism. One common way to protect maps is with [[https://golang.org/pkg/sync/#RWMutex][sync.RWMutex]].
+[[https://golang.org/doc/faq#atomic_maps][Maps are not safe for concurrent use]]:
+it's not defined what happens when you read and write to them simultaneously.
+If you need to read from and write to a map from concurrently executing goroutines,
+the accesses must be mediated by some kind of synchronization mechanism.
+One common way to protect maps is with [[https://golang.org/pkg/sync/#RWMutex][sync.RWMutex]].
 
-This statement declares a `counter` variable that is an anonymous struct containing a map and an embedded `sync.RWMutex`.
+This statement declares a `counter` variable that is an anonymous struct
+containing a map and an embedded `sync.RWMutex`.
 
 	var counter = struct{
 	    sync.RWMutex
@@ -170,7 +225,9 @@
 
 * Iteration order
 
-When iterating over a map with a range loop, the iteration order is not specified and is not guaranteed to be the same from one iteration to the next.
+When iterating over a map with a range loop,
+the iteration order is not specified and is not guaranteed to be the same
+from one iteration to the next.
 If you require a stable iteration order you must maintain a separate data structure that specifies that order.
 This example uses a separate sorted slice of keys to print a `map[int]string` in key order:
 
diff --git a/content/go-one-year-ago-today.article b/content/go-one-year-ago-today.article
index 041da76..9391919 100644
--- a/content/go-one-year-ago-today.article
+++ b/content/go-one-year-ago-today.article
@@ -6,36 +6,141 @@
 
 * Introduction
 
-On the 10th of November 2009 we launched the Go project: an open-source programming language with a focus on simplicity and efficiency. The intervening year has seen a great many developments both in the Go project itself and in its community.
+On the 10th of November 2009 we launched the Go project:
+an open-source programming language with a focus on simplicity and efficiency.
+The intervening year has seen a great many developments both in the Go project
+itself and in its community.
 
-We set out to build a language for systems programming - the kinds of programs one might typically write in C or C++ - and we were surprised by Go’s utility as a general purpose language. We had anticipated interest from C, C++, and Java programmers, but the flurry of interest from users of dynamically-typed languages like Python and JavaScript was unexpected.  Go’s combination of native compilation, static typing, memory management, and lightweight syntax seemed to strike a chord with a broad cross-section of the programming community.
+We set out to build a language for systems programming - the kinds of programs
+one might typically write in C or C++ - and we were surprised by Go’s
+utility as a general purpose language.
+We had anticipated interest from C, C++, and Java programmers,
+but the flurry of interest from users of dynamically-typed languages like
+Python and JavaScript was unexpected.
+Go’s combination of native compilation,
+static typing, memory management, and lightweight syntax seemed to strike
+a chord with a broad cross-section of the programming community.
 
-That cross-section grew to become a dedicated community of enthusiastic Go coders. Our [[http://groups.google.com/group/golang-nuts][mailing list]] has over 3,800 members, with around 1,500 posts each month. The project has over 130 [[https://golang.org/CONTRIBUTORS][contributors]] (people who have submitted code or documentation), and of the 2,800 commits since launch almost one third were contributed by programmers outside the core team. To get all that code into shape, nearly 14,000 emails were exchanged on our [[http://groups.google.com/group/golang-dev][development mailing list]].
+That cross-section grew to become a dedicated community of enthusiastic Go coders.
+Our [[http://groups.google.com/group/golang-nuts][mailing list]] has over 3,800 members,
+with around 1,500 posts each month.
+The project has over 130 [[https://golang.org/CONTRIBUTORS][contributors]]
+(people who have submitted code or documentation),
+and of the 2,800 commits since launch almost one third were contributed
+by programmers outside the core team.
+To get all that code into shape, nearly 14,000 emails were exchanged on
+our [[http://groups.google.com/group/golang-dev][development mailing list]].
 
-Those numbers reflect a labor whose fruits are evident in the project’s code base. The compilers have improved substantially, with faster and more efficient code generation, more than one hundred reported bugs fixed, and support for a widening range of operating systems and architectures. The Windows port is approaching completion thanks to a dedicated group of contributors (one of whom became our first non-Google committer to the project). The ARM port has also made great progress, recently reaching the milestone of passing all tests.
+Those numbers reflect a labor whose fruits are evident in the project’s code base.
+The compilers have improved substantially,
+with faster and more efficient code generation,
+more than one hundred reported bugs fixed,
+and support for a widening range of operating systems and architectures.
+The Windows port is approaching completion thanks to a dedicated group of
+contributors (one of whom became our first non-Google committer to the project).
+The ARM port has also made great progress,
+recently reaching the milestone of passing all tests.
 
-The Go tool set has been expanded and improved. The Go documentation tool, [[https://golang.org/cmd/godoc/][godoc]], now supports the documentation of other source trees (you can browse and search your own code) and provides a [[https://golang.org/doc/codewalk/]["code walk"]] interface for presenting tutorial materials (among many more improvements). [[https://golang.org/cmd/goinstall/][Goinstall]] , a new package management tool, allows users to install and update external packages with a single command. [[https://golang.org/cmd/gofmt/][Gofmt]], the Go pretty-printer, now makes syntactic simplifications where possible. [[https://golang.org/misc/goplay/][Goplay]], a web-based “compile-as-you-type” tool, is a convenient way to experiment with Go for those times when you don’t have access to the [[https://golang.org/doc/play/][Go Playground]].
+The Go tool set has been expanded and improved.
+The Go documentation tool, [[https://golang.org/cmd/godoc/][godoc]],
+now supports the documentation of other source trees (you can browse and
+search your own code) and provides a [[https://golang.org/doc/codewalk/]["code walk"]]
+interface for presenting tutorial materials (among many more improvements).
+[[https://golang.org/cmd/goinstall/][Goinstall]] ,
+a new package management tool, allows users to install and update external
+packages with a single command.
+[[https://golang.org/cmd/gofmt/][Gofmt]],
+the Go pretty-printer, now makes syntactic simplifications where possible.
+[[https://golang.org/misc/goplay/][Goplay]],
+a web-based “compile-as-you-type” tool,
+is a convenient way to experiment with Go for those times when you don’t
+have access to the [[https://golang.org/doc/play/][Go Playground]].
 
-The standard library has grown by over 42,000 lines of code and includes 20 new [[https://golang.org/pkg/][packages]].  Among the additions are the [[https://golang.org/pkg/image/jpeg/][jpeg]], [[https://golang.org/pkg/rpc/jsonrpc/][jsonrpc]], [[https://golang.org/pkg/mime/][mime]], [[https://golang.org/pkg/netchan/][netchan]], and [[https://golang.org/pkg/smtp/][smtp]] packages, as well as a slew of new [[https://golang.org/pkg/crypto/][cryptography]] packages. More generally, the standard library has been continuously refined and revised as our understanding of Go’s idioms deepens.
+The standard library has grown by over 42,000 lines of code and includes
+20 new [[https://golang.org/pkg/][packages]].
+Among the additions are the [[https://golang.org/pkg/image/jpeg/][jpeg]],
+[[https://golang.org/pkg/rpc/jsonrpc/][jsonrpc]],
+[[https://golang.org/pkg/mime/][mime]], [[https://golang.org/pkg/netchan/][netchan]],
+and [[https://golang.org/pkg/smtp/][smtp]] packages,
+as well as a slew of new [[https://golang.org/pkg/crypto/][cryptography]] packages.
+More generally, the standard library has been continuously refined and revised
+as our understanding of Go’s idioms deepens.
 
-The debugging story has gotten better, too. Recent improvements to the DWARF output of the gc compilers make the GNU debugger, GDB, useful for Go binaries, and we’re actively working on making that debugging information more complete. (See the [[https://blog.golang.org/2010/11/debugging-go-code-status-report.html][ recent blog post]] for details.) 
+The debugging story has gotten better, too.
+Recent improvements to the DWARF output of the gc compilers make the GNU debugger,
+GDB, useful for Go binaries, and we’re actively working on making that
+debugging information more complete.
+(See the [[https://blog.golang.org/2010/11/debugging-go-code-status-report.html][ recent blog post]] for details.)
 
-It’s now easier than ever to link against existing libraries written in languages other than Go.  Go support is in the most recent [[http://www.swig.org/][SWIG]] release, version 2.0.1, making it easier to link against C and C++ code, and our [[https://golang.org/cmd/cgo/][cgo]] tool has seen many fixes and improvements.
+It’s now easier than ever to link against existing libraries written in
+languages other than Go.
+Go support is in the most recent [[http://www.swig.org/][SWIG]] release,
+version 2.0.1, making it easier to link against C and C++ code,
+and our [[https://golang.org/cmd/cgo/][cgo]] tool has seen many fixes and improvements.
 
-[[https://golang.org/doc/gccgo_install.html][Gccgo]], the Go front end for the GNU C Compiler, has kept pace with the gc compiler as a parallel Go implementation. It now has a working garbage collector, and has been accepted into the GCC core.  We’re now working toward making [[http://code.google.com/p/gofrontend/][gofrontend]] available as a BSD-licensed Go compiler front end, fully decoupled from GCC.
+[[https://golang.org/doc/gccgo_install.html][Gccgo]],
+the Go front end for the GNU C Compiler, has kept pace with the gc compiler
+as a parallel Go implementation.
+It now has a working garbage collector, and has been accepted into the GCC core.
+We’re now working toward making [[http://code.google.com/p/gofrontend/][gofrontend]]
+available as a BSD-licensed Go compiler front end,
+fully decoupled from GCC.
 
-Outside the Go project itself Go is starting to be used to build real software. There are more than 200 Go programs and libraries listed on our [[http://godashboard.appspot.com/project][Project dashboard]], and hundreds more on [[http://code.google.com/hosting/search?q=label:Go][Google Code]] and [[https://github.com/search?q=language:Go][Github]]. On our mailing list and IRC channel you can find coders from around the world who use Go for their programming projects. (See our [[https://blog.golang.org/2010/10/real-go-projects-smarttwitter-and-webgo.html][guest blog post]] from last month for a real-world example.) Internally at Google there are several teams that choose Go for building production software, and we have received reports from other companies that are developing sizable systems in Go. We have also been in touch with several educators who are using Go as a teaching language.
+Outside the Go project itself Go is starting to be used to build real software.
+There are more than 200 Go programs and libraries listed on our [[http://godashboard.appspot.com/project][Project dashboard]],
+and hundreds more on [[http://code.google.com/hosting/search?q=label:Go][Google Code]]
+and [[https://github.com/search?q=language:Go][Github]].
+On our mailing list and IRC channel you can find coders from around the
+world who use Go for their programming projects.
+(See our [[https://blog.golang.org/2010/10/real-go-projects-smarttwitter-and-webgo.html][guest blog post]]
+from last month for a real-world example.) Internally at Google there are
+several teams that choose Go for building production software,
+and we have received reports from other companies that are developing sizable systems in Go.
+We have also been in touch with several educators who are using Go as a teaching language.
 
-The language itself has grown and matured, too. In the past year we have received many feature requests. But Go is a small language, and we’ve worked hard to ensure that any new feature strikes the right compromise between simplicity and utility. Since the launch we have made a number of language changes, many of which were driven by feedback from the community.
+The language itself has grown and matured, too.
+In the past year we have received many feature requests.
+But Go is a small language, and we’ve worked hard to ensure that any new
+feature strikes the right compromise between simplicity and utility.
+Since the launch we have made a number of language changes,
+many of which were driven by feedback from the community.
 
 - Semicolons are now optional in almost all instances. [[https://golang.org/doc/go_spec.html#Semicolons][spec]]
-- The new built-in functions `copy` and `append` make management of slices more efficient and straightforward. [[https://golang.org/doc/go_spec.html#Appending_and_copying_slices][spec]]
-- The upper and lower bounds may be omitted when making a sub-slice. This means that `s[:]` is shorthand for `s[0:len(s)]`. [[https://golang.org/doc/go_spec.html#Slices][spec]]
-- The new built-in function `recover` complements `panic` and `defer` as an error handling mechanism.  [[https://blog.golang.org/2010/08/defer-panic-and-recover.html][blog]], [[https://golang.org/doc/go_spec.html#Handling_panics][spec]]
-- The new complex number types (`complex`, `complex64`, and `complex128`) simplify certain mathematical operations. [[https://golang.org/doc/go_spec.html#Complex_numbers][spec]], [[https://golang.org/doc/go_spec.html#Imaginary_literals][spec]]
-- The composite literal syntax permits the omission of redundant type information (when specifying two-dimensional arrays, for example). [[https://golang.org/doc/devel/release.html#2010-10-27][release.2010-10-27]], [[https://golang.org/doc/go_spec.html#Composite_literals][spec]]
-- A general syntax for variable function arguments (`...T`) and their propagation (`v...`) is now specified. [[https://golang.org/doc/go_spec.html#Function_Types][spec]], [[https://golang.org/doc/go_spec.html#Passing_arguments_to_..._parameters][ spec]], [[https://golang.org/doc/devel/release.html#2010-09-29][release.2010-09-29]]
+- The new built-in functions `copy` and `append` make management of slices
+  more efficient and straightforward.
+  [[https://golang.org/doc/go_spec.html#Appending_and_copying_slices][spec]]
+- The upper and lower bounds may be omitted when making a sub-slice.
+  This means that `s[:]` is shorthand for `s[0:len(s)]`.
+  [[https://golang.org/doc/go_spec.html#Slices][spec]]
+- The new built-in function `recover` complements `panic` and `defer` as
+  an error handling mechanism.
+  [[https://blog.golang.org/2010/08/defer-panic-and-recover.html][blog]],
+  [[https://golang.org/doc/go_spec.html#Handling_panics][spec]]
+- The new complex number types (`complex`,
+  `complex64`, and `complex128`) simplify certain mathematical operations.
+  [[https://golang.org/doc/go_spec.html#Complex_numbers][spec]],
+  [[https://golang.org/doc/go_spec.html#Imaginary_literals][spec]]
+- The composite literal syntax permits the omission of redundant type information
+  (when specifying two-dimensional arrays, for example).
+  [[https://golang.org/doc/devel/release.html#2010-10-27][release.2010-10-27]],
+  [[https://golang.org/doc/go_spec.html#Composite_literals][spec]]
+- A general syntax for variable function arguments (`...T`) and their propagation
+  (`v...`) is now specified.
+  [[https://golang.org/doc/go_spec.html#Function_Types][spec]],
+  [[https://golang.org/doc/go_spec.html#Passing_arguments_to_..._parameters][ spec]],
+  [[https://golang.org/doc/devel/release.html#2010-09-29][release.2010-09-29]]
  
-Go is certainly ready for production use, but there is still room for improvement. Our focus for the immediate future is making Go programs faster and more efficient in the context of high performance systems. This means improving the garbage collector, optimizing generated code, and improving the core libraries. We’re also exploring some further additions to the type system to make generic programming easier. A lot has happened in a year; it’s been both thrilling and satisfying.  We hope that this coming year will be even more fruitful than the last.
+Go is certainly ready for production use,
+but there is still room for improvement.
+Our focus for the immediate future is making Go programs faster and more
+efficient in the context of high performance systems.
+This means improving the garbage collector,
+optimizing generated code, and improving the core libraries.
+We’re also exploring some further additions to the type system to make
+generic programming easier.
+A lot has happened in a year; it’s been both thrilling and satisfying.
+We hope that this coming year will be even more fruitful than the last.
 
-_If_you’ve_been_meaning_to_get_[back]_into_Go,_now_is_a_great_time_to_do_so!_Check_out_the_ [[https://golang.org/doc/docs.html][_Documentation_]] _and_ [[https://golang.org/doc/install.html][_Getting_Started_]] _pages_for_more_information,_or_just_go_nuts_in_the_ [[https://golang.org/doc/play/][_Go_Playground_]].
+_If_you’ve_been_meaning_to_get_[back]_into_Go,_now_is_a_great_time_to_do_so!_Check_out_the_
+[[https://golang.org/doc/docs.html][_Documentation_]] _and_ [[https://golang.org/doc/install.html][_Getting_Started_]]
+_pages_for_more_information,_or_just_go_nuts_in_the_ [[https://golang.org/doc/play/][_Go_Playground_]].
diff --git a/content/go-programming-language-turns-two.article b/content/go-programming-language-turns-two.article
index 2e749bd..5b20144 100644
--- a/content/go-programming-language-turns-two.article
+++ b/content/go-programming-language-turns-two.article
@@ -6,18 +6,64 @@
 
 * Introduction
 
-Two years ago a small team at Google went public with their fledgling project - the Go Programming Language. They presented a language spec, two compilers, a modest standard library, some novel tools, and plenty of accurate (albeit succinct) documentation. They watched with excitement as programmers around the world began to play with Go. The team continued to iterate and improve on what they had built, and were gradually joined by dozens - and then hundreds - of programmers from the open source community.
-The Go Authors went on to produce lots of libraries, new tools, and reams of [[https://golang.org/doc/docs.html][documentation]]. They celebrated a successful year in the public eye with a [[https://blog.golang.org/2010/11/go-one-year-ago-today.html][blog post]] last November that concluded "Go is certainly ready for production use, but there is still room for improvement. Our focus for the immediate future is making Go programs faster and more efficient in the context of high performance systems."
+Two years ago a small team at Google went public with their fledgling project -
+the Go Programming Language.
+They presented a language spec, two compilers,
+a modest standard library, some novel tools,
+and plenty of accurate (albeit succinct) documentation.
+They watched with excitement as programmers around the world began to play with Go.
+The team continued to iterate and improve on what they had built,
+and were gradually joined by dozens - and then hundreds - of programmers
+from the open source community.
+The Go Authors went on to produce lots of libraries,
+new tools, and reams of [[https://golang.org/doc/docs.html][documentation]].
+They celebrated a successful year in the public eye with a [[https://blog.golang.org/2010/11/go-one-year-ago-today.html][blog post]]
+last November that concluded "Go is certainly ready for production use,
+but there is still room for improvement.
+Our focus for the immediate future is making Go programs faster and more
+efficient in the context of high performance systems."
 
-Today is the second anniversary of Go's release, and Go is faster and more stable than ever. Careful tuning of Go's code generators, concurrency primitives, garbage collector, and core libraries have increased the performance of Go programs, and native support for [[https://blog.golang.org/2011/06/profiling-go-programs.html][profiling]] and [[http://blog.golang.org/2011/10/debugging-go-programs-with-gnu-debugger.html][debugging]] makes it easier to detect and remove performance issues in user code. Go is also now easier to learn with [[http://tour.golang.org/][A Tour of Go]], an interactive tutorial you can take from the comfort of your web browser.
+Today is the second anniversary of Go's release,
+and Go is faster and more stable than ever.
+Careful tuning of Go's code generators, concurrency primitives,
+garbage collector, and core libraries have increased the performance of Go programs,
+and native support for [[https://blog.golang.org/2011/06/profiling-go-programs.html][profiling]]
+and [[http://blog.golang.org/2011/10/debugging-go-programs-with-gnu-debugger.html][debugging]]
+makes it easier to detect and remove performance issues in user code.
+Go is also now easier to learn with [[http://tour.golang.org/][A Tour of Go]],
+an interactive tutorial you can take from the comfort of your web browser.
 
-This year we introduced the experimental [[http://code.google.com/appengine/docs/go/][Go runtime]] for Google's App Engine platform, and we have been steadily increasing the Go runtime's support for App Engine's APIs. Just this week we released [[http://code.google.com/appengine/downloads.html][version 1.6.0]] of the Go App Engine SDK, which includes support for [[http://code.google.com/appengine/docs/go/backends/overview.html][backends]] (long-running processes), finer control over datastore indexes, and various other improvements. Today, the Go runtime is near feature parity with - and is a viable alternative to - the Python and Java runtimes. In fact, we now serve [[https://golang.org/][golang.org]] by running a version of [[https://golang.org/cmd/godoc/][godoc]] on the App Engine service.
+This year we introduced the experimental [[http://code.google.com/appengine/docs/go/][Go runtime]]
+for Google's App Engine platform,
+and we have been steadily increasing the Go runtime's support for App Engine's APIs.
+Just this week we released [[http://code.google.com/appengine/downloads.html][version 1.6.0]]
+of the Go App Engine SDK,
+which includes support for [[http://code.google.com/appengine/docs/go/backends/overview.html][backends]]
+(long-running processes),
+finer control over datastore indexes, and various other improvements.
+Today, the Go runtime is near feature parity with - and is a viable alternative
+to - the Python and Java runtimes.
+In fact, we now serve [[https://golang.org/][golang.org]] by running a version
+of [[https://golang.org/cmd/godoc/][godoc]] on the App Engine service.
 
-While 2010 was a year of discovery and experimentation, 2011 was a year of fine tuning and planning for the future. This year we issued several "[[https://golang.org/doc/devel/release.html][release]]" versions of Go that were more reliable and better supported than weekly snapshots. We also introduced [[https://golang.org/cmd/gofix/][gofix]] to take the pain out of migrating to newer releases. Furthermore, last month we announced a [[https://blog.golang.org/2011/10/preview-of-go-version-1.html][plan for Go version 1]] - a release that will be supported for years to come. Work toward Go 1 is already underway and you can observe our progress by the latest weekly snapshot at [[http://weekly.golang.org/pkg/][weekly.golang.org]].
+While 2010 was a year of discovery and experimentation,
+2011 was a year of fine tuning and planning for the future.
+This year we issued several "[[https://golang.org/doc/devel/release.html][release]]"
+versions of Go that were more reliable and better supported than weekly snapshots.
+We also introduced [[https://golang.org/cmd/gofix/][gofix]] to take the
+pain out of migrating to newer releases.
+Furthermore, last month we announced a [[https://blog.golang.org/2011/10/preview-of-go-version-1.html][plan for Go version 1]] -
+a release that will be supported for years to come.
+Work toward Go 1 is already underway and you can observe our progress by
+the latest weekly snapshot at [[http://weekly.golang.org/pkg/][weekly.golang.org]].
 
-The plan is to launch Go 1 in early 2012. We hope to bring the Go App Engine runtime out of "experimental" status at the same time.
+The plan is to launch Go 1 in early 2012.
+We hope to bring the Go App Engine runtime out of "experimental" status at the same time.
 
-But that's not all. 2011 was an exciting year for the gopher, too. He has manifested himself as a plush toy (a highly prized gift at Google I/O and other Go talks) and in vinyl form (received by every attendee at OSCON and now available at the [[http://www.googlestore.com/Fun/Go+Gopher+Figurine.axd][Google Store]]).
+But that's not all. 2011 was an exciting year for the gopher, too.
+He has manifested himself as a plush toy (a highly prized gift at Google
+I/O and other Go talks) and in vinyl form (received by every attendee at
+OSCON and now available at the [[http://www.googlestore.com/Fun/Go+Gopher+Figurine.axd][Google Store]]).
 
 .image go-programming-language-turns-two_gophers.jpg
 
diff --git a/content/go-slices-usage-and-internals.article b/content/go-slices-usage-and-internals.article
index d4c8dc5..5a9b890 100644
--- a/content/go-slices-usage-and-internals.article
+++ b/content/go-slices-usage-and-internals.article
@@ -6,20 +6,31 @@
 
 * Introduction
 
-Go's slice type provides a convenient and efficient means of working with sequences of typed data. Slices are analogous to arrays in other languages, but have some unusual properties. This article will look at what slices are and how they are used.
+Go's slice type provides a convenient and efficient means of working with
+sequences of typed data.
+Slices are analogous to arrays in other languages,
+but have some unusual properties.
+This article will look at what slices are and how they are used.
 
 * Arrays
 
-The slice type is an abstraction built on top of Go's array type, and so to understand slices we must first understand arrays.
+The slice type is an abstraction built on top of Go's array type,
+and so to understand slices we must first understand arrays.
 
-An array type definition specifies a length and an element type. For example, the type `[4]int` represents an array of four integers. An array's size is fixed; its length is part of its type (`[4]int` and `[5]int` are distinct, incompatible types). Arrays can be indexed in the usual way, so the expression `s[n]` accesses the nth element, starting from zero.
+An array type definition specifies a length and an element type.
+For example, the type `[4]int` represents an array of four integers.
+An array's size is fixed; its length is part of its type (`[4]int` and `[5]int` are distinct,
+incompatible types).
+Arrays can be indexed in the usual way, so the expression `s[n]` accesses
+the nth element, starting from zero.
 
 	var a [4]int
 	a[0] = 1
 	i := a[0]
 	// i == 1
 
-Arrays do not need to be initialized explicitly; the zero value of an array is a ready-to-use array whose elements are themselves zeroed:
+Arrays do not need to be initialized explicitly;
+the zero value of an array is a ready-to-use array whose elements are themselves zeroed:
 
 	// a[2] == 0, the zero value of the int type
 
@@ -27,7 +38,14 @@
 
 .image go-slices-usage-and-internals_slice-array.png
 
-Go's arrays are values. An array variable denotes the entire array; it is not a pointer to the first array element (as would be the case in C).  This means that when you assign or pass around an array value you will make a copy of its contents. (To avoid the copy you could pass a _pointer_ to the array, but then that's a pointer to an array, not an array.) One way to think about arrays is as a sort of struct but with indexed rather than named fields: a fixed-size composite value.
+Go's arrays are values. An array variable denotes the entire array;
+it is not a pointer to the first array element (as would be the case in C).
+This means that when you assign or pass around an array value you will make
+a copy of its contents.
+(To avoid the copy you could pass a _pointer_ to the array,
+but then that's a pointer to an array, not an array.) One way to think about
+arrays is as a sort of struct but with indexed rather than named fields:
+a fixed-size composite value.
 
 An array literal can be specified like so:
 
@@ -41,9 +59,13 @@
 
 * Slices
 
-Arrays have their place, but they're a bit inflexible, so you don't see them too often in Go code. Slices, though, are everywhere. They build on arrays to provide great power and convenience.
+Arrays have their place, but they're a bit inflexible,
+so you don't see them too often in Go code.
+Slices, though, are everywhere. They build on arrays to provide great power and convenience.
 
-The type specification for a slice is `[]T`, where `T` is the type of the elements of the slice. Unlike an array type, a slice type has no specified length.
+The type specification for a slice is `[]T`,
+where `T` is the type of the elements of the slice.
+Unlike an array type, a slice type has no specified length.
 
 A slice literal is declared just like an array literal, except you leave out the element count:
 
@@ -53,13 +75,17 @@
 
 	func make([]T, len, cap) []T
 
-where T stands for the element type of the slice to be created. The `make` function takes a type, a length, and an optional capacity. When called, `make` allocates an array and returns a slice that refers to that array.
+where T stands for the element type of the slice to be created.
+The `make` function takes a type, a length,
+and an optional capacity.
+When called, `make` allocates an array and returns a slice that refers to that array.
 
 	var s []byte
 	s = make([]byte, 5, 5)
 	// s == []byte{0, 0, 0, 0, 0}
 
-When the capacity argument is omitted, it defaults to the specified length. Here's a more succinct version of the same code:
+When the capacity argument is omitted, it defaults to the specified length.
+Here's a more succinct version of the same code:
 
 	s := make([]byte, 5)
 
@@ -72,7 +98,10 @@
 
 The zero value of a slice is `nil`. The `len` and `cap` functions will both return 0 for a nil slice.
 
-A slice can also be formed by "slicing" an existing slice or array. Slicing is done by specifying a half-open range with two indices separated by a colon. For example, the expression `b[1:4]` creates a slice including elements 1 through 3 of `b` (the indices of the resulting slice will be 0 through 2).
+A slice can also be formed by "slicing" an existing slice or array.
+Slicing is done by specifying a half-open range with two indices separated by a colon.
+For example, the expression `b[1:4]` creates a slice including elements
+1 through 3 of `b` (the indices of the resulting slice will be 0 through 2).
 
 	b := []byte{'g', 'o', 'l', 'a', 'n', 'g'}
 	// b[1:4] == []byte{'o', 'l', 'a'}, sharing the same storage as b
@@ -90,7 +119,9 @@
 
 * Slice internals
 
-A slice is a descriptor of an array segment. It consists of a pointer to the array, the length of the segment, and its capacity (the maximum length of the segment).
+A slice is a descriptor of an array segment.
+It consists of a pointer to the array, the length of the segment,
+and its capacity (the maximum length of the segment).
 
 .image go-slices-usage-and-internals_slice-struct.png
 
@@ -98,7 +129,11 @@
 
 .image go-slices-usage-and-internals_slice-1.png
 
-The length is the number of elements referred to by the slice. The capacity is the number of elements in the underlying array (beginning at the element referred to by the slice pointer). The distinction between length and capacity will be made clear as we walk through the next few examples.
+The length is the number of elements referred to by the slice.
+The capacity is the number of elements in the underlying array (beginning
+at the element referred to by the slice pointer).
+The distinction between length and capacity will be made clear as we walk
+through the next few examples.
 
 As we slice `s`, observe the changes in the slice data structure and their relation to the underlying array:
 
@@ -106,7 +141,11 @@
 
 .image go-slices-usage-and-internals_slice-2.png
 
-Slicing does not copy the slice's data. It creates a new slice value that points to the original array. This makes slice operations as efficient as manipulating array indices. Therefore, modifying the _elements_ (not the slice itself) of a re-slice modifies the elements of the original slice:
+Slicing does not copy the slice's data. It creates a new slice value that
+points to the original array.
+This makes slice operations as efficient as manipulating array indices.
+Therefore, modifying the _elements_ (not the slice itself) of a re-slice
+modifies the elements of the original slice:
 
 	d := []byte{'r', 'o', 'a', 'd'}
 	e := d[2:] 
@@ -121,11 +160,20 @@
 
 .image go-slices-usage-and-internals_slice-3.png
 
-A slice cannot be grown beyond its capacity. Attempting to do so will cause a runtime panic, just as when indexing outside the bounds of a slice or array. Similarly, slices cannot be re-sliced below zero to access earlier elements in the array.
+A slice cannot be grown beyond its capacity.
+Attempting to do so will cause a runtime panic,
+just as when indexing outside the bounds of a slice or array.
+Similarly, slices cannot be re-sliced below zero to access earlier elements in the array.
 
 * Growing slices (the copy and append functions)
 
-To increase the capacity of a slice one must create a new, larger slice and copy the contents of the original slice into it. This technique is how dynamic array implementations from other languages work behind the scenes. The next example doubles the capacity of `s` by making a new slice, `t`, copying the contents of `s` into `t`, and then assigning the slice value `t` to `s`:
+To increase the capacity of a slice one must create a new,
+larger slice and copy the contents of the original slice into it.
+This technique is how dynamic array implementations from other languages
+work behind the scenes.
+The next example doubles the capacity of `s` by making a new slice,
+`t`, copying the contents of `s` into `t`,
+and then assigning the slice value `t` to `s`:
 
 	t := make([]byte, len(s), (cap(s)+1)*2) // +1 in case cap(s) == 0
 	for i := range s {
@@ -133,11 +181,17 @@
 	}
 	s = t
 
-The looping piece of this common operation is made easier by the built-in copy function. As the name suggests, copy copies data from a source slice to a destination slice. It returns the number of elements copied.
+The looping piece of this common operation is made easier by the built-in copy function.
+As the name suggests, copy copies data from a source slice to a destination slice.
+It returns the number of elements copied.
 
 	func copy(dst, src []T) int
 
-The `copy` function supports copying between slices of different lengths (it will copy only up to the smaller number of elements). In addition, `copy` can handle source and destination slices that share the same underlying array, handling overlapping slices correctly.
+The `copy` function supports copying between slices of different lengths
+(it will copy only up to the smaller number of elements).
+In addition, `copy` can handle source and destination slices that share
+the same underlying array,
+handling overlapping slices correctly.
 
 Using `copy`, we can simplify the code snippet above:
 
@@ -145,7 +199,9 @@
 	copy(t, s)
 	s = t
 
-A common operation is to append data to the end of a slice. This function appends byte elements to a slice of bytes, growing the slice if necessary, and returns the updated slice value:
+A common operation is to append data to the end of a slice.
+This function appends byte elements to a slice of bytes,
+growing the slice if necessary, and returns the updated slice value:
 
 	func AppendByte(slice []byte, data ...byte) []byte {
 	    m := len(slice)
@@ -167,13 +223,20 @@
 	p = AppendByte(p, 7, 11, 13)
 	// p == []byte{2, 3, 5, 7, 11, 13}
 
-Functions like `AppendByte` are useful because they offer complete control over the way the slice is grown. Depending on the characteristics of the program, it may be desirable to allocate in smaller or larger chunks, or to put a ceiling on the size of a reallocation.
+Functions like `AppendByte` are useful because they offer complete control
+over the way the slice is grown.
+Depending on the characteristics of the program,
+it may be desirable to allocate in smaller or larger chunks,
+or to put a ceiling on the size of a reallocation.
 
-But most programs don't need complete control, so Go provides a built-in `append` function that's good for most purposes; it has the signature
+But most programs don't need complete control,
+so Go provides a built-in `append` function that's good for most purposes;
+it has the signature
 
 	func append(s []T, x ...T) []T 
 
-The `append` function appends the elements `x` to the end of the slice `s`, and grows the slice if a greater capacity is needed.
+The `append` function appends the elements `x` to the end of the slice `s`,
+and grows the slice if a greater capacity is needed.
 
 	a := make([]int, 1)
 	// a == []int{0}
@@ -187,7 +250,8 @@
 	a = append(a, b...) // equivalent to "append(a, b[0], b[1], b[2])"
 	// a == []string{"John", "Paul", "George", "Ringo", "Pete"}
 
-Since the zero value of a slice (`nil`) acts like a zero-length slice, you can declare a slice variable and then append to it in a loop:
+Since the zero value of a slice (`nil`) acts like a zero-length slice,
+you can declare a slice variable and then append to it in a loop:
 
 	// Filter returns a new slice holding only
 	// the elements of s that satisfy fn()
@@ -203,9 +267,14 @@
 
 * A possible "gotcha"
 
-As mentioned earlier, re-slicing a slice doesn't make a copy of the underlying array. The full array will be kept in memory until it is no longer referenced. Occasionally this can cause the program to hold all the data in memory when only a small piece of it is needed.
+As mentioned earlier, re-slicing a slice doesn't make a copy of the underlying array.
+The full array will be kept in memory until it is no longer referenced.
+Occasionally this can cause the program to hold all the data in memory when
+only a small piece of it is needed.
 
-For example, this `FindDigits` function loads a file into memory and searches it for the first group of consecutive numeric digits, returning them as a new slice.
+For example, this `FindDigits` function loads a file into memory and searches
+it for the first group of consecutive numeric digits,
+returning them as a new slice.
 
 	var digitRegexp = regexp.MustCompile("[0-9]+")
 
@@ -214,7 +283,11 @@
 	    return digitRegexp.Find(b)
 	}
 
-This code behaves as advertised, but the returned `[]byte` points into an array containing the entire file. Since the slice references the original array, as long as the slice is kept around the garbage collector can't release the array; the few useful bytes of the file keep the entire contents in memory.
+This code behaves as advertised, but the returned `[]byte` points into an
+array containing the entire file.
+Since the slice references the original array,
+as long as the slice is kept around the garbage collector can't release the array;
+the few useful bytes of the file keep the entire contents in memory.
 
 To fix this problem one can copy the interesting data to a new slice before returning it:
 
@@ -226,8 +299,16 @@
 	    return c
 	}
 
-A more concise version of this function could be constructed by using `append`. This is left as an exercise for the reader.
+A more concise version of this function could be constructed by using `append`.
+This is left as an exercise for the reader.
 
 * Further Reading
 
-[[https://golang.org/doc/effective_go.html][Effective Go]] contains an in-depth treatment of [[https://golang.org/doc/effective_go.html#slices][slices]] and [[https://golang.org/doc/effective_go.html#arrays][arrays]], and the Go [[https://golang.org/doc/go_spec.html][language specification]] defines [[https://golang.org/doc/go_spec.html#Slice_types][slices]] and their [[https://golang.org/doc/go_spec.html#Length_and_capacity][associated]] [[https://golang.org/doc/go_spec.html#Making_slices_maps_and_channels][helper]] [[https://golang.org/doc/go_spec.html#Appending_and_copying_slices][functions]].
+[[https://golang.org/doc/effective_go.html][Effective Go]] contains an in-depth
+treatment of [[https://golang.org/doc/effective_go.html#slices][slices]]
+and [[https://golang.org/doc/effective_go.html#arrays][arrays]],
+and the Go [[https://golang.org/doc/go_spec.html][language specification]]
+defines [[https://golang.org/doc/go_spec.html#Slice_types][slices]] and
+their [[https://golang.org/doc/go_spec.html#Length_and_capacity][associated]]
+[[https://golang.org/doc/go_spec.html#Making_slices_maps_and_channels][helper]]
+[[https://golang.org/doc/go_spec.html#Appending_and_copying_slices][functions]].
diff --git a/content/go-updates-in-app-engine-171.article b/content/go-updates-in-app-engine-171.article
index a1b0b69..c51a026 100644
--- a/content/go-updates-in-app-engine-171.article
+++ b/content/go-updates-in-app-engine-171.article
@@ -6,16 +6,38 @@
 
 * Introduction
 
-This week we released version 1.7.1 of the App Engine SDK. It includes some significant updates specific to the App Engine runtime for Go.
+This week we released version 1.7.1 of the App Engine SDK.
+It includes some significant updates specific to the App Engine runtime for Go.
 
-The [[https://developers.google.com/appengine/docs/go/memcache/reference][memcache package]] has had some additions to its [[https://developers.google.com/appengine/docs/go/memcache/reference#Codec][Codec]] convenience type. The SetMulti, AddMulti, CompareAndSwap, and CompareAndSwapMulti methods make it easier to store and update encoded data in the [[https://developers.google.com/appengine/docs/go/memcache/overview][Memcache Service]].
+The [[https://developers.google.com/appengine/docs/go/memcache/reference][memcache package]] has
+had some additions to its [[https://developers.google.com/appengine/docs/go/memcache/reference#Codec][Codec]] convenience type.
+The SetMulti, AddMulti, CompareAndSwap, and CompareAndSwapMulti methods
+make it easier to store and update encoded data in the [[https://developers.google.com/appengine/docs/go/memcache/overview][Memcache Service]].
 
-The [[https://developers.google.com/appengine/docs/go/tools/uploadingdata][bulkloader tool]] can now be used with Go apps, allowing users to upload and download datastore records in bulk. This is useful for backups and offline processing, and a great help when migrating Python or Java apps to the Go runtime.
+The [[https://developers.google.com/appengine/docs/go/tools/uploadingdata][bulkloader tool]] can
+now be used with Go apps,
+allowing users to upload and download datastore records in bulk.
+This is useful for backups and offline processing,
+and a great help when migrating Python or Java apps to the Go runtime.
 
-The [[https://developers.google.com/appengine/docs/go/images/overview][Images Service]] is now available to Go users. The new [[https://developers.google.com/appengine/docs/go/images/reference][appengine/image package]] supports serving images directly from Blobstore and resizing or cropping those images on the fly. Note that this is not the full image service as provided by the Python and Java SDKs, as much of the equivalent functionality is available in the [[https://golang.org/pkg/image/][standard Go image package]] and external packages such as [[http://code.google.com/p/graphics-go/][graphics-go]].
+The [[https://developers.google.com/appengine/docs/go/images/overview][Images Service]] is
+now available to Go users.
+The new [[https://developers.google.com/appengine/docs/go/images/reference][appengine/image package]] supports serving
+images directly from Blobstore and resizing or cropping those images on the fly.
+Note that this is not the full image service as provided by the Python and Java SDKs,
+as much of the equivalent functionality is available in the [[https://golang.org/pkg/image/][standard Go image package]] and
+external packages such as [[http://code.google.com/p/graphics-go/][graphics-go]].
 
-The new [[https://developers.google.com/appengine/docs/go/backends/runtime#RunInBackground][runtime.RunInBackground]] function allows backend requests to spawn a new request independent of the initial request. These can run in the background as long as the backend stays alive.
+The new [[https://developers.google.com/appengine/docs/go/backends/runtime#RunInBackground][runtime.RunInBackground]] function
+allows backend requests to spawn a new request independent of the initial request.
+These can run in the background as long as the backend stays alive.
 
-Finally, we have filled in some missing functionality: the [[https://developers.google.com/appengine/docs/go/xmpp/reference][xmpp package]] now supports sending presence updates and chat invitations and retrieving the presence state of another user, and the [[https://developers.google.com/appengine/docs/go/users/reference][user package]] supports authenticating clients with OAuth.
+Finally, we have filled in some missing functionality:
+the [[https://developers.google.com/appengine/docs/go/xmpp/reference][xmpp package]] now
+supports sending presence updates and chat invitations and retrieving the
+presence state of another user,
+and the [[https://developers.google.com/appengine/docs/go/users/reference][user package]] supports
+authenticating clients with OAuth.
 
-You can grab the new SDK from the [[https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Go][App Engine downloads page]] and browse the [[https://developers.google.com/appengine/docs/go][updated documentation]].
+You can grab the new SDK from the [[https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Go][App Engine downloads page]] and
+browse the [[https://developers.google.com/appengine/docs/go][updated documentation]].
diff --git a/content/go-version-1-is-released.article b/content/go-version-1-is-released.article
index c7bd526..c415f87 100644
--- a/content/go-version-1-is-released.article
+++ b/content/go-version-1-is-released.article
@@ -7,22 +7,67 @@
 * Introduction
 
 .image go-version-1-is-released_gophermega.jpg
-Today marks a major milestone in the development of the Go programming language. We're announcing Go version 1, or Go 1 for short, which defines a language and a set of core libraries to provide a stable foundation for creating reliable products, projects, and publications.
+Today marks a major milestone in the development of the Go programming language.
+We're announcing Go version 1, or Go 1 for short,
+which defines a language and a set of core libraries to provide a stable
+foundation for creating reliable products,
+projects, and publications.
 
-Go 1 is the first release of Go that is available in supported binary distributions. They are available for Linux, FreeBSD, Mac OS X and, we are thrilled to announce, Windows.
+Go 1 is the first release of Go that is available in supported binary distributions.
+They are available for Linux, FreeBSD, Mac OS X and,
+we are thrilled to announce, Windows.
 
-The driving motivation for Go 1 is stability for its users. People who write Go 1 programs can be confident that those programs will continue to compile and run without change, in many environments, on a time scale of years. Similarly, authors who write books about Go 1 can be sure that their examples and explanations will be helpful to readers today and into the future.
+The driving motivation for Go 1 is stability for its users.
+People who write Go 1 programs can be confident that those programs will
+continue to compile and run without change,
+in many environments, on a time scale of years.
+Similarly, authors who write books about Go 1 can be sure that their examples
+and explanations will be helpful to readers today and into the future.
 
-Forward compatibility is part of stability. Code that compiles in Go 1 should, with few exceptions, continue to compile and run throughout the lifetime of that version, even as we issue updates and bug fixes such as Go version 1.1, 1.2, and so on. The [[https://golang.org/doc/go1compat.html][Go 1 compatibility document]] explains the compatibility guidelines in more detail.
+Forward compatibility is part of stability.
+Code that compiles in Go 1 should, with few exceptions,
+continue to compile and run throughout the lifetime of that version,
+even as we issue updates and bug fixes such as Go version 1.1, 1.2, and so on.
+The [[https://golang.org/doc/go1compat.html][Go 1 compatibility document]]
+explains the compatibility guidelines in more detail.
 
-Go 1 is a representation of Go as it is used today, not a major redesign. In its planning, we focused on cleaning up problems and inconsistencies and improving portability. There had long been many changes to Go that we had designed and prototyped but not released because they were backwards-incompatible. Go 1 incorporates these changes, which provide significant improvements to the language and libraries but sometimes introduce incompatibilities for old programs. Fortunately, the [[https://golang.org/cmd/go/#Run_go_tool_fix_on_packages][go fix]] tool can automate much of the work needed to bring programs up to the Go 1 standard.
+Go 1 is a representation of Go as it is used today,
+not a major redesign.
+In its planning, we focused on cleaning up problems and inconsistencies
+and improving portability.
+There had long been many changes to Go that we had designed and prototyped
+but not released because they were backwards-incompatible.
+Go 1 incorporates these changes, which provide significant improvements
+to the language and libraries but sometimes introduce incompatibilities for old programs.
+Fortunately, the [[https://golang.org/cmd/go/#Run_go_tool_fix_on_packages][go fix]]
+tool can automate much of the work needed to bring programs up to the Go 1 standard.
 
-Go 1 introduces changes to the language (such as new types for [[https://golang.org/doc/go1.html#rune][Unicode characters]] and [[https://golang.org/doc/go1.html#errors][errors]]) and the standard library (such as the new [[https://golang.org/doc/go1.html#time][time package]] and renamings in the [[https://golang.org/doc/go1.html#strconv][strconv package]]). Also, the package hierarchy has been rearranged to group related items together, such as moving the networking facilities, for instance the [[https://golang.org/pkg/net/rpc/][rpc package]], into subdirectories of net. A complete list of changes is documented in the [[https://golang.org/doc/go1.html][Go 1 release notes]]. That document is an essential reference for programmers migrating code from earlier versions of Go.
+Go 1 introduces changes to the language (such as new types for [[https://golang.org/doc/go1.html#rune][Unicode characters]]
+and [[https://golang.org/doc/go1.html#errors][errors]]) and the standard
+library (such as the new [[https://golang.org/doc/go1.html#time][time package]]
+and renamings in the [[https://golang.org/doc/go1.html#strconv][strconv package]]).
+Also, the package hierarchy has been rearranged to group related items together,
+such as moving the networking facilities,
+for instance the [[https://golang.org/pkg/net/rpc/][rpc package]],
+into subdirectories of net.
+A complete list of changes is documented in the [[https://golang.org/doc/go1.html][Go 1 release notes]].
+That document is an essential reference for programmers migrating code from
+earlier versions of Go.
 
-We also restructured the Go tool suite around the new [[https://golang.org/doc/go1.html#cmd_go][go command]], a program for fetching, building, installing and maintaining Go code. The go command eliminates the need for Makefiles to write Go code because it uses the Go program source itself to derive the build instructions. No more build scripts! 
+We also restructured the Go tool suite around the new [[https://golang.org/doc/go1.html#cmd_go][go command]],
+a program for fetching, building, installing and maintaining Go code.
+The go command eliminates the need for Makefiles to write Go code because
+it uses the Go program source itself to derive the build instructions.
+No more build scripts!
 
-Finally, the release of Go 1 triggers a new release of the [[https://developers.google.com/appengine/docs/go][Google App Engine SDK]]. A similar process of revision and stabilization has been applied to the App Engine libraries, providing a base for developers to build programs for App Engine that will run for years.
+Finally, the release of Go 1 triggers a new release of the [[https://developers.google.com/appengine/docs/go][Google App Engine SDK]].
+A similar process of revision and stabilization has been applied to the
+App Engine libraries,
+providing a base for developers to build programs for App Engine that will run for years.
 
-Go 1 is the result of a major effort by the core Go team and our many contributors from the open source community. We thank everyone who helped make this happen.
+Go 1 is the result of a major effort by the core Go team and our many contributors
+from the open source community.
+We thank everyone who helped make this happen.
 
-There has never been a better time to be a Go programmer. Everything you need to get started is at [[https://golang.org/][golang.org]].
+There has never been a better time to be a Go programmer.
+Everything you need to get started is at [[https://golang.org/][golang.org]].
diff --git a/content/go-whats-new-in-march-2010.article b/content/go-whats-new-in-march-2010.article
index b14ebbc..572a58f 100644
--- a/content/go-whats-new-in-march-2010.article
+++ b/content/go-whats-new-in-march-2010.article
@@ -5,20 +5,62 @@
 
 * Introduction
 
-Welcome to the official Go Blog. We, the Go team, hope to use this blog to keep the world up-to-date on the development of the Go programming language and the growing ecosystem of libraries and applications surrounding it.
+Welcome to the official Go Blog. We, the Go team,
+hope to use this blog to keep the world up-to-date on the development of
+the Go programming language and the growing ecosystem of libraries and applications surrounding it.
  
-It's been a few months since we launched (November last year), so let's talk about what's been happening in Go World since then.
+It's been a few months since we launched (November last year),
+so let's talk about what's been happening in Go World since then.
  
-The core team at Google has continued to develop the language, compilers, packages, tools, and documentation.  The compilers now produce code that is in some cases between 2x and an order of magnitude faster than at release. We have put together some graphs of a selection of [[http://godashboard.appspot.com/benchmarks][Benchmarks]], and the [[http://godashboard.appspot.com/][Build Status]] page tracks the reliability of each changeset submitted to the repository.
+The core team at Google has continued to develop the language,
+compilers, packages, tools, and documentation.
+The compilers now produce code that is in some cases between 2x and an order
+of magnitude faster than at release.
+We have put together some graphs of a selection of [[http://godashboard.appspot.com/benchmarks][Benchmarks]],
+and the [[http://godashboard.appspot.com/][Build Status]] page tracks the
+reliability of each changeset submitted to the repository.
  
-We have made syntax changes to make the language more concise, regular, and flexible. Semicolons have been [[http://groups.google.com/group/golang-nuts/t/5ee32b588d10f2e9][almost entirely removed]] from the language.  The [[https://golang.org/doc/go_spec.html#Function_types][...T syntax]] makes it simpler to handle an arbitrary number of typed function parameters.  The syntax x[lo:] is now shorthand for x[lo:len(x)]. Go also now natively supports complex numbers. See the [[https://golang.org/doc/devel/release.html][release notes]] for more. 
+We have made syntax changes to make the language more concise,
+regular, and flexible.
+Semicolons have been [[http://groups.google.com/group/golang-nuts/t/5ee32b588d10f2e9][almost entirely removed]] from the language.
+The [[https://golang.org/doc/go_spec.html#Function_types][...T syntax]]
+makes it simpler to handle an arbitrary number of typed function parameters.
+The syntax x[lo:] is now shorthand for x[lo:len(x)].
+Go also now natively supports complex numbers.
+See the [[https://golang.org/doc/devel/release.html][release notes]] for more.
  
-[[https://golang.org/cmd/godoc/][Godoc]] now provides better support for third-party libraries, and a new tool - [[https://golang.org/cmd/goinstall][goinstall]] - has been released to make it easy to install them. Additionally, we've started working on a package tracking system to make it easier to find what you need. You can view the beginnings of this on the [[http://godashboard.appspot.com/package][Packages page]].
+[[https://golang.org/cmd/godoc/][Godoc]] now provides better support for
+third-party libraries,
+and a new tool - [[https://golang.org/cmd/goinstall][goinstall]] - has been
+released to make it easy to install them.
+Additionally, we've started working on a package tracking system to make
+it easier to find what you need.
+You can view the beginnings of this on the [[http://godashboard.appspot.com/package][Packages page]].
  
-More than 40,000 lines of code have been added to [[https://golang.org/pkg/][the standard library]], including many entirely new packages, a sizable portion written by external contributors.
+More than 40,000 lines of code have been added to [[https://golang.org/pkg/][the standard library]],
+including many entirely new packages, a sizable portion written by external contributors.
  
-Speaking of third parties, since launch a vibrant community has flourished on our [[http://groups.google.com/group/golang-nuts/][mailing list]] and irc channel (#go-nuts on freenode). We have officially added [[https://golang.org/CONTRIBUTORS][more than 50 people]] to the project. Their contributions range from bug fixes and documentation corrections to core packages and support for additional operating systems (Go is now supported under FreeBSD, and a [[http://code.google.com/p/go/wiki/WindowsPort][Windows port]] is underway). We regard these community contributions our greatest success so far.
+Speaking of third parties, since launch a vibrant community has flourished
+on our [[http://groups.google.com/group/golang-nuts/][mailing list]] and
+irc channel (#go-nuts on freenode).
+We have officially added [[https://golang.org/CONTRIBUTORS][more than 50 people]] to the project.
+Their contributions range from bug fixes and documentation corrections to
+core packages and support for additional operating systems (Go is now supported under FreeBSD,
+and a [[http://code.google.com/p/go/wiki/WindowsPort][Windows port]] is underway).
+We regard these community contributions our greatest success so far.
  
-We've received some good reviews, too.  This [[http://www.pcworld.idg.com.au/article/337773/google_go_captures_developers_imaginations/][recent article in PC World]] summarized the enthusiasm surrounding the project.  Several bloggers have begun documenting their experiences in the language (see [[http://golang.tumblr.com/][here]], [[http://www.infi.nl/blog/view/id/47][here]], and [[http://freecella.blogspot.com/2010/01/gospecify-basic-setup-of-projects.html][here]] for example)  The general reaction of our users has been very positive; one first-timer remarked [[https://groups.google.com/group/golang-nuts/browse_thread/thread/5fabdd59f8562ed2]["I came away extremely impressed. Go walks an elegant line between simplicity and power."]]
+We've received some good reviews, too.  This [[http://www.pcworld.idg.com.au/article/337773/google_go_captures_developers_imaginations/][recent article in PC World]]
+summarized the enthusiasm surrounding the project.
+Several bloggers have begun documenting their experiences in the language
+(see [[http://golang.tumblr.com/][here]],
+[[http://www.infi.nl/blog/view/id/47][here]],
+and [[http://freecella.blogspot.com/2010/01/gospecify-basic-setup-of-projects.html][here]]
+for example)  The general reaction of our users has been very positive;
+one first-timer remarked [[https://groups.google.com/group/golang-nuts/browse_thread/thread/5fabdd59f8562ed2]["I came away extremely impressed. Go walks an elegant line between simplicity and power."]]
  
-As to the future: we have listened to the myriad voices telling us what they need, and are now focused on getting Go ready for the prime time. We are improving the garbage collector, runtime scheduler, tools, and standard libraries, as well as exploring new language features. 2010 will be an exciting year for Go, and we look forward to collaborating with the community to make it a successful one.
+As to the future: we have listened to the myriad voices telling us what they need,
+and are now focused on getting Go ready for the prime time.
+We are improving the garbage collector, runtime scheduler,
+tools, and standard libraries, as well as exploring new language features.
+2010 will be an exciting year for Go, and we look forward to collaborating
+with the community to make it a successful one.
diff --git a/content/go-wins-2010-bossie-award.article b/content/go-wins-2010-bossie-award.article
index 1f35c2c..fa79e54 100644
--- a/content/go-wins-2010-bossie-award.article
+++ b/content/go-wins-2010-bossie-award.article
@@ -5,8 +5,22 @@
 
 * Introduction
 
-The Go project has been awarded a [[http://www.infoworld.com/d/open-source/bossie-awards-2010-the-best-open-source-application-development-software-140&current=2&last=1][Bossie Award]] for "best open source application development software." The [[http://www.infoworld.com/d/open-source/bossie-awards-2010-the-best-open-source-software-the-year-115][Bossie Awards]] have been given each year since 2007 by [[http://infoworld.com/][InfoWorld]] to recognize the best Open Source projects. Their citation reads:
+The Go project has been awarded a [[http://www.infoworld.com/d/open-source/bossie-awards-2010-the-best-open-source-application-development-software-140&current=2&last=1][Bossie Award]]
+for "best open source application development software." The [[http://www.infoworld.com/d/open-source/bossie-awards-2010-the-best-open-source-software-the-year-115][Bossie Awards]]
+have been given each year since 2007 by [[http://infoworld.com/][InfoWorld]]
+to recognize the best Open Source projects.
+Their citation reads:
 
-Google's Go language tries to restore simplicity to programming. It does away with numerous constructs that have crept into all OO languages by re-imagining how to simplify and improve the conversation between a developer and the code. Go provides garbage collection, type safety, memory safety, and built-in support for concurrency and for Unicode characters. In addition, it compiles (fast!) to binaries for multiple platforms. Go is still in development (new features are being added) and it has limitations, notably poor support for Windows. But it shows a new, exciting direction in programming languages.
+Google's Go language tries to restore simplicity to programming.
+It does away with numerous constructs that have crept into all OO languages
+by re-imagining how to simplify and improve the conversation between a developer and the code.
+Go provides garbage collection, type safety,
+memory safety, and built-in support for concurrency and for Unicode characters.
+In addition, it compiles (fast!) to binaries for multiple platforms.
+Go is still in development (new features are being added) and it has limitations,
+notably poor support for Windows.
+But it shows a new, exciting direction in programming languages.
 
-The Go team are pleased to accept this award. It reflects not only our hard work, but also the efforts of the growing community of Go developers to whom we must extend our sincere thanks.
+The Go team are pleased to accept this award.
+It reflects not only our hard work, but also the efforts of the growing
+community of Go developers to whom we must extend our sincere thanks.
diff --git a/content/go1.11.article b/content/go1.11.article
index 75bc400..558d7cf 100644
--- a/content/go1.11.article
+++ b/content/go1.11.article
@@ -11,17 +11,25 @@
 Today the Go team is happy to announce the release of Go 1.11.
 You can get it from the [[https://golang.org/dl/][download page]].
 
-There are many changes and improvements to the toolchain, runtime, and libraries, but two features stand out as being especially exciting: modules and WebAssembly support.
+There are many changes and improvements to the toolchain,
+runtime, and libraries, but two features stand out as being especially exciting:
+modules and WebAssembly support.
 
-This release adds preliminary support for a [[https://golang.org/doc/go1.11#modules][new concept called “modules,”]] an alternative to GOPATH with integrated support for versioning and package distribution.
-Module support is considered experimental, and there are still a few rough edges to smooth out, so please make liberal use of the [[https://golang.org/issue/new][issue tracker]].
+This release adds preliminary support for a [[https://golang.org/doc/go1.11#modules][new concept called “modules,”]]
+an alternative to GOPATH with integrated support for versioning and package distribution.
+Module support is considered experimental,
+and there are still a few rough edges to smooth out,
+so please make liberal use of the [[https://golang.org/issue/new][issue tracker]].
 
 Go 1.11 also adds an experimental port to [[https://golang.org/doc/go1.11#wasm][WebAssembly]] (`js/wasm`).
 This allows programmers to compile Go programs to a binary format compatible with four major web browsers.
-You can read more about WebAssembly (abbreviated “Wasm”) at [[https://webassembly.org/][webassembly.org]] and see [[https://golang.org/wiki/WebAssembly][this wiki page]] on how to get started with using Wasm with Go.
+You can read more about WebAssembly (abbreviated “Wasm”) at [[https://webassembly.org/][webassembly.org]]
+and see [[https://golang.org/wiki/WebAssembly][this wiki page]] on how to
+get started with using Wasm with Go.
 Special thanks to [[https://github.com/neelance][Richard Musiol]] for contributing the WebAssembly port!
 
-We also want to thank everyone who contributed to this release by writing code, filing bugs, providing feedback, and/or testing the betas and release candidates.
+We also want to thank everyone who contributed to this release by writing code,
+filing bugs, providing feedback, and/or testing the betas and release candidates.
 Your contributions and diligence helped to ensure that Go 1.11 is as bug-free as possible.
 That said, if you do notice any problems, please [[https://golang.org/issues/new][file an issue]].
 
diff --git a/content/gobs-of-data.article b/content/gobs-of-data.article
index fc82bbf..21a9dca 100644
--- a/content/gobs-of-data.article
+++ b/content/gobs-of-data.article
@@ -6,92 +6,245 @@
 
 * Introduction
 
-To transmit a data structure across a network or to store it in a file, it must be encoded and then decoded again. There are many encodings available, of course: [[http://www.json.org/][JSON]], [[http://www.w3.org/XML/][XML]], Google's [[http://code.google.com/p/protobuf][protocol buffers]], and more. And now there's another, provided by Go's [[https://golang.org/pkg/encoding/gob/][gob]] package.
+To transmit a data structure across a network or to store it in a file,
+it must be encoded and then decoded again.
+There are many encodings available, of course:
+[[http://www.json.org/][JSON]], [[http://www.w3.org/XML/][XML]],
+Google's [[http://code.google.com/p/protobuf][protocol buffers]], and more.
+And now there's another, provided by Go's [[https://golang.org/pkg/encoding/gob/][gob]] package.
 
-Why define a new encoding? It's a lot of work and redundant at that. Why not just use one of the existing formats? Well, for one thing, we do! Go has [[https://golang.org/pkg/][packages]] supporting all the encodings just mentioned (the [[http://github.com/golang/protobuf][protocol buffer package]] is in a separate repository but it's one of the most frequently downloaded). And for many purposes, including communicating with tools and systems written in other languages, they're the right choice.
+Why define a new encoding? It's a lot of work and redundant at that.
+Why not just use one of the existing formats? Well,
+for one thing, we do!
+Go has [[https://golang.org/pkg/][packages]] supporting all the encodings
+just mentioned (the [[http://github.com/golang/protobuf][protocol buffer package]]
+is in a separate repository but it's one of the most frequently downloaded).
+And for many purposes, including communicating with tools and systems written in other languages,
+they're the right choice.
 
-But for a Go-specific environment, such as communicating between two servers written in Go, there's an opportunity to build something much easier to use and possibly more efficient.
+But for a Go-specific environment, such as communicating between two servers written in Go,
+there's an opportunity to build something much easier to use and possibly more efficient.
 
-Gobs work with the language in a way that an externally-defined, language-independent encoding cannot. At the same time, there are lessons to be learned from the existing systems.
+Gobs work with the language in a way that an externally-defined,
+language-independent encoding cannot.
+At the same time, there are lessons to be learned from the existing systems.
 
 * Goals
 
 The gob package was designed with a number of goals in mind.
 
-First, and most obvious, it had to be very easy to use. First, because Go has reflection, there is no need for a separate interface definition language or "protocol compiler". The data structure itself is all the package should need to figure out how to encode and decode it. On the other hand, this approach means that gobs will never work as well with other languages, but that's OK: gobs are unashamedly Go-centric.
+First, and most obvious, it had to be very easy to use.
+First, because Go has reflection, there is no need for a separate interface
+definition language or "protocol compiler".
+The data structure itself is all the package should need to figure out how
+to encode and decode it.
+On the other hand, this approach means that gobs will never work as well
+with other languages, but that's OK:
+gobs are unashamedly Go-centric.
 
-Efficiency is also important. Textual representations, exemplified by XML and JSON, are too slow to put at the center of an efficient communications network. A binary encoding is necessary.
+Efficiency is also important. Textual representations,
+exemplified by XML and JSON, are too slow to put at the center of an efficient
+communications network.
+A binary encoding is necessary.
 
-Gob streams must be self-describing. Each gob stream, read from the beginning, contains sufficient information that the entire stream can be parsed by an agent that knows nothing a priori about its contents. This property means that you will always be able to decode a gob stream stored in a file, even long after you've forgotten what data it represents.
+Gob streams must be self-describing. Each gob stream,
+read from the beginning, contains sufficient information that the entire
+stream can be parsed by an agent that knows nothing a priori about its contents.
+This property means that you will always be able to decode a gob stream stored in a file,
+even long after you've forgotten what data it represents.
 
 There were also some things to learn from our experiences with Google protocol buffers.
 
 * Protocol buffer misfeatures
 
-Protocol buffers had a major effect on the design of gobs, but have three features that were deliberately avoided. (Leaving aside the property that protocol buffers aren't self-describing: if you don't know the data definition used to encode a protocol buffer, you might not be able to parse it.)
+Protocol buffers had a major effect on the design of gobs,
+but have three features that were deliberately avoided.
+(Leaving aside the property that protocol buffers aren't self-describing:
+if you don't know the data definition used to encode a protocol buffer,
+you might not be able to parse it.)
 
-First, protocol buffers only work on the data type we call a struct in Go. You can't encode an integer or array at the top level, only a struct with fields inside it. That seems a pointless restriction, at least in Go. If all you want to send is an array of integers, why should you have to put it into a struct first?
+First, protocol buffers only work on the data type we call a struct in Go.
+You can't encode an integer or array at the top level,
+only a struct with fields inside it.
+That seems a pointless restriction, at least in Go.
+If all you want to send is an array of integers,
+why should you have to put it into a struct first?
 
-Next, a protocol buffer definition may specify that fields `T.x` and `T.y` are required to be present whenever a value of type `T` is encoded or decoded.  Although such required fields may seem like a good idea, they are costly to implement because the codec must maintain a separate data structure while encoding and decoding, to be able to report when required fields are missing.  They're also a maintenance problem. Over time, one may want to modify the data definition to remove a required field, but that may cause existing clients of the data to crash. It's better not to have them in the encoding at all.  (Protocol buffers also have optional fields. But if we don't have required fields, all fields are optional and that's that. There will be more to say about optional fields a little later.)
+Next, a protocol buffer definition may specify that fields `T.x` and `T.y`
+are required to be present whenever a value of type `T` is encoded or decoded.
+Although such required fields may seem like a good idea,
+they are costly to implement because the codec must maintain a separate
+data structure while encoding and decoding,
+to be able to report when required fields are missing.
+They're also a maintenance problem. Over time,
+one may want to modify the data definition to remove a required field,
+but that may cause existing clients of the data to crash.
+It's better not to have them in the encoding at all.
+(Protocol buffers also have optional fields.
+But if we don't have required fields, all fields are optional and that's that.
+There will be more to say about optional fields a little later.)
 
-The third protocol buffer misfeature is default values. If a protocol buffer omits the value for a "defaulted" field, then the decoded structure behaves as if the field were set to that value. This idea works nicely when you have getter and setter methods to control access to the field, but is harder to handle cleanly when the container is just a plain idiomatic struct. Required fields are also tricky to implement: where does one define the default values, what types do they have (is text UTF-8? uninterpreted bytes? how many bits in a float?) and despite the apparent simplicity, there were a number of complications in their design and implementation for protocol buffers. We decided to leave them out of gobs and fall back to Go's trivial but effective defaulting rule: unless you set something otherwise, it has the "zero value" for that type - and it doesn't need to be transmitted.
+The third protocol buffer misfeature is default values.
+If a protocol buffer omits the value for a "defaulted" field,
+then the decoded structure behaves as if the field were set to that value.
+This idea works nicely when you have getter and setter methods to control
+access to the field,
+but is harder to handle cleanly when the container is just a plain idiomatic struct.
+Required fields are also tricky to implement:
+where does one define the default values,
+what types do they have (is text UTF-8? uninterpreted bytes? how many bits
+in a float?) and despite the apparent simplicity,
+there were a number of complications in their design and implementation
+for protocol buffers.
+We decided to leave them out of gobs and fall back to Go's trivial but effective defaulting rule:
+unless you set something otherwise, it has the "zero value" for that type -
+and it doesn't need to be transmitted.
 
 So gobs end up looking like a sort of generalized, simplified protocol buffer. How do they work?
 
 * Values
 
-The encoded gob data isn't about types like `int8` and `uint16`. Instead, somewhat analogous to constants in Go, its integer values are abstract, sizeless numbers, either signed or unsigned. When you encode an `int8`, its value is transmitted as an unsized, variable-length integer. When you encode an `int64`, its value is also transmitted as an unsized, variable-length integer. (Signed and unsigned are treated distinctly, but the same unsized-ness applies to unsigned values too.) If both have the value 7, the bits sent on the wire will be identical. When the receiver decodes that value, it puts it into the receiver's variable, which may be of arbitrary integer type. Thus an encoder may send a 7 that came from an `int8`, but the receiver may store it in an `int64`. This is fine: the value is an integer and as a long as it fits, everything works. (If it doesn't fit, an error results.) This decoupling from the size of the variable gives some flexibility to the encoding: we can expand the type of the integer variable as the software evolves, but still be able to decode old data.
+The encoded gob data isn't about types like `int8` and `uint16`.
+Instead, somewhat analogous to constants in Go,
+its integer values are abstract, sizeless numbers,
+either signed or unsigned.
+When you encode an `int8`, its value is transmitted as an unsized,
+variable-length integer.
+When you encode an `int64`, its value is also transmitted as an unsized,
+variable-length integer.
+(Signed and unsigned are treated distinctly,
+but the same unsized-ness applies to unsigned values too.) If both have the value 7,
+the bits sent on the wire will be identical.
+When the receiver decodes that value, it puts it into the receiver's variable,
+which may be of arbitrary integer type.
+Thus an encoder may send a 7 that came from an `int8`,
+but the receiver may store it in an `int64`.
+This is fine: the value is an integer and as a long as it fits, everything works.
+(If it doesn't fit, an error results.) This decoupling from the size of
+the variable gives some flexibility to the encoding:
+we can expand the type of the integer variable as the software evolves,
+but still be able to decode old data.
 
-This flexibility also applies to pointers. Before transmission, all pointers are flattened. Values of type `int8`, `*int8`, `**int8`, `****int8`, etc. are all transmitted as an integer value, which may then be stored in `int` of any size, or `*int`, or `******int`, etc. Again, this allows for flexibility.
+This flexibility also applies to pointers.
+Before transmission, all pointers are flattened.
+Values of type `int8`, `*int8`, `**int8`,
+`****int8`, etc. are all transmitted as an integer value,
+which may then be stored in `int` of any size,
+or `*int`, or `******int`, etc.
+Again, this allows for flexibility.
 
-Flexibility also happens because, when decoding a struct, only those fields that are sent by the encoder are stored in the destination. Given the value
+Flexibility also happens because, when decoding a struct,
+only those fields that are sent by the encoder are stored in the destination. Given the value
 
 	type T struct{ X, Y, Z int } // Only exported fields are encoded and decoded.
 	var t = T{X: 7, Y: 0, Z: 8}
 
-the encoding of `t` sends only the 7 and 8. Because it's zero, the value of `Y` isn't even sent; there's no need to send a zero value.
+the encoding of `t` sends only the 7 and 8.
+Because it's zero, the value of `Y` isn't even sent;
+there's no need to send a zero value.
 
 The receiver could instead decode the value into this structure:
 
 	type U struct{ X, Y *int8 } // Note: pointers to int8s
 	var u U
 
-and acquire a value of `u` with only `X` set (to the address of an `int8` variable set to 7); the `Z` field is ignored - where would you put it? When decoding structs, fields are matched by name and compatible type, and only fields that exist in both are affected. This simple approach finesses the "optional field" problem: as the type `T` evolves by adding fields, out of date receivers will still function with the part of the type they recognize. Thus gobs provide the important result of optional fields - extensibility - without any additional mechanism or notation.
+and acquire a value of `u` with only `X` set (to the address of an `int8` variable set to 7);
+the `Z` field is ignored - where would you put it? When decoding structs,
+fields are matched by name and compatible type,
+and only fields that exist in both are affected.
+This simple approach finesses the "optional field" problem:
+as the type `T` evolves by adding fields,
+out of date receivers will still function with the part of the type they recognize.
+Thus gobs provide the important result of optional fields - extensibility -
+without any additional mechanism or notation.
 
-From integers we can build all the other types: bytes, strings, arrays, slices, maps, even floats. Floating-point values are represented by their IEEE 754 floating-point bit pattern, stored as an integer, which works fine as long as you know their type, which we always do. By the way, that integer is sent in byte-reversed order because common values of floating-point numbers, such as small integers, have a lot of zeros at the low end that we can avoid transmitting.
+From integers we can build all the other types:
+bytes, strings, arrays, slices, maps, even floats.
+Floating-point values are represented by their IEEE 754 floating-point bit pattern,
+stored as an integer, which works fine as long as you know their type, which we always do.
+By the way, that integer is sent in byte-reversed order because common values
+of floating-point numbers,
+such as small integers, have a lot of zeros at the low end that we can avoid transmitting.
 
-One nice feature of gobs that Go makes possible is that they allow you to define your own encoding by having your type satisfy the [[https://golang.org/pkg/encoding/gob/#GobEncoder][GobEncoder]] and [[https://golang.org/pkg/encoding/gob/#GobDecoder][GobDecoder]] interfaces, in a manner analogous to the [[https://golang.org/pkg/encoding/json/][JSON]] package's [[https://golang.org/pkg/encoding/json/#Marshaler][Marshaler]] and [[https://golang.org/pkg/encoding/json/#Unmarshaler][Unmarshaler]] and also to the [[https://golang.org/pkg/fmt/#Stringer][Stringer]] interface from [[https://golang.org/pkg/fmt/][package fmt]]. This facility makes it possible to represent special features, enforce constraints, or hide secrets when you transmit data. See the [[https://golang.org/pkg/encoding/gob/][documentation]] for details.
+One nice feature of gobs that Go makes possible is that they allow you to
+define your own encoding by having your type satisfy the [[https://golang.org/pkg/encoding/gob/#GobEncoder][GobEncoder]]
+and [[https://golang.org/pkg/encoding/gob/#GobDecoder][GobDecoder]] interfaces,
+in a manner analogous to the [[https://golang.org/pkg/encoding/json/][JSON]]
+package's [[https://golang.org/pkg/encoding/json/#Marshaler][Marshaler]]
+and [[https://golang.org/pkg/encoding/json/#Unmarshaler][Unmarshaler]] and
+also to the [[https://golang.org/pkg/fmt/#Stringer][Stringer]] interface
+from [[https://golang.org/pkg/fmt/][package fmt]].
+This facility makes it possible to represent special features,
+enforce constraints, or hide secrets when you transmit data.
+See the [[https://golang.org/pkg/encoding/gob/][documentation]] for details.
 
 * Types on the wire
 
-The first time you send a given type, the gob package includes in the data stream a description of that type. In fact, what happens is that the encoder is used to encode, in the standard gob encoding format, an internal struct that describes the type and gives it a unique number. (Basic types, plus the layout of the type description structure, are predefined by the software for bootstrapping.) After the type is described, it can be referenced by its type number.
+The first time you send a given type, the gob package includes in the data
+stream a description of that type.
+In fact, what happens is that the encoder is used to encode,
+in the standard gob encoding format, an internal struct that describes the
+type and gives it a unique number.
+(Basic types, plus the layout of the type description structure,
+are predefined by the software for bootstrapping.) After the type is described,
+it can be referenced by its type number.
 
-Thus when we send our first type `T`, the gob encoder sends a description of `T` and tags it with a type number, say 127. All values, including the first, are then prefixed by that number, so a stream of `T` values looks like:
+Thus when we send our first type `T`, the gob encoder sends a description
+of `T` and tags it with a type number, say 127.
+All values, including the first, are then prefixed by that number,
+so a stream of `T` values looks like:
 
 	("define type id" 127, definition of type T)(127, T value)(127, T value), ...
 
-These type numbers make it possible to describe recursive types and send values of those types. Thus gobs can encode types such as trees:
+These type numbers make it possible to describe recursive types and send
+values of those types.
+Thus gobs can encode types such as trees:
 
 	type Node struct {
 	    Value       int
 	    Left, Right *Node
 	}
 
-(It's an exercise for the reader to discover how the zero-defaulting rule makes this work, even though gobs don't represent pointers.)
+(It's an exercise for the reader to discover how the zero-defaulting rule makes this work,
+even though gobs don't represent pointers.)
 
-With the type information, a gob stream is fully self-describing except for the set of bootstrap types, which is a well-defined starting point.
+With the type information, a gob stream is fully self-describing except
+for the set of bootstrap types,
+which is a well-defined starting point.
 
 * Compiling a machine
 
-The first time you encode a value of a given type, the gob package builds a little interpreted machine specific to that data type. It uses reflection on the type to construct that machine, but once the machine is built it does not depend on reflection. The machine uses package unsafe and some trickery to convert the data into the encoded bytes at high speed. It could use reflection and avoid unsafe, but would be significantly slower. (A similar high-speed approach is taken by the protocol buffer support for Go, whose design was influenced by the implementation of gobs.) Subsequent values of the same type use the already-compiled machine, so they can be encoded right away.
+The first time you encode a value of a given type,
+the gob package builds a little interpreted machine specific to that data type.
+It uses reflection on the type to construct that machine,
+but once the machine is built it does not depend on reflection.
+The machine uses package unsafe and some trickery to convert the data into
+the encoded bytes at high speed.
+It could use reflection and avoid unsafe,
+but would be significantly slower.
+(A similar high-speed approach is taken by the protocol buffer support for Go,
+whose design was influenced by the implementation of gobs.) Subsequent values
+of the same type use the already-compiled machine,
+so they can be encoded right away.
 
 [Update: As of Go 1.4, package unsafe is no longer use by the gob package, with a modest performance drop.]
 
-Decoding is similar but harder. When you decode a value, the gob package holds a byte slice representing a value of a given encoder-defined type to decode, plus a Go value into which to decode it. The gob package builds a machine for that pair: the gob type sent on the wire crossed with the Go type provided for decoding. Once that decoding machine is built, though, it's again a reflectionless engine that uses unsafe methods to get maximum speed.
+Decoding is similar but harder. When you decode a value,
+the gob package holds a byte slice representing a value of a given encoder-defined type to decode,
+plus a Go value into which to decode it.
+The gob package builds a machine for that pair:
+the gob type sent on the wire crossed with the Go type provided for decoding.
+Once that decoding machine is built, though,
+it's again a reflectionless engine that uses unsafe methods to get maximum speed.
 
 * Use
 
-There's a lot going on under the hood, but the result is an efficient, easy-to-use encoding system for transmitting data. Here's a complete example showing differing encoded and decoded types. Note how easy it is to send and receive values; all you need to do is present values and variables to the [[https://golang.org/pkg/encoding/gob/][gob package]] and it does all the work.
+There's a lot going on under the hood, but the result is an efficient,
+easy-to-use encoding system for transmitting data.
+Here's a complete example showing differing encoded and decoded types.
+Note how easy it is to send and receive values;
+all you need to do is present values and variables to the [[https://golang.org/pkg/encoding/gob/][gob package]]
+and it does all the work.
 
 	package main
 
@@ -135,8 +288,15 @@
 
 You can compile and run this example code in the [[http://play.golang.org/p/_-OJV-rwMq][Go Playground]].
 
-The [[https://golang.org/pkg/net/rpc/][rpc package]] builds on gobs to turn this encode/decode automation into transport for method calls across the network. That's a subject for another article.
+The [[https://golang.org/pkg/net/rpc/][rpc package]] builds on gobs to turn
+this encode/decode automation into transport for method calls across the network.
+That's a subject for another article.
 
 * Details
 
-The [[https://golang.org/pkg/encoding/gob/][gob package documentation]], especially the file [[https://golang.org/src/pkg/encoding/gob/doc.go][doc.go]], expands on many of the details described here and includes a full worked example showing how the encoding represents data. If you are interested in the innards of the gob implementation, that's a good place to start.
+The [[https://golang.org/pkg/encoding/gob/][gob package documentation]],
+especially the file [[https://golang.org/src/pkg/encoding/gob/doc.go][doc.go]],
+expands on many of the details described here and includes a full worked
+example showing how the encoding represents data.
+If you are interested in the innards of the gob implementation,
+that's a good place to start.
diff --git a/content/godoc-documenting-go-code.article b/content/godoc-documenting-go-code.article
index e9ad9ff..89df534 100644
--- a/content/godoc-documenting-go-code.article
+++ b/content/godoc-documenting-go-code.article
@@ -6,34 +6,77 @@
 
 * Introduction
 
-The Go project takes documentation seriously. Documentation is a huge part of making software accessible and maintainable. Of course it must be well-written and accurate, but it also must be easy to write and to maintain. Ideally, it should be coupled to the code itself so the documentation evolves along with the code. The easier it is for programmers to produce good documentation, the better for everyone.
+The Go project takes documentation seriously.
+Documentation is a huge part of making software accessible and maintainable.
+Of course it must be well-written and accurate,
+but it also must be easy to write and to maintain.
+Ideally, it should be coupled to the code itself so the documentation evolves
+along with the code.
+The easier it is for programmers to produce good documentation,
+the better for everyone.
 
-To that end, we have developed the [[https://golang.org/cmd/godoc/][godoc]] documentation tool. This article describes godoc's approach to documentation, and explains how you can use our conventions and tools to write good documentation for your own projects.
+To that end, we have developed the [[https://golang.org/cmd/godoc/][godoc]] documentation tool.
+This article describes godoc's approach to documentation,
+and explains how you can use our conventions and tools to write good documentation
+for your own projects.
 
-Godoc parses Go source code - including comments - and produces documentation as HTML or plain text. The end result is documentation tightly coupled with the code it documents. For example, through godoc's web interface you can navigate from a function's [[https://golang.org/pkg/strings/#HasPrefix][documentation]] to its [[https://golang.org/src/pkg/strings/strings.go#L493][implementation]] with one click.
+Godoc parses Go source code - including comments - and produces documentation
+as HTML or plain text.
+The end result is documentation tightly coupled with the code it documents.
+For example, through godoc's web interface you can navigate from a function's
+[[https://golang.org/pkg/strings/#HasPrefix][documentation]] to its [[https://golang.org/src/pkg/strings/strings.go#L493][implementation]] with one click.
 
-Godoc is conceptually related to Python's [[http://www.python.org/dev/peps/pep-0257/][Docstring]] and Java's [[http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html][Javadoc]], but its design is simpler. The comments read by godoc are not language constructs (as with Docstring) nor must they have their own machine-readable syntax (as with Javadoc). Godoc comments are just good comments, the sort you would want to read even if godoc didn't exist.
+Godoc is conceptually related to Python's [[http://www.python.org/dev/peps/pep-0257/][Docstring]]
+and Java's [[http://www.oracle.com/technetwork/java/javase/documentation/index-jsp-135444.html][Javadoc]],
+but its design is simpler.
+The comments read by godoc are not language constructs (as with Docstring)
+nor must they have their own machine-readable syntax (as with Javadoc).
+Godoc comments are just good comments, the sort you would want to read even
+if godoc didn't exist.
 
-The convention is simple: to document a type, variable, constant, function, or even a package, write a regular comment directly preceding its declaration, with no intervening blank line. Godoc will then present that comment as text alongside the item it documents. For example, this is the documentation for the `fmt` package's [[https://golang.org/pkg/fmt/#Fprint][`Fprint`]] function:
+The convention is simple: to document a type,
+variable, constant, function, or even a package,
+write a regular comment directly preceding its declaration,
+with no intervening blank line.
+Godoc will then present that comment as text alongside the item it documents.
+For example, this is the documentation for the `fmt` package's [[https://golang.org/pkg/fmt/#Fprint][`Fprint`]] function:
 
 	// Fprint formats using the default formats for its operands and writes to w.
 	// Spaces are added between operands when neither is a string.
 	// It returns the number of bytes written and any write error encountered.
 	func Fprint(w io.Writer, a ...interface{}) (n int, err error) {
 
-Notice this comment is a complete sentence that begins with the name of the element it describes. This important convention allows us to generate documentation in a variety of formats, from plain text to HTML to UNIX man pages, and makes it read better when tools truncate it for brevity, such as when they extract the first line or sentence.
+Notice this comment is a complete sentence that begins with the name of
+the element it describes.
+This important convention allows us to generate documentation in a variety of formats,
+from plain text to HTML to UNIX man pages,
+and makes it read better when tools truncate it for brevity,
+such as when they extract the first line or sentence.
 
-Comments on package declarations should provide general package documentation. These comments can be short, like the [[https://golang.org/pkg/sort/][`sort`]] package's brief description:
+Comments on package declarations should provide general package documentation.
+These comments can be short, like the [[https://golang.org/pkg/sort/][`sort`]]
+package's brief description:
 
 	// Package sort provides primitives for sorting slices and user-defined
 	// collections.
 	package sort
 
-They can also be detailed like the [[https://golang.org/pkg/encoding/gob/][gob package]]'s overview. That package uses another convention for packages that need large amounts of introductory documentation: the package comment is placed in its own file, [[https://golang.org/src/pkg/encoding/gob/doc.go][doc.go]], which contains only those comments and a package clause.
+They can also be detailed like the [[https://golang.org/pkg/encoding/gob/][gob package]]'s overview.
+That package uses another convention for packages that need large amounts
+of introductory documentation:
+the package comment is placed in its own file,
+[[https://golang.org/src/pkg/encoding/gob/doc.go][doc.go]],
+which contains only those comments and a package clause.
 
-When writing package comments of any size, keep in mind that their first sentence will appear in godoc's [[https://golang.org/pkg/][package list]].
+When writing package comments of any size,
+keep in mind that their first sentence will appear in godoc's [[https://golang.org/pkg/][package list]].
 
-Comments that are not adjacent to a top-level declaration are omitted from godoc's output, with one notable exception. Top-level comments that begin with the word `"BUG(who)”` are recognized as known bugs, and included in the "Bugs” section of the package documentation. The "who” part should be the user name of someone who could provide more information. For example, this is a known issue from the [[https://golang.org/pkg/bytes/#pkg-note-BUG][bytes package]]:
+Comments that are not adjacent to a top-level declaration are omitted from godoc's output,
+with one notable exception.
+Top-level comments that begin with the word `"BUG(who)”` are recognized as known bugs,
+and included in the "Bugs” section of the package documentation.
+The "who” part should be the user name of someone who could provide more information.
+For example, this is a known issue from the [[https://golang.org/pkg/bytes/#pkg-note-BUG][bytes package]]:
 
 	// BUG(r): The rule Title uses for word boundaries does not handle Unicode punctuation properly.
 
@@ -47,14 +90,23 @@
 
 There are a few formatting rules that Godoc uses when converting comments to HTML:
 
-- Subsequent lines of text are considered part of the same paragraph; you must leave a blank line to separate paragraphs.
+- Subsequent lines of text are considered part of the same paragraph;
+  you must leave a blank line to separate paragraphs.
 
-- Pre-formatted text must be indented relative to the surrounding comment text (see gob's [[https://golang.org/src/pkg/encoding/gob/doc.go][doc.go]] for an example).
+- Pre-formatted text must be indented relative to the surrounding comment
+  text (see gob's [[https://golang.org/src/pkg/encoding/gob/doc.go][doc.go]] for an example).
 
 - URLs will be converted to HTML links; no special markup is necessary.
 
 Note that none of these rules requires you to do anything out of the ordinary.
 
-In fact, the best thing about godoc's minimal approach is how easy it is to use. As a result, a lot of Go code, including all of the standard library, already follows the conventions.
+In fact, the best thing about godoc's minimal approach is how easy it is to use.
+As a result, a lot of Go code, including all of the standard library,
+already follows the conventions.
 
-Your own code can present good documentation just by having comments as described above. Any Go packages installed inside `$GOROOT/src/pkg` and any `GOPATH` work spaces will already be accessible via godoc's command-line and HTTP interfaces, and you can specify additional paths for indexing via the `-path` flag or just by running `"godoc`."` in the source directory. See the [[https://golang.org/cmd/godoc/][godoc documentation]] for more details.
+Your own code can present good documentation just by having comments as described above.
+Any Go packages installed inside `$GOROOT/src/pkg` and any `GOPATH` work
+spaces will already be accessible via godoc's command-line and HTTP interfaces,
+and you can specify additional paths for indexing via the `-path` flag or
+just by running `"godoc`."` in the source directory.
+See the [[https://golang.org/cmd/godoc/][godoc documentation]] for more details.
diff --git a/content/gopher.article b/content/gopher.article
index 5bb4339..3084655 100644
--- a/content/gopher.article
+++ b/content/gopher.article
@@ -10,21 +10,32 @@
 
 .image gopher/header.jpg
 
-The Go gopher is an iconic mascot and one of the most distinctive features of the Go project. In this post we'll talk about its origins, evolution, and behavior.
+The Go gopher is an iconic mascot and one of the most distinctive features of the Go project.
+In this post we'll talk about its origins,
+evolution, and behavior.
 
-About 15 years ago—long before the Go project—the gopher first appeared as a promotion for the [[https://wfmu.org/][WFMU radio station]] in New Jersey. [[http://reneefrench.blogspot.com][Renee French]] was commissioned to design a T-shirt for an annual fundraiser and out came the gopher.
+About 15 years ago—long before the Go project—the gopher first appeared as
+a promotion for the [[https://wfmu.org/][WFMU radio station]] in New Jersey.
+[[http://reneefrench.blogspot.com][Renee French]] was commissioned to
+design a T-shirt for an annual fundraiser and out came the gopher.
 
 .image gopher/wfmu.jpg
 
-The gopher next made an appearance at Bell Labs, as Bob Flandrena's [[https://research.swtch.com/face][avatar]] in the Bell Labs mail system. Other Renee drawings became avatars for ken, r, rsc, and others. (Of course, Peter Weinberger's was his own [[http://spinroot.com/pico/pjw.html][iconic face]].)
+The gopher next made an appearance at Bell Labs,
+as Bob Flandrena's [[https://research.swtch.com/face][avatar]] in the Bell Labs mail system.
+Other Renee drawings became avatars for ken, r, rsc, and others.
+(Of course, Peter Weinberger's was his own [[http://spinroot.com/pico/pjw.html][iconic face]].)
 
 .image gopher/avatars.png
 
-Another Bell Labs activity led to Renee creating [[https://9p.io/plan9/glenda.html][Glenda]], the Plan 9 mascot, a distant cousin of the WFMU gopher.
+Another Bell Labs activity led to Renee creating [[https://9p.io/plan9/glenda.html][Glenda]],
+the Plan 9 mascot, a distant cousin of the WFMU gopher.
 
 .image gopher/glenda.png
 
-When we started the Go project we needed a logo, and Renee volunteered to draw it. It was featured on the first Go T-shirt and the Google Code site.
+When we started the Go project we needed a logo,
+and Renee volunteered to draw it.
+It was featured on the first Go T-shirt and the Google Code site.
 
 .image gopher/logo.png
 
@@ -34,7 +45,11 @@
 
 (The gopher has no name, and is called just the "Go gopher".)
 
-For the [[https://www.youtube.com/watch?v=-i0hat7pdpk#t=24m40s][launch]] of the [[https://developers.google.com/appengine/docs/go][Go App Engine runtime]] at Google I/O 2011 we engaged [[http://squishable.com][Squishable]] to manufacture the plush gophers. This was the first time the gopher was colored blue and appeared in three dimensions. The first prototype was kinda hairy:
+For the [[https://www.youtube.com/watch?v=-i0hat7pdpk#t=24m40s][launch]]
+of the [[https://developers.google.com/appengine/docs/go][Go App Engine runtime]] at
+Google I/O 2011 we engaged [[http://squishable.com][Squishable]] to manufacture the plush gophers.
+This was the first time the gopher was colored blue and appeared in three dimensions.
+The first prototype was kinda hairy:
 
 .image gopher/prototype.jpg
 
@@ -42,25 +57,43 @@
 
 .image gopher/plush.jpg
 
-Around the same time, Renee roughed out a gopher in clay. This inspired a refined sculpture that became a vinyl figurine made by [[http://www.kidrobot.com/][Kidrobot]]. The vinyls were first distributed at OSCON 2011.
+Around the same time, Renee roughed out a gopher in clay.
+This inspired a refined sculpture that became a vinyl figurine made by [[http://www.kidrobot.com/][Kidrobot]].
+The vinyls were first distributed at OSCON 2011.
 
 .image gopher/vinyl.jpg
 
-The gopher therefore exists in many forms, but has always been Renee's creation. It stands for the Go project and Go programmers everywhere, and is one of the most popular things in the Go world.
+The gopher therefore exists in many forms,
+but has always been Renee's creation.
+It stands for the Go project and Go programmers everywhere,
+and is one of the most popular things in the Go world.
 
 The Go gopher is a character; a unique creation. Not any old gopher, just as Snoopy is not any old cartoon dog.
 
-The [[https://golang.org/doc/gopher/][gopher images]] are Creative Commons Attribution 3.0 licensed. That means you can play with the images but you must give credit to their creator (Renee French) wherever they are used.
+The [[https://golang.org/doc/gopher/][gopher images]] are Creative Commons
+Attribution 3.0 licensed.
+That means you can play with the images but you must give credit to their
+creator (Renee French) wherever they are used.
 
 Here are a few gopher adaptations that people have used as mascots for user group mascots and similar organizations.
 
 .image gopher/usergroups.png
 
-They're cute and we like them, but by the Creative Commons rules the groups should give Renee credit, perhaps as a mention on the user group web site.
+They're cute and we like them, but by the Creative Commons rules the groups
+should give Renee credit,
+perhaps as a mention on the user group web site.
 
-The vinyl and plush gophers are copyrighted designs; accept no substitutes! But how can you get one? Their natural habitat is near high concentrations of Go programmers, and their worldwide population is growing. They may be purchased from the [[https://www.googlemerchandisestore.com/Google+Redesign/Fun/Go+Gopher+Blue+Squishable.axd?cid=1399][Google Store]], although the supply can be irregular. (These elusive creatures have been spotted in all [[http://www.flickr.com/photos/pinkhamsters/sets/72157627910426064/][kinds]] [[https://plus.google.com/107966629974328136037/posts/TcFA9zHzQB8][of]] [[https://twitter.com/goroutine][places]].)
+The vinyl and plush gophers are copyrighted designs;
+accept no substitutes!
+But how can you get one? Their natural habitat is near high concentrations of Go programmers,
+and their worldwide population is growing.
+They may be purchased from the [[https://www.googlemerchandisestore.com/Google+Redesign/Fun/Go+Gopher+Blue+Squishable.axd?cid=1399][Google Store]],
+although the supply can be irregular.
+(These elusive creatures have been spotted in all [[http://www.flickr.com/photos/pinkhamsters/sets/72157627910426064/][kinds]] [[https://plus.google.com/107966629974328136037/posts/TcFA9zHzQB8][of]] [[https://twitter.com/goroutine][places]].)
 
-Perhaps the best way to get a gopher is to catch one in the wild at a Go conference. There are two big chances this year: [[http://gophercon.com/][GopherCon]] (Denver, April 24-26) and [[http://dotgo.eu][dotGo]] (Paris, October 10).
+Perhaps the best way to get a gopher is to catch one in the wild at a Go conference.
+There are two big chances this year: [[http://gophercon.com/][GopherCon]] (Denver,
+April 24-26) and [[http://dotgo.eu][dotGo]] (Paris, October 10).
 
 .image gopher/portrait.jpg
 
diff --git a/content/gophercon.article b/content/gophercon.article
index 4777b78..e7d8931 100644
--- a/content/gophercon.article
+++ b/content/gophercon.article
@@ -19,13 +19,17 @@
 
 Two keynotes framed the conference:
 
-- Rob Pike's opening talk [[https://www.youtube.com/watch?v=VoS7DsT1rdM]["Hello, Gophers!"]] ([[https://talks.golang.org/2014/hellogophers.slide][slides]]) discusses the history of Go by walking through two of the first Go programs.
-- Andrew Gerrand's closing talk [[https://www.youtube.com/watch?v=dKGmK_Z1Zl0]["Go for gophers"]] ([[https://talks.golang.org/2014/go4gophers.slide][slides]]) explains the Go design philosophy through the lens of his personal experience learning the language.
+- Rob Pike's opening talk [[https://www.youtube.com/watch?v=VoS7DsT1rdM]["Hello, Gophers!"]] ([[https://talks.golang.org/2014/hellogophers.slide][slides]])
+  discusses the history of Go by walking through two of the first Go programs.
+- Andrew Gerrand's closing talk [[https://www.youtube.com/watch?v=dKGmK_Z1Zl0]["Go for gophers"]] ([[https://talks.golang.org/2014/go4gophers.slide][slides]]) explains
+  the Go design philosophy through the lens of his personal experience learning the language.
 
 One talk that resonated with members of the Go team was Peter Bourgon's
 [[https://www.youtube.com/watch?v=Y1-RLAl7iOI]["Best practices for Production Environments"]]
 ([[http://peter.bourgon.org/go-in-production/][notes]]).
-From deployment to dependency management, it answers many frequently asked questions about Go use in the real world and is a must-see for anyone serious about building systems in Go.
+From deployment to dependency management,
+it answers many frequently asked questions about Go use in the real world
+and is a must-see for anyone serious about building systems in Go.
 
 But, really, you should just [[http://confreaks.com/events/gophercon2014][watch them all]].
 They're great.
@@ -45,7 +49,10 @@
 It was a thrill to see the many different ways people are using the language.
 It was also great to put faces to many of the names we know well through their contributions to the project.
 
-We would like to extend our thanks and congratulations to the GopherCon organizers (Brian Ketelsen and Erik St. Martin), the excellent speakers, and the tireless volunteers that pitched in to make the event such a success.
+We would like to extend our thanks and congratulations to the GopherCon
+organizers (Brian Ketelsen and Erik St.
+Martin), the excellent speakers, and the tireless volunteers that pitched
+in to make the event such a success.
 We look forward to GopherCon 2015, which promises to be bigger and better still.
 
 But if you really can't wait, we'll see you at [[http://www.dotgo.eu/][dotGo]] in Paris on the 10th of October!
diff --git a/content/gophercon2015.article b/content/gophercon2015.article
index c25bd3b..9dae87b 100644
--- a/content/gophercon2015.article
+++ b/content/gophercon2015.article
@@ -20,34 +20,56 @@
 
 [[http://gophercon.com/schedule/8july/][Day 1]]:
 
-- Go, Open Source, Community — Russ Cox ([[https://www.youtube.com/watch?v=XvZOdpd_9tc][video]]) ([[https://blog.golang.org/open-source][text]])
-- Go kit: A Standard Library for Distributed Programming — Peter Bourgon ([[https://www.youtube.com/watch?v=1AjaZi4QuGo][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Go%20kit/go-kit.pdf][slides]])
-- Delve Into Go — Derek Parker ([[https://www.youtube.com/watch?v=InG72scKPd4][video]]) ([[http://go-talks.appspot.com/github.com/derekparker/talks/gophercon-2015/delve-into-go.slide][slides]])
-- How a complete beginner learned Go as her first backend language in 5 weeks — Audrey Lim ([[https://www.youtube.com/watch?v=fZh8uCInEfw][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Audrey%20Lim%20-%20How%20a%20Complete%20Beginner%20Picked%20Up%20Go%20as%20Her%20First%20Backend%20Language%20in%205%20weeks/audreylim_slides.pdf][slides]])
-- A Practical Guide to Preventing Deadlocks and Leaks in Go — Richard Fliam ([[https://www.youtube.com/watch?v=3EW1hZ8DVyw][video]])
-- Go GC: Solving the Latency Problem — Rick Hudson ([[https://www.youtube.com/watch?v=aiv1JOfMjm0][video]]) ([[https://talks.golang.org/2015/go-gc.pdf][slides]])
-- Simplicity and Go — Katherine Cox-Buday ([[https://www.youtube.com/watch?v=S6mEo_FHZ5Y][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Katherine%20Cox-Buday:%20Simplicity%20%26%20Go/Simplicity%20%26%20Go.pdf][slides]])
-- Rebuilding Parse.com in Go - an opinionated rewrite — Abhishek Kona ([[https://www.youtube.com/watch?v=_f9LS-OWfeA][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Abhishek%20Kona%20Rewriting%20Parse%20in%20GO/myslides.pdf][slides]])
-- Prometheus: Designing and Implementing a Modern Monitoring Solution in Go — Björn Rabenstein ([[https://www.youtube.com/watch?v=1V7eJ0jN8-E][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Bj%C3%B6rn%20Rabenstein%20-%20Prometheus/slides.pdf][slides]])
+- Go, Open Source, Community — Russ Cox ([[https://www.youtube.com/watch?v=XvZOdpd_9tc][video]])
+  ([[https://blog.golang.org/open-source][text]])
+- Go kit: A Standard Library for Distributed Programming — Peter Bourgon
+  ([[https://www.youtube.com/watch?v=1AjaZi4QuGo][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Go%20kit/go-kit.pdf][slides]])
+- Delve Into Go — Derek Parker ([[https://www.youtube.com/watch?v=InG72scKPd4][video]])
+  ([[http://go-talks.appspot.com/github.com/derekparker/talks/gophercon-2015/delve-into-go.slide][slides]])
+- How a complete beginner learned Go as her first backend language in 5
+  weeks — Audrey Lim ([[https://www.youtube.com/watch?v=fZh8uCInEfw][video]])
+  ([[https://github.com/gophercon/2015-talks/blob/master/Audrey%20Lim%20-%20How%20a%20Complete%20Beginner%20Picked%20Up%20Go%20as%20Her%20First%20Backend%20Language%20in%205%20weeks/audreylim_slides.pdf][slides]])
+- A Practical Guide to Preventing Deadlocks and Leaks in Go — Richard
+  Fliam ([[https://www.youtube.com/watch?v=3EW1hZ8DVyw][video]])
+- Go GC: Solving the Latency Problem — Rick Hudson ([[https://www.youtube.com/watch?v=aiv1JOfMjm0][video]])
+  ([[https://talks.golang.org/2015/go-gc.pdf][slides]])
+- Simplicity and Go — Katherine Cox-Buday ([[https://www.youtube.com/watch?v=S6mEo_FHZ5Y][video]])
+  ([[https://github.com/gophercon/2015-talks/blob/master/Katherine%20Cox-Buday:%20Simplicity%20%26%20Go/Simplicity%20%26%20Go.pdf][slides]])
+- Rebuilding Parse.com in Go - an opinionated rewrite — Abhishek Kona
+  ([[https://www.youtube.com/watch?v=_f9LS-OWfeA][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Abhishek%20Kona%20Rewriting%20Parse%20in%20GO/myslides.pdf][slides]])
+- Prometheus: Designing and Implementing a Modern Monitoring Solution in
+  Go — Björn Rabenstein ([[https://www.youtube.com/watch?v=1V7eJ0jN8-E][video]])
+  ([[https://github.com/gophercon/2015-talks/blob/master/Bj%C3%B6rn%20Rabenstein%20-%20Prometheus/slides.pdf][slides]])
 - What Could Go Wrong? — Kevin Cantwell ([[https://www.youtube.com/watch?v=VC3QXZ-x5yI][video]])
-- The Roots of Go — Baishampayan Ghose ([[https://www.youtube.com/watch?v=0hPOopcJ8-E][video]]) ([[https://speakerdeck.com/bg/the-roots-of-go][slides]])
+- The Roots of Go — Baishampayan Ghose ([[https://www.youtube.com/watch?v=0hPOopcJ8-E][video]])
+  ([[https://speakerdeck.com/bg/the-roots-of-go][slides]])
 
 [[http://gophercon.com/schedule/9july/][Day 2]]:
 
-- The Evolution of Go — Robert Griesemer ([[https://www.youtube.com/watch?v=0ReKdcpNyQg][video]]) ([[https://talks.golang.org/2015/gophercon-goevolution.slide][slides]])
-- Static Code Analysis Using SSA — Ben Johnson ([[https://www.youtube.com/watch?v=D2-gaMvWfQY][video]]) ([[https://speakerdeck.com/benbjohnson/static-code-analysis-using-ssa][slides]])
-- Go on Mobile — Hana Kim ([[https://www.youtube.com/watch?v=sQ6-HyPxHKg][video]]) ([[https://talks.golang.org/2015/gophercon-go-on-mobile.slide][slides]])
-- Go Dynamic Tools — Dmitry Vyukov ([[https://www.youtube.com/watch?v=a9xrxRsIbSU][video]]) ([[https://talks.golang.org/2015/dynamic-tools.slide][slides]])
-- Embrace the Interface — Tomás Senart ([[https://www.youtube.com/watch?v=xyDkyFjzFVc][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Tom%C3%A1s%20Senart%20-%20Embrace%20the%20Interface/ETI.pdf][slides]])
-- Uptime: Building Resilient Services with Go — Blake Caldwell ([[https://www.youtube.com/watch?v=PyBJQA4clfc][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Blake%20Caldwell%20-%20Uptime:%20Building%20Resilient%20Services%20with%20Go/2015-GopherCon-Talk-Uptime.pdf][slides]])
-- Cayley: Building a Graph Database — Barak Michener ([[https://www.youtube.com/watch?v=-9kWbPmSyCI][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Barak%20Michener%20-%20Cayley:%20Building%20a%20Graph%20Database/Cayley%20-%20Building%20a%20Graph%20Database.pdf][slides]])
+- The Evolution of Go — Robert Griesemer ([[https://www.youtube.com/watch?v=0ReKdcpNyQg][video]])
+  ([[https://talks.golang.org/2015/gophercon-goevolution.slide][slides]])
+- Static Code Analysis Using SSA — Ben Johnson ([[https://www.youtube.com/watch?v=D2-gaMvWfQY][video]])
+  ([[https://speakerdeck.com/benbjohnson/static-code-analysis-using-ssa][slides]])
+- Go on Mobile — Hana Kim ([[https://www.youtube.com/watch?v=sQ6-HyPxHKg][video]])
+  ([[https://talks.golang.org/2015/gophercon-go-on-mobile.slide][slides]])
+- Go Dynamic Tools — Dmitry Vyukov ([[https://www.youtube.com/watch?v=a9xrxRsIbSU][video]])
+  ([[https://talks.golang.org/2015/dynamic-tools.slide][slides]])
+- Embrace the Interface — Tomás Senart ([[https://www.youtube.com/watch?v=xyDkyFjzFVc][video]])
+  ([[https://github.com/gophercon/2015-talks/blob/master/Tom%C3%A1s%20Senart%20-%20Embrace%20the%20Interface/ETI.pdf][slides]])
+- Uptime: Building Resilient Services with Go — Blake Caldwell ([[https://www.youtube.com/watch?v=PyBJQA4clfc][video]])
+  ([[https://github.com/gophercon/2015-talks/blob/master/Blake%20Caldwell%20-%20Uptime:%20Building%20Resilient%20Services%20with%20Go/2015-GopherCon-Talk-Uptime.pdf][slides]])
+- Cayley: Building a Graph Database — Barak Michener ([[https://www.youtube.com/watch?v=-9kWbPmSyCI][video]])
+  ([[https://github.com/gophercon/2015-talks/blob/master/Barak%20Michener%20-%20Cayley:%20Building%20a%20Graph%20Database/Cayley%20-%20Building%20a%20Graph%20Database.pdf][slides]])
 - Code Generation For The Sake Of Consistency — Sarah Adams ([[https://www.youtube.com/watch?v=kGAgHwfjg1s][video]])
-- The Many Faces of Struct Tags — Sam Helman and Kyle Erf ([[https://www.youtube.com/watch?v=_SCRvMunkdA][video]]) ([[https://github.com/gophercon/2015-talks/blob/master/Sam%20Helman%20%26%20Kyle%20Erf%20-%20The%20Many%20Faces%20of%20Struct%20Tags/StructTags.pdf][slides]])
+- The Many Faces of Struct Tags — Sam Helman and Kyle Erf ([[https://www.youtube.com/watch?v=_SCRvMunkdA][video]])
+  ([[https://github.com/gophercon/2015-talks/blob/master/Sam%20Helman%20%26%20Kyle%20Erf%20-%20The%20Many%20Faces%20of%20Struct%20Tags/StructTags.pdf][slides]])
 - Betting the Company on Go and Winning — Kelsey Hightower ([[https://www.youtube.com/watch?v=wqVbLlHqAeY][video]])
-- How Go Was Made — Andrew Gerrand ([[https://www.youtube.com/watch?v=0ht89TxZZnk][video]]) ([[https://talks.golang.org/2015/how-go-was-made.slide][slides]])
+- How Go Was Made — Andrew Gerrand ([[https://www.youtube.com/watch?v=0ht89TxZZnk][video]])
+  ([[https://talks.golang.org/2015/how-go-was-made.slide][slides]])
 
 The [[http://gophercon.com/schedule/10july/][hack day]] was also a ton of fun,
-with hours of [[https://www.youtube.com/playlist?list=PL2ntRZ1ySWBeHqlHM8DmvS8axgbrpvF9b][lightning talks]] and a range of activities from programming robots
+with hours of [[https://www.youtube.com/playlist?list=PL2ntRZ1ySWBeHqlHM8DmvS8axgbrpvF9b][lightning talks]]
+and a range of activities from programming robots
 to a Magic: the Gathering tournament.
 
 Huge thanks to the event organizers Brian Ketelsen and Eric St. Martin and
diff --git a/content/gos-declaration-syntax.article b/content/gos-declaration-syntax.article
index fb7136f..bb1d18f 100644
--- a/content/gos-declaration-syntax.article
+++ b/content/gos-declaration-syntax.article
@@ -6,41 +6,59 @@
 
 * Introduction
 
-Newcomers to Go wonder why the declaration syntax is different from the tradition established in the C family. In this post we'll compare the two approaches and explain why Go's declarations look as they do.
+Newcomers to Go wonder why the declaration syntax is different from the
+tradition established in the C family.
+In this post we'll compare the two approaches and explain why Go's declarations look as they do.
 
 * C syntax
 
-First, let's talk about C syntax. C took an unusual and clever approach to declaration syntax. Instead of describing the types with special syntax, one writes an expression involving the item being declared, and states what type that expression will have. Thus
+First, let's talk about C syntax. C took an unusual and clever approach
+to declaration syntax.
+Instead of describing the types with special syntax,
+one writes an expression involving the item being declared,
+and states what type that expression will have. Thus
 
 	int x;
 
-declares x to be an int: the expression 'x' will have type int. In general, to figure out how to write the type of a new variable, write an expression involving that variable that evaluates to a basic type, then put the basic type on the left and the expression on the right.
+declares x to be an int: the expression 'x' will have type int.
+In general, to figure out how to write the type of a new variable,
+write an expression involving that variable that evaluates to a basic type,
+then put the basic type on the left and the expression on the right.
 
 Thus, the declarations
 
 	int *p;
 	int a[3];
 
-state that p is a pointer to int because '*p' has type int, and that a is an array of ints because a[3] (ignoring the particular index value, which is punned to be the size of the array) has type int.
+state that p is a pointer to int because '*p' has type int,
+and that a is an array of ints because a[3] (ignoring the particular index value,
+which is punned to be the size of the array) has type int.
 
-What about functions? Originally, C's function declarations wrote the types of the arguments outside the parens, like this:
+What about functions? Originally, C's function declarations wrote the types
+of the arguments outside the parens, like this:
 
 	int main(argc, argv)
 	    int argc;
 	    char *argv[];
 	{ /* ... */ }
 
-Again, we see that main is a function because the expression main(argc, argv) returns an int. In modern notation we'd write
+Again, we see that main is a function because the expression main(argc,
+argv) returns an int.
+In modern notation we'd write
 
 	int main(int argc, char *argv[]) { /* ... */ }
 
 but the basic structure is the same.
 
-This is a clever syntactic idea that works well for simple types but can get confusing fast. The famous example is declaring a function pointer. Follow the rules and you get this:
+This is a clever syntactic idea that works well for simple types but can get confusing fast.
+The famous example is declaring a function pointer.
+Follow the rules and you get this:
 
 	int (*fp)(int a, int b);
 
-Here, fp is a pointer to a function because if you write the expression (*fp)(a, b) you'll call a function that returns int. What if one of fp's arguments is itself a function?
+Here, fp is a pointer to a function because if you write the expression (*fp)(a,
+b) you'll call a function that returns int.
+What if one of fp's arguments is itself a function?
 
 	int (*fp)(int (*ff)(int x, int y), int b)
 
@@ -54,7 +72,9 @@
 
 	char *argv[]
 
-so you drop the name from the middle of its declaration to construct its type. It's not obvious, though, that you declare something of type char *[] by putting its name in the middle.
+so you drop the name from the middle of its declaration to construct its type.
+It's not obvious, though, that you declare something of type char *[] by
+putting its name in the middle.
 
 And look what happens to fp's declaration if you don't name the parameters:
 
@@ -64,39 +84,55 @@
 
 	int (*)(int, int)
 
-it's not exactly clear that it's a function pointer declaration at all. And what if the return type is a function pointer?
+it's not exactly clear that it's a function pointer declaration at all.
+And what if the return type is a function pointer?
 
 	int (*(*fp)(int (*)(int, int), int))(int, int)
 
 It's hard even to see that this declaration is about fp.
 
-You can construct more elaborate examples but these should illustrate some of the difficulties that C's declaration syntax can introduce.
+You can construct more elaborate examples but these should illustrate some
+of the difficulties that C's declaration syntax can introduce.
 
-There's one more point that needs to be made, though. Because type and declaration syntax are the same, it can be difficult to parse expressions with types in the middle. This is why, for instance, C casts always parenthesize the type, as in
+There's one more point that needs to be made, though.
+Because type and declaration syntax are the same,
+it can be difficult to parse expressions with types in the middle.
+This is why, for instance, C casts always parenthesize the type, as in
 
 	(int)M_PI
 
 * Go syntax
 
-Languages outside the C family usually use a distinct type syntax in declarations. Although it's a separate point, the name usually comes first, often followed by a colon. Thus our examples above become something like (in a fictional but illustrative language)
+Languages outside the C family usually use a distinct type syntax in declarations.
+Although it's a separate point, the name usually comes first,
+often followed by a colon.
+Thus our examples above become something like (in a fictional but illustrative language)
 
 	x: int
 	p: pointer to int
 	a: array[3] of int
 
-These declarations are clear, if verbose - you just read them left to right. Go takes its cue from here, but in the interests of brevity it drops the colon and removes some of the keywords:
+These declarations are clear, if verbose - you just read them left to right.
+Go takes its cue from here, but in the interests of brevity it drops the
+colon and removes some of the keywords:
 
 	x int
 	p *int
 	a [3]int
 
-There is no direct correspondence between the look of [3]int and how to use a in an expression. (We'll come back to pointers in the next section.) You gain clarity at the cost of a separate syntax.
+There is no direct correspondence between the look of [3]int and how to
+use a in an expression.
+(We'll come back to pointers in the next section.) You gain clarity at the
+cost of a separate syntax.
 
-Now consider functions. Let's transcribe the declaration for main as it would read in Go, although the real main function in Go takes no arguments:
+Now consider functions. Let's transcribe the declaration for main as it would read in Go,
+although the real main function in Go takes no arguments:
 
 	func main(argc int, argv []string) int
 
-Superficially that's not much different from C, other than the change from `char` arrays to strings, but it reads well from left to right:
+Superficially that's not much different from C,
+other than the change from `char` arrays to strings,
+but it reads well from left to right:
 
 function main takes an int and a slice of strings and returns an int.
 
@@ -104,7 +140,9 @@
 
 	func main(int, []string) int
 
-One merit of this left-to-right style is how well it works as the types become more complex. Here's a declaration of a function variable (analogous to a function pointer in C):
+One merit of this left-to-right style is how well it works as the types
+become more complex.
+Here's a declaration of a function variable (analogous to a function pointer in C):
 
 	f func(func(int,int) int, int) int
 
@@ -112,7 +150,8 @@
 
 	f func(func(int,int) int, int) func(int, int) int
 
-It still reads clearly, from left to right, and it's always obvious which name is being declared - the name comes first.
+It still reads clearly, from left to right,
+and it's always obvious which name is being declared - the name comes first.
 
 The distinction between type and expression syntax makes it easy to write and invoke closures in Go:
 
@@ -120,12 +159,17 @@
 
 * Pointers
 
-Pointers are the exception that proves the rule. Notice that in arrays and slices, for instance, Go's type syntax puts the brackets on the left of the type but the expression syntax puts them on the right of the expression:
+Pointers are the exception that proves the rule.
+Notice that in arrays and slices, for instance,
+Go's type syntax puts the brackets on the left of the type but the expression
+syntax puts them on the right of the expression:
 
 	var a []int
 	x = a[1]
 
-For familiarity, Go's pointers use the * notation from C, but we could not bring ourselves to make a similar reversal for pointer types. Thus pointers work like this
+For familiarity, Go's pointers use the * notation from C,
+but we could not bring ourselves to make a similar reversal for pointer types.
+Thus pointers work like this
 
 	var p *int
 	x = *p
@@ -140,7 +184,10 @@
 	var p ^int
 	x = p^
 
-and perhaps we should have (and chosen another operator for xor), because the prefix asterisk on both types and expressions complicates things in a number of ways. For instance, although one can write
+and perhaps we should have (and chosen another operator for xor),
+because the prefix asterisk on both types and expressions complicates things
+in a number of ways.
+For instance, although one can write
 
 	[]int("hi")
 
@@ -150,10 +197,13 @@
 
 Had we been willing to give up * as pointer syntax, those parentheses would be unnecessary.
 
-So Go's pointer syntax is tied to the familiar C form, but those ties mean that we cannot break completely from using parentheses to disambiguate types and expressions in the grammar.
+So Go's pointer syntax is tied to the familiar C form,
+but those ties mean that we cannot break completely from using parentheses
+to disambiguate types and expressions in the grammar.
 
 Overall, though, we believe Go's type syntax is easier to understand than C's, especially when things get complicated.
 
 * Notes
 
-Go's declarations read left to right. It's been pointed out that C's read in a spiral! See [[http://c-faq.com/decl/spiral.anderson.html][ The "Clockwise/Spiral Rule"]] by David Anderson.
+Go's declarations read left to right. It's been pointed out that C's read in a spiral!
+See [[http://c-faq.com/decl/spiral.anderson.html][ The "Clockwise/Spiral Rule"]] by David Anderson.
diff --git a/content/gothamgo.article b/content/gothamgo.article
index 79a78b8..e5e5575 100644
--- a/content/gothamgo.article
+++ b/content/gothamgo.article
@@ -6,7 +6,8 @@
 
 * Introduction
 
-Last November more than two hundred gophers from all across the United States got together for the first full-day Go conference in New York City.
+Last November more than two hundred gophers from all across the United States
+got together for the first full-day Go conference in New York City.
 
 The diverse speaker lineup included university students, industry experts, and Go team members.
 
@@ -14,22 +15,50 @@
 
 .image gothamgo/gothamgo.jpg _ 600
 
-- [[http://vimeo.com/115728346][Launching into Go]] _by_Kathy_Spardlin_ - a CockroachDB contributor provides pointers for people getting started with Go.
-- [[http://vimeo.com/115782573][Error Handling]] _by_ [[https://twitter.com/goinggodotnet][_Bill_Kennedy_]] - ideas on how to use the Go error interface.
-- [[http://vimeo.com/115776445][7 common mistakes in Go and how to avoid them]] _by_ [[https://twitter.com/spf13][_Steve_Francia_]] - the author of some popular Go libraries shares his experience.
-- [[http://vimeo.com/115309491][Cancellation, Context, and Plumbing]] _by_ [[https://twitter.com/sajma][_Sameer_Ajmani_]] - the Google NYC Go team lead explains how cancellation works in Go, and how we're retrofitting the Google code base to use it.
-- [[http://vimeo.com/115940605][Dethorning Package Management]] _by_ [[https://twitter.com/krarick][_Keith_Rarick_]] - the creator of godep talks about how to manage your dependencies well.
-- [[http://vimeo.com/115940590][Everything You've Always Wanted to Know About Go Web Apps (But were afraid to ask)]] _by_ [[https://twitter.com/markbates][_Mark_Bates_]] - a survey of Go packages for building web apps, and insights into why there are so few Go "frameworks".
-- [[http://vimeo.com/116215450][Building high-performance database applications using Aerospike]] _by_Chris_Stivers_ - a principal engineer at Aerospike shares his experiences building scalable applications.
-- [[http://vimeo.com/115307069][The state of Go on the Android platform]] _by_ [[https://twitter.com/davidcrawshaw][_David_Crawshaw_]] - the leader of the Go on mobile platforms project tells us what’s coming up and shows a working demo.
-- [[http://vimeo.com/116108566][Mutexes and Locks]] _by_ [[https://twitter.com/frazelledazzell][_Jessie_Frazelle_]] - a member of the Docker core team tells us about concurrency and what to do when things go wrong.
-- [[http://vimeo.com/115618722][Gobot.io]] _by_ [[https://twitter.com/deadprogram][_Ron_Evans_]] - awesome robots controlled by Go, with demos!
-- [[http://vimeo.com/114941260][Doing Go]] _by_ [[https://twitter.com/bryanl][_Bryan_Liles_]] - a DigitalOcean engineer delivers a hilarious comedy routine that happens to be about Go.
-- [[http://vimeo.com/115308225][Things I learned teaching Go]] _by_ [[https://twitter.com/francesc][_Francesc_Campoy_]] - the Developer Advocate for the Go team shares his experience teaching Go and some advice on how to become a better gopher.
+- [[http://vimeo.com/115728346][Launching into Go]] _by_Kathy_Spardlin_ -
+  a CockroachDB contributor provides pointers for people getting started with Go.
+- [[http://vimeo.com/115782573][Error Handling]] _by_ [[https://twitter.com/goinggodotnet][_Bill_Kennedy_]] -
+  ideas on how to use the Go error interface.
+- [[http://vimeo.com/115776445][7 common mistakes in Go and how to avoid them]] _by_
+  [[https://twitter.com/spf13][_Steve_Francia_]] - the author of some popular
+  Go libraries shares his experience.
+- [[http://vimeo.com/115309491][Cancellation, Context, and Plumbing]] _by_
+  [[https://twitter.com/sajma][_Sameer_Ajmani_]] - the Google NYC Go team
+  lead explains how cancellation works in Go,
+  and how we're retrofitting the Google code base to use it.
+- [[http://vimeo.com/115940605][Dethorning Package Management]] _by_ [[https://twitter.com/krarick][_Keith_Rarick_]] -
+  the creator of godep talks about how to manage your dependencies well.
+- [[http://vimeo.com/115940590][Everything You've Always Wanted to Know About Go Web Apps (But were afraid to ask)]]
+  _by_ [[https://twitter.com/markbates][_Mark_Bates_]] - a survey of Go packages
+  for building web apps,
+  and insights into why there are so few Go "frameworks".
+- [[http://vimeo.com/116215450][Building high-performance database applications using Aerospike]]
+  _by_Chris_Stivers_ - a principal engineer at Aerospike shares his experiences
+  building scalable applications.
+- [[http://vimeo.com/115307069][The state of Go on the Android platform]]
+  _by_ [[https://twitter.com/davidcrawshaw][_David_Crawshaw_]] - the leader
+  of the Go on mobile platforms project tells us what’s coming up and shows a working demo.
+- [[http://vimeo.com/116108566][Mutexes and Locks]] _by_ [[https://twitter.com/frazelledazzell][_Jessie_Frazelle_]] -
+  a member of the Docker core team tells us about concurrency and what to
+  do when things go wrong.
+- [[http://vimeo.com/115618722][Gobot.io]] _by_ [[https://twitter.com/deadprogram][_Ron_Evans_]] -
+  awesome robots controlled by Go, with demos!
+- [[http://vimeo.com/114941260][Doing Go]] _by_ [[https://twitter.com/bryanl][_Bryan_Liles_]] -
+  a DigitalOcean engineer delivers a hilarious comedy routine that happens to be about Go.
+- [[http://vimeo.com/115308225][Things I learned teaching Go]] _by_ [[https://twitter.com/francesc][_Francesc_Campoy_]] -
+  the Developer Advocate for the Go team shares his experience teaching Go
+  and some advice on how to become a better gopher.
 
 Two more talks come from the Go meetup in New York City, which met the day before GothamGo:
 
-- [[http://vimeo.com/114975899][Benchmarking Go]] _by_ [[https://twitter.com/bbulkow][_Brian_Bulkowski_]] - the founder of Aerospike talks about profiling tools for Go and Linux, and micro benchmarks for goroutines, channels, buffers, and and other Go features.
-- [[http://vimeo.com/114736889][Go Static Analysis Tools]] _by_Alan_Donovan_ - a member of the Go team at Google NY gives a guided tour of several static analysis tools designed to help Go programmers understand, navigate , and refactor their code.
+- [[http://vimeo.com/114975899][Benchmarking Go]] _by_ [[https://twitter.com/bbulkow][_Brian_Bulkowski_]] -
+  the founder of Aerospike talks about profiling tools for Go and Linux,
+  and micro benchmarks for goroutines, channels,
+  buffers, and and other Go features.
+- [[http://vimeo.com/114736889][Go Static Analysis Tools]] _by_Alan_Donovan_ -
+  a member of the Go team at Google NY gives a guided tour of several static
+  analysis tools designed to help Go programmers understand,
+  navigate , and refactor their code.
 
-Make sure to have a look at all of those in preparation for the [[https://fosdem.org/][FOSDEM]] Go devroom FOSDEM in Brussels (Belgium) and [[http://www.gophercon.in/][gophercon.in]] in Bengaluru (India).
+Make sure to have a look at all of those in preparation for the [[https://fosdem.org/][FOSDEM]] Go
+devroom FOSDEM in Brussels (Belgium) and [[http://www.gophercon.in/][gophercon.in]] in Bengaluru (India).
diff --git a/content/gouk15.article b/content/gouk15.article
index 9b20398..513c500 100644
--- a/content/gouk15.article
+++ b/content/gouk15.article
@@ -18,19 +18,28 @@
 
 Main track:
 
-- Stupid Gopher Tricks, by [[https://twitter.com/enneff][Andrew Gerrand]] ([[https://www.youtube.com/watch?v=UECh7X07m6E&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
-- Complex Concurrency Patterns in Go, by [[https://twitter.com/eapache][Evan Huus]] ([[https://www.youtube.com/watch?v=2HOO5gIgyMg&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
-- Code Analysis [no reading required], by [[https://twitter.com/francesc][Francesc Campoy]] ([[https://www.youtube.com/watch?v=oorX84tBMqo&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
-- Go kit: a toolkit for microservices [[https://twitter.com/peterbourgon][Peter Bourgon]] ([[https://www.youtube.com/watch?v=aL6sd4d4hxk&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
-- Dependency Management Conundrum, by [[https://twitter.com/goinggodotnet][William Kennedy]] ([[https://www.youtube.com/watch?v=CdhucJShJU8&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- Stupid Gopher Tricks, by [[https://twitter.com/enneff][Andrew Gerrand]]
+  ([[https://www.youtube.com/watch?v=UECh7X07m6E&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- Complex Concurrency Patterns in Go, by [[https://twitter.com/eapache][Evan Huus]]
+  ([[https://www.youtube.com/watch?v=2HOO5gIgyMg&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- Code Analysis [no reading required], by [[https://twitter.com/francesc][Francesc Campoy]]
+  ([[https://www.youtube.com/watch?v=oorX84tBMqo&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- Go kit: a toolkit for microservices [[https://twitter.com/peterbourgon][Peter Bourgon]]
+  ([[https://www.youtube.com/watch?v=aL6sd4d4hxk&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- Dependency Management Conundrum, by [[https://twitter.com/goinggodotnet][William Kennedy]]
+  ([[https://www.youtube.com/watch?v=CdhucJShJU8&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
 
 Side track:
 
 - Building APIs, by [[https://twitter.com/matryer][Mat Ryer]] ([[https://www.youtube.com/watch?v=tIm8UkSf6RA&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
-- Building a Bank with Go, by [[https://twitter.com/mattheath][Matt Heath]] ([[https://www.youtube.com/watch?v=cFJkLfujOts&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
-- CockroachDB: Make Data Easy, by [[https://twitter.com/bendarnell][Ben Darnell]] ([[https://www.youtube.com/watch?v=33oqpLmQ3LE&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
-- Understanding memory allocation in Go, by [[https://twitter.com/DeanElbaz][Dean Elbaz]] ([[https://www.youtube.com/watch?v=zjoieOpy5hE&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
-- Whispered Secrets, by [[https://twitter.com/feyeleanor][Eleanor McHugh]] ([[https://www.youtube.com/watch?v=ViBRx-F4Z2U&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- Building a Bank with Go, by [[https://twitter.com/mattheath][Matt Heath]]
+  ([[https://www.youtube.com/watch?v=cFJkLfujOts&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- CockroachDB: Make Data Easy, by [[https://twitter.com/bendarnell][Ben Darnell]]
+  ([[https://www.youtube.com/watch?v=33oqpLmQ3LE&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- Understanding memory allocation in Go, by [[https://twitter.com/DeanElbaz][Dean Elbaz]]
+  ([[https://www.youtube.com/watch?v=zjoieOpy5hE&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
+- Whispered Secrets, by [[https://twitter.com/feyeleanor][Eleanor McHugh]]
+  ([[https://www.youtube.com/watch?v=ViBRx-F4Z2U&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]])
 
 Finally [[https://twitter.com/dgryski][Damian Gryski]] took the stage for the
 closing keynote ([[https://www.youtube.com/watch?v=IiSyFc10Jj0&list=PLDWZ5uzn69ezRJYeWxYNRMYebvf8DerHd][video]]),
diff --git a/content/introducing-go-playground.article b/content/introducing-go-playground.article
index 5fed8ae..34fdcca 100644
--- a/content/introducing-go-playground.article
+++ b/content/introducing-go-playground.article
@@ -6,11 +6,31 @@
 
 * Introduction
 
-If you visit [[https://golang.org/][golang.org]] today you'll see our new look. We have given the site a new coat of paint and reorganized its content to make it easier to find. These changes are also reflected in the web interface of [[https://golang.org/cmd/godoc/][godoc]], the Go documentation tool.
+If you visit [[https://golang.org/][golang.org]] today you'll see our new look.
+We have given the site a new coat of paint and reorganized its content to
+make it easier to find.
+These changes are also reflected in the web interface of [[https://golang.org/cmd/godoc/][godoc]],
+the Go documentation tool.
 But the real news is a prominent new feature: the [[https://golang.org/][Go Playground]].
 .image introducing-go-playground_Untitled.png
 
-The Playground allows anyone with a web browser to write Go code that we immediately compile, link, and run on our servers. There are a few example programs to get you started (see the "Examples" drop-down). We hope that this will give curious programmers an opportunity to try the language before [[https://golang.org/doc/install.html][installing it]], and experienced Go users a convenient place in which to experiment. Beyond the front page, this functionality has the potential to make our reference and tutorial materials more engaging. We hope to extend its use in the near future.
+The Playground allows anyone with a web browser to write Go code that we
+immediately compile,
+link, and run on our servers.
+There are a few example programs to get you started (see the "Examples" drop-down).
+We hope that this will give curious programmers an opportunity to try the
+language before [[https://golang.org/doc/install.html][installing it]],
+and experienced Go users a convenient place in which to experiment.
+Beyond the front page, this functionality has the potential to make our
+reference and tutorial materials more engaging.
+We hope to extend its use in the near future.
 
-Of course, there are some limitations to the kinds of programs you can run in the Playground. We can't simply accept arbitrary code and run it on our servers without restrictions. The programs build and run in a sandbox with a reduced standard library; the only communication your program has to the outside world is via standard output, and there are limits to CPU and memory use. As such, consider this just a taste of the wonderful world of Go; to have the full experience you'll need to [[https://golang.org/doc/install.html][download it yourself]].
-If you've been meaning to try Go but never got around to it, why not visit [[https://golang.org/][golang.org]] to try it right now?
+Of course, there are some limitations to the kinds of programs you can run in the Playground.
+We can't simply accept arbitrary code and run it on our servers without restrictions.
+The programs build and run in a sandbox with a reduced standard library;
+the only communication your program has to the outside world is via standard output,
+and there are limits to CPU and memory use.
+As such, consider this just a taste of the wonderful world of Go;
+to have the full experience you'll need to [[https://golang.org/doc/install.html][download it yourself]].
+If you've been meaning to try Go but never got around to it,
+why not visit [[https://golang.org/][golang.org]] to try it right now?
diff --git a/content/introducing-gofix.article b/content/introducing-gofix.article
index 5b42b5b..ebe4e55 100644
--- a/content/introducing-gofix.article
+++ b/content/introducing-gofix.article
@@ -6,15 +6,57 @@
 
 * Introduction
 
-The next Go release will include significant API changes in several fundamental Go packages. Code that [[http://codereview.appspot.com/4239076][implements an HTTP server handler]], [[http://codereview.appspot.com/4244055][calls `net.Dial`]], [[http://codereview.appspot.com/4357052][calls `os.Open`]], or [[http://codereview.appspot.com/4281055][uses the reflect package]] will not build unless it is updated to use the new APIs. Now that our releases are [[https://blog.golang.org/2011/03/go-becomes-more-stable.html][more stable and less frequent]], this will be a common situation. Each of these API changes happened in a different weekly snapshot and might have been manageable on its own; together, however, they represent a significant amount of manual effort to update existing code.
+The next Go release will include significant API changes in several fundamental Go packages.
+Code that [[http://codereview.appspot.com/4239076][implements an HTTP server handler]],
+[[http://codereview.appspot.com/4244055][calls `net.Dial`]],
+[[http://codereview.appspot.com/4357052][calls `os.Open`]],
+or [[http://codereview.appspot.com/4281055][uses the reflect package]] will
+not build unless it is updated to use the new APIs.
+Now that our releases are [[https://blog.golang.org/2011/03/go-becomes-more-stable.html][more stable and less frequent]],
+this will be a common situation.
+Each of these API changes happened in a different weekly snapshot and might
+have been manageable on its own;
+together, however, they represent a significant amount of manual effort
+to update existing code.
 
-[[https://golang.org/cmd/fix/][Gofix]] is a new tool that reduces the amount of effort it takes to update existing code. It reads a program from a source file, looks for uses of old APIs, rewrites them to use the current API, and writes the program back to the file. Not all API changes preserve all the functionality of an old API, so gofix cannot always do a perfect job. When gofix cannot rewrite a use of an old API, it prints a warning giving the file name and line number of the use, so that a developer can examine and rewrite the code. Gofix takes care of the easy, repetitive, tedious changes, so that a developer can focus on the ones that truly merit attention.
+[[https://golang.org/cmd/fix/][Gofix]] is a new tool that reduces the amount
+of effort it takes to update existing code.
+It reads a program from a source file, looks for uses of old APIs,
+rewrites them to use the current API, and writes the program back to the file.
+Not all API changes preserve all the functionality of an old API,
+so gofix cannot always do a perfect job.
+When gofix cannot rewrite a use of an old API,
+it prints a warning giving the file name and line number of the use,
+so that a developer can examine and rewrite the code.
+Gofix takes care of the easy, repetitive,
+tedious changes, so that a developer can focus on the ones that truly merit attention.
 
-Each time we make a significant API change we’ll add code to gofix to take care of the conversion, as much as mechanically possible.  When you update to a new Go release and your code no longer builds, just run gofix on your source directory.
+Each time we make a significant API change we’ll add code to gofix to
+take care of the conversion,
+as much as mechanically possible.
+When you update to a new Go release and your code no longer builds,
+just run gofix on your source directory.
 
-You can extend gofix to support changes to your own APIs.  The gofix program is a simple driver around plugins called fixes that each handle a particular API change.  Right now, writing a new fix requires doing some scanning and rewriting of the go/ast syntax tree, usually in proportion to how complex the API changes are.  If you want to explore, the [[https://go.googlesource.com/go/+/go1/src/cmd/fix/netdial.go][`netdialFix`]], [[https://go.googlesource.com/go/+/go1/src/cmd/fix/osopen.go][`osopenFix`]], [[https://go.googlesource.com/go/+/go1/src/cmd/fix/httpserver.go][`httpserverFix`]], and [[https://go.googlesource.com/go/+/go1/src/cmd/fix/reflect.go][`reflectFix`]] are all illustrative examples, in increasing order of complexity.
+You can extend gofix to support changes to your own APIs.
+The gofix program is a simple driver around plugins called fixes that each
+handle a particular API change.
+Right now, writing a new fix requires doing some scanning and rewriting
+of the go/ast syntax tree,
+usually in proportion to how complex the API changes are.
+If you want to explore, the [[https://go.googlesource.com/go/+/go1/src/cmd/fix/netdial.go][`netdialFix`]],
+[[https://go.googlesource.com/go/+/go1/src/cmd/fix/osopen.go][`osopenFix`]],
+[[https://go.googlesource.com/go/+/go1/src/cmd/fix/httpserver.go][`httpserverFix`]],
+and [[https://go.googlesource.com/go/+/go1/src/cmd/fix/reflect.go][`reflectFix`]]
+are all illustrative examples,
+in increasing order of complexity.
 
-We write Go code too, of course, and our code is just as affected by these API changes as yours. Typically, we write the gofix support at the same time as the API change and then use gofix to rewrite the uses in the main source tree. We use gofix to update other Go code bases and our personal projects. We even use gofix to update Google’s internal source tree when it is time to build against a new Go release.
+We write Go code too, of course, and our code is just as affected by these
+API changes as yours.
+Typically, we write the gofix support at the same time as the API change
+and then use gofix to rewrite the uses in the main source tree.
+We use gofix to update other Go code bases and our personal projects.
+We even use gofix to update Google’s internal source tree when it is time
+to build against a new Go release.
 
 As an example, gofix can rewrite code like [[http://codereview.appspot.com/4353043/diff/10001/src/pkg/fmt/print.go#newcode657][this snippet from `fmt/print.go`]]:
 
@@ -48,8 +90,24 @@
 	// ...
 	}
 
-Nearly every line above changed in some small way. The changes involved in the rewrite are extensive but nearly entirely mechanical, just the kind of thing that computers are great at doing.  
+Nearly every line above changed in some small way.
+The changes involved in the rewrite are extensive but nearly entirely mechanical,
+just the kind of thing that computers are great at doing.
 
-Gofix is possible because Go has support in its standard libraries for [[https://golang.org/pkg/go/parser][parsing Go source files into syntax trees]] and also for [[https://golang.org/pkg/go/printer][printing those syntax trees back to Go source code]]. Importantly, the Go printing library prints a program in the official format (typically enforced via the gofmt tool), allowing gofix to make mechanical changes to Go programs without causing spurious formatting changes. In fact, one of the key motivations for creating gofmt—perhaps second only to avoiding debates about where a particular brace belongs—was to simplify the creation of tools that rewrite Go programs, as gofix does.
+Gofix is possible because Go has support in its standard libraries for [[https://golang.org/pkg/go/parser][parsing Go source files into syntax trees]]
+and also for [[https://golang.org/pkg/go/printer][printing those syntax trees back to Go source code]].
+Importantly, the Go printing library prints a program in the official format
+(typically enforced via the gofmt tool),
+allowing gofix to make mechanical changes to Go programs without causing
+spurious formatting changes.
+In fact, one of the key motivations for creating gofmt—perhaps second
+only to avoiding debates about where a particular brace belongs—was to
+simplify the creation of tools that rewrite Go programs, as gofix does.
 
-Gofix has already made itself indispensable. In particular, the recent reflect changes would have been unpalatable without automated conversion, and the reflect API badly needed to be redone. Gofix gives us the ability to fix mistakes or completely rethink package APIs without worrying about the cost of converting existing code. We hope you find gofix as useful and convenient as we have.
+Gofix has already made itself indispensable.
+In particular, the recent reflect changes would have been unpalatable without
+automated conversion,
+and the reflect API badly needed to be redone.
+Gofix gives us the ability to fix mistakes or completely rethink package
+APIs without worrying about the cost of converting existing code.
+We hope you find gofix as useful and convenient as we have.
diff --git a/content/io2014.article b/content/io2014.article
index d115acb..c0b945d 100644
--- a/content/io2014.article
+++ b/content/io2014.article
@@ -20,8 +20,10 @@
 On the Monday, more than 200 gophers gathered at the Google office in San
 Francisco to hear a series of talks:
 
-- The State of Go, ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVQm9tdncxWnJGUTQ/edit][slides]] and [[http://www.hakkalabs.co/articles/state-go][video]]) by Andrew Gerrand.
-- I was wrong, again! ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVTTUwS25qaFlzMGs/edit][slides]] and [[http://www.hakkalabs.co/articles/why-we-use-go][video]]), by Derek Collison.
+- The State of Go, ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVQm9tdncxWnJGUTQ/edit][slides]]
+  and [[http://www.hakkalabs.co/articles/state-go][video]]) by Andrew Gerrand.
+- I was wrong, again! ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVTTUwS25qaFlzMGs/edit][slides]]
+  and [[http://www.hakkalabs.co/articles/why-we-use-go][video]]), by Derek Collison.
 - Go at Splice ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVZklnNnJITlhSbXc/edit][slides]]), by Matt Aimonetti
 - Quick testing with quick ([[https://docs.google.com/a/golang.org/file/d/0B-nws9GU_6qVVElmOHpwamp4aTA/edit][slides]]), by Evan Shaw
 - Something about Go (no slides), by Blake Mizerany.
@@ -48,20 +50,27 @@
 soon.
 
 - Organizing Go Code, by David Crawshaw. ([[https://talks.golang.org/2014/organizeio.slide#1][slides]])
-- Testing Techniques, by Andrew Gerrand. ([[https://www.youtube.com/watch?v=ndmB0bj7eyw][video]] and [[https://talks.golang.org/2014/testing.slide#1][slides]])
+- Testing Techniques, by Andrew Gerrand. ([[https://www.youtube.com/watch?v=ndmB0bj7eyw][video]]
+  and [[https://talks.golang.org/2014/testing.slide#1][slides]])
 - Go for Java Developers, by Francesc Campoy. ([[https://talks.golang.org/2014/go4java.slide#1][slides]])
-- Camlistore: Android, ARM, App Engine, Everywhere, by Brad Fitzpatrick. ([[https://talks.golang.org/2014/camlistore.slide#1][slides]])
+- Camlistore: Android, ARM, App Engine, Everywhere,
+  by Brad Fitzpatrick.
+  ([[https://talks.golang.org/2014/camlistore.slide#1][slides]])
 - Go Compilation Complexities, by Ian Lance Taylor. ([[https://talks.golang.org/2014/compiling.slide#1][slides]])
-- SourceGraph: a Code Search Engine in Go, by Quinn Slack. ([[https://youtu.be/-DpKaoPz8l8][video]] and [[https://go-talks.appspot.com/github.com/sourcegraph/talks/google-io-2014/gio2014.slide#1][slides]])
+- SourceGraph: a Code Search Engine in Go,
+  by Quinn Slack. ([[https://youtu.be/-DpKaoPz8l8][video]] and [[https://go-talks.appspot.com/github.com/sourcegraph/talks/google-io-2014/gio2014.slide#1][slides]])
 
 
 We also organized Q&A sessions and lightning talks by members of the Go
 community:
 
 - [[https://twitter.com/bradrydzewski][Brad Rydzewski]] talked about his project [[https://drone.io/][drone.io]].
-- [[https://twitter.com/barakmich][Barak Michener]] presented [[https://github.com/google/cayley][Cayley]], an open source graph database.
+- [[https://twitter.com/barakmich][Barak Michener]] presented [[https://github.com/google/cayley][Cayley]],
+  an open source graph database.
 - [[https://twitter.com/mattetti][Matt Aimonetti]] discussed how Go is used at [[https://splice.com/][Splice]].
-- [[https://twitter.com/ssougou][Sugu Sougoumarane]] talked about how [[https://github.com/youtube/vitess][vitess]] solved scalability problems at YouTube. ([[https://youtu.be/midJ6b1LkA0][video]])
+- [[https://twitter.com/ssougou][Sugu Sougoumarane]] talked about how [[https://github.com/youtube/vitess][vitess]] solved
+  scalability problems at YouTube.
+  ([[https://youtu.be/midJ6b1LkA0][video]])
 
 ** The Go code lab
 
diff --git a/content/ismmkeynote.article b/content/ismmkeynote.article
index 00ef826..2e1f91d 100644
--- a/content/ismmkeynote.article
+++ b/content/ismmkeynote.article
@@ -5,13 +5,28 @@
 rlh@golang.org
 
 * Abstract
-This is the transcript from the keynote I gave at the International Symposium on Memory Management (ISMM) on June 18, 2018. For the past 25 years ISMM has been the premier venue for publishing memory management and garbage collection papers and it was an honor to have been invited to give the keynote.
+This is the transcript from the keynote I gave at the International Symposium
+on Memory Management (ISMM) on June 18, 2018.
+For the past 25 years ISMM has been the premier venue for publishing memory
+management and garbage collection papers and it was an honor to have been
+invited to give the keynote.
 
 ** Abstract
-The Go language features, goals, and use cases have forced us to rethink the entire garbage collection stack and have led us to a surprising place. The journey has been exhilarating. This talk describes our journey. It is a journey motivated by open source and Google's production demands. Included are side hikes into dead end box canyons where numbers guided us home. This talk will provide insight into the how and the why of our journey, where we are in 2018, and Go's preparation for the next part of the journey.
+The Go language features, goals, and use cases have forced us to rethink
+the entire garbage collection stack and have led us to a surprising place.
+The journey has been exhilarating. This talk describes our journey.
+It is a journey motivated by open source and Google's production demands.
+Included are side hikes into dead end box canyons where numbers guided us home.
+This talk will provide insight into the how and the why of our journey,
+where we are in 2018, and Go's preparation for the next part of the journey.
 
 ** Bio
-Richard L. Hudson (Rick) is best known for his work in memory management including the invention of the Train, Sapphire, and Mississippi Delta algorithms as well as GC stack maps which enabled garbage collection in statically typed languages such as Modula-3, Java, C#, and Go. Rick is currently a member of Google's Go team where he is working on Go's garbage collection and runtime issues.
+Richard L. Hudson (Rick) is best known for his work in memory management
+including the invention of the Train,
+Sapphire, and Mississippi Delta algorithms as well as GC stack maps which
+enabled garbage collection in statically typed languages such as Modula-3, Java, C#, and Go.
+Rick is currently a member of Google's Go team where he is working on Go's
+garbage collection and runtime issues.
 
 Contact: rlh@golang.org
 
@@ -23,17 +38,25 @@
 
 Rick Hudson here.
 
-This is a talk about the Go runtime and in particular the garbage collector. I have about 45 or 50 minutes of prepared material and after that we will have time for discussion and I'll be around so feel free to come up afterwards.
+This is a talk about the Go runtime and in particular the garbage collector.
+I have about 45 or 50 minutes of prepared material and after that we will
+have time for discussion and I'll be around so feel free to come up afterwards.
 
 .image ismmkeynote/image24.png
 
 Before I get started I want to acknowledge some people.
 
-A lot of the good stuff in the talk was done by Austin Clements. Other people on the Cambridge Go team, Russ, Than, Cherry, and David have been an engaging, exciting, and fun group to work with.
+A lot of the good stuff in the talk was done by Austin Clements.
+Other people on the Cambridge Go team, Russ,
+Than, Cherry, and David have been an engaging,
+exciting, and fun group to work with.
 
-We also want to thank the 1.6 million Go users worldwide for giving us interesting problems to solve. Without them a lot of these problems would never come to light.
+We also want to thank the 1.6 million Go users worldwide for giving us interesting problems to solve.
+Without them a lot of these problems would never come to light.
 
-And finally I want to acknowledge Renee French for all these nice Gophers that she has been producing over the years. You will see several of them throughout the talk.
+And finally I want to acknowledge Renee French for all these nice Gophers
+that she has been producing over the years.
+You will see several of them throughout the talk.
 
 .image ismmkeynote/image38.png
 
@@ -41,25 +64,45 @@
 
 .image ismmkeynote/image32.png
 
-Well first of all Go programs have hundreds of thousands of stacks. They are managed by the Go scheduler and are always preempted at GC safepoints. The Go scheduler multiplexes Go routines onto OS threads which hopefully run with one OS thread per HW thread. We manage the stacks and their size by copying them and updating pointers in the stack. It's a local operation so it scales fairly well.
+Well first of all Go programs have hundreds of thousands of stacks.
+They are managed by the Go scheduler and are always preempted at GC safepoints.
+The Go scheduler multiplexes Go routines onto OS threads which hopefully
+run with one OS thread per HW thread.
+We manage the stacks and their size by copying them and updating pointers in the stack.
+It's a local operation so it scales fairly well.
 
 .image ismmkeynote/image22.png
 
-The next thing that is important is the fact that Go is a value-oriented language in the tradition of C-like systems languages rather than reference-oriented language in the tradition of most managed runtime languages. For example, this shows how a type from the tar package is laid out in memory. All of the fields are embedded directly in the Reader value. This gives programmers more control over memory layout when they need it. One can collocate fields that have related values which helps with cache locality.
+The next thing that is important is the fact that Go is a value-oriented
+language in the tradition of C-like systems languages rather than reference-oriented
+language in the tradition of most managed runtime languages.
+For example, this shows how a type from the tar package is laid out in memory.
+All of the fields are embedded directly in the Reader value.
+This gives programmers more control over memory layout when they need it.
+One can collocate fields that have related values which helps with cache locality.
 
-Value-orientation also helps with the foreign function interfaces. We have a fast FFI with C and C++. Obviously Google has a tremendous number of facilities available but they are written in C++. Go couldn't wait to reimplement all of these things in Go so Go had to have access to these systems through the foreign function interface.
+Value-orientation also helps with the foreign function interfaces.
+We have a fast FFI with C and C++. Obviously Google has a tremendous number
+of facilities available but they are written in C++.
+Go couldn't wait to reimplement all of these things in Go so Go had to have
+access to these systems through the foreign function interface.
 
-This one design decision has led to some of the more amazing things that have to go on with the runtime. It is probably the most important thing that differentiates Go from other GCed languages.
+This one design decision has led to some of the more amazing things that
+have to go on with the runtime.
+It is probably the most important thing that differentiates Go from other GCed languages.
 
 .image ismmkeynote/image60.png
 
-Of course Go can have pointers and in fact they can have interior pointers. Such pointers keep the entire value live and they are fairly common.
+Of course Go can have pointers and in fact they can have interior pointers.
+Such pointers keep the entire value live and they are fairly common.
 
 .image ismmkeynote/image29.png
 
 We also have a way ahead of time compilation system so the binary contains the entire runtime.
 
-There is no JIT recompilation. There are pluses and minuses to this. First of all, reproducibility of program execution is a lot easier which makes moving forward with compiler improvements much faster.
+There is no JIT recompilation. There are pluses and minuses to this.
+First of all, reproducibility of program execution is a lot easier which
+makes moving forward with compiler improvements much faster.
 
 On the sad side of it we don't have the chance to do feedback optimizations as you would with a JITed system.
 
@@ -67,9 +110,24 @@
 
 .image ismmkeynote/image13.png
 
-Go comes with two knobs to control the GC. The first one is GCPercent. Basically this is a knob that adjusts how much CPU you want to use and how much memory you want to use. The default is 100 which means that half the heap is dedicated to live memory and half the heap is dedicated to allocation. You can modify this in either direction.
+Go comes with two knobs to control the GC.
+The first one is GCPercent. Basically this is a knob that adjusts how much
+CPU you want to use and how much memory you want to use.
+The default is 100 which means that half the heap is dedicated to live memory
+and half the heap is dedicated to allocation.
+You can modify this in either direction.
 
-MaxHeap, which is not yet released but is being used and evaluated internally, lets the programmer set what the maximum heap size should be. Out of memory, OOMs, are tough on Go; temporary spikes in memory usage should be handled by increasing CPU costs, not by aborting. Basically if the GC sees memory pressure it informs the application that it should shed load. Once things are back to normal the GC informs the application that it can go back to its regular load. MaxHeap also provides a lot more flexibility in scheduling. Instead of always being paranoid about how much memory is available the runtime can size the heap up to the MaxHeap.
+MaxHeap, which is not yet released but is being used and evaluated internally,
+lets the programmer set what the maximum heap size should be.
+Out of memory, OOMs, are tough on Go; temporary spikes in memory usage should
+be handled by increasing CPU costs, not by aborting.
+Basically if the GC sees memory pressure it informs the application that
+it should shed load.
+Once things are back to normal the GC informs the application that it can
+go back to its regular load.
+MaxHeap also provides a lot more flexibility in scheduling.
+Instead of always being paranoid about how much memory is available the
+runtime can size the heap up to the MaxHeap.
 
 This wraps up our discussion on the pieces of Go that are important to the garbage collector.
 
@@ -79,9 +137,12 @@
 
 .image ismmkeynote/image59.png
 
-So it's 2014. If Go does not solve this GC latency problem somehow then Go isn't going to be successful. That was clear.
+So it's 2014. If Go does not solve this GC latency problem somehow then
+Go isn't going to be successful. That was clear.
 
-Other new languages were facing the same problem. Languages like Rust went a different way but we are going to talk about the path that Go took.
+Other new languages were facing the same problem.
+Languages like Rust went a different way but we are going to talk about
+the path that Go took.
 
 Why is latency so important?
 
@@ -89,11 +150,24 @@
 
 The math is completely unforgiving on this.
 
-A 99%ile isolated GC latency service level objective (SLO), such as 99% of the time a GC cycle takes < 10ms, just simply doesn't scale. What matters is latency during an entire session or through the course of using an app many times in a day. Assume a session that browses several web pages ends up making 100 server requests during a session or it makes 20 requests and you have 5 sessions packed up during the day. In that situation only 37% of users will have a consistent sub 10ms experience across the entire session.
+A 99%ile isolated GC latency service level objective (SLO),
+such as 99% of the time a GC cycle takes < 10ms,
+just simply doesn't scale.
+What matters is latency during an entire session or through the course of
+using an app many times in a day.
+Assume a session that browses several web pages ends up making 100 server
+requests during a session or it makes 20 requests and you have 5 sessions
+packed up during the day.
+In that situation only 37% of users will have a consistent sub 10ms experience
+across the entire session.
 
-If you want 99% of those users to have a sub 10ms experience, as we are suggesting, the math says you really need to target 4 9s or the 99.99%ile.
+If you want 99% of those users to have a sub 10ms experience,
+as we are suggesting, the math says you really need to target 4 9s or the 99.99%ile.
 
-So it's 2014 and Jeff Dean had just come out with his paper called 'The Tail at Scale' which this digs into this further. It was being widely read around Google since it had serious ramifications for Google going forward and trying to scale at Google scale.
+So it's 2014 and Jeff Dean had just come out with his paper called 'The
+Tail at Scale' which this digs into this further.
+It was being widely read around Google since it had serious ramifications
+for Google going forward and trying to scale at Google scale.
 
 We call this problem the tyranny of the 9s.
 
@@ -103,35 +177,67 @@
 
 A lot of things were being done in 2014.
 
-If you want 10 answers ask for several more and take the first 10 and those are the answers you put on your search page. If the request exceeds 50%ile reissue or forward the request to another server. If GC is about to run, refuse new requests or forward the requests to another server until GC is done. And so forth and so on.
+If you want 10 answers ask for several more and take the first 10 and those
+are the answers you put on your search page.
+If the request exceeds 50%ile reissue or forward the request to another server.
+If GC is about to run, refuse new requests or forward the requests to another
+server until GC is done.
+And so forth and so on.
 
-All these are workarounds come from very clever people with very real problems but they didn't tackle the root problem of GC latency. At Google scale we had to tackle the root problem. Why?
+All these are workarounds come from very clever people with very real problems
+but they didn't tackle the root problem of GC latency.
+At Google scale we had to tackle the root problem. Why?
 
 .image ismmkeynote/image48.png
 
 Redundancy wasn't going to scale, redundancy costs a lot. It costs new server farms.
 
-We hoped we could solve this problem and saw it as an opportunity to improve the server ecosystem and in the process save some of the endangered corn fields and give some kernel of corn the chance to be knee high by the fourth of July and reach its full potential.
+We hoped we could solve this problem and saw it as an opportunity to improve
+the server ecosystem and in the process save some of the endangered corn
+fields and give some kernel of corn the chance to be knee high by the fourth
+of July and reach its full potential.
 
 .image ismmkeynote/image56.png
 
-So here is the 2014 SLO. Yes, it was true that I was sandbagging, I was new on the team, it was a new process to me, and I didn't want to over promise.
+So here is the 2014 SLO. Yes, it was true that I was sandbagging,
+I was new on the team, it was a new process to me,
+and I didn't want to over promise.
 
 Furthermore presentations about GC latency in other languages were just plain scary.
 
 .image ismmkeynote/image67.png
 
-The original plan was to do a read barrier free concurrent copying GC. That was the long term plan. There was a lot of uncertainty about the overhead of read barriers so Go wanted to avoid them.
+The original plan was to do a read barrier free concurrent copying GC.
+That was the long term plan. There was a lot of uncertainty about the overhead
+of read barriers so Go wanted to avoid them.
 
-But short term 2014 we had to get our act together. We had to convert all of the runtime and compiler to Go. They were written in C at the time. No more C, no long tail of bugs due to C coders not understanding GC but having a cool idea about how to copy strings. We also needed something quickly and focused on latency but the performance hit had to be less than the speedups provided by the compiler. So we were limited. We had basically a year of compiler performance improvements that we could eat up by making the GC concurrent. But that was it. We couldn't slow down Go programs. That would have been untenable in 2014.
+But short term 2014 we had to get our act together.
+We had to convert all of the runtime and compiler to Go.
+They were written in C at the time. No more C,
+no long tail of bugs due to C coders not understanding GC but having a cool
+idea about how to copy strings.
+We also needed something quickly and focused on latency but the performance
+hit had to be less than the speedups provided by the compiler.
+So we were limited. We had basically a year of compiler performance improvements
+that we could eat up by making the GC concurrent.
+But that was it. We couldn't slow down Go programs.
+That would have been untenable in 2014.
 
 .image ismmkeynote/image28.png
 
 So we backed off a bit. We weren't going to do the copying part.
 
-The decision was to do a tri-color concurrent algorithm. Earlier in my career Eliot Moss and I had done the journal proofs showing that Dijkstra's algorithm worked with multiple application threads. We also showed we could knock off the STW problems, and we had proofs that it could be done.
+The decision was to do a tri-color concurrent algorithm.
+Earlier in my career Eliot Moss and I had done the journal proofs showing
+that Dijkstra's algorithm worked with multiple application threads.
+We also showed we could knock off the STW problems,
+and we had proofs that it could be done.
 
-We were also concerned about compiler speed, that is the code the compiler generated. If we kept the write barrier turned off most of the time the compiler optimizations would be minimally impacted and the compiler team could move forward rapidly. Go also desperately needed short term success in 2015.
+We were also concerned about compiler speed,
+that is the code the compiler generated.
+If we kept the write barrier turned off most of the time the compiler optimizations
+would be minimally impacted and the compiler team could move forward rapidly.
+Go also desperately needed short term success in 2015.
 
 .image ismmkeynote/image55.png
 
@@ -139,77 +245,148 @@
 
 We went with a size segregated span. Interior pointers were a problem.
 
-The garbage collector needs to efficiently find the start of the object. If it knows the size of the objects in a span it simply rounds down to that size and that will be the start of the object.
+The garbage collector needs to efficiently find the start of the object.
+If it knows the size of the objects in a span it simply rounds down to that
+size and that will be the start of the object.
 
 Of course size segregated spans have some other advantages.
 
-Low fragmentation: Experience with C, besides Google's TCMalloc and Hoard, I was intimately involved with Intel's Scalable Malloc and that work gave us confidence that fragmentation was not going to be a problem with non-moving allocators.
+Low fragmentation: Experience with C, besides Google's TCMalloc and Hoard,
+I was intimately involved with Intel's Scalable Malloc and that work gave
+us confidence that fragmentation was not going to be a problem with non-moving allocators.
 
-Internal structures: We fully understood and had experience with them. We understood how to do size segregated spans, we understood how to do low or zero contention allocation paths.
+Internal structures: We fully understood and had experience with them.
+We understood how to do size segregated spans,
+we understood how to do low or zero contention allocation paths.
 
-Speed: Non-copy did not concern us, allocation admittedly might be slower but still in the order of C. It might not be as fast as bump pointer but that was OK.
+Speed: Non-copy did not concern us, allocation admittedly might be slower
+but still in the order of C.
+It might not be as fast as bump pointer but that was OK.
 
-We also had this foreign function interface issue. If we didn't move our objects then we didn't have to deal with the long tail of bugs you might encounter if you had a moving collector as you attempt to pin objects and put levels of indirection between C and the Go object you are working with.
+We also had this foreign function interface issue.
+If we didn't move our objects then we didn't have to deal with the long
+tail of bugs you might encounter if you had a moving collector as you attempt
+to pin objects and put levels of indirection between C and the Go object
+you are working with.
 
 .image ismmkeynote/image5.png
 
-The next design choice was where to put the object's metadata. We needed to have some information about the objects since we didn't have headers. Mark bits are kept on the side and used for marking as well as allocation. Each word has 2 bits associated with it to tell you if it was a scalar or a pointer inside that word. It also encoded whether there were more pointers in the object so we could stop scanning objects sooner than later. We also had an extra bit encoding that we could use as an extra mark bit or to do other debugging things. This was really valuable for getting this stuff running and finding bugs.
+The next design choice was where to put the object's metadata.
+We needed to have some information about the objects since we didn't have headers.
+Mark bits are kept on the side and used for marking as well as allocation.
+Each word has 2 bits associated with it to tell you if it was a scalar or
+a pointer inside that word.
+It also encoded whether there were more pointers in the object so we could
+stop scanning objects sooner than later.
+We also had an extra bit encoding that we could use as an extra mark bit
+or to do other debugging things.
+This was really valuable for getting this stuff running and finding bugs.
 
 .image ismmkeynote/image19.png
 
-So what about write barriers? The write barrier is on only during the GC. At other times the compiled code loads a global variable and looks at it. Since the GC was typically off the hardware correctly speculates to branch around the write barrier. When we are inside the GC that variable is different, and the write barrier is responsible for ensuring that no reachable objects get lost during the tri-color operations.
+So what about write barriers? The write barrier is on only during the GC.
+At other times the compiled code loads a global variable and looks at it.
+Since the GC was typically off the hardware correctly speculates to branch
+around the write barrier.
+When we are inside the GC that variable is different,
+and the write barrier is responsible for ensuring that no reachable objects
+get lost during the tri-color operations.
 
 .image ismmkeynote/image50.png
 
-The other piece of this code is the GC Pacer. It is some of the great work that Austin did. It is basically based on a feedback loop that determines when to best start a GC cycle. If the system is in a steady state and not in a phase change, marking will end just about the time memory runs out.
+The other piece of this code is the GC Pacer.
+It is some of the great work that Austin did.
+It is basically based on a feedback loop that determines when to best start a GC cycle.
+If the system is in a steady state and not in a phase change,
+marking will end just about the time memory runs out.
 
-That might not be the case so the Pacer also has to monitor the marking progress and ensure allocation doesn't overrun the concurrent marking.
+That might not be the case so the Pacer also has to monitor the marking
+progress and ensure allocation doesn't overrun the concurrent marking.
 
-If need be, the Pacer slows down allocation while speeding up marking. At a high level the Pacer stops the Goroutine, which is doing a lot of the allocation, and puts it to work doing marking. The amount of work is proportional to the Goroutine's allocation. This speeds up the garbage collector while slowing down the mutator.
+If need be, the Pacer slows down allocation while speeding up marking.
+At a high level the Pacer stops the Goroutine,
+which is doing a lot of the allocation, and puts it to work doing marking.
+The amount of work is proportional to the Goroutine's allocation.
+This speeds up the garbage collector while slowing down the mutator.
 
-When all of this is done the Pacer takes what it has learnt from this GC cycle as well as previous ones and projects when to start the next GC.
+When all of this is done the Pacer takes what it has learnt from this GC
+cycle as well as previous ones and projects when to start the next GC.
 
 It does much more than this but that is the basic approach.
 
-The math is absolutely fascinating, ping me for the design docs. If you are doing a concurrent GC you really owe it to yourself to look at this math and see if it's the same as your math. If you have any suggestions let us know.
+The math is absolutely fascinating, ping me for the design docs.
+If you are doing a concurrent GC you really owe it to yourself to look at
+this math and see if it's the same as your math.
+If you have any suggestions let us know.
 
-[[https://golang.org/s/go15gcpacing][*Go 1.5 concurrent garbage collector pacing]] and [[https://github.com/golang/proposal/blob/master/design/14951-soft-heap-limit.md][Proposal: Separate soft and hard heap size goal]]
+[[https://golang.org/s/go15gcpacing][*Go 1.5 concurrent garbage collector pacing]]
+and [[https://github.com/golang/proposal/blob/master/design/14951-soft-heap-limit.md][Proposal: Separate soft and hard heap size goal]]
 
 .image ismmkeynote/image40.png
 
-Yes, so we had successes, lots of them. A younger crazier Rick would have taken some of these graphs and tattooed them on my shoulder I was so proud of them.
+Yes, so we had successes, lots of them. A younger crazier Rick would have
+taken some of these graphs and tattooed them on my shoulder I was so proud of them.
 
 .image ismmkeynote/image20.png
 
-This is a series of graphs that was done for a production server at Twitter. We of course had nothing to do with that production server. Brian Hatfield did these measurements and oddly enough tweeted about them.
+This is a series of graphs that was done for a production server at Twitter.
+We of course had nothing to do with that production server.
+Brian Hatfield did these measurements and oddly enough tweeted about them.
 
-On the Y axis we have GC latency in milliseconds. On the X axis we have time. Each of the points is a stop the world pause time during that GC.
+On the Y axis we have GC latency in milliseconds.
+On the X axis we have time. Each of the points is a stop the world pause
+time during that GC.
 
-On our first release, which was in August of 2015, we saw a drop from around 300 - 400 milliseconds down to 30 or 40 milliseconds. This was good, order of magnitude good.
+On our first release, which was in August of 2015,
+we saw a drop from around 300 - 400 milliseconds down to 30 or 40 milliseconds.
+This was good, order of magnitude good.
 
 We are going to change the Y-axis here radically from 0 to 400 milliseconds down to 0 to 50 milliseconds.
 
 .image ismmkeynote/image54.png
 
-This is 6 months later. The improvement was largely due to systematically eliminating all the O(heap) things we were doing during the stop the world time. This was our second order of magnitude improvement as we went from 40 milliseconds down to 4 or 5.
+This is 6 months later. The improvement was largely due to systematically
+eliminating all the O(heap) things we were doing during the stop the world time.
+This was our second order of magnitude improvement as we went from 40 milliseconds down to 4 or 5.
 
 .image ismmkeynote/image1.png
 
-There were some bugs in there that we had to clean up and we did this during a minor release 1.6.3. This dropped latency down to well under 10 milliseconds, which was our SLO.
+There were some bugs in there that we had to clean up and we did this during
+a minor release 1.6.3.
+This dropped latency down to well under 10 milliseconds, which was our SLO.
 
 We are about to change our Y-axis again, this time down to 0 to 5 milliseconds.
 
 .image ismmkeynote/image68.png
 
-So here we are, this is August of 2016, a year after the first release. Again we kept knocking off these O(heap size) stop the world processes. We are talking about an 18Gbyte heap here. We had much larger heaps and as we knocked off these O(heap size) stop the world pauses, the size of the heap could obviously grow considerable without impacting latency. So this was a bit of a help in 1.7.
+So here we are, this is August of 2016, a year after the first release.
+Again we kept knocking off these O(heap size) stop the world processes.
+We are talking about an 18Gbyte heap here.
+We had much larger heaps and as we knocked off these O(heap size) stop the world pauses,
+the size of the heap could obviously grow considerable without impacting latency.
+So this was a bit of a help in 1.7.
 
 .image ismmkeynote/image58.png
 
-The next release was in March of 2017. We had the last of our large latency drops which was due to figuring out how to avoid the stop the world stack scanning at the end of the GC cycle. That dropped us into the sub-millisecond range. Again the Y axis is about to change to 1.5 milliseconds and we see our third order of magnitude improvement.
+The next release was in March of 2017. We had the last of our large latency
+drops which was due to figuring out how to avoid the stop the world stack
+scanning at the end of the GC cycle.
+That dropped us into the sub-millisecond range.
+Again the Y axis is about to change to 1.5 milliseconds and we see our third
+order of magnitude improvement.
 
 .image ismmkeynote/image45.png
 
-The August 2017 release saw little improvement. We know what is causing the remaining pauses. The SLO whisper number here is around 100-200 microseconds and we will push towards that. If you see anything over a couple hundred microseconds then we really want to talk to you and figure out whether it fits into the stuff we know about or whether it is something new we haven't looked into. In any case there seems to be little call for lower latency. It is important to note these latency levels can happen for a wide variety of non-GC reasons and as the saying goes "You don't have to be faster than the bear, you just have to be faster than the guy next to you."
+The August 2017 release saw little improvement.
+We know what is causing the remaining pauses.
+The SLO whisper number here is around 100-200 microseconds and we will push towards that.
+If you see anything over a couple hundred microseconds then we really want
+to talk to you and figure out whether it fits into the stuff we know about
+or whether it is something new we haven't looked into.
+In any case there seems to be little call for lower latency.
+It is important to note these latency levels can happen for a wide variety
+of non-GC reasons and as the saying goes "You don't have to be faster than the bear,
+you just have to be faster than the guy next to you."
 
 There was no substantial change in the Feb'18 1.10 release just some clean-up and chasing corner cases.
 
@@ -227,11 +404,14 @@
 
 The Pacer had gotten much better so we looked to see minimal GC assists in a steady state.
 
-We were pretty happy with this. Again this is not an SLA but an SLO so it's an objective, not an agreement, since we can't control such things as the OS.
+We were pretty happy with this. Again this is not an SLA but an SLO so it's an objective,
+not an agreement, since we can't control such things as the OS.
 
 .image ismmkeynote/image64.png
 
-That's the good stuff. Let's shift and start talking about our failures. These are our scars; they are sort of like tattoos and everyone gets them. Anyway they come with better stories so let's do some of those stories.
+That's the good stuff. Let's shift and start talking about our failures.
+These are our scars; they are sort of like tattoos and everyone gets them.
+Anyway they come with better stories so let's do some of those stories.
 
 .image ismmkeynote/image46.png
 
@@ -241,11 +421,17 @@
 
 So what does this mean?
 
-Goroutines are lightweight threads that look like Gophers, so here we have two Goroutines. They share some stuff such as the two blue objects there in the middle. They have their own private stacks and their own selection of private objects. Say the guy on the left wants to share the green object.
+Goroutines are lightweight threads that look like Gophers,
+so here we have two Goroutines.
+They share some stuff such as the two blue objects there in the middle.
+They have their own private stacks and their own selection of private objects.
+Say the guy on the left wants to share the green object.
 
 .image ismmkeynote/image9.png
 
-The goroutine puts it in the shared area so the other Goroutine can access it. They can hook it to something in the shared heap or assign it to a global variable and the other Goroutine can see it.
+The goroutine puts it in the shared area so the other Goroutine can access it.
+They can hook it to something in the shared heap or assign it to a global
+variable and the other Goroutine can see it.
 
 .image ismmkeynote/image26.png
 
@@ -253,51 +439,95 @@
 
 .image ismmkeynote/image14.png
 
-As you know you can't take your objects with you when you die. You can't take your stack either. The stack is actually empty at this time and the objects are unreachable so you can simply reclaim them.
+As you know you can't take your objects with you when you die.
+You can't take your stack either. The stack is actually empty at this time
+and the objects are unreachable so you can simply reclaim them.
 
 .image ismmkeynote/image2.png
 
-The important thing here is that all actions were local and did not require any global synchronization. This is fundamentally different than approaches like a generational GC, and the hope was that the scaling we would get from not having to do that synchronization would be sufficient for us to have a win.
+The important thing here is that all actions were local and did not require
+any global synchronization.
+This is fundamentally different than approaches like a generational GC,
+and the hope was that the scaling we would get from not having to do that
+synchronization would be sufficient for us to have a win.
 
 .image ismmkeynote/image27.png
 
-The other issue that was going on with this system was that the write barrier was always on. Whenever there was a write, we would have to see if it was writing a pointer to a private object into a public object. If so, we would have to make the referent object public and then do a transitive walk of reachable objects making sure they were also public. That was a pretty expensive write barrier that could cause many cache misses.
+The other issue that was going on with this system was that the write barrier was always on.
+Whenever there was a write, we would have to see if it was writing a pointer
+to a private object into a public object.
+If so, we would have to make the referent object public and then do a transitive
+walk of reachable objects making sure they were also public.
+That was a pretty expensive write barrier that could cause many cache misses.
 
 .image ismmkeynote/image30.png
 
 That said, wow, we had some pretty good successes.
 
-This is an end-to-end RPC benchmark. The mislabeled Y axis goes from 0 to 5 milliseconds (lower is better), anyway that is just what it is. The X axis is basically the ballast or how big the in-core database is.
+This is an end-to-end RPC benchmark. The mislabeled Y axis goes from 0 to
+5 milliseconds (lower is better),
+anyway that is just what it is.
+The X axis is basically the ballast or how big the in-core database is.
 
-As you can see if you have ROC on and not a lot of sharing, things actually scale quite nicely. If you don't have ROC on it wasn't nearly as good.
+As you can see if you have ROC on and not a lot of sharing,
+things actually scale quite nicely.
+If you don't have ROC on it wasn't nearly as good.
 
 .image ismmkeynote/image35.png
 
-But that wasn't good enough, we also had to make sure that ROC didn't slow down other pieces of the system. At that point there was a lot of concern about our compiler and we could not slow down our compilers. Unfortunately the compilers were exactly the programs that ROC did not do well at. We were seeing 30, 40, 50% and more slowdowns and that was unacceptable. Go is proud of how fast its compiler is so we couldn't slow the compiler down, certainly not this much.
+But that wasn't good enough, we also had to make sure that ROC didn't slow
+down other pieces of the system.
+At that point there was a lot of concern about our compiler and we could
+not slow down our compilers.
+Unfortunately the compilers were exactly the programs that ROC did not do well at.
+We were seeing 30, 40, 50% and more slowdowns and that was unacceptable.
+Go is proud of how fast its compiler is so we couldn't slow the compiler down,
+certainly not this much.
 
 .image ismmkeynote/image61.png
 
-We then went and looked at some other programs. These are our performance benchmarks. We have a corpus of 200 or 300 benchmarks and these were the ones the compiler folks had decided were important for them to work on and improve. These weren't selected by the GC folks at all. The numbers were uniformly bad and ROC wasn't going to become a winner.
+We then went and looked at some other programs.
+These are our performance benchmarks. We have a corpus of 200 or 300 benchmarks
+and these were the ones the compiler folks had decided were important for
+them to work on and improve.
+These weren't selected by the GC folks at all.
+The numbers were uniformly bad and ROC wasn't going to become a winner.
 
 .image ismmkeynote/image44.png
 
-It's true we scaled but we only had 4 to 12 hardware thread system so we couldn't overcome the write barrier tax. Perhaps in the future when we have 128 core systems and Go is taking advantage of them, the scaling properties of ROC might be a win. When that happens we might come back and revisit this, but for now ROC was a losing proposition.
+It's true we scaled but we only had 4 to 12 hardware thread system so we
+couldn't overcome the write barrier tax.
+Perhaps in the future when we have 128 core systems and Go is taking advantage of them,
+the scaling properties of ROC might be a win.
+When that happens we might come back and revisit this,
+but for now ROC was a losing proposition.
 
 .image ismmkeynote/image66.png
 
-So what were we going to do next? Let's try the generational GC. It's an oldie but a goodie. ROC didn't work so let's go back to stuff we have a lot more experience with.
+So what were we going to do next? Let's try the generational GC.
+It's an oldie but a goodie. ROC didn't work so let's go back to stuff we
+have a lot more experience with.
 
 .image ismmkeynote/image41.png
 
-We weren't going to give up our latency, we weren't going to give up the fact that we were non-moving. So we needed a non-moving generational GC.
+We weren't going to give up our latency, we weren't going to give up the
+fact that we were non-moving.
+So we needed a non-moving generational GC.
 
 .image ismmkeynote/image27.png
 
-So could we do this? Yes, but with a generational GC, the write barrier is always on. When the GC cycle is running we use the same write barrier we use today, but when GC is off we use a fast GC write barrier that buffers the pointers and then flushes the buffer to a card mark table when it overflows.
+So could we do this? Yes, but with a generational GC,
+the write barrier is always on.
+When the GC cycle is running we use the same write barrier we use today,
+but when GC is off we use a fast GC write barrier that buffers the pointers
+and then flushes the buffer to a card mark table when it overflows.
 
 .image ismmkeynote/image4.png
 
-So how is this going to work in a non-moving situation? Here is the mark / allocation map. Basically you maintain a current pointer. When you are allocating you look for the next zero and when you find that zero you allocate an object in that space.
+So how is this going to work in a non-moving situation? Here is the mark / allocation map.
+Basically you maintain a current pointer.
+When you are allocating you look for the next zero and when you find that
+zero you allocate an object in that space.
 
 .image ismmkeynote/image51.png
 
@@ -305,11 +535,15 @@
 
 .image ismmkeynote/image17.png
 
-You continue until at some point it is time to do a generation GC. You will notice that if there is a one in the mark/allocation vector then that object was alive at the last GC so it is mature. If it is zero and you reach it then you know it is young.
+You continue until at some point it is time to do a generation GC.
+You will notice that if there is a one in the mark/allocation vector then
+that object was alive at the last GC so it is mature.
+If it is zero and you reach it then you know it is young.
 
 .image ismmkeynote/image53.png
 
-So how do you do promoting. If you find something marked with a 1 pointing to something marked with a 0 then you promote the referent simply by setting that zero to a one.
+So how do you do promoting. If you find something marked with a 1 pointing
+to something marked with a 0 then you promote the referent simply by setting that zero to a one.
 
 .image ismmkeynote/image49.png
 You have to do a transitive walk to make sure all reachable objects are promoted.
@@ -320,11 +554,16 @@
 
 .image ismmkeynote/image62.png
 
-Finally, to finish your generational GC cycle you simply set the current pointer back to the start of the vector and you can continue. All the zeros weren't reached during that GC cycle so are free and can be reused. As many of you know this is called 'sticky bits' and was invented by Hans Boehm and his colleagues.
+Finally, to finish your generational GC cycle you simply set the current
+pointer back to the start of the vector and you can continue.
+All the zeros weren't reached during that GC cycle so are free and can be reused.
+As many of you know this is called 'sticky bits' and was invented by Hans
+Boehm and his colleagues.
 
 .image ismmkeynote/image21.png
 
-So what did the performance look like? It wasn't bad for the large heaps. These were the benchmarks that the GC should do well on. This was all good.
+So what did the performance look like? It wasn't bad for the large heaps.
+These were the benchmarks that the GC should do well on. This was all good.
 
 .image ismmkeynote/image65.png
 
@@ -332,53 +571,119 @@
 
 .image ismmkeynote/image43.png
 
-The write barrier was fast but it simply wasn't fast enough. Furthermore it was hard to optimize for. For example, write barrier elision can happen if there is an initializing write between when the object was allocated and the next safepoint. But we were having to move to a system where we have a GC safepoint at every instruction so there really wasn't any write barrier that we could elide going forward.
+The write barrier was fast but it simply wasn't fast enough.
+Furthermore it was hard to optimize for. For example,
+write barrier elision can happen if there is an initializing write between
+when the object was allocated and the next safepoint.
+But we were having to move to a system where we have a GC safepoint at every
+instruction so there really wasn't any write barrier that we could elide going forward.
 
 .image ismmkeynote/image47.png
 
-We also had escape analysis and it was getting better and better. Remember the value-oriented stuff we were talking about? Instead of passing a pointer to a function we would pass the actual value. Because we were passing a value, escape analysis would only have to do intraprocedural escape analysis and not interprocedural analysis.
+We also had escape analysis and it was getting better and better.
+Remember the value-oriented stuff we were talking about? Instead of passing
+a pointer to a function we would pass the actual value.
+Because we were passing a value, escape analysis would only have to do intraprocedural
+escape analysis and not interprocedural analysis.
 
 Of course in the case where a pointer to the local object escapes, the object would be heap allocated.
 
-It isn't that the generational hypothesis isn't true for Go, it's just that the young objects live and die young on the stack. The result is that generational collection is much less effective than you might find in other managed runtime languages.
+It isn't that the generational hypothesis isn't true for Go,
+it's just that the young objects live and die young on the stack.
+The result is that generational collection is much less effective than you
+might find in other managed runtime languages.
 
 .image ismmkeynote/image10.png
 
-So these forces against the write barrier were starting to gather. Today, our compiler is much better than it was in 2014. Escape analysis is picking up a lot of those objects and sticking them on the stack-objects that the generational collector would have helped with. We started creating tools to help our users find objects that escaped and if it was minor they could make changes to the code and help the compiler allocate on the stack.
+So these forces against the write barrier were starting to gather.
+Today, our compiler is much better than it was in 2014.
+Escape analysis is picking up a lot of those objects and sticking them on
+the stack-objects that the generational collector would have helped with.
+We started creating tools to help our users find objects that escaped and
+if it was minor they could make changes to the code and help the compiler
+allocate on the stack.
 
-Users are getting more clever about embracing value-oriented approaches and the number of pointers is being reduced. Arrays and maps hold values and not pointers to structs. Everything is good.
+Users are getting more clever about embracing value-oriented approaches
+and the number of pointers is being reduced.
+Arrays and maps hold values and not pointers to structs. Everything is good.
 
 But that's not the main compelling reason why write barriers in Go have an uphill fight going forward.
 
 .image ismmkeynote/image8.png
 
-Let's look at this graph. It's just an analytical graph of mark costs. Each line represents a different application that might have a mark cost. Say your mark cost is 20%, which is pretty high but it's possible. The red line is 10%, which is still high. The lower line is 5% which is about what a write barrier costs these days. So what happens if you double the heap size? That's the point on the right. The cumulative cost of the mark phase drops considerably since GC cycles are less frequent. The write barrier costs are constant so the cost of increasing the heap size will drive that marking cost underneath the cost of the write barrier.
+Let's look at this graph. It's just an analytical graph of mark costs.
+Each line represents a different application that might have a mark cost.
+Say your mark cost is 20%, which is pretty high but it's possible.
+The red line is 10%, which is still high.
+The lower line is 5% which is about what a write barrier costs these days.
+So what happens if you double the heap size? That's the point on the right.
+The cumulative cost of the mark phase drops considerably since GC cycles are less frequent.
+The write barrier costs are constant so the cost of increasing the heap
+size will drive that marking cost underneath the cost of the write barrier.
 
 .image ismmkeynote/image39.png
 
-Here is a more common cost for a write barrier, which is 4%, and we see that even with that we can drive the cost of the mark barrier down below the cost of the write barrier by simply increasing the heap size.
+Here is a more common cost for a write barrier,
+which is 4%, and we see that even with that we can drive the cost of the
+mark barrier down below the cost of the write barrier by simply increasing the heap size.
 
-The real value of generational GC is that, when looking at GC times, the write barrier costs are ignored since they are smeared across the mutator. This is generational GC's great advantage, it greatly reduces the long STW times of full GC cycles but it doesn't necessarily improve throughput. Go doesn't have this stop the world problem so it had to look more closely at the throughput problems and that is what we did.
+The real value of generational GC is that,
+when looking at GC times, the write barrier costs are ignored since they
+are smeared across the mutator.
+This is generational GC's great advantage,
+it greatly reduces the long STW times of full GC cycles but it doesn't necessarily improve throughput.
+Go doesn't have this stop the world problem so it had to look more closely
+at the throughput problems and that is what we did.
 
 .image ismmkeynote/image23.png
 
-That's a lot of failure and with such failure comes food and lunch. I'm doing my usual whining "Gee wouldn't this be great if it wasn't for the write barrier."
+That's a lot of failure and with such failure comes food and lunch.
+I'm doing my usual whining "Gee wouldn't this be great if it wasn't for the write barrier."
 
-Meanwhile Austin has just spent an hour talking to some of the HW GC folks at Google and he was saying we should talk to them and try and figure out how to get HW GC support that might help. Then I started telling war stories about zero-fill cache lines, restartable atomic sequences, and other things that didn't fly when I was working for a large hardware company. Sure we got some stuff into a chip called the Itanium, but we couldn't get them into the more popular chips of today. So the moral of the story is simply to use the HW we have.
+Meanwhile Austin has just spent an hour talking to some of the HW GC folks
+at Google and he was saying we should talk to them and try and figure out
+how to get HW GC support that might help.
+Then I started telling war stories about zero-fill cache lines,
+restartable atomic sequences, and other things that didn't fly when I was
+working for a large hardware company.
+Sure we got some stuff into a chip called the Itanium,
+but we couldn't get them into the more popular chips of today.
+So the moral of the story is simply to use the HW we have.
 
 Anyway that got us talking, what about something crazy?
 
 .image ismmkeynote/image25.png
 
-What about card marking without a write barrier? It turns out that Austin has these files and he writes into these files all of his crazy ideas that for some reason he doesn't tell me about. I figure it is some sort of therapeutic thing. I used to do the same thing with Eliot. New ideas are easily smashed and one needs to protect them and make them stronger before you let them out into the world. Well anyway he pulls this idea out.
+What about card marking without a write barrier? It turns out that Austin
+has these files and he writes into these files all of his crazy ideas that
+for some reason he doesn't tell me about.
+I figure it is some sort of therapeutic thing.
+I used to do the same thing with Eliot. New ideas are easily smashed and
+one needs to protect them and make them stronger before you let them out into the world.
+Well anyway he pulls this idea out.
 
-The idea is that you maintain a hash of mature pointers in each card. If pointers are written into a card, the hash will change and the card will be considered marked. This would trade the cost of write barrier off for cost of hashing.
+The idea is that you maintain a hash of mature pointers in each card.
+If pointers are written into a card, the hash will change and the card will
+be considered marked.
+This would trade the cost of write barrier off for cost of hashing.
 
 .image ismmkeynote/image31.png
 
 But more importantly it's hardware aligned.
 
-Today's modern architectures have AES (Advanced Encryption Standard) instructions. One of those instructions can do encryption-grade hashing and with encryption-grade hashing we don't have to worry about collisions if we also follow standard encryption policies. So hashing is not going to cost us much but we have to load up what we are going to hash. Fortunately we are walking through memory sequentially so we get really good memory and cache performance. If you have a DIMM and you hit sequential addresses, then it's a win because they will be faster than hitting random addresses. The hardware prefetchers will kick in and that will also help. Anyway we have 50 years, 60 years of designing hardware to run Fortran, to run C, and to run the SPECint benchmarks. It's no surprise that the result is hardware that runs this kind of stuff fast.
+Today's modern architectures have AES (Advanced Encryption Standard) instructions.
+One of those instructions can do encryption-grade hashing and with encryption-grade
+hashing we don't have to worry about collisions if we also follow standard
+encryption policies.
+So hashing is not going to cost us much but we have to load up what we are going to hash.
+Fortunately we are walking through memory sequentially so we get really
+good memory and cache performance.
+If you have a DIMM and you hit sequential addresses,
+then it's a win because they will be faster than hitting random addresses.
+The hardware prefetchers will kick in and that will also help.
+Anyway we have 50 years, 60 years of designing hardware to run Fortran,
+to run C, and to run the SPECint benchmarks.
+It's no surprise that the result is hardware that runs this kind of stuff fast.
 
 .image ismmkeynote/image12.png
 
@@ -386,7 +691,18 @@
 
 .image ismmkeynote/image18.png
 
-We then said what does it look like for the performance benchmark? Not so good, a couple of outliers. But now we have moved the write barrier from always being on in the mutator to running as part of the GC cycle. Now making a decision about whether we are going to do a generational GC is delayed until the start of the GC cycle. We have more control there since we have localized the card work. Now that we have the tools we can turn it over to the Pacer, and it could do a good job of dynamically cutting off programs that fall to the right and do not benefit from generational GC. But is this going to win going forward? We have to know or at least think about what hardware is going to look like going forward.
+We then said what does it look like for the performance benchmark? Not so good,
+a couple of outliers.
+But now we have moved the write barrier from always being on in the mutator
+to running as part of the GC cycle.
+Now making a decision about whether we are going to do a generational GC
+is delayed until the start of the GC cycle.
+We have more control there since we have localized the card work.
+Now that we have the tools we can turn it over to the Pacer,
+and it could do a good job of dynamically cutting off programs that fall
+to the right and do not benefit from generational GC.
+But is this going to win going forward? We have to know or at least think
+about what hardware is going to look like going forward.
 
 .image ismmkeynote/image52.png
 
@@ -394,40 +710,87 @@
 
 .image ismmkeynote/image11.png
 
-Let's take a look at this graph. This is your classic Moore's law graph. You have a log scale on the Y axis showing the number of transistors in a single chip. The X-axis is the years between 1971 and 2016. I will note that these are the years when someone somewhere predicted that Moore's law was dead.
+Let's take a look at this graph. This is your classic Moore's law graph.
+You have a log scale on the Y axis showing the number of transistors in a single chip.
+The X-axis is the years between 1971 and 2016.
+I will note that these are the years when someone somewhere predicted that
+Moore's law was dead.
 
-Dennard scaling had ended frequency improvements ten years or so ago. New processes are taking longer to ramp. So instead of 2 years they are now 4 years or more. So it's pretty clear that we are entering an era of the slowing of Moore's law.
+Dennard scaling had ended frequency improvements ten years or so ago.
+New processes are taking longer to ramp. So instead of 2 years they are
+now 4 years or more.
+So it's pretty clear that we are entering an era of the slowing of Moore's law.
 
 Let's just look at the chips in the red circle. These are the chips that are the best at sustaining Moore's law.
 
-They are chips where the logic is increasingly simple and duplicated many times. Lots of identical cores, multiple memory controllers and caches, GPUs, TPUs, and so forth.
+They are chips where the logic is increasingly simple and duplicated many times.
+Lots of identical cores, multiple memory controllers and caches,
+GPUs, TPUs, and so forth.
 
-As we continue to simplify and increase duplication we asymptotically end up with a couple of wires, a transistor, and a capacitor. In other words a DRAM memory cell.
+As we continue to simplify and increase duplication we asymptotically end
+up with a couple of wires,
+a transistor, and a capacitor.
+In other words a DRAM memory cell.
 
 Put another way, we think that doubling memory is going to be a better value than doubling cores.
 
 
-[[http://www.kurzweilai.net/ask-ray-the-future-of-moores-law][Original graph]] at www.kurzweilai.net/ask-ray-the-future-of-moores-law.
+[[http://www.kurzweilai.net/ask-ray-the-future-of-moores-law][Original graph]]
+at www.kurzweilai.net/ask-ray-the-future-of-moores-law.
 
 .image ismmkeynote/image57.png
 
-Let's look at another graph focused on DRAM. These are numbers from a recent PhD thesis from CMU. If we look at this we see that Moore's law is the blue line. The red line is capacity and it seems to be following Moore's law. Oddly enough I saw a graph that goes all the way back to 1939 when we were using drum memory and that capacity and Moore's law were chugging along together so this graph has been going on for a long time, certainly longer than probably anybody in this room has been alive.
+Let's look at another graph focused on DRAM.
+These are numbers from a recent PhD thesis from CMU.
+If we look at this we see that Moore's law is the blue line.
+The red line is capacity and it seems to be following Moore's law.
+Oddly enough I saw a graph that goes all the way back to 1939 when we were
+using drum memory and that capacity and Moore's law were chugging along
+together so this graph has been going on for a long time,
+certainly longer than probably anybody in this room has been alive.
 
 
 
-If we compare this graph to CPU frequency or the various Moore's-law-is-dead graphs, we are led to the conclusion that memory, or at least chip capacity, will follow Moore's law longer than CPUs. Bandwidth, the yellow line, is related not only to the frequency of the memory but also to the number of pins one can get off of the chip so it's not keeping up as well but it's not doing badly.
+If we compare this graph to CPU frequency or the various Moore's-law-is-dead graphs,
+we are led to the conclusion that memory,
+or at least chip capacity, will follow Moore's law longer than CPUs.
+Bandwidth, the yellow line, is related not only to the frequency of the
+memory but also to the number of pins one can get off of the chip so it's
+not keeping up as well but it's not doing badly.
 
-Latency, the green line, is doing very poorly, though I will note that latency for sequential accesses does better than latency for random access.
+Latency, the green line, is doing very poorly,
+though I will note that latency for sequential accesses does better than
+latency for random access.
 
-(Data from "Understanding and Improving the Latency of DRAM-Based Memory Systems Submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Electrical and Computer Engineering Kevin K. Chang M.S., Electrical & Computer Engineering, Carnegie Mellon University B.S., Electrical & Computer Engineering, Carnegie Mellon University Carnegie Mellon University Pittsburgh, PA May, 2017". See [[http://repository.cmu.edu/cgi/viewcontent.cgi?article%3D1946%26context%3Ddissertations&amp;sa=D&amp;ust=1531164842660000][Kevin K. Chang's thesis.]] The original graph in the introduction was not in a form that I could draw a Moore's law line on it easily so I changed the X-axis to be more uniform.)
+(Data from "Understanding and Improving the Latency of DRAM-Based Memory
+Systems Submitted in partial fulfillment of the requirements for the degree
+of Doctor of Philosophy in Electrical and Computer Engineering Kevin K.
+Chang M.S., Electrical & Computer Engineering,
+Carnegie Mellon University B.S., Electrical & Computer Engineering,
+Carnegie Mellon University Carnegie Mellon University Pittsburgh, PA May, 2017".
+See [[http://repository.cmu.edu/cgi/viewcontent.cgi?article%3D1946%26context%3Ddissertations&amp;sa=D&amp;ust=1531164842660000][Kevin K. Chang's thesis.]]
+The original graph in the introduction was not in a form that I could draw
+a Moore's law line on it easily so I changed the X-axis to be more uniform.)
 
 .image ismmkeynote/image15.png
 
-Let's go to where the rubber meets the road. This is actual DRAM pricing and it has generally declined from 2005 to 2016. I chose 2005 since that is around the time when Dennard scaling ended and along with it frequency improvements.
+Let's go to where the rubber meets the road.
+This is actual DRAM pricing and it has generally declined from 2005 to 2016.
+I chose 2005 since that is around the time when Dennard scaling ended and
+along with it frequency improvements.
 
-If you look at the red circle, which is basically the time our work to reduce Go's GC latency has been going on, we see that for the first couple of years prices did well. Lately, not so good, as demand has exceeded supply leading to price increases over the last two years. Of course, transistors haven't gotten bigger and in some cases chip capacity has increased so this is driven by market forces. RAMBUS and other chip manufacturers say that moving forward we will see our next process shrink in the 2019-2020 time frame.
+If you look at the red circle, which is basically the time our work to reduce
+Go's GC latency has been going on,
+we see that for the first couple of years prices did well.
+Lately, not so good, as demand has exceeded supply leading to price increases
+over the last two years.
+Of course, transistors haven't gotten bigger and in some cases chip capacity
+has increased so this is driven by market forces.
+RAMBUS and other chip manufacturers say that moving forward we will see
+our next process shrink in the 2019-2020 time frame.
 
-I will refrain from speculating on global market forces in the memory industry beyond noting that pricing is cyclic and in the long term supply has a tendency to meet demand.
+I will refrain from speculating on global market forces in the memory industry
+beyond noting that pricing is cyclic and in the long term supply has a tendency to meet demand.
 
 Long term, it is our belief that memory pricing will drop at a rate that is much faster than CPU pricing.
 
@@ -435,11 +798,20 @@
 
 .image ismmkeynote/image37.png
 
-Let's look at this other line. Gee it would be nice if we were on this line. This is the SSD line. It is doing a better job of keeping prices low. The material physics of these chips is much more complicated that with DRAM. The logic is more complex, instead of a one transistor per cell there are half a dozen or so.
+Let's look at this other line. Gee it would be nice if we were on this line.
+This is the SSD line. It is doing a better job of keeping prices low.
+The material physics of these chips is much more complicated that with DRAM.
+The logic is more complex, instead of a one transistor per cell there are half a dozen or so.
 
-Going forward there is a line between DRAM and SSD where NVRAM such as Intel's 3D XPoint and Phase Change Memory (PCM) will live. Over the next decade increased availability of this type of memory is likely to become more mainstream and this will only reinforce the idea that adding memory is the cheap way to add value to our servers.
+Going forward there is a line between DRAM and SSD where NVRAM such as Intel's
+3D XPoint and Phase Change Memory (PCM) will live.
+Over the next decade increased availability of this type of memory is likely
+to become more mainstream and this will only reinforce the idea that adding
+memory is the cheap way to add value to our servers.
 
-More importantly we can expect to see other competing alternatives to DRAM. I won't pretend to know which one will be favored in five or ten years but the competition will be fierce and heap memory will move closer to the highlighted blue SSD line here.
+More importantly we can expect to see other competing alternatives to DRAM.
+I won't pretend to know which one will be favored in five or ten years but
+the competition will be fierce and heap memory will move closer to the highlighted blue SSD line here.
 
 All of this reinforces our decision to avoid always-on barriers in favor of increasing memory.
 
@@ -449,15 +821,25 @@
 
 .image ismmkeynote/image42.png
 
-We intend to make the runtime more flexible and robust as we look at corner cases that come in from our users. The hope is to tighten the scheduler down and get better determinism and fairness but we don't want to sacrifice any of our performance.
+We intend to make the runtime more flexible and robust as we look at corner
+cases that come in from our users.
+The hope is to tighten the scheduler down and get better determinism and
+fairness but we don't want to sacrifice any of our performance.
 
-We also do not intend to increase the GC API surface. We've had almost a decade now and we have two knobs and that feels about right. There is not an application that is important enough for us to add a new flag.
+We also do not intend to increase the GC API surface.
+We've had almost a decade now and we have two knobs and that feels about right.
+There is not an application that is important enough for us to add a new flag.
 
-We will also be looking into how to improve our already pretty good escape analysis and optimize for Go's value-oriented programming. Not only in the programming but in the tools we provide our users.
+We will also be looking into how to improve our already pretty good escape
+analysis and optimize for Go's value-oriented programming.
+Not only in the programming but in the tools we provide our users.
 
-Algorithmically, we will focus on parts of the design space that minimize the use of barriers, particularly those that are turned on all the time.
+Algorithmically, we will focus on parts of the design space that minimize
+the use of barriers,
+particularly those that are turned on all the time.
 
-Finally, and most importantly, we hope to ride Moore's law's tendency to favor RAM over CPU certainly for the next 5 years and hopefully for the next decade.
+Finally, and most importantly, we hope to ride Moore's law's tendency to
+favor RAM over CPU certainly for the next 5 years and hopefully for the next decade.
 
 So that's it. Thank you.
 
diff --git a/content/json-and-go.article b/content/json-and-go.article
index 95ab377..8e4dfcd 100644
--- a/content/json-and-go.article
+++ b/content/json-and-go.article
@@ -6,9 +6,16 @@
 
 * Introduction
 
-JSON (JavaScript Object Notation) is a simple data interchange format. Syntactically it resembles the objects and lists of JavaScript. It is most commonly used for communication between web back-ends and JavaScript programs running in the browser, but it is used in many other places, too. Its home page, [[http://json.org][json.org]], provides a wonderfully clear and concise definition of the standard.
+JSON (JavaScript Object Notation) is a simple data interchange format.
+Syntactically it resembles the objects and lists of JavaScript.
+It is most commonly used for communication between web back-ends and JavaScript
+programs running in the browser,
+but it is used in many other places, too.
+Its home page, [[http://json.org][json.org]],
+provides a wonderfully clear and concise definition of the standard.
 
-With the [[https://golang.org/pkg/encoding/json/][json package]] it's a snap to read and write JSON data from your Go programs.
+With the [[https://golang.org/pkg/encoding/json/][json package]] it's a
+snap to read and write JSON data from your Go programs.
 
 * Encoding
 
@@ -38,7 +45,9 @@
 
 Only data structures that can be represented as valid JSON will be encoded:
 
-- JSON objects only support strings as keys; to encode a Go map type it must be of the form `map[string]T` (where `T` is any Go type supported by the json package).
+- JSON objects only support strings as keys;
+  to encode a Go map type it must be of the form `map[string]T` (where `T`
+  is any Go type supported by the json package).
 
 - Channel, complex, and function types cannot be encoded.
 
@@ -46,7 +55,9 @@
 
 - Pointers will be encoded as the values they point to (or 'null' if the pointer is `nil`).
 
-The json package only accesses the exported fields of struct types (those that begin with an uppercase letter). Therefore only the the exported fields of a struct will be present in the JSON output.
+The json package only accesses the exported fields of struct types (those
+that begin with an uppercase letter).
+Therefore only the the exported fields of a struct will be present in the JSON output.
 
 * Decoding
 
@@ -62,7 +73,10 @@
 
 	    err := json.Unmarshal(b, &m)
 
-If `b` contains valid JSON that fits in `m`, after the call `err` will be `nil` and the data from `b` will have been stored in the struct `m`, as if by an assignment like:
+If `b` contains valid JSON that fits in `m`,
+after the call `err` will be `nil` and the data from `b` will have been
+stored in the struct `m`,
+as if by an assignment like:
 
 	    m = Message{
 	        Name: "Alice",
@@ -70,9 +84,13 @@
 	        Time: 1294706395881547000,
 	    }
 
-How does `Unmarshal` identify the fields in which to store the decoded data? For a given JSON key `"Foo"`, `Unmarshal` will look through the destination struct's fields to find (in order of preference):
+How does `Unmarshal` identify the fields in which to store the decoded data?
+For a given JSON key `"Foo"`,
+`Unmarshal` will look through the destination struct's fields to find (in
+order of preference):
 
-- An exported field with a tag of `"Foo"` (see the [[https://golang.org/ref/spec#Struct_types][Go spec]] for more on struct tags),
+- An exported field with a tag of `"Foo"` (see the [[https://golang.org/ref/spec#Struct_types][Go spec]]
+  for more on struct tags),
 
 - An exported field named `"Foo"`, or
 
@@ -84,13 +102,20 @@
 	    var m Message
 	    err := json.Unmarshal(b, &m)
 
-`Unmarshal` will decode only the fields that it can find in the destination type.  In this case, only the Name field of m will be populated, and the Food field will be ignored. This behavior is particularly useful when you wish to pick only a few specific fields out of a large JSON blob. It also means that any unexported fields in the destination struct will be unaffected by `Unmarshal`.
+`Unmarshal` will decode only the fields that it can find in the destination type.
+In this case, only the Name field of m will be populated,
+and the Food field will be ignored.
+This behavior is particularly useful when you wish to pick only a few specific
+fields out of a large JSON blob.
+It also means that any unexported fields in the destination struct will
+be unaffected by `Unmarshal`.
 
 But what if you don't know the structure of your JSON data beforehand?
 
 * Generic JSON with interface{}
 
-The `interface{}` (empty interface) type describes an interface with zero methods.  Every Go type implements at least zero methods and therefore satisfies the empty interface.
+The `interface{}` (empty interface) type describes an interface with zero methods.
+Every Go type implements at least zero methods and therefore satisfies the empty interface.
 
 The empty interface serves as a general container type:
 
@@ -142,7 +167,8 @@
 	    var f interface{}
 	    err := json.Unmarshal(b, &f)
 
-At this point the Go value in `f` would be a map whose keys are strings and whose values are themselves stored as empty interface values:
+At this point the Go value in `f` would be a map whose keys are strings
+and whose values are themselves stored as empty interface values:
 
 	    f = map[string]interface{}{
 	        "Name": "Wednesday",
@@ -157,7 +183,8 @@
 
 	    m := f.(map[string]interface{})
 
-We can then iterate through the map with a range statement and use a type switch to access its values as their concrete types:
+We can then iterate through the map with a range statement and use a type
+switch to access its values as their concrete types:
 
 	    for k, v := range m {
 	        switch vv := v.(type) {
@@ -190,7 +217,14 @@
 	    var m FamilyMember
 	    err := json.Unmarshal(b, &m)
 
-Unmarshaling that data into a `FamilyMember` value works as expected, but if we look closely we can see a remarkable thing has happened. With the var statement we allocated a `FamilyMember` struct, and then provided a pointer to that value to `Unmarshal`, but at that time the `Parents` field was a `nil` slice value. To populate the `Parents` field, `Unmarshal` allocated a new slice behind the scenes. This is typical of how `Unmarshal` works with the supported reference types (pointers, slices, and maps).
+Unmarshaling that data into a `FamilyMember` value works as expected,
+but if we look closely we can see a remarkable thing has happened.
+With the var statement we allocated a `FamilyMember` struct,
+and then provided a pointer to that value to `Unmarshal`,
+but at that time the `Parents` field was a `nil` slice value.
+To populate the `Parents` field, `Unmarshal` allocated a new slice behind the scenes.
+This is typical of how `Unmarshal` works with the supported reference types
+(pointers, slices, and maps).
 
 Consider unmarshaling into this data structure:
 
@@ -198,25 +232,40 @@
 	    Bar *Bar
 	}
 
-If there were a `Bar` field in the JSON object, `Unmarshal` would allocate a new `Bar` and populate it. If not, `Bar` would be left as a `nil` pointer.
+If there were a `Bar` field in the JSON object,
+`Unmarshal` would allocate a new `Bar` and populate it.
+If not, `Bar` would be left as a `nil` pointer.
 
-From this a useful pattern arises: if you have an application that receives a few distinct message types, you might define "receiver" structure like
+From this a useful pattern arises: if you have an application that receives
+a few distinct message types,
+you might define "receiver" structure like
 
 	type IncomingMessage struct {
 	    Cmd *Command
 	    Msg *Message
 	}
 
-and the sending party can populate the `Cmd` field and/or the `Msg` field of the top-level JSON object, depending on the type of message they want to communicate. `Unmarshal`, when decoding the JSON into an `IncomingMessage` struct, will only allocate the data structures present in the JSON data. To know which messages to process, the programmer need simply test that either `Cmd` or `Msg` is not `nil`.
+and the sending party can populate the `Cmd` field and/or the `Msg` field
+of the top-level JSON object,
+depending on the type of message they want to communicate.
+`Unmarshal`, when decoding the JSON into an `IncomingMessage` struct,
+will only allocate the data structures present in the JSON data.
+To know which messages to process, the programmer need simply test that
+either `Cmd` or `Msg` is not `nil`.
 
 * Streaming Encoders and Decoders
 
-The json package provides `Decoder` and `Encoder` types to support the common operation of reading and writing streams of JSON data. The `NewDecoder` and `NewEncoder` functions wrap the [[https://golang.org/pkg/io/#Reader][`io.Reader`]] and [[https://golang.org/pkg/io/#Writer][`io.Writer`]] interface types.
+The json package provides `Decoder` and `Encoder` types to support the common
+operation of reading and writing streams of JSON data.
+The `NewDecoder` and `NewEncoder` functions wrap the [[https://golang.org/pkg/io/#Reader][`io.Reader`]]
+and [[https://golang.org/pkg/io/#Writer][`io.Writer`]] interface types.
 
 	func NewDecoder(r io.Reader) *Decoder
 	func NewEncoder(w io.Writer) *Encoder
 
-Here's an example program that reads a series of JSON objects from standard input, removes all but the `Name` field from each object, and then writes the objects to standard output:
+Here's an example program that reads a series of JSON objects from standard input,
+removes all but the `Name` field from each object,
+and then writes the objects to standard output:
 
 	package main
 
@@ -246,8 +295,12 @@
 	    }
 	}
 
-Due to the ubiquity of Readers and Writers, these `Encoder` and `Decoder` types can be used in a broad range of scenarios, such as reading and writing to HTTP connections, WebSockets, or files.
+Due to the ubiquity of Readers and Writers,
+these `Encoder` and `Decoder` types can be used in a broad range of scenarios,
+such as reading and writing to HTTP connections,
+WebSockets, or files.
 
 * References
 
-For more information see the [[https://golang.org/pkg/encoding/json/][json package documentation]]. For an example usage of json see the source files of the [[https://golang.org/pkg/net/rpc/jsonrpc/][jsonrpc package]].
+For more information see the [[https://golang.org/pkg/encoding/json/][json package documentation]].
+For an example usage of json see the source files of the [[https://golang.org/pkg/net/rpc/jsonrpc/][jsonrpc package]].
diff --git a/content/json-rpc-tale-of-interfaces.article b/content/json-rpc-tale-of-interfaces.article
index 2bc3c28..3ccabc7 100644
--- a/content/json-rpc-tale-of-interfaces.article
+++ b/content/json-rpc-tale-of-interfaces.article
@@ -6,9 +6,16 @@
 
 * Introduction
 
-Here we present an example where Go's [[https://golang.org/doc/effective_go.html#interfaces_and_types][interfaces]] made it easy to refactor some existing code to make it more flexible and extensible. Originally, the standard library's [[https://golang.org/pkg/net/rpc/][RPC package]] used a custom wire format called [[https://golang.org/pkg/encoding/gob/][gob]]. For a particular application, we wanted to use [[https://golang.org/pkg/encoding/json/][JSON]] as an alternate wire format.
+Here we present an example where Go's [[https://golang.org/doc/effective_go.html#interfaces_and_types][interfaces]]
+made it easy to refactor some existing code to make it more flexible and extensible.
+Originally, the standard library's [[https://golang.org/pkg/net/rpc/][RPC package]]
+used a custom wire format called [[https://golang.org/pkg/encoding/gob/][gob]].
+For a particular application, we wanted to use [[https://golang.org/pkg/encoding/json/][JSON]]
+as an alternate wire format.
 
-We first defined a pair of interfaces to describe the functionality of the existing wire format, one for the client, and one for the server (depicted below).
+We first defined a pair of interfaces to describe the functionality of the
+existing wire format,
+one for the client, and one for the server (depicted below).
 
 	type ServerCodec interface {
 	 ReadRequestHeader(*Request) error
@@ -17,7 +24,8 @@
 	 Close() error
 	}
 
-On the server side, we then changed two internal function signatures to accept the `ServerCodec` interface instead of our existing `gob.Encoder`. Here's one of them:
+On the server side, we then changed two internal function signatures to
+accept the `ServerCodec` interface instead of our existing `gob.Encoder`. Here's one of them:
 
 	func sendResponse(sending *sync.Mutex, req *Request,
 	 reply interface{}, enc *gob.Encoder, errmsg string)
@@ -27,10 +35,26 @@
 	func sendResponse(sending *sync.Mutex, req *Request,
 	  reply interface{}, enc ServerCodec, errmsg string)
 
-We then wrote a trivial `gobServerCodec` wrapper to reproduce the original functionality. From there it is simple to build a `jsonServerCodec`.
+We then wrote a trivial `gobServerCodec` wrapper to reproduce the original functionality.
+From there it is simple to build a `jsonServerCodec`.
 
-After some similar changes to the client side, this was the full extent of the work we needed to do on the RPC package. This whole exercise took about 20 minutes! After tidying up and testing the new code, the [[https://github.com/golang/go/commit/dcff89057bc0e0d7cb14cf414f2df6f5fb1a41ec][final changeset]] was submitted.
+After some similar changes to the client side,
+this was the full extent of the work we needed to do on the RPC package.
+This whole exercise took about 20 minutes!
+After tidying up and testing the new code,
+the [[https://github.com/golang/go/commit/dcff89057bc0e0d7cb14cf414f2df6f5fb1a41ec][final changeset]] was submitted.
 
-In an inheritance-oriented language like Java or C++, the obvious path would be to generalize the RPC class, and create JsonRPC and GobRPC subclasses. However, this approach becomes tricky if you want to make a further generalization orthogonal to that hierarchy. (For example, if you were to implement an alternate RPC standard). In our Go package, we took a route that is both conceptually simpler and requires less code be written or changed.
+In an inheritance-oriented language like Java or C++,
+the obvious path would be to generalize the RPC class,
+and create JsonRPC and GobRPC subclasses.
+However, this approach becomes tricky if you want to make a further generalization
+orthogonal to that hierarchy.
+(For example, if you were to implement an alternate RPC standard).
+In our Go package, we took a route that is both conceptually simpler and
+requires less code be written or changed.
 
-A vital quality for any codebase is maintainability. As needs change, it is essential to adapt your code easily and cleanly, lest it become unwieldy to work with. We believe Go's lightweight, composition-oriented type system provides a means of structuring code that scales.
+A vital quality for any codebase is maintainability.
+As needs change, it is essential to adapt your code easily and cleanly,
+lest it become unwieldy to work with.
+We believe Go's lightweight, composition-oriented type system provides a
+means of structuring code that scales.
diff --git a/content/laws-of-reflection.article b/content/laws-of-reflection.article
index 103ae73..10cd663 100644
--- a/content/laws-of-reflection.article
+++ b/content/laws-of-reflection.article
@@ -6,24 +6,40 @@
 
 * Introduction
 
-Reflection in computing is the ability of a program to examine its own structure, particularly through types; it's a form of metaprogramming. It's also a great source of confusion.
+Reflection in computing is the ability of a program to examine its own structure,
+particularly through types;
+it's a form of metaprogramming.
+It's also a great source of confusion.
 
-In this article we attempt to clarify things by explaining how reflection works in Go. Each language's reflection model is different (and many languages don't support it at all), but this article is about Go, so for the rest of this article the word "reflection" should be taken to mean "reflection in Go".
+In this article we attempt to clarify things by explaining how reflection works in Go.
+Each language's reflection model is different (and many languages don't support it at all),
+but this article is about Go, so for the rest of this article the word "reflection"
+should be taken to mean "reflection in Go".
 
 * Types and interfaces
 
 Because reflection builds on the type system, let's start with a refresher about types in Go.
 
-Go is statically typed. Every variable has a static type, that is, exactly one type known and fixed at compile time: `int`, `float32`, `*MyType`, `[]byte`, and so on. If we declare
+Go is statically typed. Every variable has a static type,
+that is, exactly one type known and fixed at compile time:
+`int`, `float32`, `*MyType`, `[]byte`, and so on. If we declare
 
 	type MyInt int
 
 	var i int
 	var j MyInt
 
-then `i` has type `int` and `j` has type `MyInt`. The variables `i` and `j` have distinct static types and, although they have the same underlying type, they cannot be assigned to one another without a conversion.
+then `i` has type `int` and `j` has type `MyInt`.
+The variables `i` and `j` have distinct static types and,
+although they have the same underlying type,
+they cannot be assigned to one another without a conversion.
 
-One important category of type is interface types, which represent fixed sets of methods. An interface variable can store any concrete (non-interface) value as long as that value implements the interface's methods. A well-known pair of examples is `io.Reader` and `io.Writer`, the types `Reader` and `Writer` from the [[https://golang.org/pkg/io/][io package]]:
+One important category of type is interface types,
+which represent fixed sets of methods.
+An interface variable can store any concrete (non-interface) value as long
+as that value implements the interface's methods.
+A well-known pair of examples is `io.Reader` and `io.Writer`,
+the types `Reader` and `Writer` from the [[https://golang.org/pkg/io/][io package]]:
 
 	// Reader is the interface that wraps the basic Read method.
 	type Reader interface {
@@ -35,7 +51,10 @@
 	    Write(p []byte) (n int, err error)
 	}
 
-Any type that implements a `Read` (or `Write`) method with this signature is said to implement `io.Reader` (or `io.Writer`). For the purposes of this discussion, that means that a variable of type `io.Reader` can hold any value whose type has a `Read` method:
+Any type that implements a `Read` (or `Write`) method with this signature
+is said to implement `io.Reader` (or `io.Writer`).
+For the purposes of this discussion, that means that a variable of type
+`io.Reader` can hold any value whose type has a `Read` method:
 
 	    var r io.Reader
 	    r = os.Stdin
@@ -43,7 +62,9 @@
 	    r = new(bytes.Buffer)
 	    // and so on
 
-It's important to be clear that whatever concrete value `r` may hold, `r`'s type is always `io.Reader`: Go is statically typed and the static type of `r` is `io.Reader`.
+It's important to be clear that whatever concrete value `r` may hold,
+`r`'s type is always `io.Reader`:
+Go is statically typed and the static type of `r` is `io.Reader`.
 
 An extremely important example of an interface type is the empty interface:
 
@@ -51,15 +72,26 @@
 
 It represents the empty set of methods and is satisfied by any value at all, since any value has zero or more methods.
 
-Some people say that Go's interfaces are dynamically typed, but that is misleading. They are statically typed: a variable of interface type always has the same static type, and even though at run time the value stored in the interface variable may change type, that value will always satisfy the interface.
+Some people say that Go's interfaces are dynamically typed,
+but that is misleading.
+They are statically typed: a variable of interface type always has the same static type,
+and even though at run time the value stored in the interface variable may change type,
+that value will always satisfy the interface.
 
 We need to be precise about all this because reflection and interfaces are closely related.
 
 * The representation of an interface
 
-Russ Cox has written a [[https://research.swtch.com/2009/12/go-data-structures-interfaces.html][ detailed blog post]] about the representation of interface values in Go. It's not necessary to repeat the full story here, but a simplified summary is in order.
+Russ Cox has written a [[https://research.swtch.com/2009/12/go-data-structures-interfaces.html][ detailed blog post]]
+about the representation of interface values in Go.
+It's not necessary to repeat the full story here,
+but a simplified summary is in order.
 
-A variable of interface type stores a pair: the concrete value assigned to the variable, and that value's type descriptor. To be more precise, the value is the underlying concrete data item that implements the interface and the type describes the full type of that item. For instance, after
+A variable of interface type stores a pair:
+the concrete value assigned to the variable,
+and that value's type descriptor.
+To be more precise, the value is the underlying concrete data item that
+implements the interface and the type describes the full type of that item. For instance, after
 
 	    var r io.Reader
 	    tty, err := os.OpenFile("/dev/tty", os.O_RDWR, 0)
@@ -68,23 +100,43 @@
 	    }
 	    r = tty
 
-`r` contains, schematically, the (value, type) pair, (`tty`, `*os.File`). Notice that the type `*os.File` implements methods other than `Read`; even though the interface value provides access only to the `Read` method, the value inside carries all the type information about that value. That's why we can do things like this:
+`r` contains, schematically, the (value, type) pair,
+(`tty`, `*os.File`).
+Notice that the type `*os.File` implements methods other than `Read`;
+even though the interface value provides access only to the `Read` method,
+the value inside carries all the type information about that value.
+That's why we can do things like this:
 
 	    var w io.Writer
 	    w = r.(io.Writer)
 
-The expression in this assignment is a type assertion; what it asserts is that the item inside `r` also implements `io.Writer`, and so we can assign it to `w`. After the assignment, `w` will contain the pair (`tty`, `*os.File`). That's the same pair as was held in `r`. The static type of the interface determines what methods may be invoked with an interface variable, even though the concrete value inside may have a larger set of methods.
+The expression in this assignment is a type assertion;
+what it asserts is that the item inside `r` also implements `io.Writer`,
+and so we can assign it to `w`.
+After the assignment, `w` will contain the pair (`tty`, `*os.File`).
+That's the same pair as was held in `r`. The static type of the interface
+determines what methods may be invoked with an interface variable,
+even though the concrete value inside may have a larger set of methods.
 
 Continuing, we can do this:
 
 	    var empty interface{}
 	    empty = w
 
-and our empty interface value `empty` will again contain that same pair, (`tty`, `*os.File`). That's handy: an empty interface can hold any value and contains all the information we could ever need about that value.
+and our empty interface value `empty` will again contain that same pair,
+(`tty`, `*os.File`).
+That's handy: an empty interface can hold any value and contains all the
+information we could ever need about that value.
 
-(We don't need a type assertion here because it's known statically that `w` satisfies the empty interface. In the example where we moved a value from a `Reader` to a `Writer`, we needed to be explicit and use a type assertion because `Writer`'s methods are not a subset of `Reader`'s.)
+(We don't need a type assertion here because it's known statically that
+`w` satisfies the empty interface.
+In the example where we moved a value from a `Reader` to a `Writer`,
+we needed to be explicit and use a type assertion because `Writer`'s methods
+are not a subset of `Reader`'s.)
 
-One important detail is that the pair inside an interface always has the form (value, concrete type) and cannot have the form (value, interface type). Interfaces do not hold interface values.
+One important detail is that the pair inside an interface always has the form (value,
+concrete type) and cannot have the form (value, interface type).
+Interfaces do not hold interface values.
 
 Now we're ready to reflect.
 
@@ -92,7 +144,15 @@
 
 * 1. Reflection goes from interface value to reflection object.
 
-At the basic level, reflection is just a mechanism to examine the type and value pair stored inside an interface variable. To get started, there are two types we need to know about in [[https://golang.org/pkg/reflect/][package reflect]]: [[https://golang.org/pkg/reflect/#Type][Type]] and [[https://golang.org/pkg/reflect/#Value][Value]]. Those two types give access to the contents of an interface variable, and two simple functions, called `reflect.TypeOf` and `reflect.ValueOf`, retrieve `reflect.Type` and `reflect.Value` pieces out of an interface value. (Also, from the `reflect.Value` it's easy to get to the `reflect.Type`, but let's keep the `Value` and `Type` concepts separate for now.)
+At the basic level, reflection is just a mechanism to examine the type and
+value pair stored inside an interface variable.
+To get started, there are two types we need to know about in [[https://golang.org/pkg/reflect/][package reflect]]:
+[[https://golang.org/pkg/reflect/#Type][Type]] and [[https://golang.org/pkg/reflect/#Value][Value]].
+Those two types give access to the contents of an interface variable,
+and two simple functions, called `reflect.TypeOf` and `reflect.ValueOf`,
+retrieve `reflect.Type` and `reflect.Value` pieces out of an interface value.
+(Also, from the `reflect.Value` it's easy to get to the `reflect.Type`,
+but let's keep the `Value` and `Type` concepts separate for now.)
 
 Let's start with `TypeOf`:
 
@@ -112,14 +172,22 @@
 
 	type: float64
 
-You might be wondering where the interface is here, since the program looks like it's passing the `float64` variable `x`, not an interface value, to `reflect.TypeOf`. But it's there; as [[https://golang.org/pkg/reflect/#TypeOf][godoc reports]], the signature of `reflect.TypeOf` includes an empty interface:
+You might be wondering where the interface is here,
+since the program looks like it's passing the `float64` variable `x`,
+not an interface value, to `reflect.TypeOf`.
+But it's there; as [[https://golang.org/pkg/reflect/#TypeOf][godoc reports]],
+the signature of `reflect.TypeOf` includes an empty interface:
 
 	// TypeOf returns the reflection Type of the value in the interface{}.
 	func TypeOf(i interface{}) Type
 
-When we call `reflect.TypeOf(x)`, `x` is first stored in an empty interface, which is then passed as the argument; `reflect.TypeOf` unpacks that empty interface to recover the type information.
+When we call `reflect.TypeOf(x)`, `x` is first stored in an empty interface,
+which is then passed as the argument;
+`reflect.TypeOf` unpacks that empty interface to recover the type information.
 
-The `reflect.ValueOf` function, of course, recovers the value (from here on we'll elide the boilerplate and focus just on the executable code):
+The `reflect.ValueOf` function, of course,
+recovers the value (from here on we'll elide the boilerplate and focus just
+on the executable code):
 
 	    var x float64 = 3.4
 	    fmt.Println("value:", reflect.ValueOf(x).String())
@@ -128,10 +196,19 @@
 
 	value: <float64 Value>
 
-(We call the `String` method explicitly because by default the `fmt` package digs into a `reflect.Value` to show the concrete value inside.
+(We call the `String` method explicitly because by default the `fmt` package
+digs into a `reflect.Value` to show the concrete value inside.
 The `String` method does not.)
 
-Both `reflect.Type` and `reflect.Value` have lots of methods to let us examine and manipulate them. One important example is that `Value` has a `Type` method that returns the `Type` of a `reflect.Value`. Another is that both `Type` and `Value` have a `Kind` method that returns a constant indicating what sort of item is stored: `Uint`, `Float64`, `Slice`, and so on. Also methods on `Value` with names like `Int` and `Float` let us grab values (as `int64` and `float64`) stored inside:
+Both `reflect.Type` and `reflect.Value` have lots of methods to let us examine
+and manipulate them.
+One important example is that `Value` has a `Type` method that returns the
+`Type` of a `reflect.Value`.
+Another is that both `Type` and `Value` have a `Kind` method that returns
+a constant indicating what sort of item is stored:
+`Uint`, `Float64`, `Slice`, and so on.
+Also methods on `Value` with names like `Int` and `Float` let us grab values
+(as `int64` and `float64`) stored inside:
 
 	    var x float64 = 3.4
 	    v := reflect.ValueOf(x)
@@ -145,9 +222,17 @@
 	kind is float64: true
 	value: 3.4
 
-There are also methods like `SetInt` and `SetFloat` but to use them we need to understand settability, the subject of the third law of reflection, discussed below.
+There are also methods like `SetInt` and `SetFloat` but to use them we need
+to understand settability,
+the subject of the third law of reflection, discussed below.
 
-The reflection library has a couple of properties worth singling out. First, to keep the API simple, the "getter" and "setter" methods of `Value` operate on the largest type that can hold the value: `int64` for all the signed integers, for instance. That is, the `Int` method of `Value` returns an `int64` and the `SetInt` value takes an `int64`; it may be necessary to convert to the actual type involved:
+The reflection library has a couple of properties worth singling out.
+First, to keep the API simple, the "getter" and "setter" methods of `Value`
+operate on the largest type that can hold the value:
+`int64` for all the signed integers, for instance.
+That is, the `Int` method of `Value` returns an `int64` and the `SetInt`
+value takes an `int64`;
+it may be necessary to convert to the actual type involved:
 
 	    var x uint8 = 'x'
 	    v := reflect.ValueOf(x)
@@ -155,13 +240,19 @@
 	    fmt.Println("kind is uint8: ", v.Kind() == reflect.Uint8) // true.
 	    x = uint8(v.Uint())                                       // v.Uint returns a uint64.
 
-The second property is that the `Kind` of a reflection object describes the underlying type, not the static type. If a reflection object contains a value of a user-defined integer type, as in
+The second property is that the `Kind` of a reflection object describes
+the underlying type,
+not the static type.
+If a reflection object contains a value of a user-defined integer type, as in
 
 	    type MyInt int
 	    var x MyInt = 7
 	    v := reflect.ValueOf(x)
 
-the `Kind` of `v` is still `reflect.Int`, even though the static type of `x` is `MyInt`, not `int`. In other words, the `Kind` cannot discriminate an int from a `MyInt` even though the `Type` can.
+the `Kind` of `v` is still `reflect.Int`,
+even though the static type of `x` is `MyInt`, not `int`.
+In other words, the `Kind` cannot discriminate an int from a `MyInt` even
+though the `Type` can.
 
 * The second law of reflection
 
@@ -169,7 +260,9 @@
 
 Like physical reflection, reflection in Go generates its own inverse.
 
-Given a `reflect.Value` we can recover an interface value using the `Interface` method; in effect the method packs the type and value information back into an interface representation and returns the result:
+Given a `reflect.Value` we can recover an interface value using the `Interface` method;
+in effect the method packs the type and value information back into an interface
+representation and returns the result:
 
 	// Interface returns v's value as an interface{}.
 	func (v Value) Interface() interface{}
@@ -181,11 +274,18 @@
 
 to print the `float64` value represented by the reflection object `v`.
 
-We can do even better, though. The arguments to `fmt.Println`, `fmt.Printf` and so on are all passed as empty interface values, which are then unpacked by the `fmt` package internally just as we have been doing in the previous examples. Therefore all it takes to print the contents of a `reflect.Value` correctly is to pass the result of the `Interface` method to the formatted print routine:
+We can do even better, though. The arguments to `fmt.Println`,
+`fmt.Printf` and so on are all passed as empty interface values,
+which are then unpacked by the `fmt` package internally just as we have
+been doing in the previous examples.
+Therefore all it takes to print the contents of a `reflect.Value` correctly
+is to pass the result of the `Interface` method to the formatted print routine:
 
 	    fmt.Println(v.Interface())
 
-(Why not `fmt.Println(v)`? Because `v` is a `reflect.Value`; we want the concrete value it holds.) Since our value is a `float64`, we can even use a floating-point format if we want:
+(Why not `fmt.Println(v)`? Because `v` is a `reflect.Value`;
+we want the concrete value it holds.) Since our value is a `float64`,
+we can even use a floating-point format if we want:
 
 	    fmt.Printf("value is %7.1e\n", v.Interface())
 
@@ -193,9 +293,12 @@
 
 	3.4e+00
 
-Again, there's no need to type-assert the result of `v.Interface()` to `float64`; the empty interface value has the concrete value's type information inside and `Printf` will recover it.
+Again, there's no need to type-assert the result of `v.Interface()` to `float64`;
+the empty interface value has the concrete value's type information inside
+and `Printf` will recover it.
 
-In short, the `Interface` method is the inverse of the `ValueOf` function, except that its result is always of static type `interface{}`.
+In short, the `Interface` method is the inverse of the `ValueOf` function,
+except that its result is always of static type `interface{}`.
 
 Reiterating: Reflection goes from interface values to reflection objects and back again.
 
@@ -215,7 +318,10 @@
 
 	panic: reflect.Value.SetFloat using unaddressable value
 
-The problem is not that the value `7.1` is not addressable; it's that `v` is not settable. Settability is a property of a reflection `Value`, and not all reflection `Values` have it.
+The problem is not that the value `7.1` is not addressable;
+it's that `v` is not settable.
+Settability is a property of a reflection `Value`,
+and not all reflection `Values` have it.
 
 The `CanSet` method of `Value` reports the settability of a `Value`; in our case,
 
@@ -229,26 +335,43 @@
 
 It is an error to call a `Set` method on an non-settable `Value`. But what is settability?
 
-Settability is a bit like addressability, but stricter. It's the property that a reflection object can modify the actual storage that was used to create the reflection object. Settability is determined by whether the reflection object holds the original item. When we say
+Settability is a bit like addressability, but stricter.
+It's the property that a reflection object can modify the actual storage
+that was used to create the reflection object.
+Settability is determined by whether the reflection object holds the original item. When we say
 
 	    var x float64 = 3.4
 	    v := reflect.ValueOf(x)
 
-we pass a copy of `x` to `reflect.ValueOf`, so the interface value created as the argument to `reflect.ValueOf` is a copy of `x`, not `x` itself. Thus, if the statement
+we pass a copy of `x` to `reflect.ValueOf`,
+so the interface value created as the argument to `reflect.ValueOf` is a
+copy of `x`, not `x` itself.
+Thus, if the statement
 
 	    v.SetFloat(7.1)
 
-were allowed to succeed, it would not update `x`, even though `v` looks like it was created from `x`. Instead, it would update the copy of `x` stored inside the reflection value and `x` itself would be unaffected. That would be confusing and useless, so it is illegal, and settability is the property used to avoid this issue.
+were allowed to succeed, it would not update `x`,
+even though `v` looks like it was created from `x`.
+Instead, it would update the copy of `x` stored inside the reflection value
+and `x` itself would be unaffected.
+That would be confusing and useless, so it is illegal,
+and settability is the property used to avoid this issue.
 
-If this seems bizarre, it's not. It's actually a familiar situation in unusual garb. Think of passing `x` to a function:
+If this seems bizarre, it's not. It's actually a familiar situation in unusual garb.
+Think of passing `x` to a function:
 
 	f(x)
 
-We would not expect `f` to be able to modify `x` because we passed a copy of `x`'s value, not `x` itself. If we want `f` to modify `x` directly we must pass our function the address of `x` (that is, a pointer to `x`):
+We would not expect `f` to be able to modify `x` because we passed a copy
+of `x`'s value, not `x` itself.
+If we want `f` to modify `x` directly we must pass our function the address
+of `x` (that is, a pointer to `x`):
 
 	f(&x)
 
-This is straightforward and familiar, and reflection works the same way. If we want to modify `x` by reflection, we must give the reflection library a pointer to the value we want to modify.
+This is straightforward and familiar, and reflection works the same way.
+If we want to modify `x` by reflection, we must give the reflection library
+a pointer to the value we want to modify.
 
 Let's do that. First we initialize `x` as usual and then create a reflection value that points to it, called `p`.
 
@@ -262,7 +385,10 @@
 	type of p: *float64
 	settability of p: false
 
-The reflection object `p` isn't settable, but it's not `p` we want to set, it's (in effect) `*p`. To get to what `p` points to, we call the `Elem` method of `Value`, which indirects through the pointer, and save the result in a reflection `Value` called `v`:
+The reflection object `p` isn't settable,
+but it's not `p` we want to set, it's (in effect) `*p`.
+To get to what `p` points to, we call the `Elem` method of `Value`,
+which indirects through the pointer, and save the result in a reflection `Value` called `v`:
 
 	    v := p.Elem()
 	    fmt.Println("settability of v:", v.CanSet())
@@ -282,13 +408,27 @@
 	7.1
 	7.1
 
-Reflection can be hard to understand but it's doing exactly what the language does, albeit through reflection `Types` and `Values` that can disguise what's going on. Just keep in mind that reflection Values need the address of something in order to modify what they represent.
+Reflection can be hard to understand but it's doing exactly what the language does,
+albeit through reflection `Types` and `Values` that can disguise what's going on.
+Just keep in mind that reflection Values need the address of something in
+order to modify what they represent.
 
 * Structs
 
-In our previous example `v` wasn't a pointer itself, it was just derived from one. A common way for this situation to arise is when using reflection to modify the fields of a structure. As long as we have the address of the structure, we can modify its fields.
+In our previous example `v` wasn't a pointer itself,
+it was just derived from one.
+A common way for this situation to arise is when using reflection to modify
+the fields of a structure.
+As long as we have the address of the structure,
+we can modify its fields.
 
-Here's a simple example that analyzes a struct value, `t`. We create the reflection object with the address of the struct because we'll want to modify it later. Then we set `typeOfT` to its type and iterate over the fields using straightforward method calls (see [[https://golang.org/pkg/reflect/][package reflect]] for details). Note that we extract the names of the fields from the struct type, but the fields themselves are regular `reflect.Value` objects.
+Here's a simple example that analyzes a struct value, `t`.
+We create the reflection object with the address of the struct because we'll
+want to modify it later.
+Then we set `typeOfT` to its type and iterate over the fields using straightforward
+method calls (see [[https://golang.org/pkg/reflect/][package reflect]] for details).
+Note that we extract the names of the fields from the struct type,
+but the fields themselves are regular `reflect.Value` objects.
 
 	    type T struct {
 	        A int
@@ -308,7 +448,9 @@
 	0: A int = 23
 	1: B string = skidoo
 
-There's one more point about settability introduced in passing here: the field names of `T` are upper case (exported) because only exported fields of a struct are settable.
+There's one more point about settability introduced in passing here:
+the field names of `T` are upper case (exported) because only exported fields
+of a struct are settable.
 
 Because `s` contains a settable reflection object, we can modify the fields of the structure.
 
@@ -320,7 +462,9 @@
 
 	t is now {77 Sunset Strip}
 
-If we modified the program so that `s` was created from `t`, not `&t`, the calls to `SetInt` and `SetString` would fail as the fields of `t` would not be settable.
+If we modified the program so that `s` was created from `t`,
+not `&t`, the calls to `SetInt` and `SetString` would fail as the fields
+of `t` would not be settable.
 
 * Conclusion
 
@@ -332,6 +476,12 @@
 
 - To modify a reflection object, the value must be settable.
 
-Once you understand these laws reflection in Go becomes much easier to use, although it remains subtle. It's a powerful tool that should be used with care and avoided unless strictly necessary.
+Once you understand these laws reflection in Go becomes much easier to use,
+although it remains subtle.
+It's a powerful tool that should be used with care and avoided unless strictly necessary.
 
-There's plenty more to reflection that we haven't covered — sending and receiving on channels, allocating memory, using slices and maps, calling methods and functions — but this post is long enough. We'll cover some of those topics in a later article.
+There's plenty more to reflection that we haven't covered — sending and
+receiving on channels,
+allocating memory, using slices and maps,
+calling methods and functions — but this post is long enough.
+We'll cover some of those topics in a later article.
diff --git a/content/learn-go-from-your-browser.article b/content/learn-go-from-your-browser.article
index a3cd470..8458c09 100644
--- a/content/learn-go-from-your-browser.article
+++ b/content/learn-go-from-your-browser.article
@@ -6,10 +6,16 @@
 
 * Introduction
 
-We are excited to announce [[https://tour.golang.org/][A Tour of Go]], a guided tour of the Go programming language you can run from your browser.
+We are excited to announce [[https://tour.golang.org/][A Tour of Go]],
+a guided tour of the Go programming language you can run from your browser.
 
-The tour is hands-on, demonstrating the language through code samples that you can modify, compile, and run from the tour itself. (The technology behind the [[https://golang.org/doc/play/][Go Playground]] does the work.)
+The tour is hands-on, demonstrating the language through code samples that you can modify,
+compile, and run from the tour itself.
+(The technology behind the [[https://golang.org/doc/play/][Go Playground]] does the work.)
 
-The tour has three sections. The first section covers basic syntax and data structures; the second discusses methods and interfaces; and the third introduces Go's concurrency primitives. Each section concludes with a few exercises so you can practice what you've learned.
+The tour has three sections. The first section covers basic syntax and data structures;
+the second discusses methods and interfaces;
+and the third introduces Go's concurrency primitives.
+Each section concludes with a few exercises so you can practice what you've learned.
 
 So, what are you waiting for? [[https://tour.golang.org/][Get started now!]]
diff --git a/content/migrating-to-go-modules.article b/content/migrating-to-go-modules.article
index 975e706..3e5fbc5 100644
--- a/content/migrating-to-go-modules.article
+++ b/content/migrating-to-go-modules.article
@@ -13,11 +13,22 @@
 - Part 3 — [[/publishing-go-modules][Publishing Go Modules]]
 - Part 4 — [[/v2-go-modules][Go Modules: v2 and Beyond]]
 
-Go projects use a wide variety of dependency management strategies. [[https://golang.org/cmd/go/#hdr-Vendor_Directories][Vendoring]] tools such as [[https://github.com/golang/dep][dep]] and [[https://github.com/Masterminds/glide][glide]] are popular, but they have wide differences in behavior and don't always work well together. Some projects store their entire GOPATH directory in a single Git repository. Others simply rely on `go`get` and expect fairly recent versions of dependencies to be installed in GOPATH.
+Go projects use a wide variety of dependency management strategies.
+[[https://golang.org/cmd/go/#hdr-Vendor_Directories][Vendoring]] tools such
+as [[https://github.com/golang/dep][dep]] and [[https://github.com/Masterminds/glide][glide]] are popular,
+but they have wide differences in behavior and don't always work well together.
+Some projects store their entire GOPATH directory in a single Git repository.
+Others simply rely on `go`get` and expect fairly recent versions of dependencies
+to be installed in GOPATH.
 
-Go's module system, introduced in Go 1.11, provides an official dependency management solution built into the `go` command. This article describes tools and techniques for converting a project to modules.
+Go's module system, introduced in Go 1.11,
+provides an official dependency management solution built into the `go` command.
+This article describes tools and techniques for converting a project to modules.
 
-Please note: if your project is already tagged at v2.0.0 or higher, you will need to update your module path when you add a `go.mod` file. We'll explain how to do that without breaking your users in a future article focused on v2 and beyond.
+Please note: if your project is already tagged at v2.0.0 or higher,
+you will need to update your module path when you add a `go.mod` file.
+We'll explain how to do that without breaking your users in a future article
+focused on v2 and beyond.
 
 * Migrating to Go modules in your project
 
@@ -27,7 +38,8 @@
 - An established Go project with a non-modules dependency manager.
 - An established Go project without any dependency manager.
 
-The first case is covered in [[https://blog.golang.org/using-go-modules][Using Go Modules]]; we'll address the latter two in this post.
+The first case is covered in [[https://blog.golang.org/using-go-modules][Using Go Modules]];
+we'll address the latter two in this post.
 
 * With a dependency manager
 
@@ -65,9 +77,15 @@
     require rsc.io/binaryregexp v0.2.1-0.20190524193500-545cabda89ca
     $
 
-`go`mod`init` creates a new go.mod file and automatically imports dependencies from `Godeps.json`, `Gopkg.lock`, or a number of [[https://go.googlesource.com/go/+/362625209b6cd2bc059b6b0a67712ddebab312d9/src/cmd/go/internal/modconv/modconv.go#9][other supported formats]]. The argument to `go`mod`init` is the module path, the location where the module may be found.
+`go`mod`init` creates a new go.mod file and automatically imports dependencies from `Godeps.json`,
+`Gopkg.lock`, or a number of [[https://go.googlesource.com/go/+/362625209b6cd2bc059b6b0a67712ddebab312d9/src/cmd/go/internal/modconv/modconv.go#9][other supported formats]].
+The argument to `go`mod`init` is the module path,
+the location where the module may be found.
 
-This is a good time to pause and run `go`build`./...` and `go`test`./...` before continuing. Later steps may modify your `go.mod` file, so if you prefer to take an iterative approach, this is the closest your `go.mod` file will be to your pre-modules dependency specification.
+This is a good time to pause and run `go`build`./...` and `go`test`./...` before continuing.
+Later steps may modify your `go.mod` file,
+so if you prefer to take an iterative approach,
+this is the closest your `go.mod` file will be to your pre-modules dependency specification.
 
     $ go mod tidy
     go: downloading rsc.io/binaryregexp v0.2.1-0.20190524193500-545cabda89ca
@@ -77,7 +95,14 @@
     rsc.io/binaryregexp v0.2.1-0.20190524193500-545cabda89ca/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
     $
 
-`go`mod`tidy` finds all the packages transitively imported by packages in your module. It adds new module requirements for packages not provided by any known module, and it removes requirements on modules that don't provide any imported packages. If a module provides packages that are only imported by projects that haven't migrated to modules yet, the module requirement will be marked with an `//`indirect` comment. It is always good practice to run `go`mod`tidy` before committing a `go.mod` file to version control.
+`go`mod`tidy` finds all the packages transitively imported by packages in your module.
+It adds new module requirements for packages not provided by any known module,
+and it removes requirements on modules that don't provide any imported packages.
+If a module provides packages that are only imported by projects that haven't
+migrated to modules yet,
+the module requirement will be marked with an `//`indirect` comment.
+It is always good practice to run `go`mod`tidy` before committing a `go.mod`
+file to version control.
 
 Let's finish by making sure the code builds and tests pass:
 
@@ -86,7 +111,14 @@
     [...]
     $
 
-Note that other dependency managers may specify dependencies at the level of individual packages or entire repositories (not modules), and generally do not recognize the requirements specified in the `go.mod` files of dependencies. Consequently, you may not get exactly the same version of every package as before, and there's some risk of upgrading past breaking changes. Therefore, it's important to follow the above commands with an audit of the resulting dependencies. To do so, run
+Note that other dependency managers may specify dependencies at the level
+of individual packages or entire repositories (not modules),
+and generally do not recognize the requirements specified in the `go.mod`
+files of dependencies.
+Consequently, you may not get exactly the same version of every package as before,
+and there's some risk of upgrading past breaking changes.
+Therefore, it's important to follow the above commands with an audit of
+the resulting dependencies. To do so, run
 
     $ go list -m all
     go: finding rsc.io/binaryregexp v0.2.1-0.20190524193500-545cabda89ca
@@ -94,7 +126,13 @@
     rsc.io/binaryregexp v0.2.1-0.20190524193500-545cabda89ca
     $
 
-and compare the resulting versions with your old dependency management file to ensure that the selected versions are appropriate. If you find a version that wasn't what you wanted, you can find out why using `go`mod`why`-m` and/or `go`mod`graph`, and upgrade or downgrade to the correct version using `go`get`. (If the version you request is older than the version that was previously selected, `go`get` will downgrade other dependencies as needed to maintain compatibility.) For example,
+and compare the resulting versions with your old dependency management file
+to ensure that the selected versions are appropriate.
+If you find a version that wasn't what you wanted,
+you can find out why using `go`mod`why`-m` and/or `go`mod`graph`,
+and upgrade or downgrade to the correct version using `go`get`.
+(If the version you request is older than the version that was previously selected,
+`go`get` will downgrade other dependencies as needed to maintain compatibility.) For example,
 
     $ go mod why -m rsc.io/binaryregexp
     [...]
@@ -118,9 +156,16 @@
     go 1.12
     $
 
-Without a configuration file from a previous dependency manager, `go`mod`init` will create a `go.mod` file with only the `module` and `go` directives. In this example, we set the module path to `golang.org/x/blog` because that is its [[https://golang.org/cmd/go/#hdr-Remote_import_paths][custom import path]]. Users may import packages with this path, and we must be careful not to change it.
+Without a configuration file from a previous dependency manager,
+`go`mod`init` will create a `go.mod` file with only the `module` and `go` directives.
+In this example, we set the module path to `golang.org/x/blog` because that
+is its [[https://golang.org/cmd/go/#hdr-Remote_import_paths][custom import path]].
+Users may import packages with this path,
+and we must be careful not to change it.
 
-The `module` directive declares the module path, and the `go` directive declares the expected version of the Go language used to compile the code within the module.
+The `module` directive declares the module path,
+and the `go` directive declares the expected version of the Go language
+used to compile the code within the module.
 
 Next, run `go`mod`tidy` to add the module's dependencies:
 
@@ -161,7 +206,10 @@
     [...]
     $
 
-`go`mod`tidy` added module requirements for all the packages transitively imported by packages in your module and built a `go.sum` with checksums for each library at a specific version. Let's finish by making sure the code still builds and tests still pass:
+`go`mod`tidy` added module requirements for all the packages transitively
+imported by packages in your module and built a `go.sum` with checksums
+for each library at a specific version.
+Let's finish by making sure the code still builds and tests still pass:
 
     $ go build ./...
     $ go test ./...
@@ -174,21 +222,43 @@
     ?   	golang.org/x/blog/support/racy	[no test files]
     $
 
-Note that when `go`mod`tidy` adds a requirement, it adds the latest version of the module. If your `GOPATH` included an older version of a dependency that subsequently published a breaking change, you may see errors in `go`mod`tidy`, `go`build`, or `go`test`. If this happens, try downgrading to an older version with `go`get` (for example, `go`get`github.com/broken/module@v1.1.0`), or take the time to make your module compatible with the latest version of each dependency.
+Note that when `go`mod`tidy` adds a requirement,
+it adds the latest version of the module.
+If your `GOPATH` included an older version of a dependency that subsequently
+published a breaking change,
+you may see errors in `go`mod`tidy`, `go`build`, or `go`test`.
+If this happens, try downgrading to an older version with `go`get` (for example,
+`go`get`github.com/broken/module@v1.1.0`),
+or take the time to make your module compatible with the latest version of each dependency.
 
 ** Tests in module mode
 
 Some tests may need tweaks after migrating to Go modules.
 
-If a test needs to write files in the package directory, it may fail when the package directory is in the module cache, which is read-only. In particular, this may cause `go`test`all` to fail. The test should copy files it needs to write to a temporary directory instead.
+If a test needs to write files in the package directory,
+it may fail when the package directory is in the module cache, which is read-only.
+In particular, this may cause `go`test`all` to fail.
+The test should copy files it needs to write to a temporary directory instead.
 
-If a test relies on relative paths (`../package-in-another-module`) to locate and read files in another package, it will fail if the package is in another module, which will be located in a versioned subdirectory of the module cache or a path specified in a `replace` directive. If this is the case, you may need to copy the test inputs into your module, or convert the test inputs from raw files to data embedded in `.go` source files.
+If a test relies on relative paths (`../package-in-another-module`) to locate
+and read files in another package,
+it will fail if the package is in another module,
+which will be located in a versioned subdirectory of the module cache or
+a path specified in a `replace` directive.
+If this is the case, you may need to copy the test inputs into your module,
+or convert the test inputs from raw files to data embedded in `.go` source files.
 
-If a test expects `go` commands within the test to run in GOPATH mode, it may fail. If this is the case, you may need to add a `go.mod` file to the source tree to be tested, or set `GO111MODULE=off` explicitly.
+If a test expects `go` commands within the test to run in GOPATH mode, it may fail.
+If this is the case, you may need to add a `go.mod` file to the source tree to be tested,
+or set `GO111MODULE=off` explicitly.
 
 * Publishing a release
 
-Finally, you should tag and publish a release version for your new module. This is optional if you haven't released any versions yet, but without an official release, downstream users will depend on specific commits using [[https://golang.org/cmd/go/#hdr-Pseudo_versions][pseudo-versions]], which may be more difficult to support.
+Finally, you should tag and publish a release version for your new module.
+This is optional if you haven't released any versions yet,
+but without an official release, downstream users will depend on specific
+commits using [[https://golang.org/cmd/go/#hdr-Pseudo_versions][pseudo-versions]],
+which may be more difficult to support.
 
     $ git tag v1.2.0
     $ git push origin v1.2.0
@@ -204,16 +274,45 @@
 
 * Imports and canonical module paths
 
-Each module declares its module path in its `go.mod` file. Each `import` statement that refers to a package within the module must have the module path as a prefix of the package path. However, the `go` command may encounter a repository containing the module through many different [[https://golang.org/cmd/go/#hdr-Remote_import_paths][remote import paths]]. For example, both `golang.org/x/lint` and `github.com/golang/lint` resolve to repositories containing the code hosted at [[https://go.googlesource.com/lint][go.googlesource.com/lint]]. The [[https://go.googlesource.com/lint/+/refs/heads/master/go.mod][`go.mod` file]] contained in that repository declares its path to be `golang.org/x/lint`, so only that path corresponds to a valid module.
+Each module declares its module path in its `go.mod` file.
+Each `import` statement that refers to a package within the module must
+have the module path as a prefix of the package path.
+However, the `go` command may encounter a repository containing the module
+through many different [[https://golang.org/cmd/go/#hdr-Remote_import_paths][remote import paths]].
+For example, both `golang.org/x/lint` and `github.com/golang/lint` resolve
+to repositories containing the code hosted at [[https://go.googlesource.com/lint][go.googlesource.com/lint]].
+The [[https://go.googlesource.com/lint/+/refs/heads/master/go.mod][`go.mod` file]]
+contained in that repository declares its path to be `golang.org/x/lint`,
+so only that path corresponds to a valid module.
 
-Go 1.4 provided a mechanism for declaring canonical import paths using [[https://golang.org/cmd/go/#hdr-Import_path_checking][`//`import` comments]], but package authors did not always provide them. As a result, code written prior to modules may have used a non-canonical import path for a module without surfacing an error for the mismatch. When using modules, the import path must match the canonical module path, so you may need to update `import` statements: for example, you may need to change `import`"github.com/golang/lint"` to `import`"golang.org/x/lint"`.
+Go 1.4 provided a mechanism for declaring canonical import paths using [[https://golang.org/cmd/go/#hdr-Import_path_checking][`//`import` comments]],
+but package authors did not always provide them.
+As a result, code written prior to modules may have used a non-canonical
+import path for a module without surfacing an error for the mismatch.
+When using modules, the import path must match the canonical module path,
+so you may need to update `import` statements:
+for example, you may need to change `import`"github.com/golang/lint"` to
+`import`"golang.org/x/lint"`.
 
-Another scenario in which a module's canonical path may differ from its repository path occurs for Go modules at major version 2 or higher. A Go module with a major version above 1 must include a major-version suffix in its module path: for example, version `v2.0.0` must have the suffix `/v2`. However, `import` statements may have referred to the packages within the module _without_ that suffix. For example, non-module users of `github.com/russross/blackfriday/v2` at `v2.0.1` may have imported it as `github.com/russross/blackfriday` instead, and will need to update the import path to include the `/v2` suffix.
+Another scenario in which a module's canonical path may differ from its
+repository path occurs for Go modules at major version 2 or higher.
+A Go module with a major version above 1 must include a major-version suffix in its module path:
+for example, version `v2.0.0` must have the suffix `/v2`.
+However, `import` statements may have referred to the packages within the
+module _without_ that suffix.
+For example, non-module users of `github.com/russross/blackfriday/v2` at
+`v2.0.1` may have imported it as `github.com/russross/blackfriday` instead,
+and will need to update the import path to include the `/v2` suffix.
 
 * Conclusion
 
-Converting to Go modules should be a straightforward process for most users. Occasional issues may arise due to non-canonical import paths or breaking changes within a dependency. Future posts will explore [[/publishing-go-modules][publishing new versions]], v2 and beyond, and ways to debug strange situations.
+Converting to Go modules should be a straightforward process for most users.
+Occasional issues may arise due to non-canonical import paths or breaking
+changes within a dependency.
+Future posts will explore [[/publishing-go-modules][publishing new versions]],
+v2 and beyond, and ways to debug strange situations.
 
-To provide feedback and help shape the future of dependency management in Go, please send us [[https://golang.org/issue/new][bug reports]] or [[https://golang.org/wiki/ExperienceReports][experience reports]].
+To provide feedback and help shape the future of dependency management in Go,
+please send us [[https://golang.org/issue/new][bug reports]] or [[https://golang.org/wiki/ExperienceReports][experience reports]].
 
 Thanks for all your feedback and help improving modules.
diff --git a/content/new-talk-and-tutorials.article b/content/new-talk-and-tutorials.article
index d7cbc4f..3b74ca2 100644
--- a/content/new-talk-and-tutorials.article
+++ b/content/new-talk-and-tutorials.article
@@ -5,8 +5,21 @@
 
 * Introduction
 
-Rob Pike recently gave a talk at Stanford's [[http://www.stanford.edu/class/ee380/][Computer Systems Colloquium]] (EE380). Titled [[http://www.stanford.edu/class/ee380/Abstracts/100428.html][_Another_Go_at_Language_Design_]], the presentation gives an overview of the itches Go was built to scratch, and how Go addresses those problems. You can view [[https://www.youtube.com/watch?v=7VcArS4Wpqk][a video stream of the talk]], and [[http://www.stanford.edu/class/ee380/Abstracts/100428-pike-stanford.pdf][download the slides]].
+Rob Pike recently gave a talk at Stanford's [[http://www.stanford.edu/class/ee380/][Computer Systems Colloquium]] (EE380).
+Titled [[http://www.stanford.edu/class/ee380/Abstracts/100428.html][_Another_Go_at_Language_Design_]],
+the presentation gives an overview of the itches Go was built to scratch,
+and how Go addresses those problems.
+You can view [[https://www.youtube.com/watch?v=7VcArS4Wpqk][a video stream of the talk]],
+and [[http://www.stanford.edu/class/ee380/Abstracts/100428-pike-stanford.pdf][download the slides]].
 
-Last week's release included a code lab, [[https://golang.org/doc/codelab/wiki/][Writing Web Applications]], that details the construction of a simple wiki program. It is a practical introduction to some fundamental Go concepts, and the first of a series of Go code labs.
+Last week's release included a code lab, [[https://golang.org/doc/codelab/wiki/][Writing Web Applications]],
+that details the construction of a simple wiki program.
+It is a practical introduction to some fundamental Go concepts,
+and the first of a series of Go code labs.
 
-Lastly, we are often asked "How do Go packages work?" It's easier to show than to explain, so I put together a [[http://www.youtube.com/watch?v=jDWBJOXs_iI][Go Packages screen cast]] that demonstrates the process of writing, building, installing, and redistributing Go packages. I hope to post more of these covering a variety of Go programming topics to the [[http://youtube.com/gocoding][gocoding YouTube channel]] in the near future.
+Lastly, we are often asked "How do Go packages work?" It's easier to show than to explain,
+so I put together a [[http://www.youtube.com/watch?v=jDWBJOXs_iI][Go Packages screen cast]]
+that demonstrates the process of writing,
+building, installing, and redistributing Go packages.
+I hope to post more of these covering a variety of Go programming topics
+to the [[http://youtube.com/gocoding][gocoding YouTube channel]] in the near future.
diff --git a/content/organizing-go-code.article b/content/organizing-go-code.article
index 49fd728..5be76a0 100644
--- a/content/organizing-go-code.article
+++ b/content/organizing-go-code.article
@@ -6,48 +6,116 @@
 
 * Introduction
 
-Go code is organized differently to that of other languages. This post discusses how to name and package the elements of your Go program to best serve its users.
+Go code is organized differently to that of other languages.
+This post discusses how to name and package the elements of your Go program
+to best serve its users.
 
 * Choose good names
 
-The names you choose affect how you think about your code, so take care when naming your package and its exported identifiers.
+The names you choose affect how you think about your code,
+so take care when naming your package and its exported identifiers.
 
-A package's name provides context for its contents. For instance, the [[https://golang.org/pkg/bytes/][bytes package]] from the standard library exports the `Buffer` type. On its own, the name `Buffer` isn't very descriptive, but when combined with its package name its meaning becomes clear: `bytes.Buffer`. If the package had a less descriptive name, like `util`, the buffer would likely acquire the longer and clumsier name `util.BytesBuffer`. 
+A package's name provides context for its contents.
+For instance, the [[https://golang.org/pkg/bytes/][bytes package]] from
+the standard library exports the `Buffer` type.
+On its own, the name `Buffer` isn't very descriptive,
+but when combined with its package name its meaning becomes clear: `bytes.Buffer`.
+If the package had a less descriptive name,
+like `util`, the buffer would likely acquire the longer and clumsier name `util.BytesBuffer`.
 
-Don't be shy about renaming things as you work. As you spend time with your program you will better understand how its pieces fit together and, therefore, what their names should be. There's no need to lock yourself into early decisions. (The [[https://golang.org/cmd/gofmt/][gofmt command]] has a `-r` flag that provides a syntax-aware search and replace, making large-scale refactoring easier.)
+Don't be shy about renaming things as you work.
+As you spend time with your program you will better understand how its pieces fit together and,
+therefore, what their names should be.
+There's no need to lock yourself into early decisions.
+(The [[https://golang.org/cmd/gofmt/][gofmt command]] has a `-r` flag that
+provides a syntax-aware search and replace,
+making large-scale refactoring easier.)
 
-A good name is the most important part of a software interface: the name is the first thing every client of the code will see. A well-chosen name is therefore the starting point for good documentation. Many of the following practices result organically from good naming. 
+A good name is the most important part of a software interface:
+the name is the first thing every client of the code will see.
+A well-chosen name is therefore the starting point for good documentation.
+Many of the following practices result organically from good naming.
 
 * Choose a good import path (make your package "go get"-able)
 
-An import path is the string with which users import a package. It specifies the directory (relative to `$GOROOT/src/pkg` or `$GOPATH/src`) in which the package's source code resides.
+An import path is the string with which users import a package.
+It specifies the directory (relative to `$GOROOT/src/pkg` or `$GOPATH/src`)
+in which the package's source code resides.
 
-Import paths should be globally unique, so use the path of your source repository as its base. For instance, the `websocket` package from the `go.net` sub-repository has an import path of `"golang.org/x/net/websocket"`. The Go project owns the path `"github.com/golang"`, so that path cannot be used by another author for a different package. Because the repository URL and import path are one and the same, the `go`get` command can fetch and install the package automatically.
+Import paths should be globally unique, so use the path of your source repository as its base.
+For instance, the `websocket` package from the `go.net` sub-repository has
+an import path of `"golang.org/x/net/websocket"`.
+The Go project owns the path `"github.com/golang"`,
+so that path cannot be used by another author for a different package.
+Because the repository URL and import path are one and the same,
+the `go`get` command can fetch and install the package automatically.
 
-If you don't use a hosted source repository, choose some unique prefix such as a domain, company, or project name. As an example, the import path of all Google's internal Go code starts with the string `"google"`.
+If you don't use a hosted source repository,
+choose some unique prefix such as a domain,
+company, or project name.
+As an example, the import path of all Google's internal Go code starts with
+the string `"google"`.
 
-The last element of the import path is typically the same as the package name. For instance, the import path `"net/http"` contains package `http`. This is not a requirement - you can make them different if you like - but you should follow the convention for predictability's sake: a user might be surprised that import `"foo/bar"` introduces the identifier `quux` into the package name space.
+The last element of the import path is typically the same as the package name.
+For instance, the import path `"net/http"` contains package `http`.
+This is not a requirement - you can make them different if you like - but
+you should follow the convention for predictability's sake:
+a user might be surprised that import `"foo/bar"` introduces the identifier
+`quux` into the package name space.
 
-Sometimes people set `GOPATH` to the root of their source repository and put their packages in directories relative to the repository root, such as `"src/my/package"`. On one hand, this keeps the import paths short (`"my/package"` instead of `"github.com/me/project/my/package"`), but on the other it breaks `go`get` and forces users to re-set their `GOPATH` to use the package. Don't do this.
+Sometimes people set `GOPATH` to the root of their source repository and
+put their packages in directories relative to the repository root,
+such as `"src/my/package"`.
+On one hand, this keeps the import paths short (`"my/package"` instead of
+`"github.com/me/project/my/package"`),
+but on the other it breaks `go`get` and forces users to re-set their `GOPATH`
+to use the package. Don't do this.
 
 * Minimize the exported interface
 
-Your code is likely composed of many small pieces of useful code, and so it is tempting to expose much of that functionality in your package's exported interface. Resist that urge!
+Your code is likely composed of many small pieces of useful code,
+and so it is tempting to expose much of that functionality in your package's
+exported interface. Resist that urge!
 
-The larger the interface you provide, the more you must support. Users will quickly come to depend on every type, function, variable, and constant you export, creating an implicit contract that you must honor in perpetuity or risk breaking your users' programs. In preparing Go 1 we carefully reviewed the standard library's exported interfaces and removed the parts we weren't ready to commit to. You should take similar care when distributing your own libraries.
+The larger the interface you provide, the more you must support.
+Users will quickly come to depend on every type,
+function, variable, and constant you export,
+creating an implicit contract that you must honor in perpetuity or risk
+breaking your users' programs.
+In preparing Go 1 we carefully reviewed the standard library's exported
+interfaces and removed the parts we weren't ready to commit to.
+You should take similar care when distributing your own libraries.
 
 If in doubt, leave it out!
 
 * What to put into a package
 
-It is easy to just throw everything into a "grab bag" package, but this dilutes the meaning of the package name (as it must encompass a lot of functionality) and forces the users of small parts of the package to compile and link a lot of unrelated code.
+It is easy to just throw everything into a "grab bag" package,
+but this dilutes the meaning of the package name (as it must encompass a
+lot of functionality) and forces the users of small parts of the package
+to compile and link a lot of unrelated code.
 
-On the other hand, it is also easy to go overboard in splitting your code into small packages, in which case you will likely becomes bogged down in interface design, rather than just getting the job done.
+On the other hand, it is also easy to go overboard in splitting your code
+into small packages,
+in which case you will likely becomes bogged down in interface design,
+rather than just getting the job done.
 
-Look to the Go standard libraries as a guide. Some of its packages are large and some are small. For instance, the [[https://golang.org/pkg/net/http/][http package]] comprises 17 go source files (excluding tests) and exports 109 identifiers, and the [[https://golang.org/pkg/hash/][hash package]] consists of one file that exports just three declarations. There is no hard and fast rule; both approaches are appropriate given their context.
+Look to the Go standard libraries as a guide.
+Some of its packages are large and some are small.
+For instance, the [[https://golang.org/pkg/net/http/][http package]] comprises
+17 go source files (excluding tests) and exports 109 identifiers,
+and the [[https://golang.org/pkg/hash/][hash package]] consists of one file
+that exports just three declarations.
+There is no hard and fast rule; both approaches are appropriate given their context.
 
-With that said, package main is often larger than other packages. Complex commands contain a lot of code that is of little use outside the context of the executable, and often it's simpler to just keep it all in the one place. For instance, the go tool is more than 12000 lines spread across [[https://golang.org/src/cmd/go/][34 files]].
+With that said, package main is often larger than other packages.
+Complex commands contain a lot of code that is of little use outside the
+context of the executable,
+and often it's simpler to just keep it all in the one place.
+For instance, the go tool is more than 12000 lines spread across [[https://golang.org/src/cmd/go/][34 files]].
 
 * Document your code
 
-Good documentation is an essential quality of usable and maintainable code. Read the [[https://golang.org/doc/articles/godoc_documenting_go_code.html][Godoc: documenting Go code]] article to learn how to write good doc comments.
+Good documentation is an essential quality of usable and maintainable code.
+Read the [[https://golang.org/doc/articles/godoc_documenting_go_code.html][Godoc: documenting Go code]]
+article to learn how to write good doc comments.
diff --git a/content/oscon.article b/content/oscon.article
index 4f6854e..8e929f8 100644
--- a/content/oscon.article
+++ b/content/oscon.article
@@ -12,21 +12,33 @@
 
 On Monday you'll have the chance to learn Go in these two tutorials:
 
-- [[http://www.oscon.com/oscon2014/public/schedule/detail/34395][Getting Started with Go]] by [[http://twitter.com/spf13][Steve Francia]] (MongoDB) at 9:00am on Monday, 07/21/2014
+- [[http://www.oscon.com/oscon2014/public/schedule/detail/34395][Getting Started with Go]]
+  by [[http://twitter.com/spf13][Steve Francia]] (MongoDB) at 9:00am on Monday, 07/21/2014
 
-- [[http://www.oscon.com/oscon2014/public/schedule/detail/34267][A Quick Introduction to System Tools Programming with Go]] by [[http://twitter.com/macmceniry][Chris McEniry]] (Sony Network Entertainment) at 1:30pm on Monday, 07/21/2014
+- [[http://www.oscon.com/oscon2014/public/schedule/detail/34267][A Quick Introduction to System Tools Programming with Go]]
+  by [[http://twitter.com/macmceniry][Chris McEniry]] (Sony Network Entertainment)
+  at 1:30pm on Monday, 07/21/2014
 
 During the rest of the week you can hear how different projects use Go:
 
-- [[http://www.oscon.com/oscon2014/public/schedule/detail/34371][A Recovering Java Developer Learns to Go]] by [[http://twitter.com/mstine][Matt Stine]] (Pivotal) at 1:40pm on Tuesday, 07/22/2014
+- [[http://www.oscon.com/oscon2014/public/schedule/detail/34371][A Recovering Java Developer Learns to Go]]
+  by [[http://twitter.com/mstine][Matt Stine]] (Pivotal) at 1:40pm on Tuesday, 07/22/2014
 
-- [[http://www.oscon.com/oscon2014/public/schedule/detail/34299][Painless Data Storage with MongoDB and Go]] by [[http://twitter.com/spf13][Steve Francia]] (MongoDB) and [[http://twitter.com/gniemeyer][Gustavo Niemeyer]] (Canonical) at 1:40pm on Tuesday, 07/22/2014
+- [[http://www.oscon.com/oscon2014/public/schedule/detail/34299][Painless Data Storage with MongoDB and Go]]
+  by [[http://twitter.com/spf13][Steve Francia]] (MongoDB) and [[http://twitter.com/gniemeyer][Gustavo Niemeyer]]
+  (Canonical) at 1:40pm on Tuesday, 07/22/2014
 
-- [[http://www.oscon.com/oscon2014/public/schedule/detail/37795][Gophers with Hammers: Fun with Parsing and Generating Go]] by [[http://twitter.com/offbymany][Josh Bleecher Snyder]] (PayPal) at 2:30pm on Tuesday, 07/22/2014
+- [[http://www.oscon.com/oscon2014/public/schedule/detail/37795][Gophers with Hammers: Fun with Parsing and Generating Go]]
+  by [[http://twitter.com/offbymany][Josh Bleecher Snyder]] (PayPal) at 2:30pm
+  on Tuesday, 07/22/2014
 
-- [[http://www.oscon.com/oscon2014/public/schedule/detail/34047][Go for Object Oriented Programmers (or OO Programming without Objects)]] by [[http://twitter.com/spf13][Steve Francia]] (MongoDB) at 4:10pm on Wednesday, 07/23/2014
+- [[http://www.oscon.com/oscon2014/public/schedule/detail/34047][Go for Object Oriented Programmers (or OO Programming without Objects)]]
+  by [[http://twitter.com/spf13][Steve Francia]] (MongoDB) at 4:10pm on
+  Wednesday, 07/23/2014
 
-- [[http://www.oscon.com/oscon2014/public/schedule/detail/34509][Inside the Go Tour]] by [[http://twitter.com/francesc][Francesc Campoy Flores]] (Google Inc.) at 11:50am on Thursday, 07/24/2014
+- [[http://www.oscon.com/oscon2014/public/schedule/detail/34509][Inside the Go Tour]]
+  by [[http://twitter.com/francesc][Francesc Campoy Flores]] (Google Inc.)
+  at 11:50am on Thursday, 07/24/2014
 
 And if you have any questions come to the
 [[http://www.oscon.com/oscon2014/public/schedule/detail/37075][Go office hours]]
diff --git a/content/pipelines.article b/content/pipelines.article
index febc0c4..de145a1 100644
--- a/content/pipelines.article
+++ b/content/pipelines.article
@@ -307,6 +307,12 @@
 
 Further reading:
 
-- [[https://talks.golang.org/2012/concurrency.slide#1][Go Concurrency Patterns]] ([[https://www.youtube.com/watch?v=f6kdp27TYZs][video]]) presents the basics of Go's concurrency primitives and several ways to apply them.
-- [[https://blog.golang.org/advanced-go-concurrency-patterns][Advanced Go Concurrency Patterns]] ([[http://www.youtube.com/watch?v=QDDwwePbDtw][video]]) covers more complex uses of Go's primitives, especially `select`.
-- Douglas McIlroy's paper [[https://swtch.com/~rsc/thread/squint.pdf][Squinting at Power Series]] shows how Go-like concurrency provides elegant support for complex calculations.
+- [[https://talks.golang.org/2012/concurrency.slide#1][Go Concurrency Patterns]]
+  ([[https://www.youtube.com/watch?v=f6kdp27TYZs][video]]) presents the basics
+  of Go's concurrency primitives and several ways to apply them.
+- [[https://blog.golang.org/advanced-go-concurrency-patterns][Advanced Go Concurrency Patterns]]
+  ([[http://www.youtube.com/watch?v=QDDwwePbDtw][video]]) covers more complex
+  uses of Go's primitives,
+  especially `select`.
+- Douglas McIlroy's paper [[https://swtch.com/~rsc/thread/squint.pdf][Squinting at Power Series]]
+  shows how Go-like concurrency provides elegant support for complex calculations.
diff --git a/content/playground.article b/content/playground.article
index 8e676e8..c1eb6e5 100644
--- a/content/playground.article
+++ b/content/playground.article
@@ -34,8 +34,13 @@
 
 The playground service has three parts:
 
-- A back end that runs on Google's servers. It receives RPC requests, compiles the user program using the gc tool chain, executes the user program, and returns the program output (or compilation errors) as the RPC response.
-- A front end that runs on [[https://cloud.google.com/appengine/docs/go/][Google App Engine]]. It receives HTTP requests from the client and makes corresponding RPC requests to the back end. It also does some caching.
+- A back end that runs on Google's servers.
+  It receives RPC requests, compiles the user program using the gc tool chain,
+  executes the user program, and returns the program output (or compilation
+  errors) as the RPC response.
+- A front end that runs on [[https://cloud.google.com/appengine/docs/go/][Google App Engine]].
+  It receives HTTP requests from the client and makes corresponding RPC requests to the back end.
+  It also does some caching.
 - A JavaScript client that implements the user interface and makes HTTP requests to the front end.
 
 
@@ -119,7 +124,8 @@
 program believes that time has passed, when in fact the sleep was nearly
 instantaneous.
 
-These changes to the scheduler can be found in [[https://golang.org/cl/73110043][`proc.c`]] and [[https://golang.org/cl/73110043][`time.goc`]].
+These changes to the scheduler can be found in [[https://golang.org/cl/73110043][`proc.c`]]
+and [[https://golang.org/cl/73110043][`time.goc`]].
 
 Fake time fixes the issue of resource exhaustion on the back end, but what
 about the program output? It would be odd to see a program that sleeps run to
@@ -234,7 +240,9 @@
 There are several implementations of the interface:
 
 - regular files and devices (such as `/dev/random`) are represented by [[https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go#L58][`fsysFile`]],
-- standard input, output, and error are instances of [[https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L216][`naclFile`]], which uses system calls to interact with the actual files (these are a playground program's only way to interact with the outside world),
+- standard input, output, and error are instances of [[https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L216][`naclFile`]],
+  which uses system calls to interact with the actual files (these are a playground
+  program's only way to interact with the outside world),
 - network sockets have their own implementation, discussed in the next section.
 
 
@@ -257,7 +265,8 @@
 and protocols, and so on.
 
 The implementation can be found in [[https://github.com/golang/go/blob/master/src/syscall/net_nacl.go][`net_nacl.go`]].
-A good place to start reading is [[https://github.com/golang/go/blob/master/src/syscall/net_nacl.go#L461][`netFile`]], the network socket implementation of the `fileImpl` interface.
+A good place to start reading is [[https://github.com/golang/go/blob/master/src/syscall/net_nacl.go#L461][`netFile`]],
+the network socket implementation of the `fileImpl` interface.
 
 
 * The front end
diff --git a/content/preview-of-go-version-1.article b/content/preview-of-go-version-1.article
index bb7d26f..48a9224 100644
--- a/content/preview-of-go-version-1.article
+++ b/content/preview-of-go-version-1.article
@@ -6,14 +6,42 @@
 
 * Introduction
 
-We want to be able to provide a stable base for people using Go.  People should be able to write Go programs and expect that they will continue to compile and run without change, on a timescale of years.  Similarly, people should be able to write books about Go, be able to say which version of Go the book is describing, and have that version number still be meaningful much later.  None of these properties is true for Go today.
+We want to be able to provide a stable base for people using Go.
+People should be able to write Go programs and expect that they will continue
+to compile and run without change,
+on a timescale of years.
+Similarly, people should be able to write books about Go,
+be able to say which version of Go the book is describing,
+and have that version number still be meaningful much later.
+None of these properties is true for Go today.
 
-We propose to issue a Go release early next year that will be called “Go version 1”, Go 1 for short, that will be the first Go release to be stable in this way.  Code that compiles in Go version 1 should, with few exceptions, continue to compile throughout the lifetime of that version, as we issue updates and bug fixes such as Go version 1.1, 1.2, and so on. It will also be maintained with fixes for bugs and security flaws even as other versions may evolve. Also, production environments such as Google App Engine will support it for an extended time.
+We propose to issue a Go release early next year that will be called “Go version 1”,
+Go 1 for short, that will be the first Go release to be stable in this way.
+Code that compiles in Go version 1 should,
+with few exceptions, continue to compile throughout the lifetime of that version,
+as we issue updates and bug fixes such as Go version 1.1, 1.2, and so on.
+It will also be maintained with fixes for bugs and security flaws even as
+other versions may evolve.
+Also, production environments such as Google App Engine will support it
+for an extended time.
 
-Go version 1 will be a stable language with stable libraries. Other than critical fixes, changes made to the library and packages for versions 1.1, 1.2 and so on may add functionality but will not break existing Go version 1 programs.
+Go version 1 will be a stable language with stable libraries.
+Other than critical fixes, changes made to the library and packages for versions 1.1,
+1.2 and so on may add functionality but will not break existing Go version 1 programs.
 
-Our goal is for Go 1 to be a stable version of today’s Go, not a wholesale rethinking of the language.  In particular, we are explicitly resisting any efforts to design new language features “by committee.”
+Our goal is for Go 1 to be a stable version of today’s Go,
+not a wholesale rethinking of the language.
+In particular, we are explicitly resisting any efforts to design new language
+features “by committee.”
 
-However, there are various changes to the Go language and packages that we have intended for some time and prototyped but have not deployed yet, primarily because they are significant and backwards-incompatible. If Go 1 is to be long-lasting, it is important that we plan, announce, implement, and test these changes as part of the preparation of Go 1, rather than delay them until after it is released and thereby introduce divergence that contradicts our goals.
+However, there are various changes to the Go language and packages that
+we have intended for some time and prototyped but have not deployed yet,
+primarily because they are significant and backwards-incompatible.
+If Go 1 is to be long-lasting, it is important that we plan,
+announce, implement, and test these changes as part of the preparation of Go 1,
+rather than delay them until after it is released and thereby introduce
+divergence that contradicts our goals.
 
-Today, we are publishing our preliminary [[https://docs.google.com/document/pub?id=1ny8uI-_BHrDCZv_zNBSthNKAMX_fR_0dc6epA6lztRE][plan for Go 1]] for feedback from the Go community.  If you have feedback, please reply to the [[http://groups.google.com/group/golang-nuts/browse_thread/thread/badc4f323431a4f6][thread on the golang-nuts mailing list]].
+Today, we are publishing our preliminary [[https://docs.google.com/document/pub?id=1ny8uI-_BHrDCZv_zNBSthNKAMX_fR_0dc6epA6lztRE][plan for Go 1]]
+for feedback from the Go community.
+If you have feedback, please reply to the [[http://groups.google.com/group/golang-nuts/browse_thread/thread/badc4f323431a4f6][thread on the golang-nuts mailing list]].
diff --git a/content/publishing-go-modules.article b/content/publishing-go-modules.article
index 8edc5e3..6036b70 100644
--- a/content/publishing-go-modules.article
+++ b/content/publishing-go-modules.article
@@ -97,9 +97,14 @@
 
 A semantic version has the form `vMAJOR.MINOR.PATCH`.
 
-- Increment the `MAJOR` version when you make a [[https://golang.org/doc/go1compat][backwards incompatible]] change to the public API of your module. This should only be done when absolutely necessary.
-- Increment the `MINOR` version when you make a backwards compatible change to the API, like changing dependencies or adding a new function, method, struct field, or type.
-- Increment the `PATCH` version after making minor changes that don't affect your module's public API or dependencies, like fixing a bug.
+- Increment the `MAJOR` version when you make a [[https://golang.org/doc/go1compat][backwards incompatible]]
+  change to the public API of your module.
+  This should only be done when absolutely necessary.
+- Increment the `MINOR` version when you make a backwards compatible change to the API,
+  like changing dependencies or adding a new function,
+  method, struct field, or type.
+- Increment the `PATCH` version after making minor changes that don't affect
+  your module's public API or dependencies, like fixing a bug.
 
 You can specify pre-release versions by appending a hyphen and dot separated
 identifiers (for example, `v1.0.1-alpha` or `v2.2.2-beta.2`). Normal releases
@@ -197,7 +202,9 @@
 The standard library's `strings` package is a prime example of maintaining
 backwards compatibility at the cost of API consistency.
 
-- [[https://godoc.org/strings#Split][`Split`]] slices a string into all substrings separated by a separator and returns a slice of the substrings between those separators.
+- [[https://godoc.org/strings#Split][`Split`]] slices a string into all
+  substrings separated by a separator and returns a slice of the substrings
+  between those separators.
 - [[https://godoc.org/strings#SplitN][`SplitN`]] can be used to control the number of substrings to return.
 
 However, [[https://godoc.org/strings#Replace][`Replace`]] took a count of how
diff --git a/content/qihoo.article b/content/qihoo.article
index 57994da..ccd16bc 100644
--- a/content/qihoo.article
+++ b/content/qihoo.article
@@ -46,20 +46,33 @@
 
 Here are a few tweaks we made and key take-aways:
 
-- Replace short connections with persistent ones (using a connection pool), to reduce creation of buffers and objects during communication.
+- Replace short connections with persistent ones (using a connection pool),
+  to reduce creation of buffers and objects during communication.
 - Use Objects and Memory pools appropriately, to reduce the load on the GC.
 
 .image qihoo/image00.png
 
-- Use a Task Pool, a mechanism with a group of long-lived goroutines consuming global task or message queues sent by connection goroutines, to replace short-lived goroutines.
+- Use a Task Pool, a mechanism with a group of long-lived goroutines consuming
+  global task or message queues sent by connection goroutines,
+  to replace short-lived goroutines.
 
-- Monitor and control goroutine numbers in the program. The lack of control can cause unbearable burden on the GC, imposed by surges in goroutines due to uninhibited acceptance of external requests, as RPC invocations sent to inner servers may block goroutines recently created.
+- Monitor and control goroutine numbers in the program.
+  The lack of control can cause unbearable burden on the GC,
+  imposed by surges in goroutines due to uninhibited acceptance of external requests,
+  as RPC invocations sent to inner servers may block goroutines recently created.
 
-- Remember to add [[https://golang.org/pkg/net/#Conn][read and write deadlines]] to connections when under a mobile network; otherwise, it may lead to goroutine blockage. Apply it properly and with caution when under a LAN network, otherwise your RPC communication efficiency will be hurt.
+- Remember to add [[https://golang.org/pkg/net/#Conn][read and write deadlines]]
+  to connections when under a mobile network;
+  otherwise, it may lead to goroutine blockage.
+  Apply it properly and with caution when under a LAN network,
+  otherwise your RPC communication efficiency will be hurt.
 
 - Use Pipeline (under Full Duplex feature of TCP) to enhance the communication efficiency of RPC framework.
 
-As a result, we successfully launched three iterations of our architecture, and two iterations of our RPC framework even with limited human resources. This can all attributed to the development convenience of Go. Below you can find the up-to-date system architecture:
+As a result, we successfully launched three iterations of our architecture,
+and two iterations of our RPC framework even with limited human resources.
+This can all attributed to the development convenience of Go.
+Below you can find the up-to-date system architecture:
 
 .image qihoo/image01.png
 
diff --git a/content/real-go-projects-smarttwitter-and-webgo.article b/content/real-go-projects-smarttwitter-and-webgo.article
index 912cf7e..2c79ac7 100644
--- a/content/real-go-projects-smarttwitter-and-webgo.article
+++ b/content/real-go-projects-smarttwitter-and-webgo.article
@@ -6,18 +6,66 @@
 
 * Introduction
 
-_This_week's_article_is_written_by_ [[http://www.hoisie.com/][_Michael_Hoisie_]]. _A_programmer_based_in_San_Francisco,_he_is_one_of_Go's_early_adopters_and_the_author_of_several_popular_Go_libraries._He_describes_his_experiences_using_Go:_
+_This_week's_article_is_written_by_ [[http://www.hoisie.com/][_Michael_Hoisie_]].
+_A_programmer_based_in_San_Francisco,_he_is_one_of_Go's_early_adopters_and_the_author_of_several_popular_Go_libraries._He_describes_his_experiences_using_Go:_
 
-I was introduced to Go by a post on [[http://news.ycombinator.com/][Hacker News]]. About an hour later I was hooked. At the time I was working at a web start-up, and had been developing internal testing apps in Python. Go offered speed, better concurrency support, and sane Unicode handling, so I was keen to port my programs to the language. At that time there wasn't an easy way to write web apps in Go, so I decided to build a simple web framework, [[http://github.com/hoisie/web.go][web.go]]. It was modeled after a popular Python framework, [[http://webpy.org/][web.py]], which I had worked with previously. While working on web.go I got involved in the Go community, submitted a bunch of bug reports, and hacked on some standard library packages (mainly [[https://golang.org/pkg/http/][http]] and [[https://golang.org/pkg/json/][json]]).
+I was introduced to Go by a post on [[http://news.ycombinator.com/][Hacker News]].
+About an hour later I was hooked. At the time I was working at a web start-up,
+and had been developing internal testing apps in Python.
+Go offered speed, better concurrency support,
+and sane Unicode handling, so I was keen to port my programs to the language.
+At that time there wasn't an easy way to write web apps in Go,
+so I decided to build a simple web framework,
+[[http://github.com/hoisie/web.go][web.go]].
+It was modeled after a popular Python framework,
+[[http://webpy.org/][web.py]], which I had worked with previously.
+While working on web.go I got involved in the Go community,
+submitted a bunch of bug reports, and hacked on some standard library packages
+(mainly [[https://golang.org/pkg/http/][http]] and [[https://golang.org/pkg/json/][json]]).
 
-After a few weeks I noticed that web.go was getting attention at Github. This was surprising because I'd never really promoted the project. I think there's a niche for simple, fast web applications, and I think Go can fill it.
+After a few weeks I noticed that web.go was getting attention at Github.
+This was surprising because I'd never really promoted the project.
+I think there's a niche for simple, fast web applications,
+and I think Go can fill it.
 
-One weekend I decided to write a simple Facebook application: it would re-post your Twitter status updates to your Facebook profile. There is an official Twitter application to do this, but it re-posts everything, creating noise in your Facebook feed. My application allowed you to filter retweets, mentions, hashtags, replies, and more. This turned into [[http://www.facebook.com/apps/application.php?id=135488932982][Smart Twitter]], which currently has nearly 90,000 users.
+One weekend I decided to write a simple Facebook application:
+it would re-post your Twitter status updates to your Facebook profile.
+There is an official Twitter application to do this,
+but it re-posts everything, creating noise in your Facebook feed.
+My application allowed you to filter retweets,
+mentions, hashtags, replies, and more.
+This turned into [[http://www.facebook.com/apps/application.php?id=135488932982][Smart Twitter]],
+which currently has nearly 90,000 users.
 
-The entire program is written in Go, and uses [[https://redis.io/][Redis]] as its storage back-end. It is very fast and robust. It currently processes about two dozen tweets per second, and makes heavy use of Go's channels. It runs on a single Virtual Private Server instance with 2GB of RAM, which has no problem handling the load. Smart Twitter uses very little CPU time, and is almost entirely memory-bound as the entire database is kept in memory. At any given time there are around 10 goroutines running concurrently: one accepting HTTP connections, another reading from the Twitter Streaming API, a couple for error handling, and the rest either processing web requests or re-posting incoming tweets.
+The entire program is written in Go, and uses [[https://redis.io/][Redis]]
+as its storage back-end.
+It is very fast and robust. It currently processes about two dozen tweets per second,
+and makes heavy use of Go's channels.
+It runs on a single Virtual Private Server instance with 2GB of RAM,
+which has no problem handling the load.
+Smart Twitter uses very little CPU time, and is almost entirely memory-bound
+as the entire database is kept in memory.
+At any given time there are around 10 goroutines running concurrently:
+one accepting HTTP connections, another reading from the Twitter Streaming API,
+a couple for error handling, and the rest either processing web requests
+or re-posting incoming tweets.
 
-Smart Twitter also spawned other open-source Go projects: [[http://github.com/hoisie/mustache.go][mustache.go]], [[http://github.com/hoisie/redis.go][redis.go]], and [[http://github.com/hoisie/twitterstream][twitterstream]].
+Smart Twitter also spawned other open-source Go projects:
+[[http://github.com/hoisie/mustache.go][mustache.go]],
+[[http://github.com/hoisie/redis.go][redis.go]],
+and [[http://github.com/hoisie/twitterstream][twitterstream]].
 
-I see a lot of work left to do on web.go. For instance, I'd like to add better support for streaming connections, websockets, route filters, better support in shared hosts, and improving the documentation. I recently left the start-up to do software freelancing, and I'm planning to use Go where possible. This means I'll probably use it as a back end for personal apps, as well as for clients that like working with cutting edge technology.
+I see a lot of work left to do on web.go.
+For instance, I'd like to add better support for streaming connections,
+websockets, route filters, better support in shared hosts,
+and improving the documentation.
+I recently left the start-up to do software freelancing,
+and I'm planning to use Go where possible.
+This means I'll probably use it as a back end for personal apps,
+as well as for clients that like working with cutting edge technology.
 
-Finally, I'd like to thank the Go team for all their effort. Go is a wonderful platform and I think it has a bright future. I hope to see the language grow around the needs of the community. There's a lot of interesting stuff happening in the community, and I look forward to seeing what people can hack together with the language.
+Finally, I'd like to thank the Go team for all their effort.
+Go is a wonderful platform and I think it has a bright future.
+I hope to see the language grow around the needs of the community.
+There's a lot of interesting stuff happening in the community,
+and I look forward to seeing what people can hack together with the language.
diff --git a/content/share-memory-by-communicating.article b/content/share-memory-by-communicating.article
index bd3a37e..01c7426 100644
--- a/content/share-memory-by-communicating.article
+++ b/content/share-memory-by-communicating.article
@@ -6,13 +6,28 @@
 
 * Introduction
 
-Traditional threading models (commonly used when writing Java, C++, and Python programs, for example) require the programmer to communicate between threads using shared memory. Typically, shared data structures are protected by locks, and threads will contend over those locks to access the data. In some cases, this is made easier by the use of thread-safe data structures such as Python's Queue.
+Traditional threading models (commonly used when writing Java,
+C++, and Python programs, for example) require the programmer to communicate
+between threads using shared memory.
+Typically, shared data structures are protected by locks,
+and threads will contend over those locks to access the data.
+In some cases, this is made easier by the use of thread-safe data structures
+such as Python's Queue.
 
-Go's concurrency primitives - goroutines and channels - provide an elegant and distinct means of structuring concurrent software. (These concepts have an [[https://swtch.com/~rsc/thread/][interesting history]] that begins with C. A. R. Hoare's [[http://www.usingcsp.com/][Communicating Sequential Processes]].) Instead of explicitly using locks to mediate access to shared data, Go encourages the use of channels to pass references to data between goroutines. This approach ensures that only one goroutine has access to the data at a given time. The concept is summarized in the document [[https://golang.org/doc/effective_go.html][Effective Go]] (a must-read for any Go programmer):
+Go's concurrency primitives - goroutines and channels - provide an elegant
+and distinct means of structuring concurrent software.
+(These concepts have an [[https://swtch.com/~rsc/thread/][interesting history]] that begins with C.
+A. R. Hoare's [[http://www.usingcsp.com/][Communicating Sequential Processes]].)
+Instead of explicitly using locks to mediate access to shared data,
+Go encourages the use of channels to pass references to data between goroutines.
+This approach ensures that only one goroutine has access to the data at a given time.
+The concept is summarized in the document [[https://golang.org/doc/effective_go.html][Effective Go]]
+(a must-read for any Go programmer):
 
 _Do_not_communicate_by_sharing_memory;_instead,_share_memory_by_communicating._
 
-Consider a program that polls a list of URLs. In a traditional threading environment, one might structure its data like so:
+Consider a program that polls a list of URLs.
+In a traditional threading environment, one might structure its data like so:
 
 	type Resource struct {
 	    url        string
@@ -59,9 +74,15 @@
 	    }
 	}
 
-This function is about a page long, and requires more detail to make it complete. It doesn't even include the URL polling logic (which, itself, would only be a few lines), nor will it gracefully handle exhausting the pool of Resources.
+This function is about a page long, and requires more detail to make it complete.
+It doesn't even include the URL polling logic (which,
+itself, would only be a few lines), nor will it gracefully handle exhausting
+the pool of Resources.
 
-Let's take a look at the same functionality implemented using Go idiom. In this example, Poller is a function that receives Resources to be polled from an input channel, and sends them to an output channel when they're done.
+Let's take a look at the same functionality implemented using Go idiom.
+In this example, Poller is a function that receives Resources to be polled
+from an input channel,
+and sends them to an output channel when they're done.
 
 	type Resource string
 
@@ -74,6 +95,11 @@
 	    }
 	}
 
-The delicate logic from the previous example is conspicuously absent, and our Resource data structure no longer contains bookkeeping data. In fact, all that's left are the important parts. This should give you an inkling as to the power of these simple language features.
+The delicate logic from the previous example is conspicuously absent,
+and our Resource data structure no longer contains bookkeeping data.
+In fact, all that's left are the important parts.
+This should give you an inkling as to the power of these simple language features.
 
-There are many omissions from the above code snippets. For a walkthrough of a complete, idiomatic Go program that uses these ideas, see the Codewalk [[https://golang.org/doc/codewalk/sharemem/][_Share_Memory_By_Communicating_]].
+There are many omissions from the above code snippets.
+For a walkthrough of a complete, idiomatic Go program that uses these ideas,
+see the Codewalk [[https://golang.org/doc/codewalk/sharemem/][_Share_Memory_By_Communicating_]].
diff --git a/content/spotlight-on-external-go-libraries.article b/content/spotlight-on-external-go-libraries.article
index 8747a1d..ef7c810 100644
--- a/content/spotlight-on-external-go-libraries.article
+++ b/content/spotlight-on-external-go-libraries.article
@@ -6,17 +6,53 @@
 
 * Introduction
 
-While the Go authors have been working hard at improving Go's standard library, the greater community has created a growing ecosystem of external libraries. In this post we look at some popular Go libraries and how they can be used.
+While the Go authors have been working hard at improving Go's standard library,
+the greater community has created a growing ecosystem of external libraries.
+In this post we look at some popular Go libraries and how they can be used.
  
-[[http://labix.org/mgo][Mgo]] (pronounced "mango") is a MongoDB database driver. [[http://www.mongodb.org/][MongoDB]] is a [[http://en.wikipedia.org/wiki/Document-oriented_database][document-oriented database]] with a long list of features suitable for [[http://www.mongodb.org/display/DOCS/Use%2BCases][a broad range of uses]]. The mgo package provides a rich, idiomatic Go API for working with MongoDB, from basic operations such as inserting and updating records to the more advanced [[http://www.mongodb.org/display/DOCS/MapReduce][MapReduce]] and [[http://www.mongodb.org/display/DOCS/GridFS][GridFS]] features. Mgo has a bunch of cool features including automated cluster discovery and result pre-fetching - see the [[http://labix.org/mgo][mgo homepage]] for details and example code. For working with large data sets Go, MongoDB, and mgo are a powerful combination.
+[[http://labix.org/mgo][Mgo]] (pronounced "mango") is a MongoDB database driver.
+[[http://www.mongodb.org/][MongoDB]] is a [[http://en.wikipedia.org/wiki/Document-oriented_database][document-oriented database]]
+with a long list of features suitable for [[http://www.mongodb.org/display/DOCS/Use%2BCases][a broad range of uses]].
+The mgo package provides a rich, idiomatic Go API for working with MongoDB,
+from basic operations such as inserting and updating records to the more
+advanced [[http://www.mongodb.org/display/DOCS/MapReduce][MapReduce]] and
+[[http://www.mongodb.org/display/DOCS/GridFS][GridFS]] features.
+Mgo has a bunch of cool features including automated cluster discovery and
+result pre-fetching - see the [[http://labix.org/mgo][mgo homepage]] for
+details and example code.
+For working with large data sets Go, MongoDB,
+and mgo are a powerful combination.
  
-[[https://github.com/dchest/authcookie][Authcookie]] is a web library for generating and verifying user authentication cookies. It allows web servers to hand out cryptographically secure tokens tied to a specific user that will expire after a specified time period. It has a simple API that makes it straightforward to add authentication to existing web applications. See the [[https://github.com/dchest/authcookie/blob/master/README.md][README file]] for details and example code.
+[[https://github.com/dchest/authcookie][Authcookie]] is a web library for
+generating and verifying user authentication cookies.
+It allows web servers to hand out cryptographically secure tokens tied to
+a specific user that will expire after a specified time period.
+It has a simple API that makes it straightforward to add authentication
+to existing web applications.
+See the [[https://github.com/dchest/authcookie/blob/master/README.md][README file]]
+for details and example code.
  
-[[http://code.google.com/p/go-charset][Go-charset]] provides support for converting between Go's standard UTF-8 encoding and a variety of character sets. The go-charset package implements a translating io.Reader and io.Writer so you can wrap existing Readers and Writers (such as network connections or file descriptors), making it easy to communicate with systems that use other character encodings.
+[[http://code.google.com/p/go-charset][Go-charset]] provides support for
+converting between Go's standard UTF-8 encoding and a variety of character sets.
+The go-charset package implements a translating io.Reader and io.Writer
+so you can wrap existing Readers and Writers (such as network connections
+or file descriptors),
+making it easy to communicate with systems that use other character encodings.
  
-[[https://github.com/madari/go-socket.io][Go-socket.io]] is a Go implementation of [[http://socket.io/][Socket.IO]], a client/server API that allows web servers to push messages to web browsers. Depending on the capabilities of the user's browser, Socket.IO uses the best transport for the connection, be it modern websockets, AJAX long polling, or some [[http://socket.io/#transports][other mechanism]]. Go-socket.io bridges the gap between Go servers and rich JavaScript clients for a wide range of browsers. To get a feel for go-socket.io see the [[https://github.com/madari/go-socket.io/blob/master/example/example.go][chat server example]].
+[[https://github.com/madari/go-socket.io][Go-socket.io]] is a Go implementation
+of [[http://socket.io/][Socket.IO]],
+a client/server API that allows web servers to push messages to web browsers.
+Depending on the capabilities of the user's browser,
+Socket.IO uses the best transport for the connection,
+be it modern websockets, AJAX long polling,
+or some [[http://socket.io/#transports][other mechanism]].
+Go-socket.io bridges the gap between Go servers and rich JavaScript clients
+for a wide range of browsers.
+To get a feel for go-socket.io see the [[https://github.com/madari/go-socket.io/blob/master/example/example.go][chat server example]].
  
-It's worth mentioning that these packages are [[https://golang.org/cmd/goinstall/][goinstallable]]. With an up-to-date Go [[https://golang.org/doc/install.html][installation]] you can install them all with a single command:
+It's worth mentioning that these packages are [[https://golang.org/cmd/goinstall/][goinstallable]].
+With an up-to-date Go [[https://golang.org/doc/install.html][installation]]
+you can install them all with a single command:
 	 
 	goinstall launchpad.net/mgo \
 	    github.com/dchest/authcookie \
@@ -34,8 +70,11 @@
 	)
 
  
-Also, as they are now a part of the local Go system, we can inspect their documentation with [[https://golang.org/cmd/godoc/][godoc]]:
+Also, as they are now a part of the local Go system,
+we can inspect their documentation with [[https://golang.org/cmd/godoc/][godoc]]:
 	 
 	godoc launchpad.net/mgo Database # see docs for Database type
  
-Of course, this is just the tip of the iceberg; there are more great Go libraries listed on the [[http://godashboard.appspot.com/package][package dashboard]] and many more to come.
+Of course, this is just the tip of the iceberg;
+there are more great Go libraries listed on the [[http://godashboard.appspot.com/package][package dashboard]]
+and many more to come.
diff --git a/content/survey2016-results.article b/content/survey2016-results.article
index 1c75f56..b4092c4 100644
--- a/content/survey2016-results.article
+++ b/content/survey2016-results.article
@@ -21,7 +21,8 @@
 
 We also asked about the kinds of programs people write in Go.
 63% of respondents write command-line programs, 60% write API or RPC services, and 52% write web services.
-Like in the previous question, most made multiple choices, with 85% choosing two or more and 72% choosing three or more.
+Like in the previous question, most made multiple choices,
+with 85% choosing two or more and 72% choosing three or more.
 
 
 We asked about people’s expertise and preference among programming languages.
@@ -87,26 +88,33 @@
 Users most agreed that Go’s performance meets their needs (57:1 ratio agree versus disagree),
 that they are able to quickly find answers to their questions (20:1),
 and that they are able to effectively use Go’s concurrency features (14:1).
-On the other hand, users least agreed that they are able to effectively debug uses of Go’s concurrency features (2.7:1).
+On the other hand, users least agreed that they are able to effectively
+debug uses of Go’s concurrency features (2.7:1).
 
 
 Users mostly agreed that they were able to quickly find libraries they need (7.5:1).
 When asked what libraries are still missing, the most common request by far was a library for writing GUIs.
 Another popular topic was requests around data processing, analytics, and numerical and scientific computing.
 
-Of the 30% of users who suggested ways to improve Go’s documentation, the most common suggestion by far was more examples.
+Of the 30% of users who suggested ways to improve Go’s documentation,
+the most common suggestion by far was more examples.
 
-The primary sources for Go news are the Go blog, Reddit’s /r/golang and Twitter; there may be some bias here since these are also how the survey was announced.
+The primary sources for Go news are the Go blog,
+Reddit’s /r/golang and Twitter;
+there may be some bias here since these are also how the survey was announced.
 
-The primary sources for finding answers to Go questions are the Go web site, Stack Overflow, and reading source code directly.
+The primary sources for finding answers to Go questions are the Go web site,
+Stack Overflow, and reading source code directly.
 
 .html survey2016/effective.html
 
 * The Go Project
 
 55% of respondents expressed interest in contributing in some way to the Go community and projects.
-Unfortunately, relatively few agreed that they felt welcome to do so (3.3:1) and even fewer felt that the process was clear (1.3:1).
-In 2017, we intend to work on improving the contribution process and to continue to work to make all contributors feel welcome.
+Unfortunately, relatively few agreed that they felt welcome to do so (3.3:1)
+and even fewer felt that the process was clear (1.3:1).
+In 2017, we intend to work on improving the contribution process and to
+continue to work to make all contributors feel welcome.
 
 Respondents agree that they are confident in the leadership of the Go project (9:1),
 but they agree much less that the project leadership understands their needs (2.6:1),
@@ -128,7 +136,8 @@
 In particular, India, China, and Japan each accounted for about 5% of the site visits to golang.org in 2016
 but only 3%, 2%, and 1% of survey responses.
 
-An important part of a community is making everyone feel welcome, especially people from under-represented demographics.
+An important part of a community is making everyone feel welcome,
+especially people from under-represented demographics.
 We asked an optional question about identification across a few diversity groups.
 37% of respondents left the question blank and 12% of respondents chose “I prefer not to answer”,
 so we cannot make many broad conclusions from the data.
diff --git a/content/survey2018-results.article b/content/survey2018-results.article
index 4830c0f..5ba4a1f 100644
--- a/content/survey2018-results.article
+++ b/content/survey2018-results.article
@@ -8,26 +8,51 @@
 * Thank you
 .html survey2018/style.html
 
-This post summarizes the results of our 2018 user survey and draws comparisons between the results of our prior surveys from [[https://blog.golang.org/survey2016-results][2016]] and [[https://blog.golang.org/survey2017-results][2017]].
+This post summarizes the results of our 2018 user survey and draws comparisons
+between the results of our prior surveys from [[https://blog.golang.org/survey2016-results][2016]]
+and [[https://blog.golang.org/survey2017-results][2017]].
 
-This year we had 5,883 survey respondents from 103 different countries. We are grateful to everyone who provided their feedback through this survey to help shape the future of Go. Thank you!
+This year we had 5,883 survey respondents from 103 different countries.
+We are grateful to everyone who provided their feedback through this survey
+to help shape the future of Go. Thank you!
 
 * Summary of findings
 
-- For the first time, *half*of*survey*respondents*are*now*using*Go*as*part*of*their*daily*routine*. This year also saw significant increases in the number of respondents who develop in Go as part of their jobs and use Go outside of work responsibilities.
-- The most *common*uses*for*Go*remain*API/RPC*services*and*CLI*tools*. Automation tasks, while not as common as CLI tools and API services, are a fast-growing area for Go.
-- *Web*development*remains*the*most*common*domain* that survey respondents work in, but *DevOps*showed*the*highest*year-over-year*growth* and is now the second most common domain.
-- A large majority of survey respondents said *Go*is*their*most-preferred*programming*language*, despite generally feeling less proficient with it than at least one other language.
+- For the first time, *half*of*survey*respondents*are*now*using*Go*as*part*of*their*daily*routine*.
+  This year also saw significant increases in the number of respondents who
+  develop in Go as part of their jobs and use Go outside of work responsibilities.
+- The most *common*uses*for*Go*remain*API/RPC*services*and*CLI*tools*.
+  Automation tasks, while not as common as CLI tools and API services,
+  are a fast-growing area for Go.
+- *Web*development*remains*the*most*common*domain* that survey respondents work in,
+  but *DevOps*showed*the*highest*year-over-year*growth* and is now the second most common domain.
+- A large majority of survey respondents said *Go*is*their*most-preferred*programming*language*,
+  despite generally feeling less proficient with it than at least one other language.
 - *VS*Code*and*GoLand*are*surging*in*popularity* and are now the most popular code editors among survey respondents.
-- Highlighting the portable nature of Go, *many*Go*developers*use*more*than*one*primary*OS* for development. Linux and macOS are particularly popular, with a large majority of survey respondents using one or both of these operating systems to write Go code.
-- Survey respondents appear to be *shifting*away*from*on-prem*Go*deployments* and moving towards containers and serverless cloud deployments.
-- The majority of respondents said they feel welcome in the Go community, and most ideas for improving the Go community specifically focus on *improving*the*experience*of*newcomers*.
+- Highlighting the portable nature of Go,
+  *many*Go*developers*use*more*than*one*primary*OS* for development.
+  Linux and macOS are particularly popular,
+  with a large majority of survey respondents using one or both of these operating
+  systems to write Go code.
+- Survey respondents appear to be *shifting*away*from*on-prem*Go*deployments*
+  and moving towards containers and serverless cloud deployments.
+- The majority of respondents said they feel welcome in the Go community,
+  and most ideas for improving the Go community specifically focus on *improving*the*experience*of*newcomers*.
 
 Read on for all of the details.
 
 * Programming background
 
-This year's results show a significant increase in the number of survey respondents who are paid to write Go as part of their jobs (68% → 72%), continuing a year-over-year trend that has been growing since our first survey in 2016. We also see an increase in the number of respondents who program in Go outside of work (64% → 70%). For the first time, the number of survey respondents who write in Go as part of their daily routine reached 50% (up from 44% in 2016). These findings suggests companies are continuing to embrace Go for professional software development at a consistent pace, and that Go's general popularity with developers remains strong.
+This year's results show a significant increase in the number of survey
+respondents who are paid to write Go as part of their jobs (68% → 72%),
+continuing a year-over-year trend that has been growing since our first survey in 2016.
+We also see an increase in the number of respondents who program in Go outside
+of work (64% → 70%).
+For the first time, the number of survey respondents who write in Go as
+part of their daily routine reached 50% (up from 44% in 2016).
+These findings suggests companies are continuing to embrace Go for professional
+software development at a consistent pace,
+and that Go's general popularity with developers remains strong.
 
 #This year we saw an 8-point increase in the number of respondents who program in other languages at work. The majority of these developers (55%) still program in Go as part of their daily routine, and an additional 31% program in Go weekly. This suggests there is a sizable (and growing) audience of Go developers whose work involves switching between multiple languages; , and may be dealing with a difficult mental context switch due to syntactic and semantic language differences. Indeed, participants reported that one of their challenges to using Go was "differences from familiar languages/ecosystems", as we'll discuss in the _Attitudes_towards_Go_ section below.
 
@@ -42,21 +67,67 @@
 #.image survey2018/fig3.svg _ 600
 #.caption Figure 3
 
-To better understand where developers use Go, we broke responses down into three groups: 1) people who are using Go both in and outside of work, 2) people who use Go professionally but not outside of work, and 3) people who only write Go outside of their job responsibilities. Nearly half (46%) of respondents write Go code both professionally and on their own time (a 10-point increase since 2017), while the remaining respondents are closely split between either only writing Go at work, or only writing Go outside of work. The large percentage of respondents who both use Go at work and choose to use it outside of work suggests that the language appeals to developers who do not view software engineering as a day job: they also choose to hack on code outside of work responsibilities, and (as evidenced by 85% of respondents saying they'd prefer Go for their next project, see section _Attitudes_towards_Go_ below) Go is the top language they'd prefer to use for these non-work-related projects.
+To better understand where developers use Go,
+we broke responses down into three groups:
+1) people who are using Go both in and outside of work,
+2) people who use Go professionally but not outside of work,
+and 3) people who only write Go outside of their job responsibilities.
+Nearly half (46%) of respondents write Go code both professionally and on
+their own time (a 10-point increase since 2017),
+while the remaining respondents are closely split between either only writing Go at work,
+or only writing Go outside of work.
+The large percentage of respondents who both use Go at work and choose to
+use it outside of work suggests that the language appeals to developers
+who do not view software engineering as a day job:
+they also choose to hack on code outside of work responsibilities,
+and (as evidenced by 85% of respondents saying they'd prefer Go for their next project,
+see section _Attitudes_towards_Go_ below) Go is the top language they'd
+prefer to use for these non-work-related projects.
 
 .image survey2018/fig4.svg _ 600
 #.caption Figure 4
 
-When asked how long they've been using Go, participants' answers are strongly trending upward over time, with a higher percentage of responses in the 2-4 and 4+ year buckets each year. This is expected for a newer programming language, and we're glad to see that the percentage of respondents who are new to Go is dropping more slowly than the percentage of respondents who have been using Go for 2+ years is increasing, as this suggests that developers are not dropping out of the ecosystem after initially learning the language.
+When asked how long they've been using Go,
+participants' answers are strongly trending upward over time,
+with a higher percentage of responses in the 2-4 and 4+ year buckets each year.
+This is expected for a newer programming language,
+and we're glad to see that the percentage of respondents who are new to
+Go is dropping more slowly than the percentage of respondents who have been
+using Go for 2+ years is increasing,
+as this suggests that developers are not dropping out of the ecosystem after
+initially learning the language.
 
 .image survey2018/fig5.svg _ 600
 #.caption Figure 5
 
-As in prior years, Go ranks at the top of respondents' preferred languages and languages in which they have expertise. A majority of respondents (69%) claimed expertise in 5 different languages, highlighting that their attitudes towards Go are influenced by experiences with other programming stacks. The charts below are sorted by the number of respondents who ranked each language as their most preferred/understood (the darkest blue bars), which highlights three interesting bits: 
+As in prior years, Go ranks at the top of respondents' preferred languages
+and languages in which they have expertise.
+A majority of respondents (69%) claimed expertise in 5 different languages,
+highlighting that their attitudes towards Go are influenced by experiences
+with other programming stacks.
+The charts below are sorted by the number of respondents who ranked each
+language as their most preferred/understood (the darkest blue bars),
+which highlights three interesting bits:
 
-- While about ⅓ of respondents consider Go to be the language in which they have the most expertise, twice that many respondents consider it their most preferred programming language. So even though many respondents feel they haven't become as proficient with Go as with some other language, they still frequently prefer to develop with Go.
-- Few survey respondents rank Rust as a language in which they have expertise (6.8%), yet 19% rank it as a top preferred language, indicating a high level of interest in Rust among this audience.
-- Only three languages have more respondents who say they prefer the language than say they have expertise with it: Rust (2.41:1 ratio of preference:expertise), Kotlin (1.95:1), and Go (1.02:1). Higher preference than expertise implies interest—but little direct experience—in a language, while lower preference than expertise numbers suggests barriers to proficient use. Ratios near 1.0 suggest that most developers are able to work effectively _and_ enjoyably with a given language. This data is corroborated by [[https://insights.stackoverflow.com/survey/2018/#most-loved-dreaded-and-wanted][Stack Overflow's 2018 developer survey]], which also found Rust, Kotlin, and Go to be among the most-preferred programming languages.
+- While about ⅓ of respondents consider Go to be the language in which
+  they have the most expertise,
+  twice that many respondents consider it their most preferred programming language.
+  So even though many respondents feel they haven't become as proficient with
+  Go as with some other language,
+  they still frequently prefer to develop with Go.
+- Few survey respondents rank Rust as a language in which they have expertise (6.8%),
+  yet 19% rank it as a top preferred language,
+  indicating a high level of interest in Rust among this audience.
+- Only three languages have more respondents who say they prefer the language
+  than say they have expertise with it:
+  Rust (2.41:1 ratio of preference:expertise),
+  Kotlin (1.95:1), and Go (1.02:1).
+  Higher preference than expertise implies interest—but little direct experience—in a language,
+  while lower preference than expertise numbers suggests barriers to proficient use.
+  Ratios near 1.0 suggest that most developers are able to work effectively
+  _and_ enjoyably with a given language.
+  This data is corroborated by [[https://insights.stackoverflow.com/survey/2018/#most-loved-dreaded-and-wanted][Stack Overflow's 2018 developer survey]],
+  which also found Rust, Kotlin, and Go to be among the most-preferred programming languages.
 
 .image survey2018/fig6.svg _ 600
 #.caption Figure 6
@@ -67,40 +138,108 @@
 
 * Development domains
 
-Survey respondents reported working on a median of three different domains, with a large majority (72%) working in 2-5 different areas. Web development is the most prevalent at 65%, and it increased its dominance as the primary area survey respondents work in (up from 61% last year): web development has been the most common domain for Go development since 2016. This year DevOps noticeably increased, from 36% to 41% of respondents, taking over the number two spot from Systems Programming. We did not find any domains with lower usage in 2018 than in 2017, suggesting that respondents are adopting Go for a wider variety of projects, rather than shifting usage from one domain to another.
+Survey respondents reported working on a median of three different domains,
+with a large majority (72%) working in 2-5 different areas.
+Web development is the most prevalent at 65%,
+and it increased its dominance as the primary area survey respondents work
+in (up from 61% last year):
+web development has been the most common domain for Go development since 2016.
+This year DevOps noticeably increased, from 36% to 41% of respondents,
+taking over the number two spot from Systems Programming.
+We did not find any domains with lower usage in 2018 than in 2017,
+suggesting that respondents are adopting Go for a wider variety of projects,
+rather than shifting usage from one domain to another.
 
 .image survey2018/fig8.svg _ 600
 #.caption Figure 8
 
-Since 2016, the top two uses of Go have been writing API/RPC services and developing CLI applications. While CLI usage has remained stable at 63% for three years, API/RPC usage has increased from 60% in 2016 to 65% in 2017 to 73% today. These domains play to core strengths of Go and are both central to cloud-native software development, so we expect them to remain two of the primary scenarios for Go developers into the future. The percentage of respondents who write web services that directly return HTML has steadily dropped while API/RPC usage has increased, suggesting some migration to the API/RPC model for web services. Another year-over-year trend suggests that automation is also a growing area for Go, with 38% of respondents now using Go for scripts and automation tasks (up from 31% in 2016).
+Since 2016, the top two uses of Go have been writing API/RPC services and
+developing CLI applications.
+While CLI usage has remained stable at 63% for three years,
+API/RPC usage has increased from 60% in 2016 to 65% in 2017 to 73% today.
+These domains play to core strengths of Go and are both central to cloud-native
+software development,
+so we expect them to remain two of the primary scenarios for Go developers into the future.
+The percentage of respondents who write web services that directly return
+HTML has steadily dropped while API/RPC usage has increased,
+suggesting some migration to the API/RPC model for web services.
+Another year-over-year trend suggests that automation is also a growing area for Go,
+with 38% of respondents now using Go for scripts and automation tasks (up from 31% in 2016).
 
 .image survey2018/fig9.svg _ 600
 #.caption Figure 9
 
-To better understand the contexts in which developers are using Go, we added a question about Go adoption across different industries. Perhaps unsurprisingly for a relatively new language, over half of survey respondents work in companies in the _Internet/web_services_ and _Software_ categories (i.e., tech companies). The only other industries with >3% responses were _Finance,_banking,_or_insurance_ and _Media,_advertising,_publishing,_or_entertainment_. (In the chart below, we've condensed all of the categories with response rates below 3% into the "Other" category.) We'll continue tracking Go's adoption across industries to better understand developer needs outside of technology companies.
+To better understand the contexts in which developers are using Go,
+we added a question about Go adoption across different industries.
+Perhaps unsurprisingly for a relatively new language,
+over half of survey respondents work in companies in the _Internet/web_services_
+and _Software_ categories (i.e., tech companies).
+The only other industries with >3% responses were _Finance,_banking,_or_insurance_
+and _Media,_advertising,_publishing,_or_entertainment_.
+(In the chart below, we've condensed all of the categories with response
+rates below 3% into the "Other" category.) We'll continue tracking Go's
+adoption across industries to better understand developer needs outside
+of technology companies.
 
 .image survey2018/fig10.svg _ 600
 #.caption Figure 10
 
 * Attitudes towards Go
 
-This year we added a question asking "How likely are you to recommend Go to a friend or colleague?" to calculate our [[https://en.wikipedia.org/wiki/Net_Promoter][Net Promoter Score]]. This score attempts to measure how many more "promoters" a product has than "detractors" and ranges from -100 to 100; a positive value suggests most people are likely to recommend using a product, while negative values suggest most people are likely to recommend against using it. Our 2018 score is 61 (68% promoters - 7% detractors) and will serve as a baseline to help us gauge community sentiment towards the Go ecosystem over time.
+This year we added a question asking "How likely are you to recommend Go
+to a friend or colleague?" to calculate our [[https://en.wikipedia.org/wiki/Net_Promoter][Net Promoter Score]].
+This score attempts to measure how many more "promoters" a product has than
+"detractors" and ranges from -100 to 100;
+a positive value suggests most people are likely to recommend using a product,
+while negative values suggest most people are likely to recommend against using it.
+Our 2018 score is 61 (68% promoters - 7% detractors) and will serve as a
+baseline to help us gauge community sentiment towards the Go ecosystem over time.
 
 .image survey2018/fig11.svg _ 600
 #.caption Figure 11
 
-In addition to NPS, we asked several questions about developer satisfaction with Go. Overall, survey respondents indicated a high level of satisfaction, consistent with prior years. Large majorities say they are happy with Go (89%), would prefer to use Go for their next project (85%), and feel that it is working well for their team (66%), while a plurality feel that Go is at least somewhat critical to their company's success (44%). While all of these metrics showed an increase in 2017, they remained mostly stable this year. (The wording of the first question changed in 2018 from "_I_would_recommend_using_Go_to_others_" to "_Overall,_I'm_happy_with_Go_", so those results are not directly comparable.) 
+In addition to NPS, we asked several questions about developer satisfaction with Go.
+Overall, survey respondents indicated a high level of satisfaction,
+consistent with prior years.
+Large majorities say they are happy with Go (89%),
+would prefer to use Go for their next project (85%),
+and feel that it is working well for their team (66%),
+while a plurality feel that Go is at least somewhat critical to their company's success (44%).
+While all of these metrics showed an increase in 2017,
+they remained mostly stable this year.
+(The wording of the first question changed in 2018 from "_I_would_recommend_using_Go_to_others_"
+to "_Overall,_I'm_happy_with_Go_",
+so those results are not directly comparable.)
 
 #We also looked at only the respondents who _strongly_ agreed with each statement and found the same pattern: increases in 2017, stabilizing in 2018.
 
 .image survey2018/fig12.svg _ 600
 #.caption Figure 12
 
-Given the strong sentiment towards preferring Go for future development, we want to understand what prevents developers from doing so. These remained largely unchanged since last year: about ½ of survey respondents work on existing projects written in other languages, and ⅓ work on a team or project that prefers to use a different language. Missing language features and libraries round out the most common reasons respondents did not use Go more. We also asked about the biggest challenges developers face while using Go; unlike most of our survey questions, respondents could type in anything they wished to answer this question. We analyzed the results via machine learning to identify common themes and counting the number of responses that supported each theme. The top three major challenges we identified are:
+Given the strong sentiment towards preferring Go for future development,
+we want to understand what prevents developers from doing so.
+These remained largely unchanged since last year:
+about ½ of survey respondents work on existing projects written in other languages,
+and ⅓ work on a team or project that prefers to use a different language.
+Missing language features and libraries round out the most common reasons
+respondents did not use Go more.
+We also asked about the biggest challenges developers face while using Go;
+unlike most of our survey questions, respondents could type in anything
+they wished to answer this question.
+We analyzed the results via machine learning to identify common themes and
+counting the number of responses that supported each theme.
+The top three major challenges we identified are:
 
-- Package management (e.g., "Keeping up with vendoring", "dependency / packet [sic] management / vendoring not unified")
-- Differences from more familiar programming languages (e.g., "syntax close to C-languages with slightly different semantics makes me look up references somewhat more than I'd like", "coworkers who come from non-Go backgrounds trying to use Go as a version of their previous language but with channels and Goroutines")
-- Lack of generics (e.g., "Lack of generics makes it difficult to persuade people who have not tried Go that they would find it efficient.", "Hard to build richer abstractions (want generics)")
+- Package management (e.g., "Keeping up with vendoring",
+  "dependency / packet [sic] management / vendoring not unified")
+- Differences from more familiar programming languages (e.g.,
+  "syntax close to C-languages with slightly different semantics makes me
+  look up references somewhat more than I'd like",
+  "coworkers who come from non-Go backgrounds trying to use Go as a version
+  of their previous language but with channels and Goroutines")
+- Lack of generics (e.g., "Lack of generics makes it difficult to persuade
+  people who have not tried Go that they would find it efficient.",
+  "Hard to build richer abstractions (want generics)")
 
 .image survey2018/fig13.svg _ 600
 #.caption Figure 13
@@ -108,11 +247,31 @@
 .image survey2018/fig14.svg _ 600
 #.caption Figure 14
 
-This year we added several questions about developer satisfaction with different aspects of Go. Survey respondents were very satisfied with Go applications' CPU performance (46:1, meaning 46 respondents said they were satisfied for every 1 respondent who said they were not satisfied), build speed (37:1), and application memory utilization (32:1). Responses for application debuggability (3.2:1)  and binary size (6.4:1), however, suggest room for improvement.
+This year we added several questions about developer satisfaction with different aspects of Go.
+Survey respondents were very satisfied with Go applications' CPU performance (46:1,
+meaning 46 respondents said they were satisfied for every 1 respondent who
+said they were not satisfied),
+build speed (37:1), and application memory utilization (32:1).
+Responses for application debuggability (3.2:1)  and binary size (6.4:1),
+however, suggest room for improvement.
 
-The dissatisfaction with binary size largely comes from developers building CLIs, only 30% of whom are satisfied with the size of Go's generated binaries. For all other types of applications, however, developer satisfaction was > 50%, and binary size was consistently ranked at the bottom of the list of important factors.
+The dissatisfaction with binary size largely comes from developers building CLIs,
+only 30% of whom are satisfied with the size of Go's generated binaries.
+For all other types of applications, however,
+developer satisfaction was > 50%, and binary size was consistently ranked
+at the bottom of the list of important factors.
 
-Debuggability, conversely, stands out when we look at how respondents ranked the importance of each aspect; 44% of respondents ranked debuggability as their most or second-most important aspect, but only 36% were satisfied with the current state of Go debugging. Debuggability was consistently rated about as important as memory usage and build speed but with significantly lower satisfaction levels, and this pattern held true regardless of the type of software respondents were building. The two most recent Go releases, Go 1.11 and 1.12, both contained significant improvements to debuggability. We plan to investigate how developers debug Go applications in more depth this year, with a goal of improving the overall debugging experience for Go developers.
+Debuggability, conversely, stands out when we look at how respondents ranked
+the importance of each aspect;
+44% of respondents ranked debuggability as their most or second-most important aspect,
+but only 36% were satisfied with the current state of Go debugging.
+Debuggability was consistently rated about as important as memory usage
+and build speed but with significantly lower satisfaction levels,
+and this pattern held true regardless of the type of software respondents were building.
+The two most recent Go releases, Go 1.11 and 1.12,
+both contained significant improvements to debuggability.
+We plan to investigate how developers debug Go applications in more depth this year,
+with a goal of improving the overall debugging experience for Go developers.
 
 .image survey2018/fig15.svg _ 600
 #.caption Figure 15
@@ -122,14 +281,42 @@
 
 * Development environments
 
-We asked respondents which operating systems they primarily use when writing Go code. A majority (65%) of respondents said they use Linux, 50% use macOS, and 18% use Windows, consistent with last year. This year we also looked at how many respondents develop on multiple OSes vs. a single OS. Linux and macOS remain the clear leaders, with 81% of respondents developing on some mix of these two systems. Only 3% of respondents evenly split their time between all three OSes. Overall, 41% of respondents use multiple operating systems for Go development, highlighting the cross-platform nature of Go.
+We asked respondents which operating systems they primarily use when writing Go code.
+A majority (65%) of respondents said they use Linux,
+50% use macOS, and 18% use Windows, consistent with last year.
+This year we also looked at how many respondents develop on multiple OSes vs. a single OS.
+Linux and macOS remain the clear leaders,
+with 81% of respondents developing on some mix of these two systems.
+Only 3% of respondents evenly split their time between all three OSes.
+Overall, 41% of respondents use multiple operating systems for Go development,
+highlighting the cross-platform nature of Go.
 
 .image survey2018/fig16.svg _ 600
 #.caption Figure 16
 
-Last year, VS Code edged out Vim as the most popular Go editor among survey respondents. This year it significantly expanded its lead to become the preferred editor for over ⅓ of our survey respondents (up from 27% last year). GoLand also experienced strong growth and is now the second most-preferred editor at 22%, swapping places with Vim (down to 17%). The surging popularity of VS Code and GoLand appear to be coming at the expense of Sublime Text and Atom. Vim also saw the number of respondents ranking it their top choice drop, but it remains the most popular second-choice editor at 14%. Interestingly, we found no differences in the level of satisfaction respondents reported for their editor(s) of choice.
+Last year, VS Code edged out Vim as the most popular Go editor among survey respondents.
+This year it significantly expanded its lead to become the preferred editor
+for over ⅓ of our survey respondents (up from 27% last year).
+GoLand also experienced strong growth and is now the second most-preferred editor at 22%,
+swapping places with Vim (down to 17%).
+The surging popularity of VS Code and GoLand appear to be coming at the
+expense of Sublime Text and Atom.
+Vim also saw the number of respondents ranking it their top choice drop,
+but it remains the most popular second-choice editor at 14%.
+Interestingly, we found no differences in the level of satisfaction respondents
+reported for their editor(s) of choice.
 
-We also asked respondents what would most improve Go support in their preferred editor. Like the "biggest challenge" question above, participants could write in their own response rather than select from a multiple-choice list. A thematic analysis on the responses revealed that _improved_debugging_support_ (e.g., "Live debugging", "Integrated debugging", "Even better debugging") was the most-common request, followed by _improved_code_completion_ (e.g., "autocomplete performance and quality", "smarter autocomplete"). Other requests include better integration with Go's CLI toolchain, better support for modules/packages, and general performance improvements.
+We also asked respondents what would most improve Go support in their preferred editor.
+Like the "biggest challenge" question above,
+participants could write in their own response rather than select from a
+multiple-choice list.
+A thematic analysis on the responses revealed that _improved_debugging_support_ (e.g.,
+"Live debugging", "Integrated debugging",
+"Even better debugging") was the most-common request,
+followed by _improved_code_completion_ (e.g.,
+"autocomplete performance and quality", "smarter autocomplete").
+Other requests include better integration with Go's CLI toolchain,
+better support for modules/packages, and general performance improvements.
 
 .image survey2018/fig17.svg _ 600
 #.caption Figure 17
@@ -137,26 +324,68 @@
 .image survey2018/fig18.svg _ 600
 #.caption Figure 18
 
-This year we also added a question asking which deployment architectures are most important to Go developers. Unsurprisingly, survey respondents overwhelmingly view x86/x86-64 as their top deployment platform (76% of respondents listed it as their most important deployment architecture, and 84% had it in their top 3). The ranking of the second- and third-choice architectures, however, is informative: there is significant interest in ARM64 (45%), WebAssembly (30%), and ARM (22%), but very little interest in other platforms.
+This year we also added a question asking which deployment architectures
+are most important to Go developers.
+Unsurprisingly, survey respondents overwhelmingly view x86/x86-64 as their
+top deployment platform (76% of respondents listed it as their most important
+deployment architecture,
+and 84% had it in their top 3).
+The ranking of the second- and third-choice architectures,
+however, is informative:
+there is significant interest in ARM64 (45%),
+WebAssembly (30%), and ARM (22%), but very little interest in other platforms.
 
 .image survey2018/fig19.svg _ 600
 #.caption Figure 19
 
 * Deployments and services
 
-For 2018 we see a continuation of the trend from on-prem to cloud hosting for both Go and non-Go deployments. The percentage of survey respondents who deploy Go applications to on-prem servers dropped from 43% → 32%, mirroring the 46% → 36% drop reported for non-Go deployments. The cloud services which saw the highest year-over-year growth include AWS Lambda (4% → 11% for Go, 10% → 15% non-Go) and Google Kubernetes Engine (8% → 12% for Go, 5% → 10% non-Go), suggesting that serverless and containers are becoming increasingly popular deployment platforms. This service growth appears to be driven by respondents who had already adopted cloud services, however, as we found no meaningful growth in the percentage of respondents who deploy to at least one cloud service this year (55% → 56%). We also see steady growth in Go deployments to GCP since 2016, increasing from 12% → 19% of respondents.
+For 2018 we see a continuation of the trend from on-prem to cloud hosting
+for both Go and non-Go deployments.
+The percentage of survey respondents who deploy Go applications to on-prem
+servers dropped from 43% → 32%,
+mirroring the 46% → 36% drop reported for non-Go deployments.
+The cloud services which saw the highest year-over-year growth include AWS
+Lambda (4% → 11% for Go,
+10% → 15% non-Go) and Google Kubernetes Engine (8% → 12% for Go,
+5% → 10% non-Go), suggesting that serverless and containers are becoming
+increasingly popular deployment platforms.
+This service growth appears to be driven by respondents who had already
+adopted cloud services,
+however, as we found no meaningful growth in the percentage of respondents
+who deploy to at least one cloud service this year (55% → 56%).
+We also see steady growth in Go deployments to GCP since 2016,
+increasing from 12% → 19% of respondents.
 
 .image survey2018/fig20.svg _ 600
 #.caption Figure 20
 
-Perhaps correlated with the decrease in on-prem deployments, this year we saw cloud storage become the second-most used service by survey respondents, increasing from 32% → 44%. Authentication & federation services also saw a significant increase (26% → 33%). The primary service survey respondents access from Go remains open-source relational databases, which ticked up from 61% → 65% of respondents. As the below chart shows, service usage increased across the board.
+Perhaps correlated with the decrease in on-prem deployments,
+this year we saw cloud storage become the second-most used service by survey respondents,
+increasing from 32% → 44%.
+Authentication & federation services also saw a significant increase (26% → 33%).
+The primary service survey respondents access from Go remains open-source
+relational databases,
+which ticked up from 61% → 65% of respondents.
+As the below chart shows, service usage increased across the board.
 
 .image survey2018/fig21.svg _ 600
 #.caption Figure 21
 
 * Go community
 
-The top community sources for finding answers to Go questions continue to be Stack Overflow (23% of respondents marked it as their top source), Go web sites (18% for godoc.org, 14% for golang.org), and reading source code (8% for source code generally, 4% for GitHub specifically). The order remains largely consistent with prior years. The primary sources for Go news remain the Go blog, Reddit's r/golang, Twitter, and Hacker News. These were also the primary distribution methods for this survey, however, so there is likely some bias in this result. In the two charts below, we've grouped sources used by less than < 5% of respondents into the "Other" category.
+The top community sources for finding answers to Go questions continue to
+be Stack Overflow (23% of respondents marked it as their top source),
+Go web sites (18% for godoc.org, 14% for golang.org),
+and reading source code (8% for source code generally,
+4% for GitHub specifically).
+The order remains largely consistent with prior years.
+The primary sources for Go news remain the Go blog,
+Reddit's r/golang, Twitter, and Hacker News.
+These were also the primary distribution methods for this survey,
+however, so there is likely some bias in this result.
+In the two charts below, we've grouped sources used by less than < 5% of
+respondents into the "Other" category.
 
 .image survey2018/fig24.svg _ 600
 #.caption Figure 24
@@ -164,7 +393,15 @@
 .image survey2018/fig25.svg _ 600
 #.caption Figure 25
 
-This year, 55% of survey respondents said they have or are interested in contributing to the Go community, slightly down from 59% last year. Because the two most common areas for contribution (the standard library and official Go tools) require interacting with the core Go team, we suspect this decrease may be related to a dip in the percentage of participants who agreed with the statements "I feel comfortable approaching the Go project leadership with questions and feedback" (30% → 25%) and "I am confident in the leadership of Go (54% → 46%).
+This year, 55% of survey respondents said they have or are interested in
+contributing to the Go community,
+slightly down from 59% last year.
+Because the two most common areas for contribution (the standard library
+and official Go tools) require interacting with the core Go team,
+we suspect this decrease may be related to a dip in the percentage of participants
+who agreed with the statements "I feel comfortable approaching the Go project
+leadership with questions and feedback" (30% → 25%) and "I am confident
+in the leadership of Go (54% → 46%).
 
 .image survey2018/fig26.svg _ 600
 #.caption Figure 26
@@ -172,22 +409,59 @@
 .image survey2018/fig27.svg _ 600
 #.caption Figure 27
 
-An important aspect of community is helping everyone feel welcome, especially people from traditionally under-represented demographics. To better understand this, we asked an optional question about identification across several under-represented groups. In 2017 we saw year-over-year increases across the board. For 2018, we saw a similar percentage of respondents (12%) identify as part of an under-represented group, and this was paired with a significant decrease in the percentage of respondents who do *not* identify as part of an under-represented group. In 2017, for every person who identified as part of an under-represented group, 3.5 people identified as not part of an under-represented group (3.5:1 ratio). In 2018 that ratio improved to 3.08:1. This suggests that the Go community is at least retaining the same proportions of under-represented members, and may even be increasing.
+An important aspect of community is helping everyone feel welcome,
+especially people from traditionally under-represented demographics.
+To better understand this, we asked an optional question about identification
+across several under-represented groups.
+In 2017 we saw year-over-year increases across the board.
+For 2018, we saw a similar percentage of respondents (12%) identify as part
+of an under-represented group,
+and this was paired with a significant decrease in the percentage of respondents
+who do *not* identify as part of an under-represented group.
+In 2017, for every person who identified as part of an under-represented group,
+3.5 people identified as not part of an under-represented group (3.5:1 ratio).
+In 2018 that ratio improved to 3.08:1. This suggests that the Go community
+is at least retaining the same proportions of under-represented members,
+and may even be increasing.
 
 .image survey2018/fig28.svg _ 600
 #.caption Figure 28
 
-Maintaining a healthy community is extremely important to the Go project, so for the past three years we've been measuring the extent to which developers feel welcome in the Go community. This year we saw a drop in the percentage of survey respondents who agree with the statement "I feel welcome in the Go community", from 66% → 59%.
+Maintaining a healthy community is extremely important to the Go project,
+so for the past three years we've been measuring the extent to which developers
+feel welcome in the Go community.
+This year we saw a drop in the percentage of survey respondents who agree
+with the statement "I feel welcome in the Go community", from 66% → 59%.
 
-To better understand this decrease, we looked more closely at who reported feeling less welcome. Among traditionally under-represented groups, fewer people reported feeling unwelcome in 2018, suggesting that outreach in that area has been helpful. Instead, we found a linear relationship between the length of time someone has used Go and how welcome they feel: newer Go developers felt significantly less welcome (at 50%) than developers with 1-2 years of experience (62%), who in turn felt less welcome than developers with a few years of experience (73%). This interpretation of the data is supported by responses to the question "What changes would make the Go community more welcoming?". Respondents' comments can be broadly grouped into four categories:
+To better understand this decrease, we looked more closely at who reported
+feeling less welcome.
+Among traditionally under-represented groups,
+fewer people reported feeling unwelcome in 2018,
+suggesting that outreach in that area has been helpful.
+Instead, we found a linear relationship between the length of time someone
+has used Go and how welcome they feel:
+newer Go developers felt significantly less welcome (at 50%) than developers
+with 1-2 years of experience (62%),
+who in turn felt less welcome than developers with a few years of experience (73%).
+This interpretation of the data is supported by responses to the question
+"What changes would make the Go community more welcoming?".
+Respondents' comments can be broadly grouped into four categories:
 
 
-- Reduce a perception of elitism, especially for newcomers to Go (e.g., "less dismissiveness", "Less defensiveness and hubris")
-- Increase transparency at the leadership level (e.g., "Future direction and planning discussions", "Less top down leadership", "More democratic")
-- Increase introductory resources (e.g., "A more clear introduction for contributors", "Fun challenges to learn best practices")
-- More events and meetups, with a focus on covering a larger geographic area (e.g., "More meetups & social events", "Events in more cities")
+- Reduce a perception of elitism, especially for newcomers to Go (e.g.,
+  "less dismissiveness", "Less defensiveness and hubris")
+- Increase transparency at the leadership level (e.g.,
+  "Future direction and planning discussions",
+  "Less top down leadership", "More democratic")
+- Increase introductory resources (e.g., "A more clear introduction for contributors",
+  "Fun challenges to learn best practices")
+- More events and meetups, with a focus on covering a larger geographic area (e.g.,
+  "More meetups & social events", "Events in more cities")
 
-This feedback is very helpful and gives us concrete areas we can focus on to improve the experience of being a Go developer. While it doesn't represent a large percentage of our user base, we take this feedback very seriously and are working on improving each area.
+This feedback is very helpful and gives us concrete areas we can focus on
+to improve the experience of being a Go developer.
+While it doesn't represent a large percentage of our user base,
+we take this feedback very seriously and are working on improving each area.
 
 .image survey2018/fig22.svg _ 600
 #.caption Figure 22
@@ -197,4 +471,8 @@
 
 * Conclusion
 
-We hope you've enjoyed seeing the results of our 2018 developer survey. These results are impacting our 2019 planning, and in the coming months we'll share some ideas with you to address specific issues and needs the community has highlighted for us. Once again, thank you to everyone who contributed to this survey!
+We hope you've enjoyed seeing the results of our 2018 developer survey.
+These results are impacting our 2019 planning,
+and in the coming months we'll share some ideas with you to address specific
+issues and needs the community has highlighted for us.
+Once again, thank you to everyone who contributed to this survey!
diff --git a/content/survey2019.article b/content/survey2019.article
index b589c77..1d8ef4a 100644
--- a/content/survey2019.article
+++ b/content/survey2019.article
@@ -7,10 +7,29 @@
 
 * Help shape the future of Go
 
-Since 2016, thousands of Gophers around the world have helped the Go project by sharing your thoughts via our annual Go Developer Survey. Your feedback has played an enormous role in driving changes to our language, ecosystem, and community, including [[https://about.sourcegraph.com/go/gophercon-2019-go-pls-stop-breaking-my-editor][the gopls language server]], new [[https://blog.golang.org/go1.13-errors][error-handling mechanics]], the [[https://blog.golang.org/module-mirror-launch][module mirror]], and so much more from the latest [[https://blog.golang.org/go1.13][Go 1.13 release]]. And of course, we publicly share [[https://blog.golang.org/survey2016-results][each]] [[https://blog.golang.org/survey2017-results][year's]] [[https://blog.golang.org/survey2018-results][results]], so we can all benefit from the community's insights.
+Since 2016, thousands of Gophers around the world have helped the Go project
+by sharing your thoughts via our annual Go Developer Survey.
+Your feedback has played an enormous role in driving changes to our language,
+ecosystem, and community, including [[https://about.sourcegraph.com/go/gophercon-2019-go-pls-stop-breaking-my-editor][the gopls language server]],
+new [[https://blog.golang.org/go1.13-errors][error-handling mechanics]],
+the [[https://blog.golang.org/module-mirror-launch][module mirror]],
+and so much more from the latest [[https://blog.golang.org/go1.13][Go 1.13 release]].
+And of course, we publicly share [[https://blog.golang.org/survey2016-results][each]]
+[[https://blog.golang.org/survey2017-results][year's]] [[https://blog.golang.org/survey2018-results][results]],
+so we can all benefit from the community's insights.
 
-Today we are launching the 2019 Go Developer Survey. We'd love to hear from everyone who uses Go, used to use Go, or is interested in using Go, to help ensure the language, community, and ecosystem fit the needs of the people closest to it. Please help us shape Go's future by participating in this 15-minute survey by December 15th: [[https://google.qualtrics.com/jfe/form/SV_b1xqnBCMpZAhJZ3][Take the 2019 Go Developer Survey]].
+Today we are launching the 2019 Go Developer Survey.
+We'd love to hear from everyone who uses Go,
+used to use Go, or is interested in using Go,
+to help ensure the language, community, and ecosystem fit the needs of the
+people closest to it.
+Please help us shape Go's future by participating in this 15-minute survey by December 15th:
+[[https://google.qualtrics.com/jfe/form/SV_b1xqnBCMpZAhJZ3][Take the 2019 Go Developer Survey]].
 
 * Spread the word!
 
-We need as many Gophers as possible to participate in this survey to help us better understand our global user base. We'd be grateful if you would spread the word by sharing this post on your social network feeds, around the office, at meet-ups, and in other communities. Thank you!
+We need as many Gophers as possible to participate in this survey to help
+us better understand our global user base.
+We'd be grateful if you would spread the word by sharing this post on your
+social network feeds,
+around the office, at meet-ups, and in other communities. Thank you!
diff --git a/content/the-app-engine-sdk-and-workspaces-gopath.article b/content/the-app-engine-sdk-and-workspaces-gopath.article
index f2fcb40..0bf3fbf 100644
--- a/content/the-app-engine-sdk-and-workspaces-gopath.article
+++ b/content/the-app-engine-sdk-and-workspaces-gopath.article
@@ -6,13 +6,34 @@
 
 * Introduction
 
-When we released Go 1 we introduced the [[https://golang.org/cmd/go/][go tool]] and, with it, the concept of workspaces. Workspaces (specified by the GOPATH environment variable) are a convention for organizing code that simplifies fetching, building, and installing Go packages. If you're not familiar with workspaces, please read [[https://golang.org/doc/code.html][this article]] or watch [[http://www.youtube.com/watch?v=XCsL89YtqCs][this screencast]] before reading on.
+When we released Go 1 we introduced the [[https://golang.org/cmd/go/][go tool]] and,
+with it, the concept of workspaces.
+Workspaces (specified by the GOPATH environment variable) are a convention
+for organizing code that simplifies fetching,
+building, and installing Go packages.
+If you're not familiar with workspaces, please read [[https://golang.org/doc/code.html][this article]]
+or watch [[http://www.youtube.com/watch?v=XCsL89YtqCs][this screencast]] before reading on.
 
-Until recently, the tools in the App Engine SDK were not aware of workspaces. Without workspaces the "[[https://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies][go get]]" command cannot function, and so app authors had to install and update their app dependencies manually. It was a pain.
+Until recently, the tools in the App Engine SDK were not aware of workspaces.
+Without workspaces the "[[https://golang.org/cmd/go/#hdr-Download_and_install_packages_and_dependencies][go get]]"
+command cannot function,
+and so app authors had to install and update their app dependencies manually. It was a pain.
 
-This has all changed with version 1.7.4 of the App Engine SDK. The [[https://developers.google.com/appengine/docs/go/tools/devserver][dev_appserver]] and [[https://developers.google.com/appengine/docs/go/tools/uploadinganapp][appcfg]] tools are now workspace-aware. When running locally or uploading an app, these tools now search for dependencies in the workspaces specified by the GOPATH environment variable. This means you can now use "go get" while building App Engine apps, and switch between normal Go programs and App Engine apps without changing your environment or habits.
+This has all changed with version 1.7.4 of the App Engine SDK.
+The [[https://developers.google.com/appengine/docs/go/tools/devserver][dev_appserver]]
+and [[https://developers.google.com/appengine/docs/go/tools/uploadinganapp][appcfg]]
+tools are now workspace-aware.
+When running locally or uploading an app,
+these tools now search for dependencies in the workspaces specified by the
+GOPATH environment variable.
+This means you can now use "go get" while building App Engine apps,
+and switch between normal Go programs and App Engine apps without changing
+your environment or habits.
 
-For example, let's say you want to build an app that uses OAuth 2.0 to authenticate with a remote service. A popular OAuth 2.0 library for Go is the [[https://godoc.org/golang.org/x/oauth2][oauth2]] package, which you can install to your workspace with this command:
+For example, let's say you want to build an app that uses OAuth 2.0 to authenticate
+with a remote service.
+A popular OAuth 2.0 library for Go is the [[https://godoc.org/golang.org/x/oauth2][oauth2]] package,
+which you can install to your workspace with this command:
 
 	     go get golang.org/x/oauth2
 
@@ -20,15 +41,29 @@
 
 	     import "golang.org/x/oauth2"
 
-Now, whether running your app with the dev_appserver or deploying it with appcfg, the tools will find the oauth package in your workspace. It just works.
+Now, whether running your app with the dev_appserver or deploying it with appcfg,
+the tools will find the oauth package in your workspace. It just works.
 
 * Hybrid stand-alone/App Engine apps
 
-The Go App Engine SDK builds on Go's standard [[https://golang.org/pkg/net/http/][net/http]] package to serve web requests and, as a result, many Go web servers can be run on App Engine with only a few changes. For example, [[https://golang.org/cmd/godoc/][godoc]] is included in the Go distribution as a stand-alone program, but it can also run as an App Engine app (godoc serves [[https://golang.org/][golang.org]] from App Engine).
+The Go App Engine SDK builds on Go's standard [[https://golang.org/pkg/net/http/][net/http]]
+package to serve web requests and,
+as a result, many Go web servers can be run on App Engine with only a few changes.
+For example, [[https://golang.org/cmd/godoc/][godoc]] is included in the
+Go distribution as a stand-alone program,
+but it can also run as an App Engine app (godoc serves [[https://golang.org/][golang.org]] from App Engine).
 
-But wouldn't it be nice if you could write a program that is both a stand-alone web server and an App Engine app? By using [[https://golang.org/pkg/go/build/#hdr-Build_Constraints][build constraints]], you can.
+But wouldn't it be nice if you could write a program that is both a stand-alone
+web server and an App Engine app? By using [[https://golang.org/pkg/go/build/#hdr-Build_Constraints][build constraints]], you can.
 
-Build constraints are line comments that determine whether a file should be included in a package. They are most often used in code that handles a variety of operating systems or processor architectures. For instance, the [[https://golang.org/pkg/path/filepath/][path/filepath]] package includes the file [[https://golang.org/src/pkg/path/filepath/symlink.go][symlink.go]], which specifies a build constraint to ensure that it is not built on Windows systems (which do not have symbolic links):
+Build constraints are line comments that determine whether a file should
+be included in a package.
+They are most often used in code that handles a variety of operating systems
+or processor architectures.
+For instance, the [[https://golang.org/pkg/path/filepath/][path/filepath]]
+package includes the file [[https://golang.org/src/pkg/path/filepath/symlink.go][symlink.go]],
+which specifies a build constraint to ensure that it is not built on Windows
+systems (which do not have symbolic links):
 
 	    // +build !windows
 
@@ -42,7 +77,13 @@
 
 are ignored by the App Engine SDK, while the go tool will happily build them.
 
-The [[http://code.google.com/p/goprotobuf/][goprotobuf]] library uses this mechanism to provide two implementations of a key part of its encode/decode machinery: [[http://code.google.com/p/goprotobuf/source/browse/proto/pointer_unsafe.go][pointer_unsafe.go]] is the faster version that cannot be used on App Engine because it uses the [[https://golang.org/pkg/unsafe/][unsafe package]], while [[http://code.google.com/p/goprotobuf/source/browse/proto/pointer_reflect.go][pointer_reflect.go]] is a slower version that avoids unsafe by using the [[https://golang.org/pkg/reflect/][reflect package]] instead.
+The [[http://code.google.com/p/goprotobuf/][goprotobuf]] library uses this
+mechanism to provide two implementations of a key part of its encode/decode machinery:
+[[http://code.google.com/p/goprotobuf/source/browse/proto/pointer_unsafe.go][pointer_unsafe.go]]
+is the faster version that cannot be used on App Engine because it uses
+the [[https://golang.org/pkg/unsafe/][unsafe package]],
+while [[http://code.google.com/p/goprotobuf/source/browse/proto/pointer_reflect.go][pointer_reflect.go]]
+is a slower version that avoids unsafe by using the [[https://golang.org/pkg/reflect/][reflect package]] instead.
 
 Let's take a simple Go web server and turn it into a hybrid app. This is main.go:
 
@@ -64,7 +105,10 @@
 
 Build this with the go tool and you'll get a stand-alone web server executable.
 
-The App Engine infrastructure provides its own main function that runs its equivalent to ListenAndServe. To convert main.go to an App Engine app, drop the call to ListenAndServe and register the handler in an init function (which runs before main). This is app.go:
+The App Engine infrastructure provides its own main function that runs its
+equivalent to ListenAndServe.
+To convert main.go to an App Engine app, drop the call to ListenAndServe
+and register the handler in an init function (which runs before main). This is app.go:
 
 	    package main
 	    
@@ -81,11 +125,17 @@
 	        fmt.Fprint(w, "Hello!")
 	    }
 
-To make this a hybrid app, we need to split it into an App Engine-specific part, an stand-alone binary-specific part, and the parts common to both versions. In this case, there is no App Engine-specific part, so we split it into just two files:
+To make this a hybrid app, we need to split it into an App Engine-specific part,
+an stand-alone binary-specific part, and the parts common to both versions.
+In this case, there is no App Engine-specific part,
+so we split it into just two files:
 
-app.go specifies and registers the handler function. It is identical to the code listing above, and requires no build constraints as it should be included in all versions of the program.
+app.go specifies and registers the handler function.
+It is identical to the code listing above,
+and requires no build constraints as it should be included in all versions of the program.
 
-main.go runs the web server. It includes the "!appengine" build constraint, as it must only included when building the stand-alone binary.
+main.go runs the web server. It includes the "!appengine" build constraint,
+as it must only included when building the stand-alone binary.
 
 	    // +build !appengine
 	    
@@ -101,4 +151,5 @@
 
 * Conclusions
 
-We hope these changes will make it easier to work on apps with external dependencies, and to maintain code bases that contain both stand-alone programs and App Engine apps.
+We hope these changes will make it easier to work on apps with external dependencies,
+and to maintain code bases that contain both stand-alone programs and App Engine apps.
diff --git a/content/the-path-to-go-1.article b/content/the-path-to-go-1.article
index 345cf93..1bb1f5f 100644
--- a/content/the-path-to-go-1.article
+++ b/content/the-path-to-go-1.article
@@ -6,10 +6,19 @@
 
 * Introduction
 
-In July 2012, Rob Pike and I presented a talk at OSCON titled _The_path_to_Go_1_. In it we explain how Go 1 came to be, and outline the process by which Go was refined and stabilized to become the clean, consistent programming environment that it is today. We present the major highlights of the release and discuss the details behind some specific libraries and tools.
+In July 2012, Rob Pike and I presented a talk at OSCON titled _The_path_to_Go_1_.
+In it we explain how Go 1 came to be, and outline the process by which Go
+was refined and stabilized to become the clean,
+consistent programming environment that it is today.
+We present the major highlights of the release and discuss the details behind
+some specific libraries and tools.
 
 .iframe //www.youtube.com/embed/bj9T2c2Xk_s 309 550
 
 The slides for the talk are [[https://talks.golang.org/2012/go1.slide][available here]].
 
-It's almost a year since we cut Go 1.0 and we are now busy preparing Go 1.1. The release will include performance improvements to the gc compiler, garbage collector, and goroutine scheduler, some standard library additions, and many bug fixes and other improvements. Stay tuned, as we hope to release Go 1.1 in the coming weeks.
+It's almost a year since we cut Go 1.0 and we are now busy preparing Go 1.1.
+The release will include performance improvements to the gc compiler,
+garbage collector, and goroutine scheduler,
+some standard library additions, and many bug fixes and other improvements.
+Stay tuned, as we hope to release Go 1.1 in the coming weeks.
diff --git a/content/third-party-libraries-goprotobuf-and.article b/content/third-party-libraries-goprotobuf-and.article
index df80991..afdd586 100644
--- a/content/third-party-libraries-goprotobuf-and.article
+++ b/content/third-party-libraries-goprotobuf-and.article
@@ -6,11 +6,22 @@
 
 * Introduction
 
-On March 24, Rob Pike announced [[http://code.google.com/p/goprotobuf/][goprotobuf]], the Go bindings of Google's data interchange format [[http://code.google.com/apis/protocolbuffers/docs/overview.html][Protocol Buffers]], called protobufs for short.  With this announcement, Go joins C++, Java, and Python as languages providing official protobuf implementations. This marks an important milestone in enabling the interoperability between existing systems and those built in Go.
+On March 24, Rob Pike announced [[http://code.google.com/p/goprotobuf/][goprotobuf]],
+the Go bindings of Google's data interchange format [[http://code.google.com/apis/protocolbuffers/docs/overview.html][Protocol Buffers]],
+called protobufs for short.
+With this announcement, Go joins C++, Java,
+and Python as languages providing official protobuf implementations.
+This marks an important milestone in enabling the interoperability between
+existing systems and those built in Go.
 
-The goprotobuf project consists of two parts: a 'protocol compiler plugin' that generates Go source files that, once compiled, can access and manage protocol buffers; and a Go package that implements run-time support for encoding (marshaling), decoding (unmarshaling), and accessing protocol buffers.
+The goprotobuf project consists of two parts:
+a 'protocol compiler plugin' that generates Go source files that,
+once compiled, can access and manage protocol buffers;
+and a Go package that implements run-time support for encoding (marshaling),
+decoding (unmarshaling), and accessing protocol buffers.
 
-To use goprotobuf, you first need to have both Go and [[http://code.google.com/p/protobuf/][protobuf]] installed. You can then install the 'proto' package with [[https://golang.org/cmd/goinstall/][goinstall]]:
+To use goprotobuf, you first need to have both Go and [[http://code.google.com/p/protobuf/][protobuf]] installed.
+You can then install the 'proto' package with [[https://golang.org/cmd/goinstall/][goinstall]]:
 
 	goinstall goprotobuf.googlecode.com/hg/proto
 
@@ -21,6 +32,15 @@
 
 For more detail see the project's [[http://code.google.com/p/goprotobuf/source/browse/README][README]] file.
 
-This is one of a growing list of third-party [[http://godashboard.appspot.com/package][Go projects]]. Since the announcement of goprotobuf, the X Go bindings have been spun off from the standard library to the [[http://code.google.com/p/x-go-binding/][x-go-binding]] project, and work has begun on a [[http://www.freetype.org/][Freetype]] port, [[http://code.google.com/p/freetype-go/][freetype-go]]. Other popular third-party projects include the lightweight web framework [[http://github.com/hoisie/web.go][web.go]], and the Go GTK bindings [[http://github.com/mattn/go-gtk][gtk-go]].
+This is one of a growing list of third-party [[http://godashboard.appspot.com/package][Go projects]].
+Since the announcement of goprotobuf, the X Go bindings have been spun off
+from the standard library to the [[http://code.google.com/p/x-go-binding/][x-go-binding]] project,
+and work has begun on a [[http://www.freetype.org/][Freetype]] port,
+[[http://code.google.com/p/freetype-go/][freetype-go]].
+Other popular third-party projects include the lightweight web framework
+[[http://github.com/hoisie/web.go][web.go]],
+and the Go GTK bindings [[http://github.com/mattn/go-gtk][gtk-go]].
 
-We wish to encourage the development of other useful packages by the open source community. If you're working on something, don't keep it to yourself - let us know through our mailing list [[http://groups.google.com/group/golang-nuts][golang-nuts]].
+We wish to encourage the development of other useful packages by the open source community.
+If you're working on something, don't keep it to yourself - let us know
+through our mailing list [[http://groups.google.com/group/golang-nuts][golang-nuts]].
diff --git a/content/two-go-talks-lexical-scanning-in-go-and.article b/content/two-go-talks-lexical-scanning-in-go-and.article
index bbd372f..2965af0 100644
--- a/content/two-go-talks-lexical-scanning-in-go-and.article
+++ b/content/two-go-talks-lexical-scanning-in-go-and.article
@@ -8,14 +8,25 @@
 
 On Tuesday night Rob Pike and Andrew Gerrand each presented at the [[http://www.sydney-gtug.org/][Sydney Google Technology User Group]].
 
-Rob's talk, "[[http://www.youtube.com/watch?v=HxaD_trXwRE][Lexical Scanning in Go]]", discusses the design of  a particularly interesting and idiomatic piece of Go code, the lexer component of the new [[https://golang.org/pkg/exp/template/][template package.]]
+Rob's talk, "[[http://www.youtube.com/watch?v=HxaD_trXwRE][Lexical Scanning in Go]]",
+discusses the design of  a particularly interesting and idiomatic piece of Go code,
+the lexer component of the new [[https://golang.org/pkg/exp/template/][template package.]]
 
 .iframe //www.youtube.com/embed/HxaD_trXwRE 345 560
 
-The slides are [[http://cuddle.googlecode.com/hg/talk/lex.html][available here]]. The new template package is available as [[https://golang.org/pkg/exp/template/][exp/template]] in Go release r59. In a future release it will replace the old template package.
+The slides are [[http://cuddle.googlecode.com/hg/talk/lex.html][available here]].
+The new template package is available as [[https://golang.org/pkg/exp/template/][exp/template]] in Go release r59.
+In a future release it will replace the old template package.
 
-Andrew's talk, "[[http://www.youtube.com/watch?v=HQtLRqqB-Kk][Cuddle: an App Engine Demo]]", describes the construction of a simple real-time chat application that uses App Engine's [[http://code.google.com/appengine/docs/go/datastore/overview.html][Datastore]], [[http://code.google.com/appengine/docs/go/channel/overview.html][Channel]], and [[http://code.google.com/appengine/docs/go/datastore/memcache.html][Memcache]] APIs. It also includes a question and answer session that covers [[http://code.google.com/appengine/docs/go/gettingstarted/][Go for App Engine]] and Go more generally.
+Andrew's talk, "[[http://www.youtube.com/watch?v=HQtLRqqB-Kk][Cuddle: an App Engine Demo]]",
+describes the construction of a simple real-time chat application that uses
+App Engine's [[http://code.google.com/appengine/docs/go/datastore/overview.html][Datastore]],
+[[http://code.google.com/appengine/docs/go/channel/overview.html][Channel]],
+and [[http://code.google.com/appengine/docs/go/datastore/memcache.html][Memcache]] APIs.
+It also includes a question and answer session that covers [[http://code.google.com/appengine/docs/go/gettingstarted/][Go for App Engine]]
+and Go more generally.
 
 .iframe //www.youtube.com/embed/HQtLRqqB-Kk 345 560
 
-The slides are [[http://cuddle.googlecode.com/hg/talk/index.html][available here]]. The code is available at the [[http://code.google.com/p/cuddle/][cuddle Google Code project]].
+The slides are [[http://cuddle.googlecode.com/hg/talk/index.html][available here]].
+The code is available at the [[http://code.google.com/p/cuddle/][cuddle Google Code project]].
diff --git a/content/two-recent-go-articles.article b/content/two-recent-go-articles.article
index c006fe8..f6acc05 100644
--- a/content/two-recent-go-articles.article
+++ b/content/two-recent-go-articles.article
@@ -10,7 +10,11 @@
 
 * Go at Google
 
-In October last year, Rob Pike presented a keynote at the ACM [[http://splashcon.org/2012/][SPLASH]] conference in Tucson. The talk, titled [[https://talks.golang.org/2012/splash.slide][Go at Google]], was a comprehensive discussion of the motivations behind Go. Rob later expanded on his talk to produce an essay titled [[http://talks.golang.org/2012/splash.article][Go at Google: Language Design in the Service of Software Engineering]]. Here is the abstract:
+In October last year, Rob Pike presented a keynote at the ACM [[http://splashcon.org/2012/][SPLASH]] conference in Tucson.
+The talk, titled [[https://talks.golang.org/2012/splash.slide][Go at Google]],
+was a comprehensive discussion of the motivations behind Go.
+Rob later expanded on his talk to produce an essay titled [[http://talks.golang.org/2012/splash.article][Go at Google: Language Design in the Service of Software Engineering]].
+Here is the abstract:
 
 	The Go programming language was conceived in late 2007 as an
 	answer to some of the problems we were seeing developing
@@ -35,12 +39,24 @@
 	systems grow, and robustness across the boundaries between
 	components.
 
-This article explains how these issues were addressed while building an efficient, compiled programming language that feels lightweight and pleasant. Examples and explanations will be taken from the real-world problems faced at Google.
+This article explains how these issues were addressed while building an efficient,
+compiled programming language that feels lightweight and pleasant.
+Examples and explanations will be taken from the real-world problems faced at Google.
 
-If you have wondered about the design decisions behind Go, you may find your questions answered by [[https://talks.golang.org/2012/splash.article][the essay]]. It is recommended reading for both new and experienced Go programmers.
+If you have wondered about the design decisions behind Go,
+you may find your questions answered by [[https://talks.golang.org/2012/splash.article][the essay]].
+It is recommended reading for both new and experienced Go programmers.
 
 * Go at the Google Developers Academy
 
-At Google I/O 2012 the Google Developers team [[http://googledevelopers.blogspot.com.au/2012/06/google-launches-new-developer-education.html][launched]] the [[https://developers.google.com/academy/][Google Developers Academy]], a program that provides training materials on Google technologies. Go is one of those technologies and we're pleased to announce the first GDA article featuring Go front and center:
+At Google I/O 2012 the Google Developers team [[http://googledevelopers.blogspot.com.au/2012/06/google-launches-new-developer-education.html][launched]] the [[https://developers.google.com/academy/][Google Developers Academy]],
+a program that provides training materials on Google technologies.
+Go is one of those technologies and we're pleased to announce the first
+GDA article featuring Go front and center:
 
-[[https://developers.google.com/appengine/training/go-plus-appengine/][Getting Started with Go, App Engine and Google+ API]] is an introduction to writing web applications in Go. It demonstrates how to build and deploy App Engine applications and make calls to the Google+ API using the Google APIs Go Client. This is a great entry point for Go programmers eager to get started with Google's developer ecosystem.
+[[https://developers.google.com/appengine/training/go-plus-appengine/][Getting Started with Go, App Engine and Google+ API]] is
+an introduction to writing web applications in Go.
+It demonstrates how to build and deploy App Engine applications and make
+calls to the Google+ API using the Google APIs Go Client.
+This is a great entry point for Go programmers eager to get started with
+Google's developer ecosystem.
diff --git a/content/two-recent-go-talks.article b/content/two-recent-go-talks.article
index 8e72336..0ae7120 100644
--- a/content/two-recent-go-talks.article
+++ b/content/two-recent-go-talks.article
@@ -6,15 +6,24 @@
 
 * Introduction
 
-Late last year I wrote a couple of Go talks and presented them at [[http://thestrangeloop.com/][Strange Loop]], [[http://oredev.com][Øredev]], and various other venues. The talks are designed to give insight into the practice of Go programming, each describing the construction of a real program and demonstrating the power and depth of the Go language and its libraries and tools.
+Late last year I wrote a couple of Go talks and presented them at [[http://thestrangeloop.com/][Strange Loop]],
+[[http://oredev.com][Øredev]], and various other venues.
+The talks are designed to give insight into the practice of Go programming,
+each describing the construction of a real program and demonstrating the
+power and depth of the Go language and its libraries and tools.
 
 The following videos are, in my opinion, the best recordings of these talks.
 
 * Go: a simple programming environment
 
-Go is a general-purpose language that bridges the gap between efficient statically typed languages and productive dynamic language. But it’s not just the language that makes Go special – Go has broad and consistent standard libraries and powerful but simple tools.
+Go is a general-purpose language that bridges the gap between efficient
+statically typed languages and productive dynamic language.
+But it’s not just the language that makes Go special – Go has broad
+and consistent standard libraries and powerful but simple tools.
 
-This talk gives an introduction to Go, followed by a tour of some real programs that demonstrate the power, scope, and simplicity of the Go programming environment.
+This talk gives an introduction to Go, followed by a tour of some real programs
+that demonstrate the power,
+scope, and simplicity of the Go programming environment.
 
 .iframe //player.vimeo.com/video/53221558?badge=0 281 500
 
@@ -22,7 +31,14 @@
 
 * Go: code that grows with grace
 
-One of Go's key design goals is code adaptability; that it should be easy to take a simple design and build upon it in a clean and natural way. In this talk I describe a simple "chat roulette" server that matches pairs of incoming TCP connections, and then use Go's concurrency mechanisms, interfaces, and standard library to extend it with a web interface and other features. While the function of the program changes dramatically, Go's flexibility preserves the original design as it grows.
+One of Go's key design goals is code adaptability;
+that it should be easy to take a simple design and build upon it in a clean and natural way.
+In this talk I describe a simple "chat roulette" server that matches pairs
+of incoming TCP connections,
+and then use Go's concurrency mechanisms,
+interfaces, and standard library to extend it with a web interface and other features.
+While the function of the program changes dramatically,
+Go's flexibility preserves the original design as it grows.
 
 .iframe //player.vimeo.com/video/53221560?badge=0 281 500
 
diff --git a/content/upcoming-google-io-go-events.article b/content/upcoming-google-io-go-events.article
index 30868bf..472ea34 100644
--- a/content/upcoming-google-io-go-events.article
+++ b/content/upcoming-google-io-go-events.article
@@ -5,12 +5,25 @@
 
 * Introduction
 
-[[https://googleblog.blogspot.com/2010/01/google-io-2010-now-open-for.html][Google I/O 2010]] is happening next week at the Moscone Centre in San Francisco. Those of you with tickets will be able to catch some of the Go team both at I/O and at Bootcamp. In reverse-chronological order:
+[[https://googleblog.blogspot.com/2010/01/google-io-2010-now-open-for.html][Google I/O 2010]]
+is happening next week at the Moscone Centre in San Francisco.
+Those of you with tickets will be able to catch some of the Go team both
+at I/O and at Bootcamp.
+In reverse-chronological order:
 
-Rob Pike and Russ Cox will be presenting a [[https://www.youtube.com/watch?v=jgVhBThJdXc][Go Programming]] talk on Thursday at 10.15am. This session takes a detailed look at how Go differs from other languages in a practical sense. Through a series of examples, they will demonstrate various features of Go and the ways in which they affect program design.
+Rob Pike and Russ Cox will be presenting a [[https://www.youtube.com/watch?v=jgVhBThJdXc][Go Programming]]
+talk on Thursday at 10.15am.
+This session takes a detailed look at how Go differs from other languages
+in a practical sense.
+Through a series of examples, they will demonstrate various features of
+Go and the ways in which they affect program design.
 
-Several members of the Go team will be at the Go cube during Office Hours on Wednesday between 12pm and 2:30pm. Come by to have your Go questions answered by the experts.
+Several members of the Go team will be at the Go cube during Office Hours
+on Wednesday between 12pm and 2:30pm.
+Come by to have your Go questions answered by the experts.
 
-At Bootcamp on Tuesday at 4.15pm, Andrew Gerrand will be giving an introductory talk about Go. The session will give an overview of the problems that motivated us to build a new language, and the ways in which Go addresses those problems.
+At Bootcamp on Tuesday at 4.15pm, Andrew Gerrand will be giving an introductory talk about Go.
+The session will give an overview of the problems that motivated us to build a new language,
+and the ways in which Go addresses those problems.
 
 If you're coming to I/O, we look forward to seeing you there!
diff --git a/content/wire.article b/content/wire.article
index 6e72025..40b8f33 100644
--- a/content/wire.article
+++ b/content/wire.article
@@ -5,41 +5,101 @@
 
 * Overview
 
-The Go team recently [[https://blog.golang.org/go-cloud][announced]] the open source project [[https://github.com/google/go-cloud][Go Cloud]], with portable Cloud APIs and tools for [[https://cloud.google.com/open-cloud/][open cloud]] development. This post goes into more detail about Wire, a dependency injection tool used in Go Cloud.
+The Go team recently [[https://blog.golang.org/go-cloud][announced]] the
+open source project [[https://github.com/google/go-cloud][Go Cloud]],
+with portable Cloud APIs and tools for [[https://cloud.google.com/open-cloud/][open cloud]] development.
+This post goes into more detail about Wire,
+a dependency injection tool used in Go Cloud.
 
 * What problem does Wire solve?
 
-[[https://en.wikipedia.org/wiki/Dependency_injection][Dependency injection]] is a standard technique for producing flexible and loosely coupled code, by explicitly providing components with all of the dependencies they need to work. In Go, this often takes the form of passing dependencies to constructors:
+[[https://en.wikipedia.org/wiki/Dependency_injection][Dependency injection]]
+is a standard technique for producing flexible and loosely coupled code,
+by explicitly providing components with all of the dependencies they need to work.
+In Go, this often takes the form of passing dependencies to constructors:
 
     // NewUserStore returns a UserStore that uses cfg and db as dependencies.
     func NewUserStore(cfg *Config, db *mysql.DB) (*UserStore, error) {...}
 
-This technique works great at small scale, but larger applications can have a complex graph of dependencies, resulting in a big block of initialization code that's order-dependent but otherwise not very interesting. It's often hard to break up this code cleanly, especially because some dependencies are used multiple times. Replacing one implementation of a service with another can be painful because it involves modifying the dependency graph by adding a whole new set of dependencies (and their dependencies...), and removing unused old ones. In practice, making changes to initialization code in applications with large dependency graphs is tedious and slow.
+This technique works great at small scale,
+but larger applications can have a complex graph of dependencies,
+resulting in a big block of initialization code that's order-dependent but
+otherwise not very interesting.
+It's often hard to break up this code cleanly,
+especially because some dependencies are used multiple times.
+Replacing one implementation of a service with another can be painful because
+it involves modifying the dependency graph by adding a whole new set of
+dependencies (and their dependencies...),
+and removing unused old ones.
+In practice, making changes to initialization code in applications with
+large dependency graphs is tedious and slow.
 
-Dependency injection tools like Wire aim to simplify the management of initialization code. You describe your services and their dependencies, either as code or as configuration, then Wire processes the resulting graph to figure out ordering and how to pass each service what it needs. Make changes to an application's dependencies by changing a function signature or adding or removing an initializer, and then let Wire do the tedious work of generating initialization code for the entire dependency graph.
+Dependency injection tools like Wire aim to simplify the management of initialization code.
+You describe your services and their dependencies,
+either as code or as configuration, then Wire processes the resulting graph
+to figure out ordering and how to pass each service what it needs.
+Make changes to an application's dependencies by changing a function signature
+or adding or removing an initializer,
+and then let Wire do the tedious work of generating initialization code
+for the entire dependency graph.
 
 * Why is this part of Go Cloud?
 
-Go Cloud's goal is to make it easier to write portable Cloud applications by providing idiomatic Go APIs for useful Cloud services. For example, [[https://godoc.org/github.com/google/go-cloud/blob][blob.Bucket]] provides a storage API with implementations for Amazon's S3 and Google Cloud Storage (GCS); applications written using `blob.Bucket` can swap implementations without changing their application logic. However, the initialization code is inherently provider-specific, and each provider has a different set of dependencies.
+Go Cloud's goal is to make it easier to write portable Cloud applications
+by providing idiomatic Go APIs for useful Cloud services.
+For example, [[https://godoc.org/github.com/google/go-cloud/blob][blob.Bucket]]
+provides a storage API with implementations for Amazon's S3 and Google Cloud Storage (GCS);
+applications written using `blob.Bucket` can swap implementations without
+changing their application logic.
+However, the initialization code is inherently provider-specific,
+and each provider has a different set of dependencies.
 
-For example, [[https://godoc.org/github.com/google/go-cloud/blob/gcsblob#OpenBucket][constructing a GCS `blob.Bucket`]] requires a `gcp.HTTPClient`, which eventually requires `google.Credentials`, while [[https://godoc.org/github.com/google/go-cloud/blob/s3blob][constructing one for S3]] requires an `aws.Config`, which eventually requires AWS credentials. Thus, updating an application to use a different `blob.Bucket` implementation involves exactly the kind of tedious update to the dependency graph that we described above. The driving use case for Wire is to make it easy to swap implementations of Go Cloud portable APIs, but it's also a general-purpose tool for dependency injection.
+For example, [[https://godoc.org/github.com/google/go-cloud/blob/gcsblob#OpenBucket][constructing a GCS `blob.Bucket`]]
+requires a `gcp.HTTPClient`,
+which eventually requires `google.Credentials`,
+while [[https://godoc.org/github.com/google/go-cloud/blob/s3blob][constructing one for S3]]
+requires an `aws.Config`,
+which eventually requires AWS credentials.
+Thus, updating an application to use a different `blob.Bucket` implementation
+involves exactly the kind of tedious update to the dependency graph that we described above.
+The driving use case for Wire is to make it easy to swap implementations
+of Go Cloud portable APIs,
+but it's also a general-purpose tool for dependency injection.
 
 * Hasn't this been done already?
 
-There are a number of dependency injection frameworks out there. For Go, [[https://github.com/uber-go/dig][Uber's dig]] and [[https://github.com/facebookgo/inject][Facebook's inject]] both use reflection to do runtime dependency injection. Wire was primarily inspired by Java's [[https://google.github.io/dagger/][Dagger 2]], and uses code generation rather than reflection or [[https://en.wikipedia.org/wiki/Service_locator_pattern][service locators]].
+There are a number of dependency injection frameworks out there.
+For Go, [[https://github.com/uber-go/dig][Uber's dig]] and [[https://github.com/facebookgo/inject][Facebook's inject]]
+both use reflection to do runtime dependency injection.
+Wire was primarily inspired by Java's [[https://google.github.io/dagger/][Dagger 2]],
+and uses code generation rather than reflection or [[https://en.wikipedia.org/wiki/Service_locator_pattern][service locators]].
 
 We think this approach has several advantages:
 
-- Runtime dependency injection can be hard to follow and debug when the dependency graph gets complex. Using code generation means that the initialization code that's executed at runtime is regular, idiomatic Go code that's easy to understand and debug. Nothing is obfuscated by an intervening framework doing "magic". In particular, problems like forgetting a dependency become compile-time errors, not run-time errors.
-- Unlike [[https://en.wikipedia.org/wiki/Service_locator_pattern][service locators]], there's no need to make up arbitrary names or keys to register services. Wire uses Go types to connect components with their dependencies.
-- It's easier to avoid dependency bloat. Wire's generated code will only import the dependencies you need, so your binary won't have unused imports. Runtime dependency injectors can't identify unused dependencies until runtime.
+- Runtime dependency injection can be hard to follow and debug when the
+  dependency graph gets complex.
+  Using code generation means that the initialization code that's executed
+  at runtime is regular,
+  idiomatic Go code that's easy to understand and debug.
+  Nothing is obfuscated by an intervening framework doing "magic".
+  In particular, problems like forgetting a dependency become compile-time errors,
+  not run-time errors.
+- Unlike [[https://en.wikipedia.org/wiki/Service_locator_pattern][service locators]],
+  there's no need to make up arbitrary names or keys to register services.
+  Wire uses Go types to connect components with their dependencies.
+- It's easier to avoid dependency bloat. Wire's generated code will only
+  import the dependencies you need,
+  so your binary won't have unused imports.
+  Runtime dependency injectors can't identify unused dependencies until runtime.
 - Wire's dependency graph is knowable statically, which provides opportunities for tooling and visualization.
 
 * How does it work?
 
 Wire has two basic concepts: providers and injectors.
 
-_Providers_ are ordinary Go functions that "provide" values given their dependencies, which are described simply as parameters to the function. Here's some sample code that defines three providers:
+_Providers_ are ordinary Go functions that "provide" values given their dependencies,
+which are described simply as parameters to the function.
+Here's some sample code that defines three providers:
 
     // NewUserStore is the same function we saw above; it is a provider for UserStore,
     // with dependencies on *Config and *mysql.DB.
@@ -51,11 +111,16 @@
     // NewDB is a provider for *mysql.DB based on some connection info.
     func NewDB(info *ConnectionInfo) (*mysql.DB, error) {...}
 
-Providers that are commonly used together can be grouped into `ProviderSets`. For example, it's common to use a default `*Config` when creating a `*UserStore`, so we can group `NewUserStore` and `NewDefaultConfig` in a `ProviderSet`:
+Providers that are commonly used together can be grouped into `ProviderSets`.
+For example, it's common to use a default `*Config` when creating a `*UserStore`,
+so we can group `NewUserStore` and `NewDefaultConfig` in a `ProviderSet`:
 
     var UserStoreSet = wire.ProviderSet(NewUserStore, NewDefaultConfig)
 
-_Injectors_ are generated functions that call providers in dependency order. You write the injector's signature, including any needed inputs as arguments, and insert a call to `wire.Build` with the list of providers or provider sets that are needed to construct the end result:
+_Injectors_ are generated functions that call providers in dependency order.
+You write the injector's signature, including any needed inputs as arguments,
+and insert a call to `wire.Build` with the list of providers or provider
+sets that are needed to construct the end result:
 
     func initUserStore() (*UserStore, error) {
     	// We're going to get an error, because NewDB requires a *ConnectionInfo
@@ -70,7 +135,10 @@
     wire.go:2:10: inject initUserStore: no provider found for ConnectionInfo (required by provider of *mysql.DB)
     wire: generate failed
 
-Oops! We didn't include a `ConnectionInfo` or tell Wire how to build one. Wire helpfully tells us the line number and types involved. We can either add a provider for it to `wire.Build`, or add it as an argument:
+Oops! We didn't include a `ConnectionInfo` or tell Wire how to build one.
+Wire helpfully tells us the line number and types involved.
+We can either add a provider for it to `wire.Build`,
+or add it as an argument:
 
     func initUserStore(info ConnectionInfo) (*UserStore, error) {
     	wire.Build(UserStoreSet, NewDB)
@@ -97,14 +165,30 @@
     	return userStore, nil
     }
 
-Any non-injector declarations are copied into the generated file. There is no dependency on Wire at runtime: all of the written code is just normal Go code.
+Any non-injector declarations are copied into the generated file.
+There is no dependency on Wire at runtime:
+all of the written code is just normal Go code.
 
-As you can see, the output is very close to what a developer would write themselves. This was a trivial example with just three components, so writing the initializer by hand wouldn't be too painful, but Wire saves a lot of manual toil for components and applications with more complex dependency graphs.
+As you can see, the output is very close to what a developer would write themselves.
+This was a trivial example with just three components,
+so writing the initializer by hand wouldn't be too painful,
+but Wire saves a lot of manual toil for components and applications with
+more complex dependency graphs.
 
 * How can I get involved and learn more?
 
-The [[https://github.com/google/wire/blob/master/README.md][Wire README]] goes into more detail about how to use Wire and its more advanced features. There's also a [[https://github.com/google/wire/tree/master/_tutorial][tutorial]] that walks through using Wire in a simple application.
+The [[https://github.com/google/wire/blob/master/README.md][Wire README]]
+goes into more detail about how to use Wire and its more advanced features.
+There's also a [[https://github.com/google/wire/tree/master/_tutorial][tutorial]]
+that walks through using Wire in a simple application.
 
-We appreciate any input you have about your experience with Wire! [[https://github.com/google/wire][Wire's]] development is conducted on GitHub, so you can [[https://github.com/google/wire/issues/new/choose][file an issue]] to tell us what could be better. For updates and discussion about the project, join [[https://groups.google.com/forum/#!forum/go-cloud][the Go Cloud mailing list]].
+We appreciate any input you have about your experience with Wire!
+[[https://github.com/google/wire][Wire's]] development is conducted on GitHub,
+so you can [[https://github.com/google/wire/issues/new/choose][file an issue]]
+to tell us what could be better.
+For updates and discussion about the project,
+join [[https://groups.google.com/forum/#!forum/go-cloud][the Go Cloud mailing list]].
 
-Thank you for taking the time to learn about Go Cloud's Wire. We’re excited to work with you to make Go the language of choice for developers building portable cloud applications.
+Thank you for taking the time to learn about Go Cloud's Wire.
+We’re excited to work with you to make Go the language of choice for developers
+building portable cloud applications.
diff --git a/content/wrap.go b/content/wrap.go
new file mode 100644
index 0000000..316eb91
--- /dev/null
+++ b/content/wrap.go
@@ -0,0 +1,189 @@
+// Copyright 2020 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build ignore
+
+// Wrap wraps long lines intelligently.
+//
+// Usage:
+//
+//	go run wrap.go [-w] [file ...]
+//
+// By default, wrap prints the line-wrapped version of the input files to standard output.
+// If no input file is listed, standard input is used.
+//
+// The -w flag causes wrap to update the files in place, overwriting each with its
+// line-wrapped equivalent. Wrap leaves the file unchanged if only a few lines
+// need wrapping.
+//
+// Examples
+//
+//	go run -w wrap.go your.article
+//	go run -w wrap.go *.article
+//
+package main
+
+import (
+	"flag"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"log"
+	"os"
+	"strings"
+)
+
+func usage() {
+	fmt.Fprintf(os.Stderr, "usage: wrap [-w] [file ...]\n")
+	os.Exit(2)
+}
+
+var writeBack = flag.Bool("w", false, "write conversions back to original files")
+var exitStatus = 0
+
+func main() {
+	log.SetPrefix("wrap: ")
+	log.SetFlags(0)
+	flag.Usage = usage
+	flag.Parse()
+
+	args := flag.Args()
+	if len(args) == 0 {
+		if *writeBack {
+			log.Fatalf("cannot use -w with standard input")
+		}
+		convert(os.Stdin, "")
+		return
+	}
+
+	for _, arg := range args {
+		f, err := os.Open(arg)
+		if err != nil {
+			log.Print(err)
+			exitStatus = 1
+			continue
+		}
+		target := ""
+		if *writeBack {
+			target = arg
+		}
+		err = convert(f, target)
+		f.Close()
+		if err != nil {
+			log.Print(err)
+			exitStatus = 1
+		}
+	}
+	os.Exit(exitStatus)
+}
+
+// convert reads content from r and line-wraps it.
+// If target is the empty string, convert writes the wrapped result to standard output.
+// If target is non-empty and there were more than a few line wraps needed,
+// convert writes the result to the file named by target.
+func convert(r io.Reader, target string) error {
+	data, err := ioutil.ReadAll(r)
+	if err != nil {
+		return err
+	}
+	changes := 0
+	lines := strings.Split(string(data), "\n")
+	for i, line := range lines {
+		if len(line) < 80 {
+			continue
+		}
+		switch line[0] {
+		case '.', '#', ':', '\t', ' ':
+			continue
+		}
+		w := wrap(line)
+		if line != w {
+			if strings.HasPrefix(line, "- ") {
+				w = strings.Replace(w, "\n", "\n  ", -1)
+			}
+			changes += strings.Count(w, "\n")
+			lines[i] = w
+		}
+	}
+	wrapped := []byte(strings.Join(lines, "\n"))
+
+	if target == "" {
+		os.Stdout.Write(wrapped)
+		return nil
+	}
+
+	// Don't rewrite if not much changed.
+	if changes < 5 {
+		return nil
+	}
+	return ioutil.WriteFile(target, wrapped, 0666)
+}
+
+func wrap(text string) string {
+	if len(text) < 120 {
+		return text
+	}
+	// Wrap after sentence boundaries when possible.
+	// See https://rhodesmill.org/brandon/2012/one-sentence-per-line/.
+	// Note: wrapAt guarantees line[i] == ' '.
+	text = wrapAt(text, func(line string, i int) bool {
+		return i > 40 && i+20 < len(line) &&
+			(line[i-1] == '.' || line[i-1] == '!') && (line[i+1] == ' ' || !('a' <= line[i+1] && line[i+1] <= 'z'))
+	})
+
+	// Wrap after phrase boundaries next.
+	text = wrapAt(text, func(line string, i int) bool {
+		return i > 40 && i+20 < len(line) && (line[i-1] == ';' || line[i-1] == ':')
+	})
+	text = wrapAt(text, func(line string, i int) bool {
+		return i > 40 && i+20 < len(line) && line[i-1] == ','
+	})
+
+	// Wrap long lines that are left at spaces.
+	text = wrapAt(text, func(line string, i int) bool {
+		return i > 70 && i+20 < len(line)
+	})
+
+	return text
+}
+
+// wrapAt wraps long lines in text, returning the result.
+// It calls canWrapAt(line, start, i) to ask whether the given line
+// should be wrapped just before offset i; line[i] is known to be a space.
+func wrapAt(text string, canWrapAt func(line string, i int) bool) string {
+	lines := strings.Split(text, "\n")
+	for i, line := range lines {
+		var out string
+		start := 0
+		brackets := 0
+		for i := 0; i < len(line); {
+			if line[i] == '[' {
+				brackets++
+			}
+			if line[i] == ']' {
+				brackets--
+			}
+			if brackets == 0 && line[i] == ' ' && i+1 < len(line) && line[i+1] != '-' && canWrapAt(line[start:], i-start) {
+				out += trimRight(line[start:i]) + "\n"
+				i++
+				for i < len(line) && line[i] == ' ' {
+					i++
+				}
+				start = i
+				continue
+			}
+			i++
+		}
+		out += trimRight(line[start:])
+		lines[i] = out
+	}
+	return strings.Join(lines, "\n")
+}
+
+func trimRight(s string) string {
+	for len(s) > 0 && (s[len(s)-1] == ' ' || s[len(s)-1] == '\t') {
+		s = s[:len(s)-1]
+	}
+	return s
+}
diff --git a/content/writing-scalable-app-engine.article b/content/writing-scalable-app-engine.article
index cf020d2..c5ca023 100644
--- a/content/writing-scalable-app-engine.article
+++ b/content/writing-scalable-app-engine.article
@@ -6,12 +6,27 @@
 
 * Introduction
 
-Back in May, we [[https://blog.golang.org/2011/05/go-and-google-app-engine.html][announced]] the Go runtime for App Engine. Since then, we've opened it up for everyone to use, added many new APIs, and improved performance. We have been thrilled by all the interesting ways that people are using Go on App Engine.
-One of the key benefits of the Go runtime, apart from working in a fantastic language, is that it has high performance. Go applications compile to native code, with no interpreter or virtual machine getting between your program and the machine.
+Back in May, we [[https://blog.golang.org/2011/05/go-and-google-app-engine.html][announced]]
+the Go runtime for App Engine.
+Since then, we've opened it up for everyone to use,
+added many new APIs, and improved performance.
+We have been thrilled by all the interesting ways that people are using Go on App Engine.
+One of the key benefits of the Go runtime,
+apart from working in a fantastic language,
+is that it has high performance.
+Go applications compile to native code, with no interpreter or virtual machine
+getting between your program and the machine.
 
-Making your web application fast is important because it is well known that a web site's latency has a measurable impact on user happiness, and [[https://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html][Google web search uses it as a ranking factor]]. Also announced in May was that App Engine would be [[http://googleappengine.blogspot.com/2011/05/year-ahead-for-google-app-engine.html][leaving its Preview status]] and transitioning to a [[https://www.google.com/enterprise/cloud/appengine/pricing.html][new pricing model]], providing another reason to write efficient App Engine applications.
+Making your web application fast is important because it is well known that
+a web site's latency has a measurable impact on user happiness,
+and [[https://googlewebmastercentral.blogspot.com/2010/04/using-site-speed-in-web-search-ranking.html][Google web search uses it as a ranking factor]].
+Also announced in May was that App Engine would be [[http://googleappengine.blogspot.com/2011/05/year-ahead-for-google-app-engine.html][leaving its Preview status]]
+and transitioning to a [[https://www.google.com/enterprise/cloud/appengine/pricing.html][new pricing model]],
+providing another reason to write efficient App Engine applications.
 
-To make it easier for Go developers using App Engine to write highly efficient, scalable applications, we recently updated some existing App Engine articles to include snippets of Go source code and to link to relevant Go documentation.
+To make it easier for Go developers using App Engine to write highly efficient,
+scalable applications, we recently updated some existing App Engine articles
+to include snippets of Go source code and to link to relevant Go documentation.
 
 - [[http://code.google.com/appengine/articles/scaling/overview.html][Best practices for writing scalable applications]]
 
