_content/blog: add 2023 H2 survey results

Change-Id: Ia31e363ca6c7389bcf11a2709c0e9466033fc96c
Reviewed-on: https://go-review.googlesource.com/c/website/+/545856
Reviewed-by: Todd Kulesza <tkulesza@google.com>
Run-TryBot: Todd Kulesza <tkulesza@google.com>
Auto-Submit: Todd Kulesza <tkulesza@google.com>
Commit-Queue: Todd Kulesza <tkulesza@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Cameron Balahan <cbalahan@google.com>
diff --git a/_content/blog/survey2023-h2-results.md b/_content/blog/survey2023-h2-results.md
new file mode 100644
index 0000000..0ca4db9
--- /dev/null
+++ b/_content/blog/survey2023-h2-results.md
@@ -0,0 +1,898 @@
+---
+title: Go Developer Survey 2023 H2 Results
+date: 2023-12-05
+by:
+- Todd Kulesza
+tags:
+- survey
+- community
+- developer experience research
+summary: What we learned from our 2023 H2 developer survey
+---
+
+<style type="text/css" scoped>
+  .chart {
+    margin-left: 1.5rem;
+    margin-right: 1.5rem;
+    width: 800px;
+  }
+  blockquote p {
+    color: var(--color-text-subtle) !important;
+  }
+
+  .quote_source {
+    font-style: italic;
+  }
+
+  @media (prefers-color-scheme: dark) {
+    .chart {
+      border-radius: 8px;
+    }
+  }
+</style>
+
+## Background
+
+In August 2023, the Go team at Google conducted our bi-annual survey of Go
+developers. We recruited participants via a public post on the Go blog and a
+randomized prompt in VS Code, resulting in 4,005 responses. We primarily
+focused survey questions around a few topics: general sentiment and feedback
+about developing with Go, technology stacks used alongside Go, how developers
+start new Go projects, recent experiences with toolchain error messages, and
+understanding developer interest around ML/AI.
+
+Thank you to everyone who participated in this survey! This report shares what
+we learned from your feedback.
+
+## tl;dr
+
+1. Go developers said they are **more interested in AI/ML tooling that
+   improves the quality, reliability, and performance of code they write**,
+   rather than writing code for them. An always-awake, never-busy expert
+   "reviewer" might be one of the more helpful forms of AI developer
+   assistance.
+1. The top requests for improving toolchain warnings and errors were to **make
+   the messages more comprehensible and actionable**; this sentiment was
+   shared by developers of all experience levels, but was particularly strong
+   among newer Go developers.
+1. Our experiment with project templates (`gonew`) appears to solve critical
+   problems for Go developers (especially developers new to Go) and does so in
+   a way that matches their existing workflows for starting a new project.
+   Based on these findings, we believe **`gonew` can substantially reduce
+   onboarding barriers for new Go developers and ease adoption of Go in
+   organizations**.
+1. Three out of every four respondents work on Go software that also uses
+   cloud services; this is evidence that **developers see Go as a language for
+   modern, cloud-based development**.
+1. **Developer sentiment towards Go remains extremely positive**, with 90% of
+   survey respondents saying they felt satisfied while working with Go during
+   the prior year.
+
+## Contents
+
+- <a href="#sentiment">Developer sentiment</a>
+- <a href="#devenv">Developer environments</a>
+- <a href="#stacks">Tech stacks</a>
+- <a href="#gonew">How developers start new Go projects</a>
+- <a href="#err_handling">Developer goals for error handling</a>
+- <a href="#mlai">Understanding ML/AI use cases</a>
+- <a href="#err_msgs">Toolchain error messages</a>
+- <a href="#microservices">Microservices</a>
+- <a href="#modules">Module authorship and maintenance</a>
+- <a href="#demographics">Demographics</a>
+- <a href="#firmographics">Firmographics</a>
+- <a href="#methodology">Methodology</a>
+- <a href="#closing">Closing</a>
+
+## Developer sentiment {#sentiment}
+
+Go developers continue to report high levels of satisfaction with the Go
+ecosystem. A large majority of respondents said they felt satisfied while
+working with Go over the past year (90% satisfied, 6% dissatisfied), and a
+majority (52%) went further and said they were "very satisfied", the highest
+rating. Longtime readers have likely noticed that this number doesn't change
+much from year to year. This is expected for a large, stable project like Go;
+we view this metric as a [lagging
+indicator](https://en.wikipedia.org/wiki/Economic_indicator#Lagging_indicators)
+that can help confirm widespread issues in the Go ecosystem, but isn't where
+we expect to first learn about potential problems.
+
+We typically find that the longer someone has worked with Go, the more likely
+they are to report being satisfied with it. This trend continued in 2023;
+among respondents with less than one year of Go experience, 82% reported
+satisfaction with the Go development experience, compared to the 94% of Go
+developers with five or more years of experience. There are likely a mix of
+factors contributing to this, such as some respondents developing an
+appreciation for Go's design choices over time, or deciding Go isn't a good
+fit for their work and so not returning to this survey in following years
+(i.e., [survivorship bias](https://en.wikipedia.org/wiki/Survivorship_bias)).
+Still, this data helps us quantify the current getting started experience for
+Go developers, and it seems clear we could do more to help emerging Gophers
+find their footing and enjoy early successes developing with Go.
+
+The key takeaway is that a large majority of people who chose to work with Go
+during the past year were happy with their experience. Further, the number of
+people working with Go continues to increase; we see evidence of this from
+external research like [Stack Overflow's Developer
+Survey](https://survey.stackoverflow.co/2023/#most-popular-technologies-language-prof)
+(which found 14% of professional developers worked with Go during the past
+year, a roughly 15% year-over-year increase), as well as analytics for
+[go.dev](https://go.dev) (which show an 8% rise in visitors year-over-year).
+Combining this growth with a high satisfaction score is evidence that Go
+continues to appeal to developers, and suggests that many developers who
+choose to learn the language feel good about their decision long afterwards.
+In their own words:
+
+> "After 30+ years of development in C, C++, Java, and now seven years of
+> programming in Go, it is still the most productive language by far. It's not
+> perfect (no language is), but it has the best balance of productivity,
+> complexity, and performance." <span class="quote_source">--- Professional Go
+> developer w/ 5 -- 9 years of experience</span>
+
+> "This is currently the best language I know, and I've tried many. The
+> tooling is awesome, compile times are great, and I can be really productive.
+> I'm glad I have Go as a tool, and I don't need to use TypeScript
+> server-side. Thanks." <span class="quote_source">--- Open source Go
+> developer w/ 3 -- 4 years of experience</span>
+
+<img src="survey2023h2/csat.svg" alt="Chart of developer satisfaction with Go"
+class="chart" />
+
+## Developer environments {#devenv}
+
+As in prior years, the majority of survey respondents told us they work with
+Go on Linux (63%) and macOS (58%) systems. Small variations in these numbers
+from year to year are most likely dependent upon who finds and responds to
+this survey (particularly on the Go blog), as we don't see consistent
+year-over-year trends in the random sample coming from VS Code.
+
+We do continue to see that newer members of the Go community are more likely
+to be working with Windows than more experienced Go developers. We interpret
+this as a signal that Windows-based development is important for onboarding
+new developers to the Go ecosystem, and is a topic our team hopes to focus on
+more in 2024.
+
+<img src="survey2023h2/os_dev.svg" alt="Chart of operating systems respondents
+use when developing Go software" class="chart" /> <img
+src="survey2023h2/os_dev_exp.svg" alt="Chart of operating systems respondents
+use when developing Go software, split by duration of experience"
+class="chart" />
+
+Respondents continue to be heavily focused on Linux deployments. Given the
+prevalence of Go for cloud development and containerized workloads, this is
+not surprising but is still an important confirmation. We found few meaningful
+differences based on factors such as organization size or experience level;
+indeed, while novice Go developers appear more likely to *develop* on Windows,
+92% still *deploy* to Linux systems. Perhaps the most interesting finding from
+this breakdown is that more experienced Go developers said they deploy to a
+wider variety of systems (most notably WebAssembly and IoT), though it's
+unclear if this is because such deployments are challenging for newer Go
+developers or the result of experienced Go developers using Go in a broader
+range of contexts. We also observed that both IoT and WebAssembly have
+steadily increased in recent years, with each rising from 3% in 2021 to 6% and
+5% in 2023, respectively.
+
+<img src="survey2023h2/os_deploy.svg" alt="Chart of platforms respondents
+deploy Go software to" class="chart" />
+
+The computing architecture landscape has changed over the past few years, and
+we see that reflected in the current architectures Go developers say they work
+with. While x86-compatible systems still account for the majority of
+development (89%), ARM64 is also now used by a majority of respondents (56%).
+This adoption appears to be partly driven by Apple Silicon; macOS developers
+are now more likely to say they develop for ARM64 than for x86-based
+architectures (76% vs. 71%). However, Apple hardware isn't the only factor
+driving ARM64 adoption: among respondents who don't develop on macOS at all,
+29% still say they develop for ARM64.
+
+<img src="survey2023h2/arch.svg" alt="Chart of architectures respondents use
+with Go" class="chart" />
+
+The most common code editors among Go Developer Survey respondents continue to
+be [VS Code](https://code.visualstudio.com/) (44%) and
+[GoLand](https://www.jetbrains.com/go/) (31%). Both of these proportions
+ticked down slightly from 2023 H1 (46% and 33%, respectively), but remain
+within this survey's margin of error. Among the "Other" category,
+[Helix](https://helix-editor.com/) accounted for the majority of responses.
+Similar to the results for operating systems above, we don't believe this
+represents a meaningful shift in code editor usage, but rather shows some of
+the variability we expect to see in a community survey such as this. In
+particular, we exclude the randomly sampled respondents from VS Code for this
+question, as we know that group is heavily biased towards VS Code. However,
+that has the side effect of making these results more susceptible to variation
+each year.
+
+We also looked at respondents' level of satisfaction with Go based on the
+editor they prefer using. After controlling for length of experience, we found
+no differences: we don't believe people enjoy working with Go more or less
+based on which code editor they use. That doesn't necessarily mean all Go
+editors are equal, but may reflect that people find the editor that is best
+for their own needs. This would suggest the Go ecosystem has a healthy
+diversity of different editors geared towards different use cases and
+developer preferences.
+
+<img src="survey2023h2/editor_self_select.svg" alt="Chart of code editors
+respondents prefer to use with Go" class="chart" />
+
+## Tech stacks {#stacks}
+
+To better understand the web of software and services that Go developers
+interact with, we asked several questions about tech stacks. We're sharing
+these results with the community to show which tools and platforms are in
+common use today, but we believe everyone should consider their own needs and
+use cases when selecting a tech stack. More plainly: we neither intend for
+readers to use this data to select components of their tech stack because they
+are popular, nor to avoid components because they are not commonly used.
+
+First, we can say with confidence that Go is a language for modern cloud-based
+development. Indeed, 75% of respondents work on Go software that integrates
+with cloud services. For nearly half of respondents, this involved AWS (48%),
+and almost one-third used GCP (29%) for their Go development and deployments.
+For both AWS and GCP, usage is equally balanced among large enterprises and
+smaller organizations. Microsoft Azure is the only cloud provider that is
+significantly more likely to be used in large organizations (companies with >
+1,000 employees) than smaller shops; other providers show no meaningful
+differences in usage based on the size of the organization.
+
+<img src="survey2023h2/cloud.svg" alt="Chart of cloud platforms respondents
+use with Go" class="chart" />
+
+Databases are extremely common components of software systems, and we found
+that 91% of respondents said the Go services they work on use at least one.
+Most frequently this was PostgreSQL (59%), but with double digits of
+respondents reporting use of six additional databases, it's safe to say there
+are not just a couple of standard DBs for Go developers to consider. We again
+see differences based on organization size, with respondents from smaller
+organizations more likely to report using PostgreSQL and Redis, while
+developers from large organizations are somewhat more likely to use a database
+specific to their cloud provider.
+
+<img src="survey2023h2/db.svg" alt="Chart of databases respondents use with
+Go" class="chart" />
+
+Another common component respondents reported using were caches or key-value
+stores; 68% of respondents said they work on Go software incorporating at
+least one of these. Redis was clearly the most common (57%), followed at a
+distance by etcd (10%) and memcached (7%).
+
+<img src="survey2023h2/cache.svg" alt="Chart of caches respondents use with
+Go" class="chart" />
+
+Similar to databases, survey respondents told us they use a range of different
+observability systems. Prometheus and Grafana were the most commonly cited
+(both at 43%), but Open Telemetry, Datadog, and Sentry were all in double
+digits.
+
+<img src="survey2023h2/metrics.svg" alt="Chart of metric systems respondents
+use with Go" class="chart" />
+
+Lest anyone wonder "Have we JSON'd all the things?"... yes, yes we have.
+Nearly every respondent (96%!) said their Go software uses the JSON data
+format; that's about as close to universal as you'll see with self-reported
+data. YAML, CSV, and protocol buffers are also all used by roughly half of
+respondents, and double-digit proportions work with TOML and XML as well.
+
+<img src="survey2023h2/data.svg" alt="Chart of data formats respondents use
+with Go" class="chart" />
+
+For authentication and authorization services, we found most respondents are
+building upon the foundations provided by standards such as
+[JWT](https://jwt.io/introduction) and [OAuth2](https://oauth.net/2/). This
+also appears to be an area where an organization's cloud provider's solution
+is about as likely to be used as most turn-key alternatives.
+
+<img src="survey2023h2/auth.svg" alt="Chart of authentication systems
+respondents use with Go" class="chart" />
+
+Finally, we have a bit of a grab bag of other services that don't neatly fit
+into the above categories. We found that nearly half of respondents work with
+gRPC in their Go software (47%). For infrastructure-as-code needs, Terraform
+was the tool of choice for about ¼ of respondents. Other fairly common
+technologies used alongside Go included Apache Kafka, ElasticSearch, GraphQL,
+and RabbitMQ.
+
+<img src="survey2023h2/other_tech.svg" alt="Chart of authentication systems
+respondents use with Go" class="chart" />
+
+We also looked at which technologies tended to be used together. While nothing
+clearly analogous to the classic [LAMP
+stack](https://en.wikipedia.org/wiki/LAMP_(software_bundle)) emerged from this
+analysis, we did identify some interesting patterns:
+
+- All or nothing: Every category (except data formats) showed a strong
+  correlation where if a respondent answered “None” to one category, they
+  likely answered “None” for all of the others. We interpret this as evidence
+  that a minority of use cases require none of these tech stack components,
+  but once the use case requires any one of them, it likely requires (or is at
+  least simplified by) more than just one.
+- A bias towards cross-platform technologies: Provider-specific solutions
+  (i.e., services that are unique to a single cloud platform) were not
+  commonly adopted. However, if respondents used one provider-specific
+  solution (e.g., for metrics), they were substantially more likely to also
+  say they used cloud-specific solutions in order areas (e.g., databases,
+  authentication, caching, etc.).
+- Multicloud: The three biggest cloud platforms were most likely to be
+  involved in multicloud setups. For example, if an organization is using any
+  non-AWS cloud provider, they’re probably also using AWS. This pattern was
+  clearest for Amazon Web Services, but was also apparent (to a lesser extent)
+  for Google Cloud Platform and Microsoft Azure.
+
+## How developers start new Go projects {#gonew}
+
+As part of our [experimentation with project
+templates](https://go.dev/blog/gonew), we wanted to understand how Go
+developers get started with new projects today. Respondents told us their
+biggest challenges were choosing an appropriate way to structure their project
+(54%) and learning how to write idiomatic Go (47%). As two respondents phrased
+it:
+
+> "Finding an appropriate structure and the right abstraction levels for a new
+> project can be quite tedious; looking at high-profile community and
+> enterprise projects for inspiration can be quite confusing as everyone
+> structures their project differently" <span class="quote_source">---
+> Professional Go developer w/ 5 -- 9 years of Go experience</span>
+
+> "It would be great if [Go had a] toolchain to create [a project's] basic
+> structure for web or CLI like \`go init \<project name\>\`" <span
+> class="quote_source">--- Professional Go developer w/ 3 -- 4 years of
+> experience</span>
+
+Newer Go developers were even more likely to encounter these challenges: the
+proportions increased to 59% and 53% for respondents with less than two years
+of experience with Go, respectively. These are both areas we hope to improve
+via our `gonew` prototype: templates can provide new Go developers with
+well-tested project structures and design patterns, with initial
+implementations written in idiomatic Go. These survey results have helped our
+team to keep the purpose of `gonew` focused on tasks the Go community most
+struggle with.
+
+<img src="survey2023h2/new_challenge.svg" alt="Chart of challenges respondents
+faced when starting new Go projects" class="chart" />
+
+A majority of respondents told us they either use templates or copy+paste code
+from existing projects when starting a new Go project (58%). Among respondents
+with less than five years of Go experience, this proportion increased to
+nearly ⅔ (63%). This was an important confirmation that the template-based
+approach in `gonew` seems to meet developers where they already are, aligning
+a common, informal approach with `go` command-style tooling. This is further
+supported by the common feature requests for project templates: a majority of
+respondents requested 1) a pre-configured directory structure to organize
+their project and 2) sample code for common tasks in the project domain. These
+results are well-aligned with the challenges developers said they faced in the
+previous section. The responses to this question also help tease apart the
+difference between project structure and design patterns, with nearly twice as
+many respondents saying they want Go project templates to provide the former
+than the latter.
+
+<img src="survey2023h2/new_approach.svg" alt="Chart of approaches respondents
+used when starting new Go projects" class="chart" />
+
+<img src="survey2023h2/templates.svg" alt="Chart of functionality respondents
+requested when starting new Go projects" class="chart" />
+
+A majority of respondents told us the ability to make changes to a template
+*and* have those changes propagate to projects based on that template was of
+at least moderate importance. Anecdotally, we haven't spoken with any
+developers who *currently* have this functionality with home-grown template
+approaches, but it suggests this is an interesting avenue for future
+development.
+
+<img src="survey2023h2/template_updates.svg" alt="Chart of respondent interest
+in updatable templates" class="chart" />
+
+## Developer goals for error handling {#err_handling}
+
+A perennial topic of discussion among Go developers is potential improvements
+to error handling. As one respondent summarized:
+
+> "Error handling adds too much boilerplate (I know, you probably heard this
+> before)" <span class="quote_source">--- Open source Go developer w/ 1 -- 2
+> years of experience</span>
+
+But, we also hear from numerous developers that they appreciate Go's approach
+to error handling:
+
+> "Go error handling is simple and effective. As I have backends in Java and
+> C# and exploring Rust and Zig now, I am always pleased to go back to write
+> Go code. And one of the reasons is, believe it or not, error handling. It is
+> really simple, plain and effective. Please leave it that way." <span
+> class="quote_source">--- Open source Go developer w/ 5 -- 9 years of
+> experience</span>
+
+Rather than ask about specific modifications to error handling in Go, we
+wanted to better understand developers' higher-level goals and whether Go's
+current approach has proven useful and usable. We found that a majority of
+respondents appreciate Go's approach to error handling (55%) and say it helps
+them know when to check for errors (50%). Both of these outcomes were stronger
+for respondents with more Go experience, suggesting that either developers
+grow to appreciate Go's approach to error handling over time, or that this is
+one factor leading developers to eventually leave the Go ecosystem (or at
+least stop responding to Go-related surveys). Many survey respondents also
+felt that Go requires a lot of tedious, boilerplate code to check for errors
+(43%); this remained true regardless of how much prior Go experience
+respondents had. Interestingly, when respondents said they appreciate Go's
+error handling, they were unlikely to say it also results in lots of
+boilerplate code---our team had a hypothesis that Go developers can both
+appreciate the language's approach to error handling and feel it's too
+verbose, but only 14% of respondents agreed with both statements.
+
+Specific issues that respondents cited include challenges knowing which error
+types to check for (28%), wanting to easily show a stack trace along with the
+error message (28%), and the ease with which errors can be entirely ignored
+(19%). About ⅓ of respondents were also interested in adopting concepts from
+other languages, such as Rust's `?` operator (31%).
+
+The Go team has no plans to add exceptions to the language, but since this is
+anecdotally a common request, we included it as a response choice. Only 1 in
+10 respondents said they wished they could use exceptions in Go, and this was
+inversely related to experience---more veteran Go developers were less likely
+to be interested in exceptions than respondents newer to the Go community.
+
+<img src="survey2023h2/error_handling.svg" alt="Chart of respondents' thoughts
+about Go's error handling approach" class="chart" />
+
+## Understanding ML/AI use cases {#mlai}
+
+The Go team is considering how the unfolding landscape of new ML/AI
+technologies may impact software development in two distinct veins: 1) how
+might ML/AI tooling help engineers write better software, and 2) how might Go
+help engineers bring ML/AI support to their applications and services? Below,
+we delve into each of these areas.
+
+### Helping engineers write better software
+
+There's little denying we're in [a hype cycle around the possibilities for
+AI/ML](https://www.gartner.com/en/articles/what-s-new-in-artificial-intelligence-from-the-2023-gartner-hype-cycle).
+We wanted to take a step back to focus on the broader challenges developers
+face and where they think AI might prove useful in their regular work. The
+answers were a bit surprising, especially given the industry's current focus
+on coding assistants.
+
+First, we see a few AI use cases that about half of respondents thought could
+be helpful: generating tests (49%), suggesting best practices in-situ (47%),
+and catching likely mistakes early in the development process (46%). A
+unifying theme of these top use cases is that each could help improve the
+quality and reliability of code an engineer is writing. A fourth use case
+(help writing documentation) garnered interest from about ⅓ of respondents.
+The remaining cases comprise a long tail of potentially fruitful ideas, but
+these are of significantly less general interest than the top four.
+
+When we look at developers' duration of experience with Go, we find that
+novice respondents are interested in help resolving compiler errors and
+explaining what a piece of Go code does more than veteran Go developers. These
+might be areas where AI could help improve the getting started experience for
+new Gophers; for example, an AI assistant could help explain in natural
+language what an undocumented block of code does, or suggest common solutions
+to specific error messages. Conversely, we see no differences between
+experience levels for topics like "catch common mistakes"---both novice and
+veteran Go developers say they would appreciate tooling to help with this.
+
+One can squint at this data and see three broad trends:
+
+1. Respondents voiced interest in getting feedback from "expert reviewers" in
+   real-time, not just during review time.
+1. Generally, respondents appeared most interested in tooling that saves them
+   from potentially less-enjoyable tasks (e.g., writing tests or documenting
+   code).
+1. Wholesale writing or translating of code was of fairly low interest,
+   especially to developers with more than a year or two of experience.
+
+Taken together, it appears that today, developers are less excited by the
+prospect of machines doing the fun (e.g., creative, enjoyable, appropriately
+challenging) parts of software development, but do see value in another set of
+"eyes" reviewing their code and potentially handling dull or repetitive tasks
+for them. As one respondent phrased it:
+
+> "I'm specifically interested in using AI/ML to improve my productivity with
+> Go. Having a system that is trained in Go best practices, can catch
+> anti-patterns, bugs, generate tests, with a low rate of hallucination, would
+> be killer." <span class="quote_source">--- Professional Go developer w/ 5 --
+> 9 years of experience</span>
+
+This survey, however, is just one data point in a quickly-evolving research
+field, so it's best to keep these results in context.
+
+<img src="survey2023h2/ml_use_cases.svg" alt="Chart of respondents' interest
+in AI/ML support for development tasks" class="chart" />
+
+### Bringing AI features to applications and services
+
+In addition to looking at how Go developers might benefit from AI/ML-powered
+tooling, we explored their plans for building AI-powered applications and
+services (or supporting infrastructure) with Go. We found that we're still
+early in [the adoption
+curve](https://en.wikipedia.org/wiki/Technology_adoption_life_cycle): most
+respondents have not yet tried to use Go in these areas, though every topic
+saw some level of interest from roughly half of respondents. For example, a
+majority of respondents reported interest in integrating the Go services they
+work on with LLMs (49%), but only 13% have already done so or are currently
+evaluating this use case. At the time of this survey, responses gently suggest
+that developers may be most interested in using Go to call LLMs directly,
+build the data pipelines needed to power ML/AI systems, and for creating API
+endpoints other services can call to interact with ML/AI models. As one
+example, this respondent described the benefits they hoped to gain by using Go
+in their data pipelines:
+
+> "I want to integrate the ETL [extract, transform, and load] part using Go,
+> to keep a consistent, robust, reliable codebase." <span
+> class="quote_source">--- Professional Go developer w/ 3 -- 4 years of
+> experience</span>
+
+<img src="survey2023h2/ml_adoption.svg" alt="Chart of respondents' current use
+of (and interest in) Go for AI/ML systems" class="chart" />
+
+## Toolchain error messages {#err_msgs}
+
+Many developers can relate to the frustrating experience of seeing an error
+message, thinking they know what it means and how to resolve it, but after
+hours of fruitless debugging realize it meant something else entirely. One
+respondent explained their frustration as follows:
+
+> "So often the printed complaints wind up having nothing to do with the
+> problem, but it can take an hour before I discover that that's the case. The
+> error messages are unnervingly terse, and don't seem to go out of their way
+> to guess as to what the user might be trying to do or [explain what they're]
+> doing wrong." <span class="quote_source">--- Professional Go developer w/ 10+
+> years of experience</span>
+
+We believe the warnings and errors emitted by developer tooling should be
+brief, understandable, and actionable: the human reading them should be able
+to accurately understand what went wrong and what they can do to resolve the
+issue. This is an admittedly high bar to strive for, and with this survey we
+took some measurements to understand how developers perceive Go's current
+warning and error messages.
+
+When thinking about the most recent Go error message they worked through,
+respondents told us there was much room for improvement. Only a small majority
+understood what the problem was from the error message alone (54%), and even
+fewer knew what to do next to resolve the issue (41%). It appears a relatively
+small amount of additional information could meaningfully increase these
+proportions, as ¼ of respondents said they mostly knew how to fix the problem,
+but needed to see an example first. Further, with 11% of respondents saying
+they couldn't make sense of the error message, we now have a baseline for
+current understandability of the Go toolchain's error messages.
+
+Improvements to Go's toolchain error messages would especially benefit
+less-experienced Gophers. Respondents with up to two years of experience were
+less likely than veteran Gophers to say they understood the problem (47% vs.
+61%) or knew how to fix it (29% vs. 52%), and were twice as likely to need to
+search online to fix the issue (21% vs. 9%) or even make sense of what the
+error meant (15% vs. 7%).
+
+We hope to focus on improving toolchain error messages during 2024. These
+survey results suggest this is an area of frustration for developers of all
+experience levels, and will particularly help newer developers get started
+with Go.
+
+<img src="survey2023h2/err_exp.svg" alt="Chart of error handling experiences"
+class="chart" />
+
+<img src="survey2023h2/err_exp_exp.svg" alt="Chart of error handling
+experiences, split by duration of Go experience" class="chart" />
+
+To understand *how* these messages might be improved, we asked survey
+respondents an open-ended question: "If you could make a wish and improve one
+thing about error messages in the Go toolchain, what would you change?". The
+responses largely align with our hypothesis that good error messages are both
+understandable and actionable. The most common response was some form of "Help
+me understand what led to this error" (36%), 21% of respondents explicitly
+asked for guidance to fix the problem, and 14% of respondents called out
+languages such as Rust or Elm as exemplars which strive to do both of these
+things. In the words of one respondent:
+
+> "For compilation errors, Elm or Rust-style output pinpointing exact issue in
+> the source code. Errors should include suggestions to fix them where
+> possible... I think a general policy of 'optimize error output to be read by
+> humans' with 'provide suggestions where possible' would be very welcome
+> here." <span class="quote_source">--- Professional Go developer w/ 5 -- 9
+> years of experience</span>
+
+Understandably, there is a fuzzy conceptual boundary between toolchain error
+messages and runtime error messages. For example, one of the top requests
+involved improved stack traces or other approaches to assist debugging runtime
+crashes (22%). Similarly, a surprising theme in 4% of the feedback was about
+challenges with getting help from the `go` command itself. These are great
+examples of the Go community helping us identify related pain points that
+weren't otherwise on our radar. We started this investigation focused on
+improving compile-time errors, but one of the core areas Go developers would
+like to see improved actually relates to run-time errors, while another was
+about the `go` command's help system.
+
+> "When an error is thrown, the call stack can be huge and includes a bunch of
+> files I don't care about. I just want to know where the problem is in MY
+> code, not the library I'm using, or how the panic was handled." <span
+> class="quote_source">--- Professional Go developer w/ 1 -- 2 years of
+> experience</span>
+
+> "Getting help via \`go help run\` dumps a wall of text, with links to
+> further readings to find the available command-line flags. Or the fact that
+> it understands \`go run --help\` but instead of showing the help, it says
+> 'please run go help run instead'. Just show me list of flags in \`go run
+> --help\`." <span class="quote_source">--- Professional Go developer w/ 3 --
+> 4 years of experience</span>
+
+<img src="survey2023h2/text_err_wish.svg" alt="Chart of potential improvements
+for Go's error messages" class="chart" />
+
+## Microservices {#microservices}
+
+We commonly hear that developers find Go to be a great fit for microservices,
+but we have never tried to quantify how many Go developers have adopted this
+type of service architecture, understand how those services communicate with
+one another, or the challenges developers encounter when working on them. This
+year we added a few questions to better understand this space.
+
+A plurality of respondents said they work mostly on microservices (43%), with
+another ¼ saying they work on a mix of both microservices and monoliths. Only
+about ⅕ of respondents work mostly on monolithic Go applications. This is one
+of the few areas where we see differences based on the size of organization
+respondents work at---large organizations seem more likely to have adopted a
+microservice architecture than smaller companies. Respondents from large
+organizations (>1,000 employees) were most likely to say they work on
+microservices (55%), with only 11% of these respondents working primarily on
+monoliths.
+
+<img src="survey2023h2/service_arch.svg" alt="Chart of respondents' primary
+service architecture" class="chart" />
+
+We see some bifurcation in the number of microservices comprising Go
+platforms. One group is composed of a handful (2 to 5) of services (40%),
+while the other consists of larger collections, with a minimum of 10 component
+services (37%). The number of microservices involved does not appear to be
+correlated with organization size.
+
+<img src="survey2023h2/service_num.svg" alt="Chart of the number of
+microservices respondents' systems involve" class="chart" />
+
+A large majority of respondents use some form of direct response request
+(e.g., RPC, HTTP, etc.) for microservice communication (72%). A smaller
+proportion use message queues (14%) or a pub/sub approach (9%); again, we see
+no differences here based on organization size.
+
+<img src="survey2023h2/service_comm.svg" alt="Chart of how microservices
+communicate with one another" class="chart" />
+
+A majority of respondents build microservices in a polyglot of languages, with
+only about ¼ exclusively using Go. Python is the most common companion
+language (33%), alongside Node.js (28%) and Java (26%). We again see
+differences based on organization size, with larger organizations more likely
+to be integrating Python (43%) and Java (36%) microservices, while smaller
+organizations are a bit more likely to only use Go (30%). Other languages
+appeared to be used equally based on organization size.
+
+<img src="survey2023h2/service_lang.svg" alt="Chart of other languages that Go
+microservices interact with" class="chart" />
+
+Overall, respondents told us testing and debugging were their biggest
+challenge when writing microservice-based applications, followed by
+operational complexity. Many other challenges occupy the long tail on this
+graph, though "portability" stands out as a non-issue for most respondents. We
+interpret this to mean that such services aren't intended to be portable
+(beyond basic containerization); for example, if an organization's
+microservices are initially powered by PostgreSQL databases, developers aren't
+concerned with potentially porting this to an Oracle database in the near
+future.
+
+<img src="survey2023h2/service_challenge.svg" alt="Chart of challenges
+respondents face when writing microservice-based applications" class="chart" />
+
+## Module authorship and maintenance {#modules}
+
+Go has a vibrant ecosystem of community-driven modules, and we want to
+understand the motivations and challenges faced by developers who maintain
+these modules. We found that about ⅕ of respondents maintain (or used to
+maintain) an open-source Go module. This was a surprisingly high proportion,
+and may be biased due to how we share this survey: module maintainers may be
+more likely to closely follow the Go blog (where this survey is announced)
+than other Go developers.
+
+<img src="survey2023h2/mod_maintainer.svg" alt="Chart of how many respondents
+have served as a maintainer for a public Go module" class="chart" />
+
+Module maintainers appear to be largely self-motivated---they report working
+on modules that they need for personal (58%) or work (56%) projects, that they
+do so because they enjoy working on these modules (63%) and being part of the
+public Go community (44%), and that they learn useful skills from their module
+maintainership (44%). More external motivations, such as receiving recognition
+(15%), career advancement (36%), or cash money (20%) are towards the bottom of
+the list.
+
+<img src="survey2023h2/mod_motivation.svg" alt="Chart of the motivations of
+public module maintainers" class="chart" />
+
+Given the forms of [intrinsic
+motivation](https://en.wikipedia.org/wiki/Motivation#Intrinsic_and_extrinsic) identified above, it
+follows that a key challenge for module maintainers is finding time to devote
+to their module (41%). While this might not seem like an actionable finding in
+itself (we can't give Go developers an extra hour or two each day, right?),
+it's a helpful lens through which to view module tooling and
+development---these tasks are most likely occurring while the developer is
+already pressed for time, and perhaps it's been weeks or months since they
+last had an opportunity to work on it, so things aren't fresh in their memory.
+Thus, aspects like understandable and actionable error messages can be
+particularly helpful: rather than require someone to once again search for
+specific `go` command syntax, perhaps the error output could provide the
+solution they need right in their terminal.
+
+<img src="survey2023h2/mod_challenge.svg" alt="Chart of challenges respondents
+face when maintaining public Go modules" class="chart" />
+
+## Demographics {#demographics}
+
+Most survey respondents reported using Go for their primary job (78%), and a
+majority (59%) said they use it for personal or open-source projects. In fact,
+it's common for respondents to use Go for *both* work and personal/OSS
+projects, with 43% of respondents saying they use Go in each of these
+situations.
+
+<img src="survey2023h2/where.svg" alt="Chart of situations in which
+respondents recently used Go" class="chart" />
+
+The majority of respondents have been working with Go for under five years
+(68%). As we've seen in [prior
+years](https://go.dev/blog/survey2023-q1-results#novice-respondents-are-more-likely-to-prefer-windows-than-more-experienced-respondents),
+people who found this survey via VS Code tended to be less experienced than
+people who found the survey via other channels.
+
+When we break down where people use Go by their experience level, two findings
+stand out. First, a majority of respondents from all experience levels said
+they're using Go professionally; indeed, for people with over two years of
+experience, the vast majority use Go at work (85% -- 91%). A similar trend
+exists for open-source development. The second finding is that developers with
+less Go experience are more likely to be using Go to expand their skill set
+(38%) or to evaluate it for use at work (13%) than more experienced Go
+developers. We interpret this to mean that many Gophers initially view Go as
+part of "upskilling" or expanding their understanding of software development,
+but that within a year or two, they look to Go as more of a tool for doing
+than learning.
+
+<img src="survey2023h2/go_exp.svg" alt="Chart of how long respondents have
+been working with Go" class="chart" />
+
+<img src="survey2023h2/where_exp.svg" alt="Chart of situations in which
+respondents recently used Go, split by their level of Go experience"
+class="chart" />
+
+The most common use cases for Go continue to be API/RPC services (74%) and
+command line tools (62%). People tell us Go is a great choice for these types
+of software for several reasons, including its built-in HTTP server and
+concurrency primitives, ease of cross-compilation, and single-binary
+deployments.
+
+The intended audience for much of this tooling is in business settings (62%),
+with 17% of respondents reporting that they develop primarily for more
+consumer-oriented applications. This isn't surprising given the low use of Go
+for consumer-focused applications such as desktop, mobile, or gaming, vs. its
+very high use for backend services, CLI tooling, and cloud development, but it
+is a useful confirmation of how heavily Go is used in B2B settings.
+
+We also looked for differences based on respondents' level of experience with
+Go and organization size. More experienced Go developers reported building a
+wider variety of different things in Go; this trend was consistent across
+every category of app or service. We did not find any notable differences in
+what respondents are building based on their organization size.
+
+<img src="survey2023h2/what.svg" alt="Chart of the types of things respondents
+are building with Go" class="chart" />
+
+<img src="survey2023h2/enduser.svg" alt="Chart of the audience using the
+software respondents build" class="chart" />
+
+Respondents were about equally likely to say this was the first time they've
+responded to the Go Developer Survey vs. saying they had taken this survey
+before. There is a meaningful difference between people who learned about this
+survey via the Go blog, where 61% reported taking this survey previously, vs.
+people who learned about this survey via a notification in VS Code, where only
+31% said they've previously taken this survey. We don't expect people to
+perfectly recall every survey they've responded to on the internet, but this
+gives us some confidence that we're hearing from a balanced mix of new and
+repeat respondents with each survey. Further, this tells us our combination of
+social media posts and random in-editor sampling are both necessary for
+hearing from a diverse set of Go developers.
+
+<img src="survey2023h2/return_respondent.svg" alt="Chart of how many
+respondents said they have taken this survey before" class="chart" />
+
+## Firmographics {#firmographics}
+
+Respondents to this survey reported working at a mix of different
+organizations, from thousand-person-plus enterprises (27%), to midsize
+businesses (25%) and smaller organizations with < 100 employees (44%). About
+half of respondents work in the technology industry (50%), a large increase
+over the next most-common industry---financial services---at 13%.
+
+This is statistically unchanged from the past few Go Developer Surveys---we
+continue to hear from people in different countries and in organizations of
+different sizes and industries at consistent rates year after year.
+
+<img src="survey2023h2/org_size.svg" alt="Chart of the different organization
+sizes where respondents use Go" class="chart" />
+
+<img src="survey2023h2/industry.svg" alt="Chart of the different industries
+where respondents use Go" class="chart" />
+
+<img src="survey2023h2/location.svg" alt="Chart of countries or regions where
+respondents are located" class="chart" />
+
+## Methodology {#methodology}
+
+Most survey respondents "self-selected" to take this survey, meaning they
+found it on the Go blog or other social Go channels. A potential problem with
+this approach is that people who don't follow these channels are less likely
+to learn about the survey, and might respond differently than people who do
+closely follow them. About 40% of respondents were randomly sampled, meaning
+they responded to the survey after seeing a prompt for it in VS Code (everyone
+using the VS Code Go plugin between mid-July -- mid-August 2023 had a 10% of
+receiving this random prompt). This randomly sampled group helps us generalize
+these findings to the larger community of Go developers.
+
+### How to read these results
+
+Throughout this report we use charts of survey responses to provide supporting
+evidence for our findings. All of these charts use a similar format. The title
+is the exact question that survey respondents saw. Unless otherwise noted,
+questions were multiple choice and participants could only select a single
+response choice; each chart's subtitle will tell the reader if the question
+allowed multiple response choices or was an open-ended text box instead of a
+multiple choice question. For charts of open-ended text responses, a Go team
+member read and manually categorized the responses. Many open-ended questions
+elicited a wide variety of responses; to keep the chart sizes reasonable, we
+condensed them to a maximum of the top 10 themes, with additional themes all
+grouped under "Other". The percentage labels shown in charts are rounded to
+the nearest integer (e.g., 1.4% and 0.8% will both be displayed as 1%), but
+the length of each bar and row ordering are based on the unrounded values.
+
+To help readers understand the weight of evidence underlying each finding, we
+included error bars showing the 95% [confidence
+interval](https://en.wikipedia.org/wiki/Confidence_interval) for responses;
+narrower bars indicate increased confidence. Sometimes two or more responses
+have overlapping error bars, which means the relative order of those responses
+is not statistically meaningful (i.e., the responses are effectively tied).
+The lower right of each chart shows the number of people whose responses are
+included in the chart, in the form "n = [number of respondents]".
+
+We include select quotes from respondents to help clarify many of our
+findings. These quotes include the length of times the respondent has used Go.
+If the respondent said they use Go at work, we refer to them as a
+"professional Go developer"; if they don't use Go at work but do use Go for
+open-source development, we refer to them as an "open-source Go developer".
+
+## Closing {#closing}
+
+The final question on our survey always asks respondents whether there's
+anything else they'd like to share with us about Go. The most common piece of
+feedback people provide is "thanks!", and this year was no different (33%). In
+terms of requested language improvements, we see a three-way statistical tie
+between improved expressivity (12%), improved error handling (12%), and
+improved type safety or reliability (9%). Respondents had a variety of ideas
+for improving expressivity, with the general trend of this feedback being
+"Here's a specific thing I write frequently, and I wish it were easier to
+express this in Go". The issues with error handling continue to be complaints
+about the verbosity of this code today, while feedback about type safety most
+commonly touched on [sum types](https://en.wikipedia.org/wiki/Tagged_union).
+This type of high-level feedback is extremely useful when the Go team tries to
+plan focus areas for the coming year, as it tells us general directions in
+which the community is hoping to steer the ecosystem.
+
+> "I know about Go's attitude towards simplicity and I appreciate it. I just
+> wish there [were] slightly more features. For me it would be better error
+> handling (not exceptions though), and maybe some common creature comforts
+> like map/reduce/filter and ternary operators. Anything not too obscure
+> that'll save me some 'if' statements." <span class="quote_source">---
+> Professional Go developer w/ 1 -- 2 years of experience</span>
+
+> "Please keep Go in line with the long term values Go established so long ago
+> &mdash; language and library stability. [...] It is an environment I can
+> rely on to not break my code after 2 or 3 years. For that, thank you very
+> much." <span class="quote_source">--- Professional Go developer w/ 10+ years
+> of experience</span>
+
+<img src="survey2023h2/text_anything_else.svg" alt="Chart of other topics
+respondents shared with us" class="chart" />
+
+That's all for this bi-annual iteration of the Go Developer Survey. Thanks to
+everyone who shared their feedback about Go---we have immense gratitude for
+taking your time to help shape Go's future, and we hope you see some of your
+own feedback reflected in this report. 🩵
+
+--- Todd (on behalf of the Go team at Google)
\ No newline at end of file
diff --git a/_content/blog/survey2023h2/arch.svg b/_content/blog/survey2023h2/arch.svg
new file mode 100644
index 0000000..aff4ed6
--- /dev/null
+++ b/_content/blog/survey2023h2/arch.svg
@@ -0,0 +1,106 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='222.13pt' viewBox='0 0 432.00 222.13'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyMjIuMTM='>
+    <rect x='0.00' y='0.00' width='432.00' height='222.13' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMjIuMTM=)'>
+</g>
+<defs>
+  <clipPath id='cpODAuMzZ8NDI2LjUyfDQyLjMzfDE3My43NQ=='>
+    <rect x='80.36' y='42.33' width='346.16' height='131.42' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpODAuMzZ8NDI2LjUyfDQyLjMzfDE3My43NQ==)'>
+<polyline points='155.61,173.75 155.61,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='306.12,173.75 306.12,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='80.36,173.75 80.36,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='230.87,173.75 230.87,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='381.37,173.75 381.37,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='80.36' y='44.91' width='266.94' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='70.68' width='15.83' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='57.79' width='169.99' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='96.45' width='14.88' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='160.87' width='1.03' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='122.21' width='1.89' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='135.10' width='1.63' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='109.33' width='4.04' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='147.98' width='1.03' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='80.36' y='83.56' width='15.66' height='10.31' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='350.46,51.35 350.46,48.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='350.46,50.06 344.14,50.06 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='344.14,51.35 344.14,48.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='98.42,77.12 98.42,74.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='98.42,75.83 93.97,75.83 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.97,77.12 93.97,74.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='255.30,64.23 255.30,61.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='255.30,62.95 245.41,62.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='245.41,64.23 245.41,61.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='97.41,102.89 97.41,100.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='97.41,101.60 93.08,101.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.08,102.89 93.08,100.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.98,167.31 81.98,164.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.98,166.02 80.81,166.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='80.81,167.31 80.81,164.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.04,128.66 83.04,126.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.04,127.37 81.47,127.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.47,128.66 81.47,126.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='82.73,141.54 82.73,138.96 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='82.73,140.25 81.26,140.25 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.26,141.54 81.26,138.96 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='85.55,115.77 85.55,113.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='85.55,114.48 83.26,114.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.26,115.77 83.26,113.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.98,154.42 81.98,151.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.98,153.14 80.81,153.14 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='80.81,154.42 80.81,151.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='98.23,90.00 98.23,87.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='98.23,88.71 93.80,88.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.80,90.00 93.80,87.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='353.30' y='52.75' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>89%</text>
+<text x='100.53' y='78.52' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='256.35' y='65.64' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>56%</text>
+<text x='99.58' y='104.29' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='85.73' y='168.71' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='86.59' y='130.06' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='86.33' y='142.94' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='88.74' y='117.17' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='85.73' y='155.82' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='100.35' y='91.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMjIuMTM=)'>
+<text x='75.43' y='168.89' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='31.15px' lengthAdjust='spacingAndGlyphs'>Loong64</text>
+<text x='75.43' y='156.00' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.69px' lengthAdjust='spacingAndGlyphs'>S390x</text>
+<text x='75.43' y='143.12' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='25.34px' lengthAdjust='spacingAndGlyphs'>PPC64</text>
+<text x='75.43' y='130.24' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.56px' lengthAdjust='spacingAndGlyphs'>MIPS</text>
+<text x='75.43' y='117.35' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='27.11px' lengthAdjust='spacingAndGlyphs'>RISC-V</text>
+<text x='75.43' y='104.47' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='15.13px' lengthAdjust='spacingAndGlyphs'>i386</text>
+<text x='75.43' y='91.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='51.14px' lengthAdjust='spacingAndGlyphs'>WebAssembly</text>
+<text x='75.43' y='78.70' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.68px' lengthAdjust='spacingAndGlyphs'>ARM32</text>
+<text x='75.43' y='65.82' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.68px' lengthAdjust='spacingAndGlyphs'>ARM64</text>
+<text x='75.43' y='52.93' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='57.82px' lengthAdjust='spacingAndGlyphs'>x86-64 / AMD64</text>
+<text x='80.36' y='184.42' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='230.87' y='184.42' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='381.37' y='184.42' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='253.44' y='201.89' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='266.16px' lengthAdjust='spacingAndGlyphs'>Which architectures do you use when working with Go?</text>
+<text x='426.52' y='214.88' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,499</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/auth.svg b/_content/blog/survey2023h2/auth.svg
new file mode 100644
index 0000000..93ed4c4
--- /dev/null
+++ b/_content/blog/survey2023h2/auth.svg
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='255.25pt' viewBox='0 0 432.00 255.25'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyNTUuMjU='>
+    <rect x='0.00' y='0.00' width='432.00' height='255.25' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNTUuMjU=)'>
+</g>
+<defs>
+  <clipPath id='cpMTI5Ljc1fDQyNi41Mnw1My4xM3wyMDYuODc='>
+    <rect x='129.75' y='53.13' width='296.77' height='153.74' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTI5Ljc1fDQyNi41Mnw1My4xM3wyMDYuODc=)'>
+<polyline points='194.27,206.87 194.27,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='323.30,206.87 323.30,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='129.75,206.87 129.75,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='258.78,206.87 258.78,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='387.81,206.87 387.81,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='129.75' y='89.90' width='33.88' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='156.74' width='2.56' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='106.61' width='25.41' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='140.03' width='12.38' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='56.47' width='131.82' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='173.45' width='59.52' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='73.18' width='112.65' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='123.32' width='19.81' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='190.16' width='15.10' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='166.64,98.25 166.64,94.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='166.64,96.58 160.62,96.58 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.62,98.25 160.62,94.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='133.19,165.09 133.19,161.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='133.19,163.42 131.43,163.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='131.43,165.09 131.43,161.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.81,114.96 157.81,111.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.81,113.29 152.51,113.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='152.51,114.96 152.51,111.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.04,148.38 144.04,145.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.04,146.71 140.24,146.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='140.24,148.38 140.24,145.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='266.03,64.83 266.03,61.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='266.03,63.16 257.13,63.16 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='257.13,64.83 257.13,61.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='193.02,181.81 193.02,178.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='193.02,180.13 185.53,180.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.53,181.81 185.53,178.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='246.82,81.54 246.82,78.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='246.82,79.87 237.99,79.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='237.99,81.54 237.99,78.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.94,131.67 151.94,128.33 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.94,130.00 147.20,130.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='147.20,131.67 147.20,128.33 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='146.94,198.52 146.94,195.17 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='146.94,196.85 142.77,196.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='142.77,198.52 142.77,195.17 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='169.63' y='99.27' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>13%</text>
+<text x='136.65' y='166.11' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='161.16' y='115.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>10%</text>
+<text x='146.47' y='149.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='267.58' y='65.85' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>51%</text>
+<text x='195.28' y='182.82' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>23%</text>
+<text x='248.41' y='82.56' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>44%</text>
+<text x='153.90' y='132.69' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>8%</text>
+<text x='149.19' y='199.53' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNTUuMjU=)'>
+<text x='124.82' y='199.71' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='124.82' y='183.00' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.12px' lengthAdjust='spacingAndGlyphs'>None</text>
+<text x='124.82' y='166.29' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>Authy</text>
+<text x='124.82' y='149.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='31.13px' lengthAdjust='spacingAndGlyphs'>Firebase</text>
+<text x='124.82' y='132.87' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.90px' lengthAdjust='spacingAndGlyphs'>Okta</text>
+<text x='124.82' y='111.84' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.21px' lengthAdjust='spacingAndGlyphs'>A solution specific to my cloud</text>
+<text x='124.82' y='120.48' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='28.91px' lengthAdjust='spacingAndGlyphs'>provider</text>
+<text x='124.82' y='99.45' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.91px' lengthAdjust='spacingAndGlyphs'>Auth0</text>
+<text x='124.82' y='82.74' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='27.13px' lengthAdjust='spacingAndGlyphs'>OAuth2</text>
+<text x='124.82' y='66.03' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.44px' lengthAdjust='spacingAndGlyphs'>JWT</text>
+<text x='129.75' y='217.54' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='258.78' y='217.54' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='387.81' y='217.54' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='278.14' y='235.01' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='340.12px' lengthAdjust='spacingAndGlyphs'>Does the Go software you work on use any of the following systems for</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='190.06px' lengthAdjust='spacingAndGlyphs'>authentication or identity management?</text>
+<text x='426.52' y='248.00' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,230</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/cache.svg b/_content/blog/survey2023h2/cache.svg
new file mode 100644
index 0000000..35789d9
--- /dev/null
+++ b/_content/blog/survey2023h2/cache.svg
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='255.25pt' viewBox='0 0 432.00 255.25'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyNTUuMjU='>
+    <rect x='0.00' y='0.00' width='432.00' height='255.25' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNTUuMjU=)'>
+</g>
+<defs>
+  <clipPath id='cpMTI5Ljc1fDQyNi41Mnw1My4xM3wyMDYuODc='>
+    <rect x='129.75' y='53.13' width='296.77' height='153.74' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTI5Ljc1fDQyNi41Mnw1My4xM3wyMDYuODc=)'>
+<polyline points='194.27,206.87 194.27,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='323.30,206.87 323.30,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='129.75,206.87 129.75,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='258.78,206.87 258.78,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='387.81,206.87 387.81,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='129.75' y='123.32' width='8.47' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='106.61' width='11.45' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='73.18' width='24.98' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='156.74' width='3.82' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='89.90' width='19.26' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='173.45' width='81.34' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='190.16' width='15.27' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='56.47' width='146.09' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='140.03' width='4.40' height='13.37' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='139.84,131.67 139.84,128.33 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='139.84,130.00 136.61,130.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='136.61,131.67 136.61,128.33 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.08,114.96 143.08,111.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.08,113.29 139.34,113.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='139.34,114.96 139.34,111.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.42,81.54 157.42,78.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.42,79.87 152.06,79.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='152.06,81.54 152.06,78.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='134.67,165.09 134.67,161.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='134.67,163.42 132.48,163.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='132.48,165.09 132.48,161.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.40,98.25 151.40,94.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.40,96.58 146.63,96.58 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='146.63,98.25 146.63,94.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.31,181.81 215.31,178.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.31,180.13 206.88,180.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='206.88,181.81 206.88,178.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='147.17,198.52 147.17,195.17 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='147.17,196.85 142.89,196.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='142.89,198.52 142.89,195.17 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='280.34,64.83 280.34,61.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='280.34,63.16 271.34,63.16 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='271.34,64.83 271.34,61.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.33,148.38 135.33,145.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.33,146.71 132.98,146.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='132.98,148.38 132.98,145.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='142.56' y='132.69' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='145.54' y='115.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='160.74' y='82.56' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>10%</text>
+<text x='137.91' y='166.11' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='153.35' y='99.27' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='217.10' y='182.82' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>32%</text>
+<text x='149.36' y='199.53' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='281.84' y='65.85' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>57%</text>
+<text x='138.49' y='149.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNTUuMjU=)'>
+<text x='124.82' y='199.71' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='124.82' y='183.00' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.12px' lengthAdjust='spacingAndGlyphs'>None</text>
+<text x='124.82' y='166.29' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='30.24px' lengthAdjust='spacingAndGlyphs'>LevelDB</text>
+<text x='124.82' y='149.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='33.34px' lengthAdjust='spacingAndGlyphs'>RocksDB</text>
+<text x='124.82' y='132.87' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='36.91px' lengthAdjust='spacingAndGlyphs'>BadgerDB</text>
+<text x='124.82' y='111.84' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.21px' lengthAdjust='spacingAndGlyphs'>A solution specific to my cloud</text>
+<text x='124.82' y='120.48' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='28.91px' lengthAdjust='spacingAndGlyphs'>provider</text>
+<text x='124.82' y='99.45' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='43.59px' lengthAdjust='spacingAndGlyphs'>Memcached</text>
+<text x='124.82' y='82.74' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='15.13px' lengthAdjust='spacingAndGlyphs'>etcd</text>
+<text x='124.82' y='66.03' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>Redis</text>
+<text x='129.75' y='217.54' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='258.78' y='217.54' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='387.81' y='217.54' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='278.14' y='235.01' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='379.06px' lengthAdjust='spacingAndGlyphs'>Does the Go software you work on use any of the following caches or key-value</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='36.14px' lengthAdjust='spacingAndGlyphs'>stores?</text>
+<text x='426.52' y='248.00' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,109</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/cloud.svg b/_content/blog/survey2023h2/cloud.svg
new file mode 100644
index 0000000..1cbed20
--- /dev/null
+++ b/_content/blog/survey2023h2/cloud.svg
@@ -0,0 +1,131 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='258.11pt' viewBox='0 0 432.00 258.11'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyNTguMTE='>
+    <rect x='0.00' y='0.00' width='432.00' height='258.11' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNTguMTE=)'>
+</g>
+<defs>
+  <clipPath id='cpMTI5LjI3fDQyNi41Mnw1My4xM3wyMDkuNzM='>
+    <rect x='129.27' y='53.13' width='297.26' height='156.60' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTI5LjI3fDQyNi41Mnw1My4xM3wyMDkuNzM=)'>
+<polyline points='193.89,209.73 193.89,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='323.13,209.73 323.13,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='129.27,209.73 129.27,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='258.51,209.73 258.51,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='387.75,209.73 387.75,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='129.27' y='99.45' width='12.36' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='55.34' width='123.99' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='77.39' width='36.39' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='88.42' width='25.26' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='110.48' width='8.19' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='66.37' width='75.55' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='143.56' width='6.41' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='176.65' width='2.39' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='121.51' width='8.03' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='187.67' width='63.42' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='132.53' width='6.88' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='154.59' width='4.71' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='198.70' width='18.39' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.27' y='165.62' width='3.55' height='8.82' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='143.49,104.96 143.49,102.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.49,103.86 139.76,103.86 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='139.76,104.96 139.76,102.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='257.63,60.85 257.63,58.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='257.63,59.75 248.88,59.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='248.88,60.85 248.88,58.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='168.70,82.91 168.70,80.70 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='168.70,81.80 162.60,81.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.60,82.91 162.60,80.70 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.13,93.94 157.13,91.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.13,92.83 151.93,92.83 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.93,93.94 151.93,91.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='138.99,115.99 138.99,113.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='138.99,114.89 135.92,114.89 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.92,115.99 135.92,113.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='208.80,71.88 208.80,69.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='208.80,70.78 200.83,70.78 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='200.83,71.88 200.83,69.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='137.04,149.08 137.04,146.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='137.04,147.97 134.31,147.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='134.31,149.08 134.31,146.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='132.50,182.16 132.50,179.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='132.50,181.06 130.82,181.06 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='130.82,182.16 130.82,179.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='138.82,127.02 138.82,124.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='138.82,125.92 135.78,125.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.78,127.02 135.78,124.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='196.46,193.19 196.46,190.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='196.46,192.09 188.92,192.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='188.92,193.19 188.92,190.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='137.55,138.05 137.55,135.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='137.55,136.94 134.73,136.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='134.73,138.05 134.73,135.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.15,160.10 135.15,157.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.15,159.00 132.81,159.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='132.81,160.10 132.81,157.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='149.90,204.22 149.90,202.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='149.90,203.11 145.40,203.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='145.40,204.22 145.40,202.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='133.84,171.13 133.84,168.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='133.84,170.03 131.80,170.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='131.80,171.13 131.80,168.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='145.96' y='106.55' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='259.26' y='62.44' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>48%</text>
+<text x='171.65' y='84.49' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>14%</text>
+<text x='160.53' y='95.52' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>10%</text>
+<text x='141.79' y='117.58' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='210.82' y='73.47' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>29%</text>
+<text x='140.01' y='150.66' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='135.99' y='183.75' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='141.63' y='128.61' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='198.69' y='194.77' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>25%</text>
+<text x='140.47' y='139.63' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='138.31' y='161.69' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='151.99' y='205.80' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='137.15' y='172.72' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNTguMTE=)'>
+<text x='124.33' y='205.98' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='124.33' y='194.95' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.12px' lengthAdjust='spacingAndGlyphs'>None</text>
+<text x='124.33' y='183.93' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='37.35px' lengthAdjust='spacingAndGlyphs'>IBM Cloud</text>
+<text x='124.33' y='172.90' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.04px' lengthAdjust='spacingAndGlyphs'>Tencent Cloud</text>
+<text x='124.33' y='161.87' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='46.69px' lengthAdjust='spacingAndGlyphs'>Oracle Cloud</text>
+<text x='124.33' y='150.84' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='25.79px' lengthAdjust='spacingAndGlyphs'>Heroku</text>
+<text x='124.33' y='139.81' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.59px' lengthAdjust='spacingAndGlyphs'>OpenStack</text>
+<text x='124.33' y='128.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.03px' lengthAdjust='spacingAndGlyphs'>Linode</text>
+<text x='124.33' y='117.76' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.12px' lengthAdjust='spacingAndGlyphs'>Fly.io</text>
+<text x='124.33' y='106.73' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='78.29px' lengthAdjust='spacingAndGlyphs'>Aliyun / Alibaba Cloud</text>
+<text x='124.33' y='95.70' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='48.03px' lengthAdjust='spacingAndGlyphs'>Digital Ocean</text>
+<text x='124.33' y='84.67' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='55.59px' lengthAdjust='spacingAndGlyphs'>Microsoft Azure</text>
+<text x='124.33' y='73.65' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='105.83px' lengthAdjust='spacingAndGlyphs'>Google Cloud Platform (GCP)</text>
+<text x='124.33' y='62.62' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='106.72px' lengthAdjust='spacingAndGlyphs'>Amazon Web Services (AWS)</text>
+<text x='129.27' y='220.40' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='258.51' y='220.40' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='387.75' y='220.40' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='277.89' y='237.87' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='347.90px' lengthAdjust='spacingAndGlyphs'>Does the Go software you work on use any of the following cloud service</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='51.69px' lengthAdjust='spacingAndGlyphs'>providers?</text>
+<text x='426.52' y='250.86' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,346</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/csat.svg b/_content/blog/survey2023h2/csat.svg
new file mode 100644
index 0000000..934c573
--- /dev/null
+++ b/_content/blog/survey2023h2/csat.svg
@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='180.00pt' viewBox='0 0 432.00 180.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxODAuMDA='>
+    <rect x='0.00' y='0.00' width='432.00' height='180.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxODAuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMjIuNTV8NDI2LjUyfDc0Ljk3fDEzMS42Mg=='>
+    <rect x='22.55' y='74.97' width='403.97' height='56.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMjIuNTV8NDI2LjUyfDc0Ljk3fDEzMS42Mg==)'>
+<polyline points='110.37,131.62 110.37,74.97 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='286.01,131.62 286.01,74.97 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='22.55,131.62 22.55,74.97 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='198.19,131.62 198.19,74.97 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='373.83,131.62 373.83,74.97 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='352.64' y='84.41' width='21.19' height='37.77' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<rect x='337.52' y='84.41' width='15.12' height='37.77' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='22.55' y='84.41' width='314.97' height='37.77' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #44DD88;' />
+<text x='363.23' y='105.99' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='345.08' y='105.99' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='180.03' y='105.99' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>90%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxODAuMDA=)'>
+<text x='22.55' y='142.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='198.19' y='142.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='373.83' y='142.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='224.53' y='159.76' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<rect x='89.54' y='50.54' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #44DD88;' />
+<rect x='142.38' y='50.54' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='277.50' y='50.54' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<text x='106.99' y='59.79' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='30.69px' lengthAdjust='spacingAndGlyphs'>Satisfied</text>
+<text x='159.83' y='59.79' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='112.98px' lengthAdjust='spacingAndGlyphs'>Neither satisfied nor dissatisfied</text>
+<text x='294.95' y='59.79' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='40.92px' lengthAdjust='spacingAndGlyphs'>Dissatisfied</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='362.92px' lengthAdjust='spacingAndGlyphs'>Overall, how satisfied or dissatisfied have you felt while using Go during the</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='50.05px' lengthAdjust='spacingAndGlyphs'>past year?</text>
+<text x='426.52' y='172.75' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,531</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/data.svg b/_content/blog/survey2023h2/data.svg
new file mode 100644
index 0000000..2c38b5b
--- /dev/null
+++ b/_content/blog/survey2023h2/data.svg
@@ -0,0 +1,100 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='212.71pt' viewBox='0 0 432.00 212.71'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyMTIuNzE='>
+    <rect x='0.00' y='0.00' width='432.00' height='212.71' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMTIuNzE=)'>
+</g>
+<defs>
+  <clipPath id='cpNzguNTl8NDI2LjUyfDQyLjMzfDE2NC4zMw=='>
+    <rect x='78.59' y='42.33' width='347.93' height='122.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNzguNTl8NDI2LjUyfDQyLjMzfDE2NC4zMw==)'>
+<polyline points='154.23,164.33 154.23,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='305.50,164.33 305.50,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='78.59,164.33 78.59,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='229.86,164.33 229.86,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='381.14,164.33 381.14,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='78.59' y='71.51' width='137.22' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='78.59' y='124.55' width='18.38' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='78.59' y='44.98' width='290.18' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='78.59' y='137.81' width='3.71' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='78.59' y='151.07' width='12.64' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='78.59' y='84.77' width='132.98' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='78.59' y='111.29' width='50.19' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='78.59' y='98.03' width='62.21' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='78.59' y='58.24' width='163.11' height='10.61' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='220.86,78.14 220.86,75.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='220.86,76.81 210.77,76.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.77,78.14 210.77,75.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='99.39,131.18 99.39,128.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='99.39,129.85 94.55,129.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='94.55,131.18 94.55,128.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='370.77,51.61 370.77,48.96 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='370.77,50.29 366.76,50.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='366.76,51.61 366.76,48.96 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.42,144.44 83.42,141.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.42,143.11 81.19,143.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.19,144.44 81.19,141.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.25,157.70 93.25,155.05 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.25,156.37 89.20,156.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='89.20,157.70 89.20,155.05 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='216.60,91.40 216.60,88.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='216.60,90.07 206.54,90.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='206.54,91.40 206.54,88.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='132.55,117.92 132.55,115.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='132.55,116.59 125.01,116.59 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='125.01,117.92 125.01,115.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.89,104.66 144.89,102.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.89,103.33 136.70,103.33 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='136.70,104.66 136.70,102.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='246.76,64.87 246.76,62.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='246.76,63.55 236.65,63.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='236.65,64.87 236.65,62.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='221.82' y='79.50' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>45%</text>
+<text x='101.30' y='132.54' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='374.77' y='52.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>96%</text>
+<text x='86.64' y='145.80' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='95.56' y='159.06' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='217.58' y='92.76' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>44%</text>
+<text x='134.78' y='119.28' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>17%</text>
+<text x='146.80' y='106.02' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>21%</text>
+<text x='247.71' y='66.24' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>54%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMTIuNzE=)'>
+<text x='73.66' y='159.24' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='73.66' y='145.98' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.12px' lengthAdjust='spacingAndGlyphs'>None</text>
+<text x='73.66' y='132.72' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.00px' lengthAdjust='spacingAndGlyphs'>HCL</text>
+<text x='73.66' y='119.46' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>TOML</text>
+<text x='73.66' y='106.20' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.45px' lengthAdjust='spacingAndGlyphs'>XML</text>
+<text x='73.66' y='92.94' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='56.04px' lengthAdjust='spacingAndGlyphs'>Protocol buffers</text>
+<text x='73.66' y='79.68' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.44px' lengthAdjust='spacingAndGlyphs'>CSV</text>
+<text x='73.66' y='66.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='21.79px' lengthAdjust='spacingAndGlyphs'>YAML</text>
+<text x='73.66' y='53.16' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='21.33px' lengthAdjust='spacingAndGlyphs'>JSON</text>
+<text x='78.59' y='175.00' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='229.86' y='175.00' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='381.14' y='175.00' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='252.56' y='192.47' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='350.10px' lengthAdjust='spacingAndGlyphs'>Does the Go software you work on use any of the following data formats?</text>
+<text x='426.52' y='205.46' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,424</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/db.svg b/_content/blog/survey2023h2/db.svg
new file mode 100644
index 0000000..d291c77
--- /dev/null
+++ b/_content/blog/survey2023h2/db.svg
@@ -0,0 +1,131 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='309.73pt' viewBox='0 0 432.00 309.73'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzMDkuNzM='>
+    <rect x='0.00' y='0.00' width='432.00' height='309.73' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMDkuNzM=)'>
+</g>
+<defs>
+  <clipPath id='cpMTI5Ljc1fDQyNi41Mnw0Mi4zM3wyNjEuMzU='>
+    <rect x='129.75' y='42.33' width='296.77' height='219.02' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTI5Ljc1fDQyNi41Mnw0Mi4zM3wyNjEuMzU=)'>
+<polyline points='194.27,261.35 194.27,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='323.30,261.35 323.30,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='129.75,261.35 129.75,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='258.78,261.35 258.78,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='387.81,261.35 387.81,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='129.75' y='184.23' width='11.49' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='137.96' width='24.66' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='168.81' width='11.49' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='215.08' width='2.99' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='122.54' width='29.80' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='107.11' width='56.22' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='153.38' width='12.87' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='76.26' width='77.06' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='230.50' width='22.75' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='199.66' width='7.66' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='245.93' width='20.45' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='45.42' width='151.13' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='60.84' width='97.28' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='91.69' width='74.53' height='12.34' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='143.04,191.94 143.04,188.86 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.04,190.40 139.45,190.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='139.45,191.94 139.45,188.86 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.98,145.67 156.98,142.59 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.98,144.13 151.86,144.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.86,145.67 151.86,142.59 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.04,176.52 143.04,173.44 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.04,174.98 139.45,174.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='139.45,176.52 139.45,173.44 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='133.67,222.79 133.67,219.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='133.67,221.25 131.81,221.25 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='131.81,222.79 131.81,219.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.34,130.25 162.34,127.16 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.34,128.71 156.77,128.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.77,130.25 156.77,127.16 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='189.57,114.82 189.57,111.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='189.57,113.28 182.38,113.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='182.38,114.82 182.38,111.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.52,161.10 144.52,158.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.52,159.55 140.73,159.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='140.73,161.10 140.73,158.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.80,83.98 210.80,80.89 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.80,82.43 202.82,82.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='202.82,83.98 202.82,80.89 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='154.97,238.22 154.97,235.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='154.97,236.67 150.03,236.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.03,238.22 150.03,235.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='138.89,207.37 138.89,204.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='138.89,205.83 135.94,205.83 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.94,207.37 135.94,204.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='152.56,253.64 152.56,250.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='152.56,252.10 147.85,252.10 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='147.85,253.64 147.85,250.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='285.17,53.13 285.17,50.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='285.17,51.59 276.59,51.59 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='276.59,53.13 276.59,50.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.26,68.55 231.26,65.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.26,67.01 222.81,67.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='222.81,68.55 222.81,65.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='208.23,99.40 208.23,96.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='208.23,97.86 200.33,97.86 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='200.33,99.40 200.33,96.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='145.58' y='193.09' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='160.42' y='146.82' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>10%</text>
+<text x='145.58' y='177.67' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='137.08' y='223.94' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='165.55' y='131.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>12%</text>
+<text x='191.98' y='115.97' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+<text x='146.96' y='162.24' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='212.81' y='85.12' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>30%</text>
+<text x='156.84' y='239.36' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='141.75' y='208.52' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='154.54' y='254.79' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>8%</text>
+<text x='286.88' y='54.28' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>59%</text>
+<text x='233.04' y='69.70' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>38%</text>
+<text x='210.29' y='100.55' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>29%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMDkuNzM=)'>
+<text x='124.82' y='254.97' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='124.82' y='239.54' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.12px' lengthAdjust='spacingAndGlyphs'>None</text>
+<text x='124.82' y='224.12' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='34.24px' lengthAdjust='spacingAndGlyphs'>CouchDB</text>
+<text x='124.82' y='208.70' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='23.57px' lengthAdjust='spacingAndGlyphs'>Oracle</text>
+<text x='124.82' y='193.27' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='38.69px' lengthAdjust='spacingAndGlyphs'>Cassandra</text>
+<text x='124.82' y='177.85' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='49.36px' lengthAdjust='spacingAndGlyphs'>CockroachDB</text>
+<text x='124.82' y='162.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='76.49px' lengthAdjust='spacingAndGlyphs'>Microsoft SQL Server</text>
+<text x='124.82' y='142.68' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.21px' lengthAdjust='spacingAndGlyphs'>A solution specific to my cloud</text>
+<text x='124.82' y='151.32' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='28.91px' lengthAdjust='spacingAndGlyphs'>provider</text>
+<text x='124.82' y='131.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='31.12px' lengthAdjust='spacingAndGlyphs'>MariaDB</text>
+<text x='124.82' y='116.15' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='35.58px' lengthAdjust='spacingAndGlyphs'>MongoDB</text>
+<text x='124.82' y='100.73' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='18.68px' lengthAdjust='spacingAndGlyphs'>sqlite</text>
+<text x='124.82' y='85.30' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.68px' lengthAdjust='spacingAndGlyphs'>MySQL</text>
+<text x='124.82' y='69.88' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>Redis</text>
+<text x='124.82' y='54.46' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='43.58px' lengthAdjust='spacingAndGlyphs'>PostgreSQL</text>
+<text x='129.75' y='272.02' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='258.78' y='272.02' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='387.81' y='272.02' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='278.14' y='289.49' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='339.00px' lengthAdjust='spacingAndGlyphs'>Does the Go software you work on use any of the following databases?</text>
+<text x='426.52' y='302.48' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,369</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/editor_self_select.svg b/_content/blog/survey2023h2/editor_self_select.svg
new file mode 100644
index 0000000..f28e0a5
--- /dev/null
+++ b/_content/blog/survey2023h2/editor_self_select.svg
@@ -0,0 +1,81 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='183.00pt' viewBox='0 0 432.00 183.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxODMuMDA='>
+    <rect x='0.00' y='0.00' width='432.00' height='183.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxODMuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpNzAuMTJ8NDI2LjUyfDI0Ljg2fDEzNC42Mg=='>
+    <rect x='70.12' y='24.86' width='356.40' height='109.76' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNzAuMTJ8NDI2LjUyfDI0Ljg2fDEzNC42Mg==)'>
+<polyline points='147.60,134.62 147.60,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='302.56,134.62 302.56,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='70.12,134.62 70.12,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='225.08,134.62 225.08,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='380.03,134.62 380.03,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='70.12' y='81.51' width='9.85' height='14.16' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='70.12' y='46.10' width='96.74' height='14.16' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='70.12' y='99.21' width='3.57' height='14.16' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='70.12' y='63.81' width='50.37' height='14.16' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='70.12' y='28.40' width='137.12' height='14.16' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='70.12' y='116.92' width='12.27' height='14.16' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='82.26,90.36 82.26,86.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='82.26,88.59 77.68,88.59 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='77.68,90.36 77.68,86.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.90,54.96 172.90,51.41 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.90,53.18 160.82,53.18 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.82,54.96 160.82,51.41 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='75.08,108.07 75.08,104.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='75.08,106.29 72.30,106.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='72.30,108.07 72.30,104.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='125.30,72.66 125.30,69.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='125.30,70.89 115.68,70.89 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='115.68,72.66 115.68,69.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='213.72,37.25 213.72,33.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='213.72,35.48 200.77,35.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='200.77,37.25 200.77,33.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.94,125.77 84.94,122.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.94,124.00 79.85,124.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='79.85,125.77 79.85,122.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='84.30' y='91.28' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='172.87' y='55.87' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>31%</text>
+<text x='78.03' y='108.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='126.49' y='73.58' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>16%</text>
+<text x='213.25' y='38.17' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>44%</text>
+<text x='86.73' y='126.69' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxODMuMDA=)'>
+<text x='65.19' y='126.87' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='65.19' y='109.16' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='46.70px' lengthAdjust='spacingAndGlyphs'>Sublime Text</text>
+<text x='65.19' y='91.46' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.46px' lengthAdjust='spacingAndGlyphs'>Emacs</text>
+<text x='65.19' y='73.76' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='47.58px' lengthAdjust='spacingAndGlyphs'>Vim / Neovim</text>
+<text x='65.19' y='56.05' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='28.47px' lengthAdjust='spacingAndGlyphs'>GoLand</text>
+<text x='65.19' y='38.35' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.02px' lengthAdjust='spacingAndGlyphs'>VS Code</text>
+<text x='70.12' y='145.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='225.08' y='145.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='380.03' y='145.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='248.32' y='162.76' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='202.29px' lengthAdjust='spacingAndGlyphs'>What is your preferred code editor for Go?</text>
+<text x='426.52' y='175.75' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,172</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/enduser.svg b/_content/blog/survey2023h2/enduser.svg
new file mode 100644
index 0000000..a7fe8e7
--- /dev/null
+++ b/_content/blog/survey2023h2/enduser.svg
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='193.77pt' viewBox='0 0 432.00 193.77'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxOTMuNzc='>
+    <rect x='0.00' y='0.00' width='432.00' height='193.77' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxOTMuNzc=)'>
+</g>
+<defs>
+  <clipPath id='cpMTUwLjIyfDQyNi41MnwzNS42NnwxNDUuMzg='>
+    <rect x='150.22' y='35.66' width='276.30' height='109.73' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTUwLjIyfDQyNi41MnwzNS42NnwxNDUuMzg=)'>
+<polyline points='210.28,145.38 210.28,35.66 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='330.41,145.38 330.41,35.66 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='150.22,145.38 150.22,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='270.35,145.38 270.35,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='390.48,145.38 390.48,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='150.22' y='40.88' width='148.00' height='20.90' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='150.22' y='93.13' width='40.68' height='20.90' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='150.22' y='67.01' width='47.33' height='20.90' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='150.22' y='119.26' width='4.24' height='20.90' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='302.40,53.95 302.40,48.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='302.40,51.33 294.04,51.33 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='294.04,53.95 294.04,48.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='194.13,106.20 194.13,100.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='194.13,103.58 187.68,103.58 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='187.68,106.20 187.68,100.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='200.97,80.07 200.97,74.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='200.97,77.46 194.13,77.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='194.13,80.07 194.13,74.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.59,132.32 155.59,127.10 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.59,129.71 153.33,129.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='153.33,132.32 153.33,127.10 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='304.22' y='54.02' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>62%</text>
+<text x='196.90' y='106.27' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>17%</text>
+<text x='203.55' y='80.15' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>20%</text>
+<text x='158.80' y='132.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxOTMuNzc=)'>
+<text x='145.29' y='132.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='84.06px' lengthAdjust='spacingAndGlyphs'>Neither (please specify)</text>
+<text x='145.29' y='102.13' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='118.76px' lengthAdjust='spacingAndGlyphs'>Mostly as part of their personal or</text>
+<text x='145.29' y='110.77' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='113.41px' lengthAdjust='spacingAndGlyphs'>family life / consumer use (B2C)</text>
+<text x='145.29' y='80.33' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='66.29px' lengthAdjust='spacingAndGlyphs'>Both about equally</text>
+<text x='145.29' y='49.88' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='127.67px' lengthAdjust='spacingAndGlyphs'>Mostly as part of their job / business</text>
+<text x='145.29' y='58.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='35.58px' lengthAdjust='spacingAndGlyphs'>use (B2B)</text>
+<text x='150.22' y='156.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='270.35' y='156.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='390.48' y='156.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='288.37' y='173.53' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='361.80px' lengthAdjust='spacingAndGlyphs'>When would people be most likely to use the Go software you most recently</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='56.11px' lengthAdjust='spacingAndGlyphs'>worked on?</text>
+<text x='426.52' y='186.52' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,000</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/err_exp.svg b/_content/blog/survey2023h2/err_exp.svg
new file mode 100644
index 0000000..283b07e
--- /dev/null
+++ b/_content/blog/survey2023h2/err_exp.svg
@@ -0,0 +1,96 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='309.10pt' viewBox='0 0 432.00 309.10'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzMDkuMTA='>
+    <rect x='0.00' y='0.00' width='432.00' height='309.10' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMDkuMTA=)'>
+</g>
+<defs>
+  <clipPath id='cpMTUzLjc2fDQyNi41Mnw1My4xM3wyNjAuNzI='>
+    <rect x='153.76' y='53.13' width='272.76' height='207.58' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTUzLjc2fDQyNi41Mnw1My4xM3wyNjAuNzI=)'>
+<polyline points='213.06,260.72 213.06,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='331.65,260.72 331.65,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='153.76,260.72 153.76,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='272.35,260.72 272.35,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='390.94,260.72 390.94,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='153.76' y='203.05' width='26.42' height='23.06' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.76' y='145.39' width='58.17' height='23.06' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.76' y='87.73' width='96.73' height='23.06' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.76' y='174.22' width='34.84' height='23.06' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.76' y='116.56' width='65.54' height='23.06' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.76' y='231.89' width='12.22' height='23.06' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.76' y='58.90' width='127.99' height='23.06' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='182.86,217.47 182.86,211.70 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='182.86,214.59 177.51,214.59 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='177.51,217.47 177.51,211.70 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.58,159.81 215.58,154.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.58,156.92 208.27,156.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='208.27,159.81 208.27,154.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='254.67,102.14 254.67,96.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='254.67,99.26 246.31,99.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='246.31,102.14 246.31,96.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.60,188.64 191.60,182.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.60,185.76 185.59,185.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.59,188.64 185.59,182.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='223.11,130.98 223.11,125.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='223.11,128.09 215.50,128.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.50,130.98 215.50,125.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='167.86,246.30 167.86,240.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='167.86,243.42 164.10,243.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.10,246.30 164.10,240.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='285.99,73.31 285.99,67.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='285.99,70.43 277.52,70.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='277.52,73.31 277.52,67.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='186.19' y='217.28' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>11%</text>
+<text x='217.93' y='159.61' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>25%</text>
+<text x='256.49' y='101.95' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>41%</text>
+<text x='194.60' y='188.44' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>15%</text>
+<text x='225.31' y='130.78' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>28%</text>
+<text x='170.31' y='246.11' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='287.76' y='73.12' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>54%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMDkuMTA=)'>
+<text x='148.83' y='241.97' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.09px' lengthAdjust='spacingAndGlyphs'>The error message included more</text>
+<text x='148.83' y='250.61' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='90.76px' lengthAdjust='spacingAndGlyphs'>information than I needed</text>
+<text x='148.83' y='213.14' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='117.18px' lengthAdjust='spacingAndGlyphs'>I didn't understand what the error</text>
+<text x='148.83' y='221.78' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='56.94px' lengthAdjust='spacingAndGlyphs'>message meant</text>
+<text x='148.83' y='179.98' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='124.74px' lengthAdjust='spacingAndGlyphs'>I didn't know how to fix the problem</text>
+<text x='148.83' y='188.62' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.55px' lengthAdjust='spacingAndGlyphs'>without searching online or asking</text>
+<text x='148.83' y='197.26' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='49.82px' lengthAdjust='spacingAndGlyphs'>someone else</text>
+<text x='148.83' y='151.15' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='128.99px' lengthAdjust='spacingAndGlyphs'>I mostly knew how to fix the problem</text>
+<text x='148.83' y='159.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='117.01px' lengthAdjust='spacingAndGlyphs'>but needed to find an example or</text>
+<text x='148.83' y='168.43' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.05px' lengthAdjust='spacingAndGlyphs'>specific syntax</text>
+<text x='148.83' y='130.96' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='68.52px' lengthAdjust='spacingAndGlyphs'>I had seen it before</text>
+<text x='148.83' y='97.81' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='131.21px' lengthAdjust='spacingAndGlyphs'>I knew how to fix the problem without</text>
+<text x='148.83' y='106.45' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.94px' lengthAdjust='spacingAndGlyphs'>any assistance</text>
+<text x='148.83' y='73.30' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='124.55px' lengthAdjust='spacingAndGlyphs'>I understood what the problem was</text>
+<text x='153.76' y='271.39' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='272.35' y='271.39' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='390.94' y='271.39' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='290.14' y='288.86' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='374.08px' lengthAdjust='spacingAndGlyphs'>Think of the most recent Go error message you can recall seeing. Which of the</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='277.93px' lengthAdjust='spacingAndGlyphs'>following reflect your experience with that error message?</text>
+<text x='426.52' y='301.85' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,989</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/err_exp_exp.svg b/_content/blog/survey2023h2/err_exp_exp.svg
new file mode 100644
index 0000000..c541c72
--- /dev/null
+++ b/_content/blog/survey2023h2/err_exp_exp.svg
@@ -0,0 +1,172 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='506.52pt' viewBox='0 0 432.00 506.52'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHw1MDYuNTI='>
+    <rect x='0.00' y='0.00' width='432.00' height='506.52' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHw1MDYuNTI=)'>
+</g>
+<defs>
+  <clipPath id='cpMTUzLjc2fDQyNi41Mnw5Mi40NHw0NTguMTQ='>
+    <rect x='153.76' y='92.44' width='272.76' height='365.71' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTUzLjc2fDQyNi41Mnw5Mi40NHw0NTguMTQ=)'>
+<polyline points='213.06,458.14 213.06,92.44 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='331.65,458.14 331.65,92.44 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='153.76,458.14 153.76,92.44 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='272.35,458.14 272.35,92.44 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='390.94,458.14 390.94,92.44 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='153.76' y='383.65' width='17.72' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='153.76' y='370.10' width='26.39' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='153.76' y='356.56' width='34.86' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='153.76' y='282.06' width='42.74' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='153.76' y='268.52' width='60.10' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='153.76' y='254.97' width='71.65' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='153.76' y='180.48' width='124.02' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='153.76' y='166.93' width='98.51' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='153.76' y='153.39' width='69.08' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='153.76' y='332.85' width='21.92' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='153.76' y='319.31' width='31.66' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='153.76' y='305.77' width='49.62' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='153.76' y='231.27' width='78.40' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='153.76' y='217.73' width='66.26' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='153.76' y='204.18' width='52.61' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='153.76' y='434.44' width='8.19' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='153.76' y='420.89' width='13.49' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='153.76' y='407.35' width='15.18' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='153.76' y='129.69' width='144.61' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='153.76' y='116.14' width='128.12' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='153.76' y='102.60' width='111.85' height='13.54' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<polyline points='175.21,393.81 175.21,390.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='175.21,392.11 167.74,392.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='167.74,393.81 167.74,390.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.29,378.57 185.29,375.18 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.29,376.87 175.01,376.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='175.01,378.57 175.01,375.18 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='193.56,363.33 193.56,359.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='193.56,361.64 183.68,361.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='183.68,363.33 183.68,359.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='201.96,292.22 201.96,288.83 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='201.96,290.53 191.04,290.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.04,292.22 191.04,288.83 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='220.97,276.98 220.97,273.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='220.97,275.29 206.75,275.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='206.75,276.98 206.75,273.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.82,261.75 231.82,258.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.82,260.05 219.00,260.05 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='219.00,261.75 219.00,258.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='284.87,190.64 284.87,187.25 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='284.87,188.94 270.68,188.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='270.68,190.64 270.68,187.25 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='260.32,175.40 260.32,172.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='260.32,173.71 244.21,173.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='244.21,175.40 244.21,172.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='229.18,160.16 229.18,156.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='229.18,158.47 216.50,158.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='216.50,160.16 216.50,156.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.80,343.01 179.80,339.63 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.80,341.32 171.57,341.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.57,343.01 171.57,339.63 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='190.98,327.78 190.98,324.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='190.98,326.08 179.86,326.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.86,327.78 179.86,324.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='209.06,312.54 209.06,309.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='209.06,310.84 197.70,310.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='197.70,312.54 197.70,309.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='238.84,241.43 238.84,238.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='238.84,239.74 225.47,239.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.47,241.43 225.47,238.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='227.35,226.19 227.35,222.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='227.35,224.50 212.69,224.50 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='212.69,226.19 212.69,222.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='212.17,210.95 212.17,207.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='212.17,209.26 200.57,209.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='200.57,210.95 200.57,207.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.55,444.60 164.55,441.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.55,442.90 159.36,442.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='159.36,444.60 159.36,441.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.03,429.36 171.03,425.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.03,427.67 163.46,427.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.46,429.36 163.46,425.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.36,414.12 172.36,410.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.36,412.43 165.53,412.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.53,414.12 165.53,410.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='305.30,139.84 305.30,136.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='305.30,138.15 291.44,138.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='291.44,139.84 291.44,136.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='290.03,124.61 290.03,121.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='290.03,122.91 273.73,122.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='273.73,124.61 273.73,121.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='272.58,109.37 272.58,105.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='272.58,107.68 258.65,107.68 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='258.65,109.37 258.65,105.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='175.81' y='394.80' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='186.15' y='379.56' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>11%</text>
+<text x='194.62' y='364.33' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>15%</text>
+<text x='202.50' y='293.22' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>18%</text>
+<text x='219.86' y='277.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>25%</text>
+<text x='231.41' y='262.74' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>30%</text>
+<text x='283.78' y='191.63' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>52%</text>
+<text x='258.27' y='176.39' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>42%</text>
+<text x='228.84' y='161.16' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>29%</text>
+<text x='180.02' y='344.01' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='191.42' y='328.77' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>13%</text>
+<text x='209.38' y='313.53' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>21%</text>
+<text x='238.16' y='242.42' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>33%</text>
+<text x='226.02' y='227.19' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>28%</text>
+<text x='212.37' y='211.95' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+<text x='166.29' y='445.59' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='171.58' y='430.36' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='173.28' y='415.12' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='304.37' y='140.84' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>61%</text>
+<text x='287.88' y='125.60' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>54%</text>
+<text x='271.62' y='110.36' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>47%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHw1MDYuNTI=)'>
+<text x='148.83' y='426.22' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.09px' lengthAdjust='spacingAndGlyphs'>The error message included more</text>
+<text x='148.83' y='434.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='90.76px' lengthAdjust='spacingAndGlyphs'>information than I needed</text>
+<text x='148.83' y='375.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='117.18px' lengthAdjust='spacingAndGlyphs'>I didn't understand what the error</text>
+<text x='148.83' y='384.06' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='56.94px' lengthAdjust='spacingAndGlyphs'>message meant</text>
+<text x='148.83' y='320.31' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='124.74px' lengthAdjust='spacingAndGlyphs'>I didn't know how to fix the problem</text>
+<text x='148.83' y='328.95' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.55px' lengthAdjust='spacingAndGlyphs'>without searching online or asking</text>
+<text x='148.83' y='337.59' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='49.82px' lengthAdjust='spacingAndGlyphs'>someone else</text>
+<text x='148.83' y='269.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='128.99px' lengthAdjust='spacingAndGlyphs'>I mostly knew how to fix the problem</text>
+<text x='148.83' y='278.16' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='117.01px' lengthAdjust='spacingAndGlyphs'>but needed to find an example or</text>
+<text x='148.83' y='286.80' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.05px' lengthAdjust='spacingAndGlyphs'>specific syntax</text>
+<text x='148.83' y='227.37' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='68.52px' lengthAdjust='spacingAndGlyphs'>I had seen it before</text>
+<text x='148.83' y='172.25' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='131.21px' lengthAdjust='spacingAndGlyphs'>I knew how to fix the problem without</text>
+<text x='148.83' y='180.89' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.94px' lengthAdjust='spacingAndGlyphs'>any assistance</text>
+<text x='148.83' y='125.78' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='124.55px' lengthAdjust='spacingAndGlyphs'>I understood what the problem was</text>
+<text x='153.76' y='468.81' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='272.35' y='468.81' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='390.94' y='468.81' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='290.14' y='486.28' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<rect x='160.81' y='68.01' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='285.71' y='68.01' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='347.45' y='68.01' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<text x='178.26' y='77.26' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='102.76px' lengthAdjust='spacingAndGlyphs'>0 – 2 years of Go experience</text>
+<text x='303.16' y='77.26' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.59px' lengthAdjust='spacingAndGlyphs'>3 – 4 years</text>
+<text x='364.90' y='77.26' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='30.92px' lengthAdjust='spacingAndGlyphs'>5+ years</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='374.08px' lengthAdjust='spacingAndGlyphs'>Think of the most recent Go error message you can recall seeing. Which of the</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='277.93px' lengthAdjust='spacingAndGlyphs'>following reflect your experience with that error message?</text>
+<text x='426.52' y='499.27' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,989</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/error_handling.svg b/_content/blog/survey2023h2/error_handling.svg
new file mode 100644
index 0000000..b441c0a
--- /dev/null
+++ b/_content/blog/survey2023h2/error_handling.svg
@@ -0,0 +1,108 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='425.42pt' viewBox='0 0 432.00 425.42'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHw0MjUuNDI='>
+    <rect x='0.00' y='0.00' width='432.00' height='425.42' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHw0MjUuNDI=)'>
+</g>
+<defs>
+  <clipPath id='cpMTU2LjYzfDQyNi41Mnw1My4xM3wzNzcuMDQ='>
+    <rect x='156.63' y='53.13' width='269.90' height='323.91' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTU2LjYzfDQyNi41Mnw1My4xM3wzNzcuMDQ=)'>
+<polyline points='215.30,377.04 215.30,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='332.64,377.04 332.64,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='156.63,377.04 156.63,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='273.97,377.04 273.97,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.32,377.04 391.32,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='156.63' y='130.59' width='99.81' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.63' y='271.42' width='45.21' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.63' y='95.38' width='116.61' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.63' y='306.63' width='23.34' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.63' y='165.80' width='72.14' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.63' y='60.17' width='129.90' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.63' y='341.83' width='14.24' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.63' y='236.21' width='64.73' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.63' y='201.00' width='66.20' height='28.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='260.45,148.19 260.45,141.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='260.45,144.67 252.41,144.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='252.41,148.19 252.41,141.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='205.04,289.02 205.04,281.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='205.04,285.50 198.62,285.50 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.62,289.02 198.62,281.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='277.30,112.98 277.30,105.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='277.30,109.46 269.17,109.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='269.17,112.98 269.17,105.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='182.40,324.23 182.40,317.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='182.40,320.71 177.53,320.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='177.53,324.23 177.53,317.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='232.52,183.40 232.52,176.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='232.52,179.88 225.01,179.88 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.01,183.40 225.01,176.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='290.56,77.78 290.56,70.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='290.56,74.26 282.48,74.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='282.48,77.78 282.48,70.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.80,359.44 172.80,352.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.80,355.92 168.92,355.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='168.92,359.44 168.92,352.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='224.99,253.81 224.99,246.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='224.99,250.29 217.72,250.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='217.72,253.81 217.72,246.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='226.48,218.61 226.48,211.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='226.48,215.09 219.16,215.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='219.16,218.61 219.16,211.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='262.43' y='147.36' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>43%</text>
+<text x='207.83' y='288.19' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>19%</text>
+<text x='279.24' y='112.15' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='185.96' y='323.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>10%</text>
+<text x='234.77' y='182.57' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>31%</text>
+<text x='292.52' y='76.95' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>55%</text>
+<text x='175.20' y='358.61' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='227.35' y='252.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>28%</text>
+<text x='228.82' y='217.78' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>28%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHw0MjUuNDI=)'>
+<text x='151.69' y='358.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='151.69' y='323.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='127.23px' lengthAdjust='spacingAndGlyphs'>I wish I could use an exception here</text>
+<text x='151.69' y='284.05' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='100.96px' lengthAdjust='spacingAndGlyphs'>Errors in Go are too easy for</text>
+<text x='151.69' y='292.69' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='72.51px' lengthAdjust='spacingAndGlyphs'>developers to ignore</text>
+<text x='151.69' y='253.16' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='113.88px' lengthAdjust='spacingAndGlyphs'>I want to print a stack trace here</text>
+<text x='151.69' y='213.64' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='130.07px' lengthAdjust='spacingAndGlyphs'>It's hard to know which error types to</text>
+<text x='151.69' y='222.28' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.47px' lengthAdjust='spacingAndGlyphs'>check for</text>
+<text x='151.69' y='169.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='129.00px' lengthAdjust='spacingAndGlyphs'>I wish functions could return a single</text>
+<text x='151.69' y='178.43' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='126.33px' lengthAdjust='spacingAndGlyphs'>value containing either an error or a</text>
+<text x='151.69' y='187.07' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='106.04px' lengthAdjust='spacingAndGlyphs'>valid result (similar to Rust's ?</text>
+<text x='151.69' y='195.71' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.46px' lengthAdjust='spacingAndGlyphs'>operator)</text>
+<text x='151.69' y='143.22' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='128.57px' lengthAdjust='spacingAndGlyphs'>Go needs a lot of boilerplate code to</text>
+<text x='151.69' y='151.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='55.59px' lengthAdjust='spacingAndGlyphs'>check for errors</text>
+<text x='151.69' y='108.01' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='134.08px' lengthAdjust='spacingAndGlyphs'>Go's explicit error handling helped me</text>
+<text x='151.69' y='116.65' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='128.10px' lengthAdjust='spacingAndGlyphs'>know when to check for error values</text>
+<text x='151.69' y='77.13' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='130.97px' lengthAdjust='spacingAndGlyphs'>I like Go's approach to error handling</text>
+<text x='156.63' y='387.71' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='273.97' y='387.71' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.32' y='387.71' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='291.57' y='405.18' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='371.75px' lengthAdjust='spacingAndGlyphs'>Think about the last time you wrote or read error handling code in Go. Did you</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='159.47px' lengthAdjust='spacingAndGlyphs'>feel or think any of the following?</text>
+<text x='426.52' y='418.17' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,198</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/go_exp.svg b/_content/blog/survey2023h2/go_exp.svg
new file mode 100644
index 0000000..3d283aa
--- /dev/null
+++ b/_content/blog/survey2023h2/go_exp.svg
@@ -0,0 +1,75 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='172.46pt' viewBox='0 0 432.00 172.46'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY='>
+    <rect x='0.00' y='0.00' width='432.00' height='172.46' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY=)'>
+</g>
+<defs>
+  <clipPath id='cpODEuNzJ8NDI2LjUyfDI0Ljg2fDEyNC4wOA=='>
+    <rect x='81.72' y='24.86' width='344.80' height='99.22' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpODEuNzJ8NDI2LjUyfDI0Ljg2fDEyNC4wOA==)'>
+<polyline points='156.67,124.08 156.67,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='306.59,124.08 306.59,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='81.72,124.08 81.72,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='231.63,124.08 231.63,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='381.55,124.08 381.55,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='81.72' y='28.68' width='53.67' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='81.72' y='47.76' width='71.27' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='81.72' y='66.84' width='79.40' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='81.72' y='85.92' width='79.87' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='81.72' y='105.00' width='15.63' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='139.04,38.22 139.04,34.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='139.04,36.31 131.73,36.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='131.73,38.22 131.73,34.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.04,57.30 157.04,53.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.04,55.39 148.93,55.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='148.93,57.30 148.93,53.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.32,76.38 165.32,72.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.32,74.47 156.91,74.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.91,76.38 156.91,72.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.80,95.46 165.80,91.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.80,93.55 157.37,93.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.37,95.46 157.37,91.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='99.46,114.54 99.46,110.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='99.46,112.63 95.22,112.63 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='95.22,114.54 95.22,110.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='141.39' y='39.00' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>18%</text>
+<text x='158.99' y='58.08' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>24%</text>
+<text x='167.12' y='77.16' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>26%</text>
+<text x='167.59' y='96.24' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>27%</text>
+<text x='101.68' y='115.32' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY=)'>
+<text x='76.78' y='115.50' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='35.37px' lengthAdjust='spacingAndGlyphs'>10+ years</text>
+<text x='76.78' y='96.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.59px' lengthAdjust='spacingAndGlyphs'>5 – 9 years</text>
+<text x='76.78' y='77.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.59px' lengthAdjust='spacingAndGlyphs'>3 – 4 years</text>
+<text x='76.78' y='58.26' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.59px' lengthAdjust='spacingAndGlyphs'>1 – 2 years</text>
+<text x='76.78' y='39.18' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='59.17px' lengthAdjust='spacingAndGlyphs'>Less than 1 year</text>
+<text x='81.72' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='231.63' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='381.55' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='254.12' y='152.22' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='140.00px' lengthAdjust='spacingAndGlyphs'>How long have you used Go?</text>
+<text x='426.52' y='165.21' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,799</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/industry.svg b/_content/blog/survey2023h2/industry.svg
new file mode 100644
index 0000000..0971acf
--- /dev/null
+++ b/_content/blog/survey2023h2/industry.svg
@@ -0,0 +1,118 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='288.51pt' viewBox='0 0 432.00 288.51'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyODguNTE='>
+    <rect x='0.00' y='0.00' width='432.00' height='288.51' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyODguNTE=)'>
+</g>
+<defs>
+  <clipPath id='cpMTQ1Ljc3fDQyNi41MnwzNS42NnwyNDAuMTM='>
+    <rect x='145.77' y='35.66' width='280.75' height='204.47' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTQ1Ljc3fDQyNi41MnwzNS42NnwyNDAuMTM=)'>
+<polyline points='206.80,240.13 206.80,35.66 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='328.87,240.13 328.87,35.66 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='145.77,240.13 145.77,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='267.83,240.13 267.83,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='389.90,240.13 389.90,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='145.77' y='156.33' width='6.03' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='189.85' width='4.45' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='55.77' width='31.75' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='122.81' width='9.60' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='72.53' width='18.00' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='206.61' width='3.36' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='173.09' width='4.45' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='89.29' width='14.15' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='39.01' width='121.08' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='106.05' width='12.56' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='139.57' width='6.63' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='145.77' y='223.37' width='12.07' height='13.41' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='153.30,164.71 153.30,161.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='153.30,163.03 150.31,163.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.31,164.71 150.31,161.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.51,198.23 151.51,194.88 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.51,196.55 148.93,196.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='148.93,198.23 148.93,194.88 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='180.76,64.15 180.76,60.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='180.76,62.48 174.28,62.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='174.28,64.15 174.28,60.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.23,131.19 157.23,127.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.23,129.51 153.49,129.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='153.49,131.19 153.49,127.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='166.29,80.91 166.29,77.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='166.29,79.23 161.25,79.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='161.25,80.91 161.25,77.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.25,214.99 150.25,211.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.25,213.31 148.01,213.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='148.01,214.99 148.01,211.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.51,181.47 151.51,178.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='151.51,179.79 148.93,179.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='148.93,181.47 148.93,178.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.16,97.67 162.16,94.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.16,95.99 157.66,95.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.66,97.67 157.66,94.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='271.66,47.39 271.66,44.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='271.66,45.72 262.03,45.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='262.03,47.39 262.03,44.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.46,114.43 160.46,111.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.46,112.75 156.20,112.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.20,114.43 156.20,111.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='153.96,147.95 153.96,144.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='153.96,146.27 150.83,146.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.83,147.95 150.83,144.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='159.92,231.75 159.92,228.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='159.92,230.07 155.75,230.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.75,231.75 155.75,228.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='156.14' y='165.72' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='154.55' y='199.24' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='183.52' y='65.16' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>13%</text>
+<text x='159.70' y='132.20' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='168.11' y='81.92' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='153.47' y='216.00' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='154.55' y='182.48' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='164.25' y='98.68' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='272.85' y='48.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='162.66' y='115.44' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='156.73' y='148.96' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='162.17' y='232.76' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyODguNTE=)'>
+<text x='140.84' y='232.94' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.01px' lengthAdjust='spacingAndGlyphs'>Other</text>
+<text x='140.84' y='216.18' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='50.71px' lengthAdjust='spacingAndGlyphs'>Manufacturing</text>
+<text x='140.84' y='199.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='25.35px' lengthAdjust='spacingAndGlyphs'>Energy</text>
+<text x='140.84' y='182.66' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='83.63px' lengthAdjust='spacingAndGlyphs'>Public sector / nonprofit</text>
+<text x='140.84' y='165.90' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='35.59px' lengthAdjust='spacingAndGlyphs'>Education</text>
+<text x='140.84' y='149.14' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='51.60px' lengthAdjust='spacingAndGlyphs'>Transportation</text>
+<text x='140.84' y='132.38' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='88.96px' lengthAdjust='spacingAndGlyphs'>Healthcare / life sciences</text>
+<text x='140.84' y='115.62' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.39px' lengthAdjust='spacingAndGlyphs'>Telecommunications</text>
+<text x='140.84' y='98.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='123.22px' lengthAdjust='spacingAndGlyphs'>Retail / consumer packaged goods</text>
+<text x='140.84' y='82.10' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='54.71px' lengthAdjust='spacingAndGlyphs'>Media / gaming</text>
+<text x='140.84' y='65.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='63.60px' lengthAdjust='spacingAndGlyphs'>Financial services</text>
+<text x='140.84' y='48.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='41.37px' lengthAdjust='spacingAndGlyphs'>Technology</text>
+<text x='145.77' y='250.80' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='267.83' y='250.80' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='389.90' y='250.80' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='286.14' y='268.27' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='368.96px' lengthAdjust='spacingAndGlyphs'>Which of the following best describes the industry in which your organization</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='47.81px' lengthAdjust='spacingAndGlyphs'>operates?</text>
+<text x='426.52' y='281.26' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,468</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/location.svg b/_content/blog/survey2023h2/location.svg
new file mode 100644
index 0000000..cf48bfa
--- /dev/null
+++ b/_content/blog/survey2023h2/location.svg
@@ -0,0 +1,171 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='379.89pt' viewBox='0 0 432.00 379.89'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzNzkuODk='>
+    <rect x='0.00' y='0.00' width='432.00' height='379.89' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNzkuODk=)'>
+</g>
+<defs>
+  <clipPath id='cpNzkuNDh8NDI2LjUyfDI0Ljg2fDMzMS41MQ=='>
+    <rect x='79.48' y='24.86' width='347.04' height='306.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNzkuNDh8NDI2LjUyfDI0Ljg2fDMzMS41MQ==)'>
+<polyline points='154.92,331.51 154.92,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='305.81,331.51 305.81,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='79.48,331.51 79.48,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='230.37,331.51 230.37,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='381.25,331.51 381.25,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='79.48' y='143.47' width='8.78' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='129.01' width='9.19' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='85.61' width='12.08' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='71.15' width='15.49' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='100.08' width='11.36' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='42.22' width='26.75' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='114.54' width='10.84' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='215.79' width='5.27' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='230.26' width='4.85' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='201.33' width='6.61' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='302.58' width='2.89' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='186.86' width='6.71' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='259.19' width='3.30' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='172.40' width='6.71' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='244.72' width='4.75' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='157.93' width='6.71' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='288.12' width='3.00' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='273.65' width='3.20' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='56.68' width='16.01' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='27.75' width='66.61' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='317.05' width='70.64' height='11.57' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='90.09,150.70 90.09,147.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='90.09,149.26 86.42,149.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='86.42,150.70 86.42,147.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='90.55,136.24 90.55,133.34 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='90.55,134.79 86.79,134.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='86.79,136.24 86.79,133.34 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.71,92.84 93.71,89.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.71,91.40 89.42,91.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='89.42,92.84 89.42,89.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='97.38,78.38 97.38,75.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='97.38,76.93 92.55,76.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='92.55,78.38 92.55,75.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='92.92,107.31 92.92,104.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='92.92,105.86 88.75,105.86 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='88.75,107.31 88.75,104.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='109.34,49.45 109.34,46.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='109.34,48.00 103.12,48.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='103.12,49.45 103.12,46.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='92.36,121.77 92.36,118.88 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='92.36,120.33 88.28,120.33 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='88.28,121.77 88.28,118.88 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='86.18,223.03 86.18,220.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='86.18,221.58 83.31,221.58 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.31,223.03 83.31,220.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='85.71,237.49 85.71,234.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='85.71,236.04 82.95,236.04 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='82.95,237.49 82.95,234.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='87.69,208.56 87.69,205.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='87.69,207.11 84.49,207.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.49,208.56 84.49,205.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.43,309.81 83.43,306.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.43,308.37 81.30,308.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.30,309.81 81.30,306.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='87.80,194.10 87.80,191.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='87.80,192.65 84.58,192.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.58,194.10 84.58,191.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.92,266.42 83.92,263.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.92,264.97 81.64,264.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.64,266.42 81.64,263.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='87.80,179.63 87.80,176.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='87.80,178.19 84.58,178.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.58,179.63 84.58,176.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='85.59,251.96 85.59,249.06 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='85.59,250.51 82.87,250.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='82.87,251.96 82.87,249.06 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='87.80,165.17 87.80,162.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='87.80,163.72 84.58,163.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.58,165.17 84.58,162.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.56,295.35 83.56,292.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.56,293.90 81.39,293.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.39,295.35 81.39,292.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.80,280.88 83.80,277.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.80,279.44 81.56,279.44 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.56,280.88 81.56,277.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='97.94,63.91 97.94,61.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='97.94,62.47 93.03,62.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.03,63.91 93.03,61.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.63,34.98 150.63,32.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.63,33.54 141.55,33.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='141.55,34.98 141.55,32.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='154.75,324.28 154.75,321.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='154.75,322.83 145.49,322.83 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='145.49,324.28 145.49,321.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='92.59' y='151.95' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='93.00' y='137.48' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='95.89' y='94.09' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='99.30' y='79.62' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='95.17' y='108.55' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='110.56' y='50.69' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='94.66' y='123.02' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='89.08' y='224.27' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='88.67' y='238.73' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='90.42' y='209.80' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='86.70' y='311.06' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='90.52' y='195.34' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='87.12' y='267.66' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='90.52' y='180.87' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='88.56' y='253.20' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='90.52' y='166.41' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='86.81' y='296.59' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='87.01' y='282.13' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='99.82' y='65.16' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='152.09' y='36.23' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+<text x='156.12' y='325.52' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>23%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNzkuODk=)'>
+<text x='74.55' y='325.70' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='37.35px' lengthAdjust='spacingAndGlyphs'>Elsewhere</text>
+<text x='74.55' y='311.24' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='27.12px' lengthAdjust='spacingAndGlyphs'>Norway</text>
+<text x='74.55' y='296.77' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='41.36px' lengthAdjust='spacingAndGlyphs'>Switzerland</text>
+<text x='74.55' y='282.31' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='27.57px' lengthAdjust='spacingAndGlyphs'>Ukraine</text>
+<text x='74.55' y='267.84' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='29.80px' lengthAdjust='spacingAndGlyphs'>Portugal</text>
+<text x='74.55' y='253.38' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>Spain</text>
+<text x='74.55' y='238.91' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='21.80px' lengthAdjust='spacingAndGlyphs'>Japan</text>
+<text x='74.55' y='224.45' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='14.68px' lengthAdjust='spacingAndGlyphs'>Italy</text>
+<text x='74.55' y='209.98' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='43.14px' lengthAdjust='spacingAndGlyphs'>Netherlands</text>
+<text x='74.55' y='195.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.91px' lengthAdjust='spacingAndGlyphs'>Poland</text>
+<text x='74.55' y='181.05' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.46px' lengthAdjust='spacingAndGlyphs'>Russia</text>
+<text x='74.55' y='166.59' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='28.91px' lengthAdjust='spacingAndGlyphs'>Sweden</text>
+<text x='74.55' y='152.13' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='31.13px' lengthAdjust='spacingAndGlyphs'>Australia</text>
+<text x='74.55' y='137.66' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.01px' lengthAdjust='spacingAndGlyphs'>Brazil</text>
+<text x='74.55' y='123.20' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='17.35px' lengthAdjust='spacingAndGlyphs'>India</text>
+<text x='74.55' y='108.73' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.90px' lengthAdjust='spacingAndGlyphs'>France</text>
+<text x='74.55' y='94.27' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='28.02px' lengthAdjust='spacingAndGlyphs'>Canada</text>
+<text x='74.55' y='79.80' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.90px' lengthAdjust='spacingAndGlyphs'>China</text>
+<text x='74.55' y='65.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='56.93px' lengthAdjust='spacingAndGlyphs'>United Kingdom</text>
+<text x='74.55' y='50.87' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.90px' lengthAdjust='spacingAndGlyphs'>Germany</text>
+<text x='74.55' y='36.41' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='48.04px' lengthAdjust='spacingAndGlyphs'>United States</text>
+<text x='79.48' y='342.18' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='230.37' y='342.18' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='381.25' y='342.18' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='253.00' y='359.65' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='142.24px' lengthAdjust='spacingAndGlyphs'>In which location do you live?</text>
+<text x='426.52' y='372.64' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,922</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/metrics.svg b/_content/blog/survey2023h2/metrics.svg
new file mode 100644
index 0000000..25d6bb6
--- /dev/null
+++ b/_content/blog/survey2023h2/metrics.svg
@@ -0,0 +1,120 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='288.51pt' viewBox='0 0 432.00 288.51'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyODguNTE='>
+    <rect x='0.00' y='0.00' width='432.00' height='288.51' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyODguNTE=)'>
+</g>
+<defs>
+  <clipPath id='cpMTI5Ljc1fDQyNi41Mnw1My4xM3wyNDAuMTM='>
+    <rect x='129.75' y='53.13' width='296.77' height='187.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTI5Ljc1fDQyNi41Mnw1My4xM3wyNDAuMTM=)'>
+<polyline points='194.27,240.13 194.27,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='323.30,240.13 323.30,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='129.75,240.13 129.75,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='258.78,240.13 258.78,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='387.81,240.13 387.81,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='129.75' y='148.16' width='17.14' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='102.18' width='39.70' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='71.52' width='110.49' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='132.83' width='20.57' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='163.49' width='13.47' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='209.47' width='64.81' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='86.85' width='61.62' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='224.80' width='12.04' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='56.20' width='111.21' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='117.51' width='31.41' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='178.82' width='12.99' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='129.75' y='194.14' width='3.51' height='12.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='149.11,155.83 149.11,152.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='149.11,154.29 144.68,154.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.68,155.83 144.68,152.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.66,109.84 172.66,106.78 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.66,108.31 166.25,108.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='166.25,109.84 166.25,106.78 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='244.65,79.19 244.65,76.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='244.65,77.66 235.85,77.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='235.85,79.19 235.85,76.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='152.73,140.50 152.73,137.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='152.73,138.97 147.92,138.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='147.92,140.50 147.92,137.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='145.21,171.15 145.21,168.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='145.21,169.62 141.25,169.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='141.25,171.15 141.25,168.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.42,217.14 198.42,214.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.42,215.60 190.71,215.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='190.71,217.14 190.71,214.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.17,94.52 195.17,91.45 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.17,92.98 187.59,92.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='187.59,94.52 187.59,91.45 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.67,232.46 143.67,229.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.67,230.93 139.92,230.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='139.92,232.46 139.92,229.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='245.37,63.86 245.37,60.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='245.37,62.33 236.56,62.33 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='236.56,63.86 236.56,60.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.07,125.17 164.07,122.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.07,123.64 158.26,123.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='158.26,125.17 158.26,122.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.69,186.48 144.69,183.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.69,184.95 140.81,184.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='140.81,186.48 140.81,183.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='134.29,201.81 134.29,198.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='134.29,200.28 132.23,200.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='132.23,201.81 132.23,198.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='151.23' y='156.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='175.46' y='111.00' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>15%</text>
+<text x='246.25' y='80.35' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>43%</text>
+<text x='154.66' y='141.66' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>8%</text>
+<text x='147.56' y='172.31' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='200.57' y='218.29' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>25%</text>
+<text x='197.38' y='95.67' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>24%</text>
+<text x='146.13' y='233.62' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='246.97' y='65.02' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>43%</text>
+<text x='167.17' y='126.33' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>12%</text>
+<text x='147.08' y='187.64' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='137.60' y='202.97' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyODguNTE=)'>
+<text x='124.82' y='233.80' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='124.82' y='218.47' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.12px' lengthAdjust='spacingAndGlyphs'>None</text>
+<text x='124.82' y='203.15' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Zipkin</text>
+<text x='124.82' y='187.82' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.47px' lengthAdjust='spacingAndGlyphs'>Splunk</text>
+<text x='124.82' y='172.49' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='36.01px' lengthAdjust='spacingAndGlyphs'>New Relic</text>
+<text x='124.82' y='152.84' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.21px' lengthAdjust='spacingAndGlyphs'>A solution specific to my cloud</text>
+<text x='124.82' y='161.48' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='28.91px' lengthAdjust='spacingAndGlyphs'>provider</text>
+<text x='124.82' y='141.84' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.48px' lengthAdjust='spacingAndGlyphs'>Logstash</text>
+<text x='124.82' y='126.51' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='23.13px' lengthAdjust='spacingAndGlyphs'>Sentry</text>
+<text x='124.82' y='111.18' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='30.25px' lengthAdjust='spacingAndGlyphs'>Datadog</text>
+<text x='124.82' y='95.85' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='57.37px' lengthAdjust='spacingAndGlyphs'>Open Telemetry</text>
+<text x='124.82' y='80.53' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='28.91px' lengthAdjust='spacingAndGlyphs'>Grafana</text>
+<text x='124.82' y='65.20' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='43.14px' lengthAdjust='spacingAndGlyphs'>Prometheus</text>
+<text x='129.75' y='250.80' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='258.78' y='250.80' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='387.81' y='250.80' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='278.14' y='268.27' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='340.12px' lengthAdjust='spacingAndGlyphs'>Does the Go software you work on use any of the following systems for</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='118.97px' lengthAdjust='spacingAndGlyphs'>observability or metrics?</text>
+<text x='426.52' y='281.26' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,237</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/ml_adoption.svg b/_content/blog/survey2023h2/ml_adoption.svg
new file mode 100644
index 0000000..ff87502
--- /dev/null
+++ b/_content/blog/survey2023h2/ml_adoption.svg
@@ -0,0 +1,121 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='371.35pt' viewBox='0 0 432.00 371.35'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzNzEuMzU='>
+    <rect x='0.00' y='0.00' width='432.00' height='371.35' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNzEuMzU=)'>
+</g>
+<defs>
+  <clipPath id='cpMTYwLjg3fDQyNi41Mnw3OC4zNHwzMjIuOTc='>
+    <rect x='160.87' y='78.34' width='265.65' height='244.63' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTYwLjg3fDQyNi41Mnw3OC4zNHwzMjIuOTc=)'>
+<polyline points='218.62,322.97 218.62,78.34 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='334.12,322.97 334.12,78.34 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='160.87,322.97 160.87,78.34 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='276.37,322.97 276.37,78.34 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.87,322.97 391.87,78.34 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='276.20' y='119.11' width='115.67' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<rect x='185.49' y='119.11' width='90.71' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='169.42' y='119.11' width='16.07' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<rect x='160.87' y='119.11' width='8.55' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #663399;' />
+<rect x='266.90' y='187.06' width='124.97' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<rect x='188.90' y='187.06' width='78.00' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='173.39' y='187.06' width='15.51' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<rect x='160.87' y='187.06' width='12.51' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #663399;' />
+<rect x='259.43' y='288.99' width='132.44' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<rect x='174.58' y='288.99' width='84.86' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='164.87' y='288.99' width='9.70' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<rect x='160.87' y='288.99' width='4.00' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #663399;' />
+<rect x='279.59' y='85.13' width='112.28' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<rect x='189.88' y='85.13' width='89.72' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='170.03' y='85.13' width='19.84' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<rect x='160.87' y='85.13' width='9.16' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #663399;' />
+<rect x='264.08' y='255.02' width='127.79' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<rect x='178.12' y='255.02' width='85.96' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='167.19' y='255.02' width='10.93' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<rect x='160.87' y='255.02' width='6.32' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #663399;' />
+<rect x='268.98' y='153.09' width='122.89' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<rect x='187.65' y='153.09' width='81.33' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='172.36' y='153.09' width='15.29' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<rect x='160.87' y='153.09' width='11.49' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #663399;' />
+<rect x='264.62' y='221.04' width='127.25' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<rect x='183.68' y='221.04' width='80.94' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='169.94' y='221.04' width='13.74' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<rect x='160.87' y='221.04' width='9.07' height='27.18' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #663399;' />
+<text x='334.04' y='135.40' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='230.85' y='135.40' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>39%</text>
+<text x='177.46' y='135.40' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='165.15' y='135.40' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='329.39' y='203.35' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>54%</text>
+<text x='227.90' y='203.35' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>34%</text>
+<text x='181.14' y='203.35' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='167.13' y='203.35' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='325.65' y='305.28' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>57%</text>
+<text x='217.01' y='305.28' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>37%</text>
+<text x='169.72' y='305.28' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='162.87' y='305.28' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='335.73' y='101.42' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>49%</text>
+<text x='234.73' y='101.42' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>39%</text>
+<text x='179.95' y='101.42' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='165.45' y='101.42' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='327.98' y='271.31' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>55%</text>
+<text x='221.10' y='271.31' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>37%</text>
+<text x='172.65' y='271.31' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='164.03' y='271.31' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='330.43' y='169.38' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>53%</text>
+<text x='228.31' y='169.38' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>35%</text>
+<text x='180.00' y='169.38' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='166.62' y='169.38' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='328.25' y='237.33' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>55%</text>
+<text x='224.15' y='237.33' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>35%</text>
+<text x='176.81' y='237.33' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='165.41' y='237.33' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='10.85px' lengthAdjust='spacingAndGlyphs'>4%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNzEuMzU=)'>
+<text x='155.94' y='305.45' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='129.43px' lengthAdjust='spacingAndGlyphs'>Developing new ML/AI models in Go</text>
+<text x='155.94' y='267.16' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='132.54px' lengthAdjust='spacingAndGlyphs'>Integrating Go services with non-LLM</text>
+<text x='155.94' y='275.80' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='48.92px' lengthAdjust='spacingAndGlyphs'>ML/AI models</text>
+<text x='155.94' y='228.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='80.50px' lengthAdjust='spacingAndGlyphs'>Other infrastructure for</text>
+<text x='155.94' y='237.50' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='125.88px' lengthAdjust='spacingAndGlyphs'>testing/monitoring production ML/AI</text>
+<text x='155.94' y='246.14' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='29.35px' lengthAdjust='spacingAndGlyphs'>systems</text>
+<text x='155.94' y='199.20' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='138.33px' lengthAdjust='spacingAndGlyphs'>API endpoints for ML/AI models written</text>
+<text x='155.94' y='207.84' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='65.84px' lengthAdjust='spacingAndGlyphs'>in other languages</text>
+<text x='155.94' y='169.55' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='116.98px' lengthAdjust='spacingAndGlyphs'>Data pipelines for ML/AI systems</text>
+<text x='155.94' y='131.25' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='138.33px' lengthAdjust='spacingAndGlyphs'>API endpoints for ML/AI models written</text>
+<text x='155.94' y='139.89' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.12px' lengthAdjust='spacingAndGlyphs'>in Go</text>
+<text x='155.94' y='101.59' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.54px' lengthAdjust='spacingAndGlyphs'>Integrating Go services with LLMs</text>
+<text x='160.87' y='333.64' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='276.37' y='333.64' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.87' y='333.64' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='293.70' y='351.11' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<rect x='156.54' y='39.74' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #663399;' />
+<rect x='156.54' y='53.91' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<rect x='282.34' y='39.74' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #EE9944;' />
+<rect x='282.34' y='53.91' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #AA3355;' />
+<text x='173.99' y='48.99' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='68.50px' lengthAdjust='spacingAndGlyphs'>Using in production</text>
+<text x='173.99' y='63.16' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='103.65px' lengthAdjust='spacingAndGlyphs'>Evaluating for production use</text>
+<text x='299.79' y='48.99' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.41px' lengthAdjust='spacingAndGlyphs'>Interested but haven't tried yet</text>
+<text x='299.79' y='63.16' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='49.82px' lengthAdjust='spacingAndGlyphs'>Not interested</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='353.39px' lengthAdjust='spacingAndGlyphs'>At work, are you using or exploring the use of Go for any of the following?</text>
+<text x='426.52' y='364.10' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,735</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/ml_use_cases.svg b/_content/blog/survey2023h2/ml_use_cases.svg
new file mode 100644
index 0000000..235cb22
--- /dev/null
+++ b/_content/blog/survey2023h2/ml_use_cases.svg
@@ -0,0 +1,130 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='374.00pt' viewBox='0 0 432.00 374.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzNzQuMDA='>
+    <rect x='0.00' y='0.00' width='432.00' height='374.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNzQuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMTY4LjYxfDQyNi41Mnw0Mi4zM3wzMjUuNjI='>
+    <rect x='168.61' y='42.33' width='257.91' height='283.29' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTY4LjYxfDQyNi41Mnw0Mi4zM3wzMjUuNjI=)'>
+<polyline points='224.67,325.62 224.67,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='336.81,325.62 336.81,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='168.61,325.62 168.61,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='280.74,325.62 280.74,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='392.88,325.62 392.88,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='168.61' y='68.09' width='105.95' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='282.70' width='24.82' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='89.55' width='103.73' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='196.85' width='44.60' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='239.78' width='33.04' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='132.47' width='53.12' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='111.01' width='81.28' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='261.24' width='32.01' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='218.32' width='39.27' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='175.39' width='45.94' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='153.93' width='50.23' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='304.16' width='4.37' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='168.61' y='46.62' width='110.99' height='17.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='278.54,78.82 278.54,74.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='278.54,76.67 270.57,76.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='270.57,78.82 270.57,74.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.93,293.43 195.93,289.14 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.93,291.28 190.92,291.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='190.92,293.43 190.92,289.14 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='276.32,100.28 276.32,95.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='276.32,98.13 268.35,98.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='268.35,100.28 268.35,95.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='216.40,207.58 216.40,203.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='216.40,205.44 210.02,205.44 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.02,207.58 210.02,203.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='204.48,250.51 204.48,246.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='204.48,248.36 198.82,248.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.82,250.51 198.82,246.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.13,143.20 225.13,138.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.13,141.05 218.33,141.05 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='218.33,143.20 218.33,138.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='253.72,121.74 253.72,117.45 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='253.72,119.59 246.04,119.59 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='246.04,121.74 246.04,117.45 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='203.41,271.97 203.41,267.68 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='203.41,269.82 197.82,269.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='197.82,271.97 197.82,267.68 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.91,229.05 210.91,224.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.91,226.90 204.84,226.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='204.84,229.05 204.84,224.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='217.77,186.12 217.77,181.83 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='217.77,183.98 211.32,183.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='211.32,186.12 211.32,181.83 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='222.17,164.66 222.17,160.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='222.17,162.52 215.51,162.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.51,164.66 215.51,160.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='174.08,314.89 174.08,310.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='174.08,312.75 171.87,312.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.87,314.89 171.87,310.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='283.59,57.35 283.59,53.06 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='283.59,55.21 275.60,55.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='275.60,57.35 275.60,53.06 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='280.56' y='79.36' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>47%</text>
+<text x='199.43' y='293.97' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>11%</text>
+<text x='278.34' y='100.82' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>46%</text>
+<text x='219.21' y='208.13' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>20%</text>
+<text x='207.65' y='251.05' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>15%</text>
+<text x='227.73' y='143.74' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>24%</text>
+<text x='255.89' y='122.28' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>36%</text>
+<text x='206.62' y='272.51' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>14%</text>
+<text x='213.88' y='229.59' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>18%</text>
+<text x='220.54' y='186.67' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>20%</text>
+<text x='224.84' y='165.20' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+<text x='177.31' y='315.43' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='285.60' y='57.90' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>49%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNzQuMDA=)'>
+<text x='163.67' y='315.61' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='163.67' y='294.15' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='91.17px' lengthAdjust='spacingAndGlyphs'>Help me brainstorm ideas</text>
+<text x='163.67' y='272.69' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='90.73px' lengthAdjust='spacingAndGlyphs'>Help me create examples</text>
+<text x='163.67' y='246.91' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='144.55px' lengthAdjust='spacingAndGlyphs'>Convert code from another programming</text>
+<text x='163.67' y='255.55' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='54.72px' lengthAdjust='spacingAndGlyphs'>language to Go</text>
+<text x='163.67' y='229.77' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='134.34px' lengthAdjust='spacingAndGlyphs'>Explain what a piece of Go code does</text>
+<text x='163.67' y='203.99' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='122.74px' lengthAdjust='spacingAndGlyphs'>Help me resolve compiler errors or</text>
+<text x='163.67' y='212.63' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.02px' lengthAdjust='spacingAndGlyphs'>warnings</text>
+<text x='163.67' y='182.53' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='117.42px' lengthAdjust='spacingAndGlyphs'>Generate Go code from a natural</text>
+<text x='163.67' y='191.17' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.85px' lengthAdjust='spacingAndGlyphs'>language description</text>
+<text x='163.67' y='161.06' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='116.29px' lengthAdjust='spacingAndGlyphs'>None; I'm not interested in AI/ML</text>
+<text x='163.67' y='169.70' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.18px' lengthAdjust='spacingAndGlyphs'>support when working with Go</text>
+<text x='163.67' y='143.92' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='123.21px' lengthAdjust='spacingAndGlyphs'>Help me debug failures in my code</text>
+<text x='163.67' y='122.46' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='103.63px' lengthAdjust='spacingAndGlyphs'>Help me write documentation</text>
+<text x='163.67' y='96.68' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='146.06px' lengthAdjust='spacingAndGlyphs'>Catch common mistakes while I'm writing</text>
+<text x='163.67' y='105.32' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='17.35px' lengthAdjust='spacingAndGlyphs'>code</text>
+<text x='163.67' y='75.22' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='119.40px' lengthAdjust='spacingAndGlyphs'>Suggest better practices while I'm</text>
+<text x='163.67' y='83.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='42.70px' lengthAdjust='spacingAndGlyphs'>writing code</text>
+<text x='163.67' y='58.08' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='68.04px' lengthAdjust='spacingAndGlyphs'>Help me write tests</text>
+<text x='168.61' y='336.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='280.74' y='336.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='392.88' y='336.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='297.56' y='353.76' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.93px' lengthAdjust='spacingAndGlyphs'>(select up to 5)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='272.83px' lengthAdjust='spacingAndGlyphs'>How would you like to see AI/ML support Go developers?</text>
+<text x='426.52' y='366.75' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,027</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/mod_challenge.svg b/_content/blog/survey2023h2/mod_challenge.svg
new file mode 100644
index 0000000..b08d9d5
--- /dev/null
+++ b/_content/blog/survey2023h2/mod_challenge.svg
@@ -0,0 +1,129 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='349.07pt' viewBox='0 0 432.00 349.07'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc='>
+    <rect x='0.00' y='0.00' width='432.00' height='349.07' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc=)'>
+</g>
+<defs>
+  <clipPath id='cpMTY2LjI0fDQyNi41Mnw0Mi4zM3wzMDAuNjk='>
+    <rect x='166.24' y='42.33' width='260.28' height='258.36' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTY2LjI0fDQyNi41Mnw0Mi4zM3wzMDAuNjk=)'>
+<polyline points='222.83,300.69 222.83,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='335.99,300.69 335.99,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='166.24,300.69 166.24,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='279.41,300.69 279.41,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='392.57,300.69 392.57,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='166.24' y='104.96' width='50.20' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='124.54' width='36.85' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='65.82' width='73.70' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='163.68' width='31.92' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='85.39' width='59.48' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='261.54' width='11.32' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='241.97' width='17.70' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='202.83' width='22.92' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='281.12' width='10.16' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='183.25' width='27.28' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='46.25' width='93.72' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='222.40' width='21.47' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='166.24' y='144.11' width='33.37' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='223.04,114.75 223.04,110.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='223.04,112.79 209.84,112.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='209.84,114.75 209.84,110.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='208.96,134.32 208.96,130.41 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='208.96,132.37 197.23,132.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='197.23,134.32 197.23,130.41 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='247.39,75.61 247.39,71.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='247.39,73.65 232.50,73.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='232.50,75.61 232.50,71.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='203.69,173.47 203.69,169.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='203.69,171.51 192.63,171.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='192.63,173.47 192.63,169.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='232.72,95.18 232.72,91.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='232.72,93.22 218.74,93.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='218.74,95.18 218.74,91.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='181.02,271.33 181.02,267.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='181.02,269.37 174.10,269.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='174.10,271.33 174.10,267.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='188.21,251.76 188.21,247.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='188.21,249.80 179.68,249.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.68,251.76 179.68,247.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='193.96,212.61 193.96,208.70 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='193.96,210.66 184.38,210.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='184.38,212.61 184.38,208.70 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.69,290.90 179.69,286.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.69,288.95 173.11,288.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='173.11,290.90 173.11,286.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.69,193.04 198.69,189.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.69,191.08 188.35,191.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='188.35,193.04 188.35,189.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='267.79,56.03 267.79,52.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='267.79,54.08 252.14,54.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='252.14,56.03 252.14,52.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='192.37,232.18 192.37,228.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='192.37,230.23 183.06,230.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='183.06,232.18 183.06,228.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='205.24,153.90 205.24,149.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='205.24,151.94 193.98,151.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='193.98,153.90 193.98,149.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='222.44' y='115.48' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+<text x='209.10' y='135.05' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>16%</text>
+<text x='245.95' y='76.34' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>33%</text>
+<text x='204.16' y='174.20' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>14%</text>
+<text x='231.73' y='95.91' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>26%</text>
+<text x='181.90' y='272.06' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='188.28' y='252.49' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>8%</text>
+<text x='195.17' y='213.34' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>10%</text>
+<text x='180.73' y='291.63' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='199.52' y='193.77' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>12%</text>
+<text x='265.97' y='56.76' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>41%</text>
+<text x='192.05' y='232.92' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='205.61' y='154.63' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>15%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc=)'>
+<text x='161.31' y='291.81' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='161.31' y='272.24' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='127.66px' lengthAdjust='spacingAndGlyphs'>Keeping up with new versions of Go</text>
+<text x='161.31' y='248.35' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='129.46px' lengthAdjust='spacingAndGlyphs'>Encouraging users to upgrade to the</text>
+<text x='161.31' y='256.99' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='69.39px' lengthAdjust='spacingAndGlyphs'>latest major version</text>
+<text x='161.31' y='228.78' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='121.63px' lengthAdjust='spacingAndGlyphs'>Changing a module's import path /</text>
+<text x='161.31' y='237.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.63px' lengthAdjust='spacingAndGlyphs'>transferring module ownership</text>
+<text x='161.31' y='209.20' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.31px' lengthAdjust='spacingAndGlyphs'>None; I don't have any challenges</text>
+<text x='161.31' y='217.84' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='86.29px' lengthAdjust='spacingAndGlyphs'>maintaining Go modules</text>
+<text x='161.31' y='193.95' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.24px' lengthAdjust='spacingAndGlyphs'>Testing</text>
+<text x='161.31' y='174.38' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='130.33px' lengthAdjust='spacingAndGlyphs'>Getting feedback on what to improve</text>
+<text x='161.31' y='150.49' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='129.87px' lengthAdjust='spacingAndGlyphs'>Working with multiple modules in the</text>
+<text x='161.31' y='159.13' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='37.81px' lengthAdjust='spacingAndGlyphs'>same repo</text>
+<text x='161.31' y='135.23' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.12px' lengthAdjust='spacingAndGlyphs'>Keeping dependencies up-to-date</text>
+<text x='161.31' y='115.66' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='143.70px' lengthAdjust='spacingAndGlyphs'>Avoiding unintentional breaking changes</text>
+<text x='161.31' y='91.77' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='127.66px' lengthAdjust='spacingAndGlyphs'>Attracting a community of users and</text>
+<text x='161.31' y='100.41' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='41.81px' lengthAdjust='spacingAndGlyphs'>contributors</text>
+<text x='161.31' y='76.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='99.64px' lengthAdjust='spacingAndGlyphs'>Writing good documentation</text>
+<text x='161.31' y='56.94' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='88.96px' lengthAdjust='spacingAndGlyphs'>Finding time to work on it</text>
+<text x='166.24' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='279.41' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='392.57' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='296.38' y='328.83' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.93px' lengthAdjust='spacingAndGlyphs'>(select up to 3)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='350.09px' lengthAdjust='spacingAndGlyphs'>What have been your biggest challenges when maintaining a Go module?</text>
+<text x='426.52' y='341.82' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='29.15px' lengthAdjust='spacingAndGlyphs'>n =  780</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/mod_maintainer.svg b/_content/blog/survey2023h2/mod_maintainer.svg
new file mode 100644
index 0000000..1b6a008
--- /dev/null
+++ b/_content/blog/survey2023h2/mod_maintainer.svg
@@ -0,0 +1,65 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='149.91pt' viewBox='0 0 432.00 149.91'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxNDkuOTE='>
+    <rect x='0.00' y='0.00' width='432.00' height='149.91' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNDkuOTE=)'>
+</g>
+<defs>
+  <clipPath id='cpMTYwLjg4fDQyNi41MnwyNC44NnwxMDEuNTI='>
+    <rect x='160.88' y='24.86' width='265.64' height='76.66' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTYwLjg4fDQyNi41MnwyNC44NnwxMDEuNTI=)'>
+<polyline points='218.63,101.52 218.63,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='334.12,101.52 334.12,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='160.88,101.52 160.88,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='276.38,101.52 276.38,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.87,101.52 391.87,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='160.88' y='53.61' width='48.16' height='19.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='160.88' y='77.57' width='13.46' height='19.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='160.88' y='29.65' width='169.37' height='19.17' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='212.37,65.59 212.37,60.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='212.37,63.19 205.72,63.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='205.72,65.59 205.72,60.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='176.26,89.54 176.26,84.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='176.26,87.15 172.42,87.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.42,89.54 172.42,84.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='333.87,41.63 333.87,36.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='333.87,39.23 326.63,39.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='326.63,41.63 326.63,36.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='215.05' y='65.88' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>21%</text>
+<text x='178.67' y='89.84' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='336.25' y='41.92' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>73%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNDkuOTE=)'>
+<text x='155.95' y='85.70' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='133.90px' lengthAdjust='spacingAndGlyphs'>I used to maintain an open-source Go</text>
+<text x='155.95' y='94.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='72.52px' lengthAdjust='spacingAndGlyphs'>module, but stopped</text>
+<text x='155.95' y='61.74' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='138.33px' lengthAdjust='spacingAndGlyphs'>I currently maintain an open-source Go</text>
+<text x='155.95' y='70.38' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.24px' lengthAdjust='spacingAndGlyphs'>module</text>
+<text x='155.95' y='42.10' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='10.22px' lengthAdjust='spacingAndGlyphs'>No</text>
+<text x='160.88' y='112.19' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='276.38' y='112.19' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.87' y='112.19' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='293.70' y='129.67' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='352.95px' lengthAdjust='spacingAndGlyphs'>Have you ever been the primary maintainer for a Go open-source module?</text>
+<text x='426.52' y='142.65' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,055</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/mod_motivation.svg b/_content/blog/survey2023h2/mod_motivation.svg
new file mode 100644
index 0000000..0226c4e
--- /dev/null
+++ b/_content/blog/survey2023h2/mod_motivation.svg
@@ -0,0 +1,110 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='310.98pt' viewBox='0 0 432.00 310.98'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzMTAuOTg='>
+    <rect x='0.00' y='0.00' width='432.00' height='310.98' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMTAuOTg=)'>
+</g>
+<defs>
+  <clipPath id='cpMTcxLjU2fDQyNi41Mnw1My4xM3wyNjIuNjA='>
+    <rect x='171.56' y='53.13' width='254.96' height='209.47' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTcxLjU2fDQyNi41Mnw1My4xM3wyNjIuNjA=)'>
+<polyline points='226.98,262.60 226.98,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='337.84,262.60 337.84,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='171.56,262.60 171.56,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='282.41,262.60 282.41,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='393.26,262.60 393.26,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='171.56' y='159.92' width='79.89' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='118.85' width='98.41' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='221.53' width='32.34' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='57.24' width='138.77' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='139.38' width='97.31' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='242.07' width='2.49' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='200.99' width='45.34' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='77.78' width='129.37' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='180.46' width='77.96' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='171.56' y='98.31' width='124.68' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='258.82,170.19 258.82,166.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='258.82,168.14 244.08,168.14 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='244.08,170.19 244.08,166.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='277.60,129.12 277.60,125.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='277.60,127.06 262.35,127.06 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='262.35,129.12 262.35,125.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='209.32,231.80 209.32,227.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='209.32,229.74 198.49,229.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.49,231.80 198.49,227.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='317.76,67.51 317.76,63.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='317.76,65.45 302.91,65.45 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='302.91,67.51 302.91,63.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='276.48,149.65 276.48,145.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='276.48,147.60 261.25,147.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='261.25,149.65 261.25,145.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='175.66,252.33 175.66,248.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='175.66,250.28 172.43,250.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.43,252.33 172.43,248.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='223.08,211.26 223.08,207.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='223.08,209.21 210.71,209.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.71,211.26 210.71,207.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='308.50,88.04 308.50,83.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='308.50,85.99 293.37,85.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='293.37,88.04 293.37,83.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='256.84,190.73 256.84,186.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='256.84,188.67 242.19,188.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='242.19,190.73 242.19,186.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='303.85,108.58 303.85,104.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='303.85,106.53 288.62,106.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='288.62,108.58 288.62,104.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='257.45' y='170.82' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>36%</text>
+<text x='275.97' y='129.75' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>44%</text>
+<text x='209.90' y='232.43' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>15%</text>
+<text x='316.33' y='68.14' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>63%</text>
+<text x='274.87' y='150.29' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>44%</text>
+<text x='178.38' y='252.97' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='222.90' y='211.90' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>20%</text>
+<text x='306.93' y='88.68' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>58%</text>
+<text x='255.52' y='191.36' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>35%</text>
+<text x='302.24' y='109.22' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>56%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMTAuOTg=)'>
+<text x='166.63' y='253.15' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='166.63' y='228.29' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='149.01px' lengthAdjust='spacingAndGlyphs'>Other developers recognize me due to my</text>
+<text x='166.63' y='236.93' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='71.16px' lengthAdjust='spacingAndGlyphs'>work on this module</text>
+<text x='166.63' y='212.08' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='110.06px' lengthAdjust='spacingAndGlyphs'>I'm paid to work on this module</text>
+<text x='166.63' y='191.54' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='111.64px' lengthAdjust='spacingAndGlyphs'>Others benefit from this module</text>
+<text x='166.63' y='162.36' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='118.77px' lengthAdjust='spacingAndGlyphs'>Maintaining this module helps me</text>
+<text x='166.63' y='171.00' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='122.33px' lengthAdjust='spacingAndGlyphs'>demonstrate skills / advance in my</text>
+<text x='166.63' y='179.64' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.68px' lengthAdjust='spacingAndGlyphs'>career</text>
+<text x='166.63' y='150.47' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='126.77px' lengthAdjust='spacingAndGlyphs'>I learn from maintaining this module</text>
+<text x='166.63' y='129.93' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='137.01px' lengthAdjust='spacingAndGlyphs'>I like being a part of the Go community</text>
+<text x='166.63' y='109.40' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='88.52px' lengthAdjust='spacingAndGlyphs'>I use this module at work</text>
+<text x='166.63' y='88.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='135.23px' lengthAdjust='spacingAndGlyphs'>I use this module for personal projects</text>
+<text x='166.63' y='68.32' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.47px' lengthAdjust='spacingAndGlyphs'>It's fun to work on</text>
+<text x='171.56' y='273.27' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='282.41' y='273.27' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='393.26' y='273.27' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='299.04' y='290.74' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='365.68px' lengthAdjust='spacingAndGlyphs'>Think about the most recent module you maintained. What are (or were) your</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='196.14px' lengthAdjust='spacingAndGlyphs'>motivations for maintaining this module?</text>
+<text x='426.52' y='303.73' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='29.15px' lengthAdjust='spacingAndGlyphs'>n =  802</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/new_approach.svg b/_content/blog/survey2023h2/new_approach.svg
new file mode 100644
index 0000000..c58e2dd
--- /dev/null
+++ b/_content/blog/survey2023h2/new_approach.svg
@@ -0,0 +1,90 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='274.50pt' viewBox='0 0 432.00 274.50'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyNzQuNTA='>
+    <rect x='0.00' y='0.00' width='432.00' height='274.50' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNzQuNTA=)'>
+</g>
+<defs>
+  <clipPath id='cpMTU1LjA5fDQyNi41MnwzNS42NnwyMjYuMTI='>
+    <rect x='155.09' y='35.66' width='271.43' height='190.46' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTU1LjA5fDQyNi41MnwzNS42NnwyMjYuMTI=)'>
+<polyline points='214.10,226.12 214.10,35.66 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='332.11,226.12 332.11,35.66 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='155.09,226.12 155.09,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='273.10,226.12 273.10,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.12,226.12 391.12,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='155.09' y='103.24' width='44.30' height='24.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='155.09' y='133.96' width='14.94' height='24.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='155.09' y='41.80' width='87.88' height='24.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='155.09' y='72.52' width='79.04' height='24.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='155.09' y='164.68' width='3.34' height='24.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='155.09' y='195.40' width='6.53' height='24.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='202.56,118.60 202.56,112.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='202.56,115.53 196.23,115.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='196.23,118.60 196.23,112.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.00,149.32 172.00,143.18 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.00,146.25 168.05,146.25 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='168.05,149.32 168.05,143.18 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='246.90,57.16 246.90,51.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='246.90,54.09 239.06,54.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='239.06,57.16 239.06,51.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='237.96,87.88 237.96,81.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='237.96,84.81 230.30,84.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='230.30,87.88 230.30,81.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='159.38,180.04 159.38,173.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='159.38,176.97 157.47,176.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.47,180.04 157.47,173.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.95,210.76 162.95,204.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.95,207.69 160.29,207.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.29,210.76 160.29,204.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='205.40' y='118.22' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>19%</text>
+<text x='174.36' y='148.94' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='248.98' y='56.78' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>37%</text>
+<text x='240.13' y='87.50' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>33%</text>
+<text x='162.76' y='179.66' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='165.95' y='210.38' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNzQuNTA=)'>
+<text x='150.16' y='210.56' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='150.16' y='175.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='129.00px' lengthAdjust='spacingAndGlyphs'>Someone else would create the new</text>
+<text x='150.16' y='184.16' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='115.65px' lengthAdjust='spacingAndGlyphs'>project and then share it with me</text>
+<text x='150.16' y='140.48' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='103.21px' lengthAdjust='spacingAndGlyphs'>I start by copying an existing,</text>
+<text x='150.16' y='149.12' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='129.88px' lengthAdjust='spacingAndGlyphs'>fully-featured Go project and remove</text>
+<text x='150.16' y='157.76' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='91.20px' lengthAdjust='spacingAndGlyphs'>unnecessary components</text>
+<text x='150.16' y='109.76' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='109.43px' lengthAdjust='spacingAndGlyphs'>I start by copying a template or</text>
+<text x='150.16' y='118.40' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='128.28px' lengthAdjust='spacingAndGlyphs'>minimal example that's similar to my</text>
+<text x='150.16' y='127.04' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.02px' lengthAdjust='spacingAndGlyphs'>project</text>
+<text x='150.16' y='79.04' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='113.43px' lengthAdjust='spacingAndGlyphs'>I start with an empty project and</text>
+<text x='150.16' y='87.68' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='131.23px' lengthAdjust='spacingAndGlyphs'>copy/paste the basic structure from a</text>
+<text x='150.16' y='96.32' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='49.36px' lengthAdjust='spacingAndGlyphs'>similar project</text>
+<text x='150.16' y='52.64' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='132.54px' lengthAdjust='spacingAndGlyphs'>I start with an empty project and write</text>
+<text x='150.16' y='61.28' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='67.62px' lengthAdjust='spacingAndGlyphs'>everything by hand</text>
+<text x='155.09' y='236.79' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='273.10' y='236.79' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.12' y='236.79' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='290.81' y='254.26' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='349.00px' lengthAdjust='spacingAndGlyphs'>If you were creating a new Go project at work, which of the following best</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='191.21px' lengthAdjust='spacingAndGlyphs'>describes your approach to get started?</text>
+<text x='426.52' y='267.25' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,255</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/new_challenge.svg b/_content/blog/survey2023h2/new_challenge.svg
new file mode 100644
index 0000000..ca7b188
--- /dev/null
+++ b/_content/blog/survey2023h2/new_challenge.svg
@@ -0,0 +1,113 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='310.98pt' viewBox='0 0 432.00 310.98'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzMTAuOTg='>
+    <rect x='0.00' y='0.00' width='432.00' height='310.98' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMTAuOTg=)'>
+</g>
+<defs>
+  <clipPath id='cpMTczLjM0fDQyNi41Mnw1My4xM3wyNjIuNjA='>
+    <rect x='173.34' y='53.13' width='253.18' height='209.47' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTczLjM0fDQyNi41Mnw1My4xM3wyNjIuNjA=)'>
+<polyline points='228.38,262.60 228.38,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='338.46,262.60 338.46,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='173.34,262.60 173.34,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='283.42,262.60 283.42,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='393.50,262.60 393.50,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='173.34' y='221.53' width='8.33' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='180.46' width='36.96' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='200.99' width='23.09' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='118.85' width='45.56' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='159.92' width='39.74' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='77.78' width='102.56' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='139.38' width='44.27' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='242.07' width='10.83' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='98.31' width='49.28' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='173.34' y='57.24' width='118.47' height='16.43' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='183.11,231.80 183.11,227.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='183.11,229.74 180.23,229.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='180.23,231.80 180.23,227.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='213.13,190.73 213.13,186.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='213.13,188.67 207.48,188.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='207.48,190.73 207.48,186.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.75,211.26 198.75,207.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.75,209.21 194.11,209.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='194.11,211.26 194.11,207.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='221.97,129.12 221.97,125.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='221.97,127.06 215.84,127.06 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.84,129.12 215.84,125.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.99,170.19 215.99,166.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.99,168.14 210.17,168.14 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.17,170.19 210.17,166.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='279.68,88.04 279.68,83.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='279.68,85.99 272.13,85.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='272.13,88.04 272.13,83.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='220.65,149.65 220.65,145.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='220.65,147.60 214.59,147.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='214.59,149.65 214.59,145.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.81,252.33 185.81,248.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.81,250.28 182.54,250.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='182.54,252.33 182.54,248.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.78,108.58 225.78,104.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.78,106.53 219.47,106.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='219.47,108.58 219.47,104.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='295.59,67.51 295.59,63.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='295.59,65.45 288.04,65.45 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='288.04,67.51 288.04,63.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='186.00' y='232.43' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='216.31' y='191.36' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>17%</text>
+<text x='202.43' y='211.90' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>10%</text>
+<text x='224.91' y='129.75' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>21%</text>
+<text x='219.08' y='170.82' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>18%</text>
+<text x='281.91' y='88.68' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>47%</text>
+<text x='223.62' y='150.29' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>20%</text>
+<text x='188.51' y='252.97' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='228.63' y='109.22' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+<text x='297.82' y='68.14' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>54%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMTAuOTg=)'>
+<text x='168.41' y='253.15' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='168.41' y='228.29' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='141.00px' lengthAdjust='spacingAndGlyphs'>Learning how to integrate with my cloud</text>
+<text x='168.41' y='236.93' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='65.57px' lengthAdjust='spacingAndGlyphs'>provider's platform</text>
+<text x='168.41' y='207.76' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='126.51px' lengthAdjust='spacingAndGlyphs'>I don't remember, it was a long time</text>
+<text x='168.41' y='216.40' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='13.35px' lengthAdjust='spacingAndGlyphs'>ago</text>
+<text x='168.41' y='191.54' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='93.86px' lengthAdjust='spacingAndGlyphs'>Dependency management</text>
+<text x='168.41' y='171.00' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='150.80px' lengthAdjust='spacingAndGlyphs'>Learning how to use go.mod / Go modules</text>
+<text x='168.41' y='146.15' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='116.99px' lengthAdjust='spacingAndGlyphs'>Finding or evaluating appropriate</text>
+<text x='168.41' y='154.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='76.07px' lengthAdjust='spacingAndGlyphs'>libraries to build upon</text>
+<text x='168.41' y='129.93' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='50.26px' lengthAdjust='spacingAndGlyphs'>Error handling</text>
+<text x='168.41' y='105.08' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='109.86px' lengthAdjust='spacingAndGlyphs'>Mapping knowledge from other</text>
+<text x='168.41' y='113.72' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='108.09px' lengthAdjust='spacingAndGlyphs'>programming languages to Go</text>
+<text x='168.41' y='84.54' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='124.10px' lengthAdjust='spacingAndGlyphs'>Learning common Go idioms / best</text>
+<text x='168.41' y='93.18' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.03px' lengthAdjust='spacingAndGlyphs'>practices</text>
+<text x='168.41' y='64.00' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='116.55px' lengthAdjust='spacingAndGlyphs'>Identifying an appropriate project</text>
+<text x='168.41' y='72.64' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='88.52px' lengthAdjust='spacingAndGlyphs'>structure / design pattern</text>
+<text x='173.34' y='273.27' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='283.42' y='273.27' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='393.50' y='273.27' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='299.93' y='290.74' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.93px' lengthAdjust='spacingAndGlyphs'>(select up to 3)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='345.15px' lengthAdjust='spacingAndGlyphs'>Think back to the first non-trivial Go project you created. What was most</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='305.62px' lengthAdjust='spacingAndGlyphs'>challenging during the first few days of working on that project?</text>
+<text x='426.52' y='303.73' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,252</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/org_size.svg b/_content/blog/survey2023h2/org_size.svg
new file mode 100644
index 0000000..bb28311
--- /dev/null
+++ b/_content/blog/survey2023h2/org_size.svg
@@ -0,0 +1,89 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='231.82pt' viewBox='0 0 432.00 231.82'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyMzEuODI='>
+    <rect x='0.00' y='0.00' width='432.00' height='231.82' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMzEuODI=)'>
+</g>
+<defs>
+  <clipPath id='cpMTQxLjc2fDQyNi41MnwyNC44NnwxODMuNDQ='>
+    <rect x='141.76' y='24.86' width='284.76' height='158.58' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTQxLjc2fDQyNi41MnwyNC44NnwxODMuNDQ=)'>
+<polyline points='203.66,183.44 203.66,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='327.47,183.44 327.47,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='141.76,183.44 141.76,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='265.57,183.44 265.57,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='389.38,183.44 389.38,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='141.76' y='29.26' width='20.33' height='17.62' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.76' y='51.29' width='88.11' height='17.62' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.76' y='73.32' width='60.92' height='17.62' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.76' y='95.34' width='39.70' height='17.62' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.76' y='117.37' width='27.59' height='17.62' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.76' y='161.42' width='3.79' height='17.62' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.76' y='139.39' width='7.18' height='17.62' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='164.49,40.28 164.49,35.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.49,38.07 159.68,38.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='159.68,40.28 159.68,35.87 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='234.06,62.30 234.06,57.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='234.06,60.10 225.67,60.10 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.67,62.30 225.67,57.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='206.45,84.33 206.45,79.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='206.45,82.13 198.90,82.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.90,84.33 198.90,79.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='184.67,106.35 184.67,101.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='184.67,104.15 178.24,104.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='178.24,106.35 178.24,101.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.11,128.38 172.11,123.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.11,126.18 166.59,126.18 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='166.59,128.38 166.59,123.97 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='146.63,172.43 146.63,168.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='146.63,170.23 144.47,170.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.47,172.43 144.47,168.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.41,150.40 150.41,146.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.41,148.20 147.47,148.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='147.47,150.40 147.47,146.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='166.42' y='40.76' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>8%</text>
+<text x='235.87' y='62.79' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>36%</text>
+<text x='208.68' y='84.81' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>25%</text>
+<text x='187.46' y='106.84' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>16%</text>
+<text x='175.35' y='128.87' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>11%</text>
+<text x='149.88' y='172.92' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='153.27' y='150.89' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMzEuODI=)'>
+<text x='136.83' y='173.10' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='41.56px' lengthAdjust='spacingAndGlyphs'>I'm not sure</text>
+<text x='136.83' y='146.75' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='119.21px' lengthAdjust='spacingAndGlyphs'>I am not currently employed (e.g.,</text>
+<text x='136.83' y='155.39' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>student, retired, etc.)</text>
+<text x='136.83' y='129.05' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='95.19px' lengthAdjust='spacingAndGlyphs'>10,000 or more employees</text>
+<text x='136.83' y='107.02' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='89.87px' lengthAdjust='spacingAndGlyphs'>1,000 – 9,999 employees</text>
+<text x='136.83' y='84.99' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='76.52px' lengthAdjust='spacingAndGlyphs'>100 – 999 employees</text>
+<text x='136.83' y='62.97' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='63.17px' lengthAdjust='spacingAndGlyphs'>2 – 99 employees</text>
+<text x='136.83' y='36.62' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='114.33px' lengthAdjust='spacingAndGlyphs'>Just me (freelance, independent</text>
+<text x='136.83' y='45.26' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='55.60px' lengthAdjust='spacingAndGlyphs'>contractor, etc.)</text>
+<text x='141.76' y='194.11' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='265.57' y='194.11' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='389.38' y='194.11' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='284.14' y='211.58' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='246.14px' lengthAdjust='spacingAndGlyphs'>About how many people work at your organization?</text>
+<text x='426.52' y='224.57' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,069</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/os_deploy.svg b/_content/blog/survey2023h2/os_deploy.svg
new file mode 100644
index 0000000..1572d54
--- /dev/null
+++ b/_content/blog/survey2023h2/os_deploy.svg
@@ -0,0 +1,82 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='183.00pt' viewBox='0 0 432.00 183.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxODMuMDA='>
+    <rect x='0.00' y='0.00' width='432.00' height='183.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxODMuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMTA4Ljg1fDQyNi41Mnw0Mi4zM3wxMzQuNjI='>
+    <rect x='108.85' y='42.33' width='317.67' height='92.29' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTA4Ljg1fDQyNi41Mnw0Mi4zM3wxMzQuNjI=)'>
+<polyline points='177.91,134.62 177.91,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='316.03,134.62 316.03,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='108.85,134.62 108.85,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='246.97,134.62 246.97,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='385.08,134.62 385.08,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='108.85' y='89.96' width='17.75' height='11.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='108.85' y='45.31' width='263.86' height='11.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='108.85' y='75.08' width='50.98' height='11.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='108.85' y='119.73' width='7.01' height='11.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='108.85' y='104.85' width='13.93' height='11.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='108.85' y='60.19' width='61.57' height='11.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='128.82,97.41 128.82,94.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='128.82,95.92 124.36,95.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='124.36,97.41 124.36,94.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='374.59,52.75 374.59,49.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='374.59,51.26 370.83,51.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='370.83,52.75 370.83,49.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.35,82.52 163.35,79.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.35,81.03 156.30,81.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.30,82.52 156.30,79.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='117.28,127.18 117.28,124.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='117.28,125.69 114.42,125.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='114.42,127.18 114.42,124.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='124.77,112.29 124.77,109.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='124.77,110.80 120.79,110.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='120.79,112.29 120.79,109.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='174.20,67.64 174.20,64.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='174.20,66.15 166.63,66.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='166.63,67.64 166.63,64.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='130.93' y='98.61' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='378.71' y='53.95' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>96%</text>
+<text x='165.83' y='83.72' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>18%</text>
+<text x='120.19' y='128.38' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='127.11' y='113.49' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='176.42' y='68.84' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxODMuMDA=)'>
+<text x='103.91' y='128.56' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='103.91' y='113.67' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='83.58px' lengthAdjust='spacingAndGlyphs'>WebAssembly (WASM)</text>
+<text x='103.91' y='98.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='86.30px' lengthAdjust='spacingAndGlyphs'>Embedded devices / IoT</text>
+<text x='103.91' y='83.90' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.68px' lengthAdjust='spacingAndGlyphs'>macOS</text>
+<text x='103.91' y='69.02' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.46px' lengthAdjust='spacingAndGlyphs'>Windows</text>
+<text x='103.91' y='54.13' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.13px' lengthAdjust='spacingAndGlyphs'>Linux</text>
+<text x='108.85' y='145.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='246.97' y='145.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='385.08' y='145.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='267.68' y='162.76' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='246.74px' lengthAdjust='spacingAndGlyphs'>Which systems do you deploy your Go software to?</text>
+<text x='426.52' y='175.75' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,549</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/os_dev.svg b/_content/blog/survey2023h2/os_dev.svg
new file mode 100644
index 0000000..512b67a
--- /dev/null
+++ b/_content/blog/survey2023h2/os_dev.svg
@@ -0,0 +1,76 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='172.46pt' viewBox='0 0 432.00 172.46'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY='>
+    <rect x='0.00' y='0.00' width='432.00' height='172.46' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY=)'>
+</g>
+<defs>
+  <clipPath id='cpMTU0LjYyfDQyNi41Mnw0Mi4zM3wxMjQuMDg='>
+    <rect x='154.62' y='42.33' width='271.90' height='81.75' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTU0LjYyfDQyNi41Mnw0Mi4zM3wxMjQuMDg=)'>
+<polyline points='213.73,124.08 213.73,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='331.95,124.08 331.95,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='154.62,124.08 154.62,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='272.84,124.08 272.84,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.06,124.08 391.06,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='154.62' y='45.48' width='149.37' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.62' y='61.20' width='136.21' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.62' y='108.36' width='2.51' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.62' y='76.92' width='58.08' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.62' y='92.64' width='38.30' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='307.74,53.34 307.74,50.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='307.74,51.76 300.26,51.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='300.26,53.34 300.26,50.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='294.66,69.06 294.66,65.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='294.66,67.48 287.00,67.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='287.00,69.06 287.00,65.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.93,116.22 157.93,113.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.93,114.65 156.34,114.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.34,116.22 156.34,113.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='216.04,84.78 216.04,81.63 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='216.04,83.20 209.37,83.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='209.37,84.78 209.37,81.63 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.78,100.50 195.78,97.35 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.78,98.93 190.07,98.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='190.07,100.50 190.07,97.35 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='310.00' y='54.45' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>63%</text>
+<text x='296.84' y='70.17' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>58%</text>
+<text x='161.47' y='117.34' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='218.71' y='85.89' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>25%</text>
+<text x='198.93' y='101.61' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>16%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY=)'>
+<text x='149.69' y='117.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='149.69' y='101.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='132.08px' lengthAdjust='spacingAndGlyphs'>Windows Subsystem for Linux (WSL)</text>
+<text x='149.69' y='86.07' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.46px' lengthAdjust='spacingAndGlyphs'>Windows</text>
+<text x='149.69' y='70.35' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.68px' lengthAdjust='spacingAndGlyphs'>macOS</text>
+<text x='149.69' y='54.63' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.13px' lengthAdjust='spacingAndGlyphs'>Linux</text>
+<text x='154.62' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='272.84' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.06' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='290.57' y='152.22' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='306.17px' lengthAdjust='spacingAndGlyphs'>Which operating systems do you use when developing with Go?</text>
+<text x='426.52' y='165.21' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,574</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/os_dev_exp.svg b/_content/blog/survey2023h2/os_dev_exp.svg
new file mode 100644
index 0000000..b4178e0
--- /dev/null
+++ b/_content/blog/survey2023h2/os_dev_exp.svg
@@ -0,0 +1,132 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='266.76pt' viewBox='0 0 432.00 266.76'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyNjYuNzY='>
+    <rect x='0.00' y='0.00' width='432.00' height='266.76' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNjYuNzY=)'>
+</g>
+<defs>
+  <clipPath id='cpMTU0LjYyfDQyNi41Mnw4MS42NHwyMTguMzg='>
+    <rect x='154.62' y='81.64' width='271.90' height='136.74' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTU0LjYyfDQyNi41Mnw4MS42NHwyMTguMzg=)'>
+<polyline points='213.73,218.38 213.73,81.64 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='331.95,218.38 331.95,81.64 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='154.62,218.38 154.62,81.64 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='272.84,218.38 272.84,81.64 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.06,218.38 391.06,81.64 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='154.62' y='100.92' width='172.34' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='154.62' y='93.91' width='151.82' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='154.62' y='86.90' width='128.99' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='154.62' y='127.22' width='147.95' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='154.62' y='120.21' width='142.74' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='154.62' y='113.19' width='122.25' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='154.62' y='206.11' width='4.43' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='154.62' y='199.10' width='1.96' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='154.62' y='192.08' width='1.32' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='154.62' y='153.52' width='42.93' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='154.62' y='146.50' width='54.94' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='154.62' y='139.49' width='72.56' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='154.62' y='179.81' width='33.06' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='154.62' y='172.80' width='37.53' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='154.62' y='165.79' width='43.11' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<polyline points='332.97,106.18 332.97,104.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='332.97,105.30 320.94,105.30 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='320.94,106.18 320.94,104.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='313.60,98.29 313.60,96.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='313.60,97.42 299.29,97.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='299.29,98.29 299.29,96.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='289.70,90.40 289.70,88.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='289.70,89.53 277.53,89.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='277.53,90.40 277.53,88.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='309.12,132.48 309.12,130.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='309.12,131.60 296.02,131.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='296.02,132.48 296.02,130.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='304.67,124.59 304.67,122.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='304.67,123.71 290.07,123.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='290.07,124.59 290.07,122.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='282.98,116.70 282.98,114.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='282.98,115.82 270.76,115.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='270.76,116.70 270.76,114.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.89,211.37 160.89,209.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.89,210.49 157.22,210.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.22,211.37 157.22,209.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.94,203.48 157.94,201.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.94,202.60 155.23,202.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.23,203.48 155.23,201.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.85,195.59 156.85,193.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='156.85,194.71 155.03,194.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.03,195.59 155.03,193.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='202.77,158.78 202.77,157.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='202.77,157.90 192.34,157.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='192.34,158.78 192.34,157.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.87,150.89 215.87,149.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.87,150.01 203.26,150.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='203.26,150.89 203.26,149.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='232.82,143.00 232.82,141.24 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='232.82,142.12 221.54,142.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='221.54,143.00 221.54,141.24 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='192.37,185.07 192.37,183.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='192.37,184.20 182.99,184.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='182.99,185.07 182.99,183.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='197.60,177.18 197.60,175.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='197.60,176.31 186.69,176.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='186.69,177.18 186.69,175.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='202.45,169.29 202.45,167.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='202.45,168.42 193.01,168.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='193.01,169.29 193.01,167.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='332.96' y='107.99' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>73%</text>
+<text x='312.44' y='100.10' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>64%</text>
+<text x='289.62' y='92.22' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>55%</text>
+<text x='308.57' y='134.29' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>63%</text>
+<text x='303.37' y='126.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>60%</text>
+<text x='282.87' y='118.51' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>52%</text>
+<text x='163.39' y='213.18' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='160.92' y='205.29' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='160.27' y='197.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='203.56' y='160.59' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>18%</text>
+<text x='215.56' y='152.70' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>23%</text>
+<text x='233.18' y='144.81' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>31%</text>
+<text x='193.68' y='186.89' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>14%</text>
+<text x='198.15' y='179.00' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>16%</text>
+<text x='203.73' y='171.11' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>18%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNjYuNzY=)'>
+<text x='149.69' y='205.47' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='149.69' y='179.18' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='132.08px' lengthAdjust='spacingAndGlyphs'>Windows Subsystem for Linux (WSL)</text>
+<text x='149.69' y='152.88' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.46px' lengthAdjust='spacingAndGlyphs'>Windows</text>
+<text x='149.69' y='126.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.68px' lengthAdjust='spacingAndGlyphs'>macOS</text>
+<text x='149.69' y='100.28' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='19.13px' lengthAdjust='spacingAndGlyphs'>Linux</text>
+<text x='154.62' y='229.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='272.84' y='229.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.06' y='229.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='290.57' y='246.52' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<rect x='161.24' y='57.21' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='286.15' y='57.21' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='347.88' y='57.21' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<text x='178.69' y='66.46' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='102.76px' lengthAdjust='spacingAndGlyphs'>0 – 2 years of Go experience</text>
+<text x='303.59' y='66.46' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.59px' lengthAdjust='spacingAndGlyphs'>3 – 4 years</text>
+<text x='365.33' y='66.46' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='30.92px' lengthAdjust='spacingAndGlyphs'>5+ years</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='306.17px' lengthAdjust='spacingAndGlyphs'>Which operating systems do you use when developing with Go?</text>
+<text x='426.52' y='259.51' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,574</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/other_tech.svg b/_content/blog/survey2023h2/other_tech.svg
new file mode 100644
index 0000000..324736b
--- /dev/null
+++ b/_content/blog/survey2023h2/other_tech.svg
@@ -0,0 +1,125 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='299.20pt' viewBox='0 0 432.00 299.20'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyOTkuMjA='>
+    <rect x='0.00' y='0.00' width='432.00' height='299.20' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyOTkuMjA=)'>
+</g>
+<defs>
+  <clipPath id='cpNzkuOTN8NDI2LjUyfDUzLjEzfDI1MC44Mg=='>
+    <rect x='79.93' y='53.13' width='346.59' height='197.69' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNzkuOTN8NDI2LjUyfDUzLjEzfDI1MC44Mg==)'>
+<polyline points='155.28,250.82 155.28,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='305.97,250.82 305.97,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='79.93,250.82 79.93,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='230.62,250.82 230.62,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='381.31,250.82 381.31,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='79.93' y='145.99' width='26.61' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='220.87' width='2.36' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='101.06' width='63.98' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='205.89' width='3.21' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='160.96' width='19.82' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='116.03' width='51.33' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='56.13' width='140.97' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='175.94' width='3.59' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='86.08' width='66.24' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='235.84' width='71.15' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='190.92' width='3.30' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='131.01' width='49.82' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.93' y='71.10' width='79.83' height='11.98' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='109.51,153.47 109.51,150.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='109.51,151.98 103.57,151.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='103.57,153.47 103.57,150.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.21,228.36 83.21,225.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='83.21,226.86 81.37,226.86 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='81.37,228.36 81.37,225.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='148.18,108.54 148.18,105.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='148.18,107.05 139.63,107.05 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='139.63,108.54 139.63,105.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.21,213.38 84.21,210.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.21,211.88 82.07,211.88 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='82.07,213.38 82.07,210.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='102.34,168.45 102.34,165.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='102.34,166.95 97.16,166.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='97.16,168.45 97.16,165.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.19,123.52 135.19,120.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.19,122.02 127.33,122.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='127.33,123.52 127.33,120.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='226.12,63.62 226.12,60.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='226.12,62.12 215.69,62.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.69,63.62 215.69,60.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.65,183.43 84.65,180.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.65,181.93 82.38,181.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='82.38,183.43 82.38,180.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.50,93.57 150.50,90.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='150.50,92.07 141.84,92.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='141.84,93.57 141.84,90.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.52,243.33 155.52,240.34 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.52,241.84 146.64,241.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='146.64,243.33 146.64,240.34 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.32,198.40 84.32,195.41 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='84.32,196.91 82.15,196.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='82.15,198.40 82.15,195.41 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='133.63,138.50 133.63,135.50 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='133.63,137.00 125.87,137.00 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='125.87,138.50 125.87,135.50 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.37,78.59 164.37,75.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.37,77.09 155.15,77.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.15,78.59 155.15,75.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='110.87' y='154.67' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='86.62' y='229.55' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='149.91' y='109.74' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>21%</text>
+<text x='87.47' y='214.57' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='104.08' y='169.64' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='137.26' y='124.71' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>17%</text>
+<text x='226.90' y='64.81' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>47%</text>
+<text x='87.85' y='184.62' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='152.17' y='94.76' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+<text x='157.08' y='244.52' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>24%</text>
+<text x='87.57' y='199.60' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='135.75' y='139.69' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>17%</text>
+<text x='165.76' y='79.78' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>26%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyOTkuMjA=)'>
+<text x='75.00' y='244.70' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='49.82px' lengthAdjust='spacingAndGlyphs'>None of these</text>
+<text x='75.00' y='229.73' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.90px' lengthAdjust='spacingAndGlyphs'>Chef</text>
+<text x='75.00' y='214.75' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='21.35px' lengthAdjust='spacingAndGlyphs'>Fastly</text>
+<text x='75.00' y='199.78' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='25.36px' lengthAdjust='spacingAndGlyphs'>Puppet</text>
+<text x='75.00' y='184.80' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='57.38px' lengthAdjust='spacingAndGlyphs'>Apache Hadoop</text>
+<text x='75.00' y='169.82' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='31.13px' lengthAdjust='spacingAndGlyphs'>Firebase</text>
+<text x='75.00' y='154.85' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.24px' lengthAdjust='spacingAndGlyphs'>Ansible</text>
+<text x='75.00' y='139.87' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='36.01px' lengthAdjust='spacingAndGlyphs'>RabbitMQ</text>
+<text x='75.00' y='124.89' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.90px' lengthAdjust='spacingAndGlyphs'>GraphQL</text>
+<text x='75.00' y='109.92' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='48.92px' lengthAdjust='spacingAndGlyphs'>ElasticSearch</text>
+<text x='75.00' y='94.94' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='49.82px' lengthAdjust='spacingAndGlyphs'>Apache Kafka</text>
+<text x='75.00' y='79.96' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='35.12px' lengthAdjust='spacingAndGlyphs'>Terraform</text>
+<text x='75.00' y='64.99' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='21.33px' lengthAdjust='spacingAndGlyphs'>gRPC</text>
+<text x='79.93' y='261.49' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='230.62' y='261.49' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='381.31' y='261.49' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='253.23' y='278.96' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='361.76px' lengthAdjust='spacingAndGlyphs'>Does the Go software you work on use or integrate with any of the following</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='46.16px' lengthAdjust='spacingAndGlyphs'>systems?</text>
+<text x='426.52' y='291.95' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,194</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/return_respondent.svg b/_content/blog/survey2023h2/return_respondent.svg
new file mode 100644
index 0000000..6dbc95b
--- /dev/null
+++ b/_content/blog/survey2023h2/return_respondent.svg
@@ -0,0 +1,74 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='226.06pt' viewBox='0 0 432.00 226.06'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyMjYuMDY='>
+    <rect x='0.00' y='0.00' width='432.00' height='226.06' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMjYuMDY=)'>
+</g>
+<defs>
+  <clipPath id='cpMTU0Ljg1fDQyNi41Mnw0Ni40NnwxNzcuNjg='>
+    <rect x='154.85' y='46.46' width='271.67' height='131.22' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTU0Ljg1fDQyNi41Mnw0Ni40NnwxNzcuNjg=)'>
+<polyline points='213.91,177.68 213.91,46.46 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='332.03,177.68 332.03,46.46 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='154.85,177.68 154.85,46.46 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='272.97,177.68 272.97,46.46 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.09,177.68 391.09,46.46 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='154.85' y='52.71' width='109.40' height='24.99' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.85' y='83.95' width='104.70' height='24.99' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.85' y='115.19' width='15.11' height='24.99' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.85' y='146.44' width='7.02' height='24.99' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='268.43,68.33 268.43,62.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='268.43,65.21 260.09,65.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='260.09,68.33 260.09,62.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='263.71,99.57 263.71,93.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='263.71,96.45 255.40,96.45 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='255.40,99.57 255.40,93.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.01,130.82 172.01,124.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.01,127.69 167.92,127.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='167.92,130.82 167.92,124.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.29,162.06 163.29,155.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.29,158.93 160.45,158.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.45,162.06 160.45,155.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='270.26' y='67.89' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>46%</text>
+<text x='265.56' y='99.14' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>44%</text>
+<text x='174.30' y='130.38' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='166.20' y='161.62' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMjYuMDY=)'>
+<text x='149.92' y='161.80' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='41.56px' lengthAdjust='spacingAndGlyphs'>I'm not sure</text>
+<text x='149.92' y='126.24' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='132.31px' lengthAdjust='spacingAndGlyphs'>Maybe, but I don't recall every survey</text>
+<text x='149.92' y='134.88' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='97.62px' lengthAdjust='spacingAndGlyphs'>I've filled out on the internet</text>
+<text x='149.92' y='95.00' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='130.32px' lengthAdjust='spacingAndGlyphs'>No, this is my first time taking the Go</text>
+<text x='149.92' y='103.64' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='63.60px' lengthAdjust='spacingAndGlyphs'>Developer Survey</text>
+<text x='149.92' y='63.75' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.75px' lengthAdjust='spacingAndGlyphs'>Yes, I've taken this survey at least</text>
+<text x='149.92' y='72.39' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='42.26px' lengthAdjust='spacingAndGlyphs'>once before</text>
+<text x='154.85' y='188.35' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='272.97' y='188.35' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.09' y='188.35' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='290.69' y='205.82' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='366.34px' lengthAdjust='spacingAndGlyphs'>We run this Go Developer Survey every six months, most recently in January</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='349.68px' lengthAdjust='spacingAndGlyphs'>2023. Do you recall whether you’ve taken one of these prior surveys, or is</text>
+<text x='5.48' y='39.26' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='262.88px' lengthAdjust='spacingAndGlyphs'>this your first time filling out the Go Developer Survey?</text>
+<text x='426.52' y='218.81' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,064</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/service_arch.svg b/_content/blog/survey2023h2/service_arch.svg
new file mode 100644
index 0000000..92ca39d
--- /dev/null
+++ b/_content/blog/survey2023h2/service_arch.svg
@@ -0,0 +1,78 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='206.95pt' viewBox='0 0 432.00 206.95'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyMDYuOTU='>
+    <rect x='0.00' y='0.00' width='432.00' height='206.95' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMDYuOTU=)'>
+</g>
+<defs>
+  <clipPath id='cpMTU3LjA2fDQyNi41MnwzNS42NnwxNTguNTc='>
+    <rect x='157.06' y='35.66' width='269.46' height='122.91' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTU3LjA2fDQyNi41MnwzNS42NnwxNTguNTc=)'>
+<polyline points='215.64,158.57 215.64,35.66 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='332.79,158.57 332.79,35.66 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='157.06,158.57 157.06,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='274.22,158.57 274.22,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.37,158.57 391.37,35.66 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='157.06' y='40.39' width='99.77' height='18.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='157.06' y='87.66' width='50.00' height='18.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='157.06' y='64.02' width='66.43' height='18.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='157.06' y='111.30' width='13.38' height='18.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='157.06' y='134.93' width='4.74' height='18.91' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='260.92,52.21 260.92,47.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='260.92,49.84 252.72,49.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='252.72,52.21 252.72,47.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.45,99.48 210.45,94.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.45,97.11 203.66,97.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='203.66,99.48 203.66,94.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='227.23,75.84 227.23,71.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='227.23,73.48 219.75,73.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='219.75,75.84 219.75,71.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.36,123.12 172.36,118.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.36,120.75 168.51,120.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='168.51,123.12 168.51,118.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.96,146.75 162.96,142.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='162.96,144.39 160.63,144.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.63,146.75 160.63,142.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='262.82' y='52.53' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>43%</text>
+<text x='213.06' y='99.80' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>21%</text>
+<text x='229.49' y='76.17' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>28%</text>
+<text x='174.77' y='123.44' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='166.13' y='147.08' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyMDYuOTU=)'>
+<text x='152.13' y='147.26' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='152.13' y='119.30' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='134.51px' lengthAdjust='spacingAndGlyphs'>I don't work on either microservices or</text>
+<text x='152.13' y='127.94' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='80.52px' lengthAdjust='spacingAndGlyphs'>monolithic applications</text>
+<text x='152.13' y='95.66' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='96.07px' lengthAdjust='spacingAndGlyphs'>I mostly work on monolithic</text>
+<text x='152.13' y='104.30' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='42.26px' lengthAdjust='spacingAndGlyphs'>applications</text>
+<text x='152.13' y='76.35' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='95.21px' lengthAdjust='spacingAndGlyphs'>About an equal mix of both</text>
+<text x='152.13' y='52.71' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='108.96px' lengthAdjust='spacingAndGlyphs'>I mostly work on microservices</text>
+<text x='157.06' y='169.24' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='274.22' y='169.24' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.37' y='169.24' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='291.79' y='186.71' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='382.95px' lengthAdjust='spacingAndGlyphs'>Do you consider the Go services you work on to be microservices, monoliths, or</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='78.92px' lengthAdjust='spacingAndGlyphs'>something else?</text>
+<text x='426.52' y='199.70' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,065</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/service_challenge.svg b/_content/blog/survey2023h2/service_challenge.svg
new file mode 100644
index 0000000..bc1dab7
--- /dev/null
+++ b/_content/blog/survey2023h2/service_challenge.svg
@@ -0,0 +1,108 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='288.77pt' viewBox='0 0 432.00 288.77'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyODguNzc='>
+    <rect x='0.00' y='0.00' width='432.00' height='288.77' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyODguNzc=)'>
+</g>
+<defs>
+  <clipPath id='cpMTU2Ljg4fDQyNi41Mnw1My4xM3wyNDAuMzk='>
+    <rect x='156.88' y='53.13' width='269.64' height='187.26' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTU2Ljg4fDQyNi41Mnw1My4xM3wyNDAuMzk=)'>
+<polyline points='215.50,240.39 215.50,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='332.73,240.39 332.73,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='156.88,240.39 156.88,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='274.11,240.39 274.11,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.35,240.39 391.35,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='156.88' y='185.31' width='45.91' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='111.88' width='64.41' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='93.52' width='70.24' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='75.16' width='89.54' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='222.03' width='5.94' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='166.96' width='49.91' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='203.67' width='6.51' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='130.24' width='62.02' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='56.80' width='108.73' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='156.88' y='148.60' width='60.65' height='14.69' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='206.81,194.49 206.81,190.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='206.81,192.66 198.76,192.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.76,194.49 198.76,190.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.82,121.06 225.82,117.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='225.82,119.22 216.76,119.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='216.76,121.06 216.76,117.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.76,102.70 231.76,99.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.76,100.86 222.47,100.86 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='222.47,102.70 222.47,99.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='251.35,84.34 251.35,80.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='251.35,82.51 241.49,82.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='241.49,84.34 241.49,80.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.41,231.21 164.41,227.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.41,229.37 161.22,229.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='161.22,231.21 161.22,227.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.94,176.13 210.94,172.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='210.94,174.30 202.64,174.30 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='202.64,176.13 202.64,172.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.05,212.85 165.05,209.18 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.05,211.02 161.72,211.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='161.72,212.85 161.72,209.18 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='223.37,139.42 223.37,135.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='223.37,137.58 214.42,137.58 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='214.42,139.42 214.42,135.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='270.66,65.98 270.66,62.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='270.66,64.15 260.55,64.15 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='260.55,65.98 260.55,62.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='221.96,157.78 221.96,154.10 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='221.96,155.94 213.08,155.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='213.08,157.78 213.08,154.10 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='208.79' y='195.35' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>20%</text>
+<text x='227.29' y='121.91' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>27%</text>
+<text x='233.12' y='103.55' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>30%</text>
+<text x='252.42' y='85.19' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>38%</text>
+<text x='167.15' y='232.06' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='212.79' y='176.99' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>21%</text>
+<text x='167.72' y='213.70' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='224.89' y='140.27' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>26%</text>
+<text x='271.61' y='66.84' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>46%</text>
+<text x='223.52' y='158.63' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>26%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyODguNzc=)'>
+<text x='151.95' y='232.24' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='151.95' y='213.88' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='35.14px' lengthAdjust='spacingAndGlyphs'>Portability</text>
+<text x='151.95' y='195.53' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='134.33px' lengthAdjust='spacingAndGlyphs'>Service discovery and communication</text>
+<text x='151.95' y='172.85' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='112.09px' lengthAdjust='spacingAndGlyphs'>Performance optimization / cost</text>
+<text x='151.95' y='181.49' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.92px' lengthAdjust='spacingAndGlyphs'>reduction</text>
+<text x='151.95' y='158.81' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='96.97px' lengthAdjust='spacingAndGlyphs'>Deployment and versioning</text>
+<text x='151.95' y='140.45' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='96.54px' lengthAdjust='spacingAndGlyphs'>Security and authentication</text>
+<text x='151.95' y='122.09' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='72.50px' lengthAdjust='spacingAndGlyphs'>Service coordination</text>
+<text x='151.95' y='103.73' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='125.45px' lengthAdjust='spacingAndGlyphs'>Data management and consistency</text>
+<text x='151.95' y='85.37' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='81.40px' lengthAdjust='spacingAndGlyphs'>Operational complexity</text>
+<text x='151.95' y='67.02' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='81.42px' lengthAdjust='spacingAndGlyphs'>Testing and debugging</text>
+<text x='156.88' y='251.06' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='274.11' y='251.06' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.35' y='251.06' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='291.70' y='268.53' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.93px' lengthAdjust='spacingAndGlyphs'>(select up to 3)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='382.87px' lengthAdjust='spacingAndGlyphs'>Which things do you find the most challenging when writing microservice-based</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='64.46px' lengthAdjust='spacingAndGlyphs'>applications?</text>
+<text x='426.52' y='281.52' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,053</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/service_comm.svg b/_content/blog/survey2023h2/service_comm.svg
new file mode 100644
index 0000000..06a9ca2
--- /dev/null
+++ b/_content/blog/survey2023h2/service_comm.svg
@@ -0,0 +1,76 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='172.46pt' viewBox='0 0 432.00 172.46'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY='>
+    <rect x='0.00' y='0.00' width='432.00' height='172.46' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY=)'>
+</g>
+<defs>
+  <clipPath id='cpMTU0LjYyfDQyNi41MnwyNC44NnwxMjQuMDg='>
+    <rect x='154.62' y='24.86' width='271.90' height='99.22' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTU0LjYyfDQyNi41MnwyNC44NnwxMjQuMDg=)'>
+<polyline points='213.73,124.08 213.73,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='331.95,124.08 331.95,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='154.62,124.08 154.62,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='272.84,124.08 272.84,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='391.06,124.08 391.06,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='154.62' y='28.68' width='169.94' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.62' y='66.84' width='21.28' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.62' y='85.92' width='4.63' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.62' y='47.76' width='33.52' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='154.62' y='105.00' width='7.06' height='15.26' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='329.06,38.22 329.06,34.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='329.06,36.31 320.06,36.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='320.06,38.22 320.06,34.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='178.77,76.38 178.77,72.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='178.77,74.47 173.04,74.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='173.04,76.38 173.04,72.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.64,95.46 160.64,91.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.64,93.55 157.87,93.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.87,95.46 157.87,91.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.64,57.30 191.64,53.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.64,55.39 184.66,55.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='184.66,57.30 184.66,53.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.38,114.54 163.38,110.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.38,112.63 159.98,112.63 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='159.98,114.54 159.98,110.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='330.56' y='39.00' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>72%</text>
+<text x='180.24' y='77.16' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='163.59' y='96.24' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='194.15' y='58.08' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>14%</text>
+<text x='166.02' y='115.32' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY=)'>
+<text x='149.69' y='115.50' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='149.69' y='96.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='32.90px' lengthAdjust='spacingAndGlyphs'>GraphQL</text>
+<text x='149.69' y='77.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='30.69px' lengthAdjust='spacingAndGlyphs'>Pub/Sub</text>
+<text x='149.69' y='58.26' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='60.95px' lengthAdjust='spacingAndGlyphs'>Message queues</text>
+<text x='149.69' y='34.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='132.08px' lengthAdjust='spacingAndGlyphs'>Request response (e.g., RPC, HTTP,</text>
+<text x='149.69' y='43.50' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.00px' lengthAdjust='spacingAndGlyphs'>REST)</text>
+<text x='154.62' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='272.84' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='391.06' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='290.57' y='152.22' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='405.76px' lengthAdjust='spacingAndGlyphs'>Which primary mechanism do you use to communicate between your microservices?</text>
+<text x='426.52' y='165.21' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,144</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/service_lang.svg b/_content/blog/survey2023h2/service_lang.svg
new file mode 100644
index 0000000..c365e94
--- /dev/null
+++ b/_content/blog/survey2023h2/service_lang.svg
@@ -0,0 +1,113 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='277.63pt' viewBox='0 0 432.00 277.63'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyNzcuNjM='>
+    <rect x='0.00' y='0.00' width='432.00' height='277.63' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNzcuNjM=)'>
+</g>
+<defs>
+  <clipPath id='cpNzkuNDh8NDI2LjUyfDUzLjEzfDIyOS4yNQ=='>
+    <rect x='79.48' y='53.13' width='347.04' height='176.12' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNzkuNDh8NDI2LjUyfDUzLjEzfDIyOS4yNQ==)'>
+<polyline points='154.92,229.25 154.92,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='305.81,229.25 305.81,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='79.48,229.25 79.48,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='230.37,229.25 230.37,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='381.25,229.25 381.25,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='79.48' y='119.18' width='34.63' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='150.63' width='25.93' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='103.45' width='78.52' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='87.73' width='79.68' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='197.80' width='16.52' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='72.00' width='85.04' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='213.53' width='13.18' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='134.90' width='29.84' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='56.28' width='100.25' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='182.08' width='18.54' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='79.48' y='166.35' width='23.76' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='118.23,127.04 118.23,123.89 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='118.23,125.47 109.97,125.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='109.97,127.04 109.97,123.89 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='109.04,158.49 109.04,155.34 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='109.04,156.92 101.78,156.92 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='101.78,158.49 101.78,155.34 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.69,111.31 163.69,108.17 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.69,109.74 152.31,109.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='152.31,111.31 152.31,108.17 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.87,95.59 164.87,92.44 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='164.87,94.02 153.45,94.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='153.45,95.59 153.45,92.44 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='98.94,205.67 98.94,202.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='98.94,204.09 93.05,204.09 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='93.05,205.67 93.05,202.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='170.35,79.86 170.35,76.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='170.35,78.29 158.69,78.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='158.69,79.86 158.69,76.72 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='95.31,221.39 95.31,218.25 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='95.31,219.82 90.01,219.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='90.01,221.39 90.01,218.25 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='113.19,142.76 113.19,139.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='113.19,141.19 105.45,141.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='105.45,142.76 105.45,139.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.84,64.14 185.84,60.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.84,62.57 173.63,62.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='173.63,64.14 173.63,60.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='101.13,189.94 101.13,186.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='101.13,188.37 94.91,188.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='94.91,189.94 94.91,186.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='106.73,174.21 106.73,171.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='106.73,172.64 99.75,172.64 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='99.75,174.21 99.75,171.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='120.10' y='128.16' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>11%</text>
+<text x='109.74' y='159.61' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='164.00' y='112.43' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>26%</text>
+<text x='165.16' y='96.71' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>26%</text>
+<text x='100.33' y='206.78' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='170.52' y='80.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>28%</text>
+<text x='97.00' y='222.51' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='115.32' y='143.88' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>10%</text>
+<text x='185.73' y='65.26' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>33%</text>
+<text x='102.36' y='191.06' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='107.57' y='175.33' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>8%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNzcuNjM=)'>
+<text x='74.55' y='222.69' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='74.55' y='206.96' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.02px' lengthAdjust='spacingAndGlyphs'>Kotlin</text>
+<text x='74.55' y='191.24' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='18.68px' lengthAdjust='spacingAndGlyphs'>Ruby</text>
+<text x='74.55' y='175.51' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.45px' lengthAdjust='spacingAndGlyphs'>Rust</text>
+<text x='74.55' y='159.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='10.22px' lengthAdjust='spacingAndGlyphs'>C#</text>
+<text x='74.55' y='144.06' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.44px' lengthAdjust='spacingAndGlyphs'>PHP</text>
+<text x='74.55' y='128.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='27.57px' lengthAdjust='spacingAndGlyphs'>C / C++</text>
+<text x='74.55' y='112.61' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.91px' lengthAdjust='spacingAndGlyphs'>Java</text>
+<text x='74.55' y='96.89' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='56.93px' lengthAdjust='spacingAndGlyphs'>We only use Go</text>
+<text x='74.55' y='81.16' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='27.13px' lengthAdjust='spacingAndGlyphs'>Node.js</text>
+<text x='74.55' y='65.44' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.91px' lengthAdjust='spacingAndGlyphs'>Python</text>
+<text x='79.48' y='239.92' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='230.37' y='239.92' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='381.25' y='239.92' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='253.00' y='257.39' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='371.32px' lengthAdjust='spacingAndGlyphs'>At work, do you integrate your Go microservices with microservices written in</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='368.48px' lengthAdjust='spacingAndGlyphs'>other languages? If so, which other languages do you use for microservices?</text>
+<text x='426.52' y='270.38' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,083</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/service_num.svg b/_content/blog/survey2023h2/service_num.svg
new file mode 100644
index 0000000..f4e3317
--- /dev/null
+++ b/_content/blog/survey2023h2/service_num.svg
@@ -0,0 +1,69 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='161.47pt' viewBox='0 0 432.00 161.47'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxNjEuNDc='>
+    <rect x='0.00' y='0.00' width='432.00' height='161.47' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNjEuNDc=)'>
+</g>
+<defs>
+  <clipPath id='cpNjkuNzB8NDI2LjUyfDI0Ljg2fDExMy4wOQ=='>
+    <rect x='69.70' y='24.86' width='356.82' height='88.23' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpNjkuNzB8NDI2LjUyfDI0Ljg2fDExMy4wOQ==)'>
+<polyline points='147.27,113.09 147.27,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='302.41,113.09 302.41,24.86 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='69.70,113.09 69.70,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='224.84,113.09 224.84,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='379.98,113.09 379.98,24.86 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='69.70' y='29.06' width='12.81' height='16.81' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='69.70' y='50.07' width='123.12' height='16.81' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='69.70' y='71.08' width='60.98' height='16.81' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='69.70' y='92.08' width='113.37' height='16.81' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='85.13,39.56 85.13,35.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='85.13,37.46 79.89,37.46 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='79.89,39.56 79.89,35.36 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='199.27,60.57 199.27,56.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='199.27,58.47 186.38,58.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='186.38,60.57 186.38,56.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.91,81.58 135.91,77.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='135.91,79.48 125.44,79.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='125.44,81.58 125.44,77.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='189.41,102.59 189.41,98.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='189.41,100.49 176.73,100.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='176.73,102.59 176.73,98.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='86.84' y='40.15' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='198.82' y='61.16' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>40%</text>
+<text x='136.68' y='82.17' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>20%</text>
+<text x='189.07' y='103.18' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>37%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNjEuNDc=)'>
+<text x='64.77' y='103.36' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='47.15px' lengthAdjust='spacingAndGlyphs'>More than 10</text>
+<text x='64.77' y='82.35' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.25px' lengthAdjust='spacingAndGlyphs'>6 – 10</text>
+<text x='64.77' y='61.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='17.80px' lengthAdjust='spacingAndGlyphs'>2 – 5</text>
+<text x='64.77' y='40.33' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='4.45px' lengthAdjust='spacingAndGlyphs'>1</text>
+<text x='69.70' y='123.76' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='224.84' y='123.76' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='379.98' y='123.76' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='248.11' y='141.23' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='382.94px' lengthAdjust='spacingAndGlyphs'>About how many microservices does the primary application you work on have?</text>
+<text x='426.52' y='154.22' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,132</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/template_updates.svg b/_content/blog/survey2023h2/template_updates.svg
new file mode 100644
index 0000000..f978117
--- /dev/null
+++ b/_content/blog/survey2023h2/template_updates.svg
@@ -0,0 +1,66 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='576.00pt' height='180.00pt' viewBox='0 0 576.00 180.00'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw1NzYuMDB8MC4wMHwxODAuMDA='>
+    <rect x='0.00' y='0.00' width='576.00' height='180.00' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw1NzYuMDB8MC4wMHwxODAuMDA=)'>
+</g>
+<defs>
+  <clipPath id='cpMjIuNTV8NTcwLjUyfDc0Ljk3fDEzMS42Mg=='>
+    <rect x='22.55' y='74.97' width='547.97' height='56.65' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMjIuNTV8NTcwLjUyfDc0Ljk3fDEzMS42Mg==)'>
+<polyline points='141.67,131.62 141.67,74.97 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='379.92,131.62 379.92,74.97 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='22.55,131.62 22.55,74.97 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='260.80,131.62 260.80,74.97 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='499.05,131.62 499.05,74.97 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='22.55' y='84.41' width='68.63' height='37.77' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #B4B5B6;' />
+<rect x='91.18' y='84.41' width='71.94' height='37.77' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #8EB2BD;' />
+<rect x='163.12' y='84.41' width='162.45' height='37.77' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #5CA8C1;' />
+<rect x='325.57' y='84.41' width='121.21' height='37.77' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #35A1C5;' />
+<rect x='446.78' y='84.41' width='52.26' height='37.77' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<text x='56.86' y='105.99' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>14%</text>
+<text x='127.15' y='105.99' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>15%</text>
+<text x='244.35' y='105.99' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>34%</text>
+<text x='386.18' y='105.99' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>25%</text>
+<text x='472.91' y='105.99' text-anchor='middle' style='font-size: 7.50px; font-weight: bold;fill: #EFEFEF; font-family: "Arial";' textLength='15.03px' lengthAdjust='spacingAndGlyphs'>11%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw1NzYuMDB8MC4wMHwxODAuMDA=)'>
+<text x='22.55' y='142.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='260.80' y='142.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='499.05' y='142.29' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='296.53' y='159.76' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<rect x='68.24' y='50.54' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #B4B5B6;' />
+<rect x='157.55' y='50.54' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #8EB2BD;' />
+<rect x='241.07' y='50.54' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #5CA8C1;' />
+<rect x='338.38' y='50.54' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #35A1C5;' />
+<rect x='412.56' y='50.54' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #0099CC;' />
+<text x='85.69' y='59.79' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='67.16px' lengthAdjust='spacingAndGlyphs'>Not at all important</text>
+<text x='175.00' y='59.79' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='61.38px' lengthAdjust='spacingAndGlyphs'>Slightly important</text>
+<text x='258.52' y='59.79' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='75.17px' lengthAdjust='spacingAndGlyphs'>Moderately important</text>
+<text x='355.83' y='59.79' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='52.03px' lengthAdjust='spacingAndGlyphs'>Very important</text>
+<text x='430.01' y='59.79' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='71.16px' lengthAdjust='spacingAndGlyphs'>Extremely important</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='363.43px' lengthAdjust='spacingAndGlyphs'>When working with project templates, is it important to be able to update the</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='325.62px' lengthAdjust='spacingAndGlyphs'>base template and pull those updates into projects built on top of it?</text>
+<text x='570.52' y='172.75' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,027</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/templates.svg b/_content/blog/survey2023h2/templates.svg
new file mode 100644
index 0000000..a6ecf8d
--- /dev/null
+++ b/_content/blog/survey2023h2/templates.svg
@@ -0,0 +1,126 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='462.72pt' viewBox='0 0 432.00 462.72'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHw0NjIuNzI='>
+    <rect x='0.00' y='0.00' width='432.00' height='462.72' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHw0NjIuNzI=)'>
+</g>
+<defs>
+  <clipPath id='cpMTY1LjM1fDQyNi41Mnw1My4xM3w0MTQuMzQ='>
+    <rect x='165.35' y='53.13' width='261.17' height='361.21' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTY1LjM1fDQyNi41Mnw1My4xM3w0MTQuMzQ=)'>
+<polyline points='222.13,414.34 222.13,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='335.68,414.34 335.68,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='165.35,414.34 165.35,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='278.90,414.34 278.90,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='392.46,414.34 392.46,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='165.35' y='220.84' width='65.52' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='91.83' width='116.31' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='188.59' width='70.07' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='285.34' width='64.72' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='59.58' width='139.59' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='253.09' width='65.36' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='317.59' width='62.40' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='382.09' width='0.00' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='156.33' width='89.59' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='349.84' width='5.04' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.35' y='124.08' width='90.71' height='25.80' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='234.65,236.96 234.65,230.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='234.65,233.74 227.08,233.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='227.08,236.96 227.08,230.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='285.84,107.96 285.84,101.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='285.84,104.73 277.49,104.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='277.49,107.96 277.49,101.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='239.29,204.71 239.29,198.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='239.29,201.49 231.57,201.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.57,204.71 231.57,198.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='233.84,301.46 233.84,295.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='233.84,298.24 226.30,298.24 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='226.30,301.46 226.30,295.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='309.01,75.71 309.01,69.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='309.01,72.48 300.88,72.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='300.88,75.71 300.88,69.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='234.49,269.21 234.49,262.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='234.49,265.99 226.92,265.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='226.92,269.21 226.92,262.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.48,333.72 231.48,327.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='231.48,330.49 224.02,330.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='224.02,333.72 224.02,327.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.35,398.22 165.35,391.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.35,394.99 165.35,394.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.35,398.22 165.35,391.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='259.03,172.46 259.03,166.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='259.03,169.24 250.86,169.24 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='250.86,172.46 250.86,166.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.62,365.97 171.62,359.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.62,362.74 169.16,362.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='169.16,365.97 169.16,359.52 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='260.16,140.21 260.16,133.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='260.16,136.98 251.97,136.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='251.97,140.21 251.97,133.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='236.87' y='236.43' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>29%</text>
+<text x='287.66' y='107.42' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>51%</text>
+<text x='241.43' y='204.18' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>31%</text>
+<text x='236.07' y='300.93' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>28%</text>
+<text x='310.94' y='75.17' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>61%</text>
+<text x='236.71' y='268.68' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>29%</text>
+<text x='233.75' y='333.18' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>27%</text>
+<text x='169.69' y='397.68' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='260.95' y='171.92' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>39%</text>
+<text x='174.73' y='365.43' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='262.07' y='139.67' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>40%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHw0NjIuNzI=)'>
+<text x='160.42' y='397.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='65.40px' lengthAdjust='spacingAndGlyphs'>None of the above</text>
+<text x='160.42' y='365.61' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='22.23px' lengthAdjust='spacingAndGlyphs'>Other:</text>
+<text x='160.42' y='329.04' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='102.75px' lengthAdjust='spacingAndGlyphs'>Instructions for how to use or</text>
+<text x='160.42' y='337.68' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='82.30px' lengthAdjust='spacingAndGlyphs'>customize the template</text>
+<text x='160.42' y='296.79' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='142.80px' lengthAdjust='spacingAndGlyphs'>Stubbed out design patterns appropriate</text>
+<text x='160.42' y='305.43' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='63.17px' lengthAdjust='spacingAndGlyphs'>to my project type</text>
+<text x='160.42' y='255.90' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='124.09px' lengthAdjust='spacingAndGlyphs'>Imports recommended modules for</text>
+<text x='160.42' y='264.54' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='114.33px' lengthAdjust='spacingAndGlyphs'>specific types of projects (e.g., a</text>
+<text x='160.42' y='273.18' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='117.86px' lengthAdjust='spacingAndGlyphs'>template for a microservice might</text>
+<text x='160.42' y='281.82' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='125.01px' lengthAdjust='spacingAndGlyphs'>include a module to handle routing)</text>
+<text x='160.42' y='232.29' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='130.79px' lengthAdjust='spacingAndGlyphs'>Something to help setup or configure</text>
+<text x='160.42' y='240.93' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='50.72px' lengthAdjust='spacingAndGlyphs'>build pipelines</text>
+<text x='160.42' y='195.72' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='114.33px' lengthAdjust='spacingAndGlyphs'>Ability to turn components of the</text>
+<text x='160.42' y='204.36' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='109.88px' lengthAdjust='spacingAndGlyphs'>template on or off (e.g., turn off</text>
+<text x='160.42' y='213.00' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.63px' lengthAdjust='spacingAndGlyphs'>logging, turn on HTTP routing)</text>
+<text x='160.42' y='167.78' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='130.77px' lengthAdjust='spacingAndGlyphs'>Company-specific best practices and</text>
+<text x='160.42' y='176.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='56.50px' lengthAdjust='spacingAndGlyphs'>boilerplate code</text>
+<text x='160.42' y='139.85' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.98px' lengthAdjust='spacingAndGlyphs'>Testing infrastructure or examples</text>
+<text x='160.42' y='94.64' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='136.56px' lengthAdjust='spacingAndGlyphs'>Example code for common tasks (e.g.,</text>
+<text x='160.42' y='103.28' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='106.78px' lengthAdjust='spacingAndGlyphs'>connecting to databases, user</text>
+<text x='160.42' y='111.92' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='130.36px' lengthAdjust='spacingAndGlyphs'>authentication, logging configuration,</text>
+<text x='160.42' y='120.56' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='15.57px' lengthAdjust='spacingAndGlyphs'>etc.)</text>
+<text x='160.42' y='71.03' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='120.97px' lengthAdjust='spacingAndGlyphs'>A preferred directory structure laid</text>
+<text x='160.42' y='79.67' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='65.39px' lengthAdjust='spacingAndGlyphs'>out for my .go files</text>
+<text x='165.35' y='425.01' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='278.90' y='425.01' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='392.46' y='425.01' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='295.94' y='442.48' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='363.42px' lengthAdjust='spacingAndGlyphs'>When starting a new Go project, what information or features do you want in</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='113.98px' lengthAdjust='spacingAndGlyphs'>templates or examples?</text>
+<text x='426.52' y='455.47' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  2,839</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/text_anything_else.svg b/_content/blog/survey2023h2/text_anything_else.svg
new file mode 100644
index 0000000..f17fdb3
--- /dev/null
+++ b/_content/blog/survey2023h2/text_anything_else.svg
@@ -0,0 +1,113 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='323.91pt' viewBox='0 0 432.00 323.91'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzMjMuOTE='>
+    <rect x='0.00' y='0.00' width='432.00' height='323.91' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMjMuOTE=)'>
+</g>
+<defs>
+  <clipPath id='cpMTgzLjExfDQyNi41Mnw0Mi4zM3wyNzUuNTM='>
+    <rect x='183.11' y='42.33' width='243.41' height='233.19' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTgzLjExfDQyNi41Mnw0Mi4zM3wyNzUuNTM=)'>
+<polyline points='236.02,275.53 236.02,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='341.85,275.53 341.85,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='183.11,275.53 183.11,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='288.94,275.53 288.94,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='394.77,275.53 394.77,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='183.11' y='67.32' width='25.86' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='171.42' width='12.14' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='108.96' width='20.06' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='192.24' width='11.61' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='88.14' width='24.81' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='150.60' width='13.20' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='213.06' width='11.08' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='233.88' width='5.28' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='129.78' width='13.72' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='46.50' width='70.73' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='183.11' y='254.70' width='48.56' height='16.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='215.76,77.73 215.76,73.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.76,75.65 202.19,75.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='202.19,77.73 202.19,73.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='200.06,181.83 200.06,177.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='200.06,179.75 190.43,179.75 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='190.43,181.83 190.43,177.67 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='209.23,119.37 209.23,115.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='209.23,117.29 197.10,117.29 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='197.10,119.37 197.10,115.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='199.44,202.65 199.44,198.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='199.44,200.57 190.00,200.57 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='190.00,202.65 190.00,198.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='214.58,98.55 214.58,94.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='214.58,96.47 201.25,96.47 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='201.25,98.55 201.25,94.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='201.31,161.01 201.31,156.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='201.31,158.93 191.29,158.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.29,161.01 191.29,156.85 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.81,223.47 198.81,219.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='198.81,221.39 189.58,221.39 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='189.58,223.47 189.58,219.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.62,244.29 191.62,240.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.62,242.21 185.15,242.21 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.15,244.29 185.15,240.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='201.93,140.19 201.93,136.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='201.93,138.11 191.73,138.11 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='191.73,140.19 191.73,136.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='263.61,56.91 263.61,52.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='263.61,54.82 244.07,54.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='244.07,56.91 244.07,52.74 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='240.38,265.11 240.38,260.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='240.38,263.03 222.96,263.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='222.96,265.11 222.96,260.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='228.48' y='78.33' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>12%</text>
+<text x='209.33' y='182.44' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='217.25' y='119.98' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='208.81' y='203.26' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='227.42' y='99.16' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>12%</text>
+<text x='210.39' y='161.62' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='208.28' y='224.08' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='202.47' y='244.90' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='210.92' y='140.80' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>6%</text>
+<text x='273.34' y='57.51' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>33%</text>
+<text x='251.17' y='265.72' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>23%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzMjMuOTE=)'>
+<text x='178.18' y='265.90' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.01px' lengthAdjust='spacingAndGlyphs'>Other</text>
+<text x='178.18' y='245.08' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='141.90px' lengthAdjust='spacingAndGlyphs'>Frustrated by dependency management</text>
+<text x='178.18' y='224.26' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='112.08px' lengthAdjust='spacingAndGlyphs'>Hitting limits of type parameters</text>
+<text x='178.18' y='203.44' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='160.56px' lengthAdjust='spacingAndGlyphs'>Improve performance / memory management</text>
+<text x='178.18' y='182.62' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='65.40px' lengthAdjust='spacingAndGlyphs'>Expand use cases</text>
+<text x='178.18' y='161.80' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='76.95px' lengthAdjust='spacingAndGlyphs'>Appreciates simplicity</text>
+<text x='178.18' y='140.98' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='88.96px' lengthAdjust='spacingAndGlyphs'>Improve docs / examples</text>
+<text x='178.18' y='120.16' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='107.65px' lengthAdjust='spacingAndGlyphs'>Improve type safety / reliability</text>
+<text x='178.18' y='99.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='80.50px' lengthAdjust='spacingAndGlyphs'>Improve error handling</text>
+<text x='178.18' y='74.19' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='114.76px' lengthAdjust='spacingAndGlyphs'>Improve expressivity / developer</text>
+<text x='178.18' y='82.83' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='26.69px' lengthAdjust='spacingAndGlyphs'>velocity</text>
+<text x='178.18' y='57.69' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='82.74px' lengthAdjust='spacingAndGlyphs'>General praise / thanks</text>
+<text x='183.11' y='286.20' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='288.94' y='286.20' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='394.77' y='286.20' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='304.81' y='303.67' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='98.31px' lengthAdjust='spacingAndGlyphs'>(open-ended text response)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='305.65px' lengthAdjust='spacingAndGlyphs'>Is there anything else you would like to share with us about Go?</text>
+<text x='426.52' y='316.66' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='29.15px' lengthAdjust='spacingAndGlyphs'>n =  401</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/text_err_wish.svg b/_content/blog/survey2023h2/text_err_wish.svg
new file mode 100644
index 0000000..089c024
--- /dev/null
+++ b/_content/blog/survey2023h2/text_err_wish.svg
@@ -0,0 +1,128 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='349.07pt' viewBox='0 0 432.00 349.07'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc='>
+    <rect x='0.00' y='0.00' width='432.00' height='349.07' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc=)'>
+</g>
+<defs>
+  <clipPath id='cpMTUzLjc4fDQyNi41Mnw1My4xM3wzMDAuNjk='>
+    <rect x='153.78' y='53.13' width='272.74' height='247.56' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTUzLjc4fDQyNi41Mnw1My4xM3wzMDAuNjk=)'>
+<polyline points='213.07,300.69 213.07,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='331.65,300.69 331.65,53.13 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='153.78,300.69 153.78,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='272.36,300.69 272.36,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='390.95,300.69 390.95,53.13 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='153.78' y='225.67' width='5.98' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='150.65' width='27.24' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='75.64' width='51.82' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='94.39' width='50.49' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='131.90' width='31.89' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='56.88' width='85.03' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='188.16' width='11.96' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='113.15' width='33.22' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='263.18' width='4.65' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='244.43' width='5.98' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='206.92' width='8.64' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='169.41' width='18.60' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='153.78' y='281.93' width='30.56' height='15.00' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='163.62,235.05 163.62,231.30 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.62,233.17 155.90,233.17 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.90,235.05 155.90,231.30 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='188.86,160.03 188.86,156.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='188.86,158.16 173.17,158.16 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='173.17,160.03 173.17,156.28 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.76,85.01 215.76,81.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='215.76,83.14 195.43,83.14 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.43,85.01 195.43,81.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='214.34,103.77 214.34,100.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='214.34,101.89 194.20,101.89 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='194.20,103.77 194.20,100.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='194.06,141.28 194.06,137.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='194.06,139.40 177.28,139.40 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='177.28,141.28 177.28,137.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='250.61,66.26 250.61,62.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='250.61,64.38 227.02,64.38 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='227.02,66.26 227.02,62.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.12,197.54 171.12,193.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.12,195.66 160.36,195.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='160.36,197.54 160.36,193.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.54,122.52 195.54,118.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='195.54,120.65 178.46,120.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='178.46,122.52 178.46,118.77 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='161.84,272.56 161.84,268.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='161.84,270.68 155.02,270.68 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.02,272.56 155.02,268.81 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.62,253.80 163.62,250.05 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='163.62,251.93 155.90,251.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.90,253.80 155.90,250.05 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='167.03,216.29 167.03,212.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='167.03,214.42 157.81,214.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.81,216.29 157.81,212.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.00,178.79 179.00,175.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.00,176.91 165.77,176.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='165.77,178.79 165.77,175.03 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='192.58,291.31 192.58,287.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='192.58,289.44 176.10,289.44 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='176.10,291.31 176.10,287.56 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='173.85' y='235.86' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='200.52' y='160.85' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>11%</text>
+<text x='225.10' y='85.83' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>22%</text>
+<text x='223.78' y='104.58' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>21%</text>
+<text x='205.18' y='142.09' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>13%</text>
+<text x='258.32' y='67.07' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>36%</text>
+<text x='179.83' y='198.35' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>5%</text>
+<text x='206.50' y='123.34' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>14%</text>
+<text x='172.52' y='273.37' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='173.85' y='254.62' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='176.50' y='217.11' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='186.47' y='179.60' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>8%</text>
+<text x='203.85' y='292.13' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>13%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc=)'>
+<text x='148.85' y='292.31' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.01px' lengthAdjust='spacingAndGlyphs'>Other</text>
+<text x='148.85' y='273.55' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='99.20px' lengthAdjust='spacingAndGlyphs'>Related to unused variables</text>
+<text x='148.85' y='254.80' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='68.95px' lengthAdjust='spacingAndGlyphs'>Related to generics</text>
+<text x='148.85' y='236.04' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='65.83px' lengthAdjust='spacingAndGlyphs'>Test-related topics</text>
+<text x='148.85' y='217.29' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='102.76px' lengthAdjust='spacingAndGlyphs'>Improved go cmd help / docs</text>
+<text x='148.85' y='198.53' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='77.40px' lengthAdjust='spacingAndGlyphs'>Related to nil pointers</text>
+<text x='148.85' y='179.78' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='110.31px' lengthAdjust='spacingAndGlyphs'>Improved formatting / use color</text>
+<text x='148.85' y='161.03' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='131.23px' lengthAdjust='spacingAndGlyphs'>Module or dependency related topics</text>
+<text x='148.85' y='137.95' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='121.43px' lengthAdjust='spacingAndGlyphs'>Quickly see exactly what triggered</text>
+<text x='148.85' y='146.59' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.89px' lengthAdjust='spacingAndGlyphs'>error</text>
+<text x='148.85' y='123.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='88.50px' lengthAdjust='spacingAndGlyphs'>Be more like Rust or Elm</text>
+<text x='148.85' y='104.76' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='116.10px' lengthAdjust='spacingAndGlyphs'>Guidance to fix the error / autofix</text>
+<text x='148.85' y='81.69' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='106.75px' lengthAdjust='spacingAndGlyphs'>Improved stack traces / easier</text>
+<text x='148.85' y='90.33' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='114.76px' lengthAdjust='spacingAndGlyphs'>debugging from runtime crashes</text>
+<text x='148.85' y='62.93' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='121.45px' lengthAdjust='spacingAndGlyphs'>Improved explanations of causes /</text>
+<text x='148.85' y='71.57' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='72.96px' lengthAdjust='spacingAndGlyphs'>easier to understand</text>
+<text x='153.78' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='272.36' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='390.95' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='290.15' y='328.83' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='41.40' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='98.31px' lengthAdjust='spacingAndGlyphs'>(open-ended text response)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='381.25px' lengthAdjust='spacingAndGlyphs'>If you could make a wish and improve one thing about error messages in the Go</text>
+<text x='5.48' y='28.46' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='168.89px' lengthAdjust='spacingAndGlyphs'>toolchain, what would you change?</text>
+<text x='426.52' y='341.82' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='29.15px' lengthAdjust='spacingAndGlyphs'>n =  357</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/what.svg b/_content/blog/survey2023h2/what.svg
new file mode 100644
index 0000000..622c197
--- /dev/null
+++ b/_content/blog/survey2023h2/what.svg
@@ -0,0 +1,128 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='349.07pt' viewBox='0 0 432.00 349.07'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc='>
+    <rect x='0.00' y='0.00' width='432.00' height='349.07' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc=)'>
+</g>
+<defs>
+  <clipPath id='cpMTY1LjI4fDQyNi41Mnw0Mi4zM3wzMDAuNjk='>
+    <rect x='165.28' y='42.33' width='261.24' height='258.36' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTY1LjI4fDQyNi41Mnw0Mi4zM3wzMDAuNjk=)'>
+<polyline points='222.07,300.69 222.07,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='335.65,300.69 335.65,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='165.28,300.69 165.28,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='278.86,300.69 278.86,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='392.45,300.69 392.45,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='165.28' y='163.68' width='76.57' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='222.40' width='9.82' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='46.25' width='167.56' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='124.54' width='86.89' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='65.82' width='140.65' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='144.11' width='83.47' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='241.97' width='9.14' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='183.25' width='20.70' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='202.83' width='16.41' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='85.39' width='100.56' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='261.54' width='6.22' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='281.12' width='7.64' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='165.28' y='104.96' width='94.47' height='15.66' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='245.33,173.47 245.33,169.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='245.33,171.51 238.37,171.51 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='238.37,173.47 238.37,169.55 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='176.60,232.18 176.60,228.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='176.60,230.23 173.60,230.23 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='173.60,232.18 173.60,228.27 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='336.08,56.03 336.08,52.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='336.08,54.08 329.60,54.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='329.60,56.03 329.60,52.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='255.75,134.32 255.75,130.41 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='255.75,132.37 248.59,132.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='248.59,134.32 248.59,130.41 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='309.51,75.61 309.51,71.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='309.51,73.65 302.35,73.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='302.35,75.61 302.35,71.69 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='252.30,153.90 252.30,149.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='252.30,151.94 245.20,151.94 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='245.20,153.90 245.20,149.98 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='175.86,251.76 175.86,247.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='175.86,249.80 172.97,249.80 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.97,251.76 172.97,247.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='188.10,193.04 188.10,189.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='188.10,191.08 183.86,191.08 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='183.86,193.04 183.86,189.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='183.59,212.61 183.59,208.70 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='183.59,210.66 179.78,210.66 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.78,212.61 179.78,208.70 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='269.50,95.18 269.50,91.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='269.50,93.22 262.18,93.22 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='262.18,95.18 262.18,91.26 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.70,271.33 172.70,267.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='172.70,269.37 170.29,269.37 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='170.29,271.33 170.29,267.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='174.25,290.90 174.25,286.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='174.25,288.95 171.60,288.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='171.60,290.90 171.60,286.99 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='263.38,114.75 263.38,110.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='263.38,112.79 256.12,112.79 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='256.12,114.75 256.12,110.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='247.85' y='174.20' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>34%</text>
+<text x='179.43' y='232.92' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='338.84' y='56.76' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>74%</text>
+<text x='258.17' y='135.05' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>38%</text>
+<text x='311.93' y='76.34' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>62%</text>
+<text x='254.75' y='154.63' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>37%</text>
+<text x='178.75' y='252.49' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='190.31' y='193.77' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>9%</text>
+<text x='186.02' y='213.34' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='271.84' y='95.91' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>44%</text>
+<text x='175.83' y='272.06' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='177.26' y='291.63' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>3%</text>
+<text x='265.75' y='115.48' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>42%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwzNDkuMDc=)'>
+<text x='160.35' y='291.81' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.01px' lengthAdjust='spacingAndGlyphs'>Other</text>
+<text x='160.35' y='272.24' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='43.15px' lengthAdjust='spacingAndGlyphs'>Mobile apps</text>
+<text x='160.35' y='252.67' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='25.79px' lengthAdjust='spacingAndGlyphs'>Games</text>
+<text x='160.35' y='228.78' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='95.63px' lengthAdjust='spacingAndGlyphs'>Machine learning / Artificial</text>
+<text x='160.35' y='237.42' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='40.04px' lengthAdjust='spacingAndGlyphs'>intelligence</text>
+<text x='160.35' y='213.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='137.02px' lengthAdjust='spacingAndGlyphs'>Embedded devices / Internet of Things</text>
+<text x='160.35' y='193.95' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='94.74px' lengthAdjust='spacingAndGlyphs'>Desktop / GUI applications</text>
+<text x='160.35' y='174.38' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='138.34px' lengthAdjust='spacingAndGlyphs'>Agents and daemons (e.g., monitoring)</text>
+<text x='160.35' y='150.49' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='114.32px' lengthAdjust='spacingAndGlyphs'>Data processing (e.g., pipelines,</text>
+<text x='160.35' y='159.13' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='44.93px' lengthAdjust='spacingAndGlyphs'>aggregation)</text>
+<text x='160.35' y='130.91' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='132.11px' lengthAdjust='spacingAndGlyphs'>Automation/scripts (e.g., deployment,</text>
+<text x='160.35' y='139.55' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='97.42px' lengthAdjust='spacingAndGlyphs'>configuration management)</text>
+<text x='160.35' y='111.34' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='122.31px' lengthAdjust='spacingAndGlyphs'>Websites / web services (returning</text>
+<text x='160.35' y='119.98' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='24.44px' lengthAdjust='spacingAndGlyphs'>HTML)</text>
+<text x='160.35' y='96.09' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='83.60px' lengthAdjust='spacingAndGlyphs'>Libraries or frameworks</text>
+<text x='160.35' y='76.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='129.42px' lengthAdjust='spacingAndGlyphs'>A runnable/interactive program (CLI)</text>
+<text x='160.35' y='56.94' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='142.73px' lengthAdjust='spacingAndGlyphs'>API/RPC services (returning non-HTML)</text>
+<text x='165.28' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='278.86' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='392.45' y='311.36' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='295.90' y='328.83' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='206.09px' lengthAdjust='spacingAndGlyphs'>What types of things do you build with Go?</text>
+<text x='426.52' y='341.82' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,655</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/where.svg b/_content/blog/survey2023h2/where.svg
new file mode 100644
index 0000000..b368855
--- /dev/null
+++ b/_content/blog/survey2023h2/where.svg
@@ -0,0 +1,77 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='172.46pt' viewBox='0 0 432.00 172.46'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY='>
+    <rect x='0.00' y='0.00' width='432.00' height='172.46' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY=)'>
+</g>
+<defs>
+  <clipPath id='cpMTQxLjMzfDQyNi41Mnw0Mi4zM3wxMjQuMDg='>
+    <rect x='141.33' y='42.33' width='285.20' height='81.75' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTQxLjMzfDQyNi41Mnw0Mi4zM3wxMjQuMDg=)'>
+<polyline points='203.32,124.08 203.32,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='327.32,124.08 327.32,42.33 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='141.33,124.08 141.33,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='265.32,124.08 265.32,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='389.32,124.08 389.32,42.33 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='141.33' y='76.92' width='63.48' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.33' y='92.64' width='18.03' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.33' y='108.36' width='1.76' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.33' y='61.20' width='146.17' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<rect x='141.33' y='45.48' width='192.68' height='12.58' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #00ADD8;' />
+<polyline points='208.25,84.78 208.25,81.63 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='208.25,83.20 201.37,83.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='201.37,84.78 201.37,81.63 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='161.40,100.50 161.40,97.35 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='161.40,98.93 157.30,98.93 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='157.30,100.50 157.30,97.35 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.75,116.22 143.75,113.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.75,114.65 142.43,114.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='142.43,116.22 142.43,113.07 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='291.38,69.06 291.38,65.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='291.38,67.48 283.62,67.48 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='283.62,69.06 283.62,65.91 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='337.28,53.34 337.28,50.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='337.28,51.76 330.72,51.76 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='330.72,53.34 330.72,50.19 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='210.81' y='85.89' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>26%</text>
+<text x='163.69' y='101.61' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>7%</text>
+<text x='147.42' y='117.34' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='293.50' y='70.17' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>59%</text>
+<text x='340.00' y='54.45' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>78%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwxNzIuNDY=)'>
+<text x='136.39' y='117.52' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='65.40px' lengthAdjust='spacingAndGlyphs'>None of the above</text>
+<text x='136.39' y='97.47' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='118.33px' lengthAdjust='spacingAndGlyphs'>Evaluating for potential use at my</text>
+<text x='136.39' y='106.11' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.58px' lengthAdjust='spacingAndGlyphs'>primary job</text>
+<text x='136.39' y='86.07' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='118.78px' lengthAdjust='spacingAndGlyphs'>Education / to expand my skill set</text>
+<text x='136.39' y='70.35' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='117.87px' lengthAdjust='spacingAndGlyphs'>Personal or open-source projects</text>
+<text x='136.39' y='54.63' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='66.70px' lengthAdjust='spacingAndGlyphs'>For my primary job</text>
+<text x='141.33' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='265.32' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='389.32' y='134.75' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='283.92' y='152.22' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='332.85px' lengthAdjust='spacingAndGlyphs'>During the past month, in what types of situations have you used Go?</text>
+<text x='426.52' y='165.21' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,797</text>
+</g>
+</svg>
diff --git a/_content/blog/survey2023h2/where_exp.svg b/_content/blog/survey2023h2/where_exp.svg
new file mode 100644
index 0000000..079718a
--- /dev/null
+++ b/_content/blog/survey2023h2/where_exp.svg
@@ -0,0 +1,133 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' class='svglite' width='432.00pt' height='266.76pt' viewBox='0 0 432.00 266.76'>
+<defs>
+  <style type='text/css'><![CDATA[
+    .svglite line, .svglite polyline, .svglite polygon, .svglite path, .svglite rect, .svglite circle {
+      fill: none;
+      stroke: #000000;
+      stroke-linecap: round;
+      stroke-linejoin: round;
+      stroke-miterlimit: 10.00;
+    }
+    .svglite text {
+      white-space: pre;
+    }
+  ]]></style>
+</defs>
+<rect width='100%' height='100%' style='stroke: none; fill: #FFFFFF;'/>
+<defs>
+  <clipPath id='cpMC4wMHw0MzIuMDB8MC4wMHwyNjYuNzY='>
+    <rect x='0.00' y='0.00' width='432.00' height='266.76' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNjYuNzY=)'>
+</g>
+<defs>
+  <clipPath id='cpMTQxLjMzfDQyNi41Mnw4MS42NHwyMTguMzg='>
+    <rect x='141.33' y='81.64' width='285.20' height='136.74' />
+  </clipPath>
+</defs>
+<g clip-path='url(#cpMTQxLjMzfDQyNi41Mnw4MS42NHwyMTguMzg=)'>
+<polyline points='203.32,218.38 203.32,81.64 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='327.32,218.38 327.32,81.64 ' style='stroke-width: 0.53; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='141.33,218.38 141.33,81.64 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='265.32,218.38 265.32,81.64 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<polyline points='389.32,218.38 389.32,81.64 ' style='stroke-width: 1.07; stroke: #EBEBEB; stroke-linecap: butt;' />
+<rect x='141.33' y='153.52' width='33.85' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='141.33' y='146.50' width='50.34' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='141.33' y='139.49' width='94.53' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='141.33' y='179.81' width='5.74' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='141.33' y='172.80' width='10.86' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='141.33' y='165.79' width='31.98' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='141.33' y='206.11' width='1.03' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='141.33' y='199.10' width='1.73' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='141.33' y='192.08' width='2.35' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='141.33' y='127.22' width='181.54' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='141.33' y='120.21' width='140.90' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='141.33' y='113.19' width='122.43' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='141.33' y='100.92' width='225.02' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<rect x='141.33' y='93.91' width='210.49' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='141.33' y='86.90' width='156.76' height='7.01' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<polyline points='179.97,158.78 179.97,157.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='179.97,157.90 170.37,157.90 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='170.37,158.78 170.37,157.02 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='197.83,150.89 197.83,149.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='197.83,150.01 185.50,150.01 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='185.50,150.89 185.50,149.13 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='241.79,143.00 241.79,141.24 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='241.79,142.12 229.92,142.12 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='229.92,143.00 229.92,141.24 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='149.17,185.07 149.17,183.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='149.17,184.20 144.97,184.20 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.97,185.07 144.97,183.32 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.32,177.18 155.32,175.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='155.32,176.31 149.05,176.31 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='149.05,177.18 149.05,175.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='177.40,169.29 177.40,167.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='177.40,168.42 169.21,168.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='169.21,169.29 169.21,167.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.25,211.37 143.25,209.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='143.25,210.49 141.45,210.49 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='141.45,211.37 141.45,209.62 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.33,203.48 144.33,201.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.33,202.60 141.78,202.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='141.78,203.48 141.78,201.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.86,195.59 144.86,193.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='144.86,194.71 142.49,194.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='142.49,195.59 142.49,193.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='329.05,132.48 329.05,130.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='329.05,131.60 316.67,131.60 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='316.67,132.48 316.67,130.73 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='289.82,124.59 289.82,122.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='289.82,123.71 274.63,123.71 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='274.63,124.59 274.63,122.84 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='269.87,116.70 269.87,114.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='269.87,115.82 257.65,115.82 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='257.65,116.70 257.65,114.95 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='370.40,106.18 370.40,104.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='370.40,105.30 362.29,105.30 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='362.29,106.18 362.29,104.43 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='357.31,98.29 357.31,96.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='357.31,97.42 346.32,97.42 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='346.32,98.29 346.32,96.54 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='303.98,90.40 303.98,88.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='303.98,89.53 292.19,89.53 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<polyline points='292.19,90.40 292.19,88.65 ' style='stroke-width: 1.07; stroke: #DDDDDD; stroke-linecap: butt;' />
+<text x='181.17' y='160.59' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>14%</text>
+<text x='197.67' y='152.70' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>20%</text>
+<text x='241.85' y='144.81' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>38%</text>
+<text x='151.40' y='186.89' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>2%</text>
+<text x='156.52' y='179.00' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>4%</text>
+<text x='179.31' y='171.11' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>13%</text>
+<text x='146.69' y='213.18' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='147.39' y='205.29' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='148.01' y='197.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='10.84px' lengthAdjust='spacingAndGlyphs'>1%</text>
+<text x='328.86' y='134.29' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>73%</text>
+<text x='288.23' y='126.40' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>57%</text>
+<text x='269.76' y='118.51' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>49%</text>
+<text x='372.35' y='107.99' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>91%</text>
+<text x='357.82' y='100.10' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>85%</text>
+<text x='304.09' y='92.22' style='font-size: 7.50px;fill: #555555; font-family: "Arial";' textLength='15.00px' lengthAdjust='spacingAndGlyphs'>63%</text>
+</g>
+<g clip-path='url(#cpMC4wMHw0MzIuMDB8MC4wMHwyNjYuNzY=)'>
+<text x='136.39' y='205.47' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='65.40px' lengthAdjust='spacingAndGlyphs'>None of the above</text>
+<text x='136.39' y='174.86' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='118.33px' lengthAdjust='spacingAndGlyphs'>Evaluating for potential use at my</text>
+<text x='136.39' y='183.50' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.58px' lengthAdjust='spacingAndGlyphs'>primary job</text>
+<text x='136.39' y='152.88' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='118.78px' lengthAdjust='spacingAndGlyphs'>Education / to expand my skill set</text>
+<text x='136.39' y='126.58' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='117.87px' lengthAdjust='spacingAndGlyphs'>Personal or open-source projects</text>
+<text x='136.39' y='100.28' text-anchor='end' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='66.70px' lengthAdjust='spacingAndGlyphs'>For my primary job</text>
+<text x='141.33' y='229.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='11.56px' lengthAdjust='spacingAndGlyphs'>0%</text>
+<text x='265.32' y='229.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='16.01px' lengthAdjust='spacingAndGlyphs'>50%</text>
+<text x='389.32' y='229.05' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='20.46px' lengthAdjust='spacingAndGlyphs'>100%</text>
+<text x='283.92' y='246.52' text-anchor='middle' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='62.28px' lengthAdjust='spacingAndGlyphs'>% of respondents</text>
+<rect x='154.59' y='57.21' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #3366BB;' />
+<rect x='279.50' y='57.21' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #99DD55;' />
+<rect x='341.23' y='57.21' width='12.76' height='12.76' style='stroke-width: 1.07; stroke: none; stroke-linecap: butt; stroke-linejoin: miter; fill: #881177;' />
+<text x='172.04' y='66.46' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='102.76px' lengthAdjust='spacingAndGlyphs'>0 – 2 years of Go experience</text>
+<text x='296.95' y='66.46' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='39.59px' lengthAdjust='spacingAndGlyphs'>3 – 4 years</text>
+<text x='358.68' y='66.46' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='30.92px' lengthAdjust='spacingAndGlyphs'>5+ years</text>
+<text x='5.48' y='30.60' style='font-size: 8.00px;fill: #666666; font-family: "Arial";' textLength='73.40px' lengthAdjust='spacingAndGlyphs'>(select all that apply)</text>
+<text x='5.48' y='17.66' style='font-size: 10.00px; font-weight: bold;fill: #333333; font-family: "Arial";' textLength='332.85px' lengthAdjust='spacingAndGlyphs'>During the past month, in what types of situations have you used Go?</text>
+<text x='426.52' y='259.51' text-anchor='end' style='font-size: 8.00px;fill: #999999; font-family: "Arial";' textLength='35.82px' lengthAdjust='spacingAndGlyphs'>n =  3,796</text>
+</g>
+</svg>