{"id":7789,"date":"2013-09-06T12:04:19","date_gmt":"2013-09-06T16:04:19","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=7789"},"modified":"2021-05-28T21:01:38","modified_gmt":"2021-05-29T01:01:38","slug":"rewriting-a-large-production-system-in-go","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2013\/09\/06\/rewriting-a-large-production-system-in-go\/","title":{"rendered":"Rewriting a Large Production System in Go"},"content":{"rendered":"<p><a href=\"http:\/\/matt-welsh.blogspot.com.au\/2013\/08\/rewriting-large-production-system-in-go.html\">Matt Welsh<\/a>:<\/p>\n<blockquote cite=\"http:\/\/matt-welsh.blogspot.com.au\/2013\/08\/rewriting-large-production-system-in-go.html\"><p>My whole attitude changed when <a href=\"http:\/\/www.michaelpiatek.com\/\">Michael Piatek<\/a> (one of the star engineers in the group) sent me an initial cut at the core system rewrite in Go, the result of less than a week&rsquo;s work. Unlike the original C++ based system, <b>I could actually read the code<\/b>, even though I didn&rsquo;t know Go (yet). The #1 benefit we get from Go is the lightweight concurrency provided by <a href=\"http:\/\/golang.org\/doc\/effective_go.html#goroutines\">goroutines<\/a>. Instead of a messy chain of dozens of asynchronous callbacks spread over tens of source files, the core logic of the system fits in a couple hundred lines of code, all in the same file. You just read it from top to bottom, and it makes sense.<\/p><\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Matt Welsh: My whole attitude changed when Michael Piatek (one of the star engineers in the group) sent me an initial cut at the core system rewrite in Go, the result of less than a week&rsquo;s work. Unlike the original C++ based system, I could actually read the code, even though I didn&rsquo;t know Go [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2021-05-29T01:01:41Z","apple_news_api_id":"17f6b258-84bb-4ec2-92d9-3d902a6b31e8","apple_news_api_modified_at":"2021-05-29T01:01:41Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AF_ayWIS7TsKS2T2QKmsx6A","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[846,51,71,2074],"class_list":["post-7789","post","type-post","status-publish","format-standard","hentry","category-technology","tag-go-language","tag-google","tag-programming","tag-software-rewrite"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/7789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=7789"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/7789\/revisions"}],"predecessor-version":[{"id":10393,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/7789\/revisions\/10393"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=7789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=7789"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=7789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}