{"id":15548,"date":"2015-08-29T14:23:10","date_gmt":"2015-08-29T19:23:10","guid":{"rendered":"http:\/\/bucktownbell.com\/?p=15548"},"modified":"2015-08-29T14:23:10","modified_gmt":"2015-08-29T19:23:10","slug":"interfaces-last-longer-than-code","status":"publish","type":"post","link":"http:\/\/bucktownbell.com\/?p=15548","title":{"rendered":"Interfaces last longer than code"},"content":{"rendered":"<blockquote><p>How do you recognize a good API? It&#8217;s tough, but one thing is sure, a good interface allows easy swapping of components. If it doesn&#8217;t allow easy swapping of components, it&#8217;s not a good interface.<\/p><\/blockquote>\n<p>Source: <em><a href=\"http:\/\/slashdot.org\/journal\/2329829\/9---systemd-interfaces-last-longer-than-code\">9 &#8211; systemD: Interfaces last longer than code &#8211; Slashdot<\/a><\/em><\/p>\n<blockquote><p>Throughout systemd there is a lack of understanding of proper interfaces. Making the GUI depend on a particular init system is a particularly obvious example of poor design, but the code was written from a &#8216;code first&#8217; perspective rather than an &#8216;interface first&#8217; perspective.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>How do you recognize a good API? It&#8217;s tough, but one thing is sure, a good interface allows easy swapping of components. If it doesn&#8217;t allow easy swapping of components, it&#8217;s not a good interface. Source: 9 &#8211; systemD: Interfaces &hellip; <a href=\"http:\/\/bucktownbell.com\/?p=15548\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[287],"tags":[173,684,1324,1015],"class_list":["post-15548","post","type-post","status-publish","format-standard","hentry","category-interfaces","tag-api","tag-software-architecture","tag-systemd","tag-unix"],"_links":{"self":[{"href":"http:\/\/bucktownbell.com\/index.php?rest_route=\/wp\/v2\/posts\/15548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/bucktownbell.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/bucktownbell.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/bucktownbell.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/bucktownbell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15548"}],"version-history":[{"count":1,"href":"http:\/\/bucktownbell.com\/index.php?rest_route=\/wp\/v2\/posts\/15548\/revisions"}],"predecessor-version":[{"id":15549,"href":"http:\/\/bucktownbell.com\/index.php?rest_route=\/wp\/v2\/posts\/15548\/revisions\/15549"}],"wp:attachment":[{"href":"http:\/\/bucktownbell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/bucktownbell.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15548"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/bucktownbell.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}