{"guid":"d1365d24-368c-5672-90de-0ed58f367f23","title":"Standardizing error codes: Introducing Serum, and the Serum Analyzer for Golang","subtitle":null,"slug":"gpn20-56-standardizing-error-codes-introducing-serum-and-the-serum-analyzer-for-golang","link":"https://cfp.gulas.ch/gpn20/talk/ZJJKTG/","description":"Serum is standard for serializable, easy-to-observe, cross-language, error handling.  It's meant to be a \"just enough\" standard: canonically defined in JSON, easy to adopt, and easy to extend -- and just enough structure to support static analysis.   Serum is meant to work within languages that have a \"errors are values\" philosophy, but can work with exception-oriented languages too.  \n\nAlong with the Serum specifications, we also introduce go-serum-analzyer, a static analysis tool which can be used in golang programs to analyze their error handling, and enforce contracts and documentation about error codes that functions may yield.","original_language":"eng","persons":["Eric Myhre"],"tags":["gpn20","56","2022","Science","gulaschprogrammiernacht","gpn","entropia"],"view_count":96,"promoted":false,"date":"2022-05-21T19:15:00.000+02:00","release_date":"2022-05-22T00:00:00.000+02:00","updated_at":"2025-12-27T12:15:07.777+01:00","length":1640,"duration":1640,"thumb_url":"https://static.media.ccc.de/media/events/gpn/gpn20/56-d1365d24-368c-5672-90de-0ed58f367f23.jpg","poster_url":"https://static.media.ccc.de/media/events/gpn/gpn20/56-d1365d24-368c-5672-90de-0ed58f367f23_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/gpn/gpn20/56-d1365d24-368c-5672-90de-0ed58f367f23.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/gpn/gpn20/56-d1365d24-368c-5672-90de-0ed58f367f23.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/gpn20-56-standardizing-error-codes-introducing-serum-and-the-serum-analyzer-for-golang","url":"https://api.media.ccc.de/public/events/d1365d24-368c-5672-90de-0ed58f367f23","conference_title":"Gulaschprogrammiernacht 20","conference_url":"https://api.media.ccc.de/public/conferences/gpn20","related":[],"recordings":[{"size":221,"length":1640,"mime_type":"video/webm","language":"eng","filename":"gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-05-22T08:32:41.828+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/webm-hd/gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/59364","event_url":"https://api.media.ccc.de/public/events/d1365d24-368c-5672-90de-0ed58f367f23","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":80,"length":1640,"mime_type":"video/webm","language":"eng","filename":"gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-05-22T08:23:05.997+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/webm-sd/gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/59362","event_url":"https://api.media.ccc.de/public/events/d1365d24-368c-5672-90de-0ed58f367f23","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":14,"length":1632,"mime_type":"audio/opus","language":"eng","filename":"gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2022-05-22T07:58:03.439+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/opus/gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_opus.opus","url":"https://api.media.ccc.de/public/recordings/59361","event_url":"https://api.media.ccc.de/public/events/d1365d24-368c-5672-90de-0ed58f367f23","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":24,"length":1632,"mime_type":"audio/mpeg","language":"eng","filename":"gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2022-05-22T07:56:34.669+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/mp3/gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/59360","event_url":"https://api.media.ccc.de/public/events/d1365d24-368c-5672-90de-0ed58f367f23","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":57,"length":1640,"mime_type":"video/mp4","language":"eng","filename":"gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-05-22T02:05:05.316+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/h264-sd/gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_sd.mp4","url":"https://api.media.ccc.de/public/recordings/59314","event_url":"https://api.media.ccc.de/public/events/d1365d24-368c-5672-90de-0ed58f367f23","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"},{"size":215,"length":1640,"mime_type":"video/mp4","language":"eng","filename":"gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-05-22T01:39:06.279+02:00","recording_url":"https://cdn.media.ccc.de/events/gpn/gpn20/h264-hd/gpn20-56-eng-Standardizing_error_codes_Introducing_Serum_and_the_Serum_Analyzer_for_Golang_hd.mp4","url":"https://api.media.ccc.de/public/recordings/59303","event_url":"https://api.media.ccc.de/public/events/d1365d24-368c-5672-90de-0ed58f367f23","conference_url":"https://api.media.ccc.de/public/conferences/gpn20"}]}