{"guid":"b2a88c8f-d804-4e98-a2bc-a22c60be4a4d","title":"Servant vs. Mu: A Type-Level Battle","subtitle":null,"slug":"bob2021-servant-vs-mu-a-type-level-battle-serrano","link":"https://bobkonf.de/2021/serrano.html","description":"Servant is a well-known library in the Haskell ecosystem to develop REST services. Mu is much newer, and tries to fill the gap of gRPC and GraphQL services. Both libraries have in common their use of type level techniques to describe the structure of the services. This talk dives into that design corner, and explores the different decisions taken by both teams.","original_language":"eng","persons":["Alejandro Serrano"],"tags":["bob2021","104","2021","Talk","BOB","BOBKonferenz"],"view_count":52,"promoted":false,"date":"2021-02-26T15:05:00.000+01:00","release_date":"2021-06-19T00:00:00.000+02:00","updated_at":"2026-03-06T11:30:07.687+01:00","length":1985,"duration":1985,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2021/104-b2a88c8f-d804-4e98-a2bc-a22c60be4a4d.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2021/104-b2a88c8f-d804-4e98-a2bc-a22c60be4a4d_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2021/104-b2a88c8f-d804-4e98-a2bc-a22c60be4a4d.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2021/104-b2a88c8f-d804-4e98-a2bc-a22c60be4a4d.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob2021-servant-vs-mu-a-type-level-battle-serrano","url":"https://media.ccc.de/public/events/b2a88c8f-d804-4e98-a2bc-a22c60be4a4d","conference_title":"BOB Konferenz 2021","conference_url":"https://media.ccc.de/public/conferences/bobkonf2021","related":[],"recordings":[{"size":124,"length":1985,"mime_type":"video/webm","language":"eng","filename":"bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2021-06-19T22:33:56.211+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/webm-sd/bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_webm-sd.webm","url":"https://media.ccc.de/public/recordings/54165","event_url":"https://media.ccc.de/public/events/b2a88c8f-d804-4e98-a2bc-a22c60be4a4d","conference_url":"https://media.ccc.de/public/conferences/bobkonf2021"},{"size":67,"length":1985,"mime_type":"video/mp4","language":"eng","filename":"bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2021-06-19T22:33:36.559+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/h264-sd/bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_sd.mp4","url":"https://media.ccc.de/public/recordings/54164","event_url":"https://media.ccc.de/public/events/b2a88c8f-d804-4e98-a2bc-a22c60be4a4d","conference_url":"https://media.ccc.de/public/conferences/bobkonf2021"},{"size":302,"length":1985,"mime_type":"video/webm","language":"eng","filename":"bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2021-06-19T22:33:30.166+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/webm-hd/bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_webm-hd.webm","url":"https://media.ccc.de/public/recordings/54163","event_url":"https://media.ccc.de/public/events/b2a88c8f-d804-4e98-a2bc-a22c60be4a4d","conference_url":"https://media.ccc.de/public/conferences/bobkonf2021"},{"size":30,"length":1985,"mime_type":"audio/mpeg","language":"eng","filename":"bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2021-06-19T22:28:24.523+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/mp3/bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_mp3.mp3","url":"https://media.ccc.de/public/recordings/54156","event_url":"https://media.ccc.de/public/events/b2a88c8f-d804-4e98-a2bc-a22c60be4a4d","conference_url":"https://media.ccc.de/public/conferences/bobkonf2021"},{"size":18,"length":1985,"mime_type":"audio/opus","language":"eng","filename":"bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2021-06-19T22:28:08.858+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/opus/bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_opus.opus","url":"https://media.ccc.de/public/recordings/54155","event_url":"https://media.ccc.de/public/events/b2a88c8f-d804-4e98-a2bc-a22c60be4a4d","conference_url":"https://media.ccc.de/public/conferences/bobkonf2021"},{"size":161,"length":1985,"mime_type":"video/mp4","language":"eng","filename":"bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2021-06-19T22:28:06.394+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/h264-hd/bob2021-104-eng-Servant_vs_Mu_A_Type-Level_Battle_hd.mp4","url":"https://media.ccc.de/public/recordings/54154","event_url":"https://media.ccc.de/public/events/b2a88c8f-d804-4e98-a2bc-a22c60be4a4d","conference_url":"https://media.ccc.de/public/conferences/bobkonf2021"}]}