{
    "componentChunkName": "component---src-templates-tag-page-js",
    "path": "/tag/code",
    "result": {"data":{"site":{"siteMetadata":{"title":"Solid Abstractions","siteUrl":"https://solidabstractions.com","twitterId":291334023,"author":{"fullName":"Julien Hartmann","profileHtml":"I am an open-source de­vel­op­er, for­mer IT con­sul­tant with a pas­sion for new tech­nol­o­gies. I be­lieve the role of an en­gi­neer is to em­pow­er peo­ple, by as­sem­bling sim­ple, re­fined de­signs.\n","links":[{"url":"https://github.com/spectras/","name":"github","title":"GitHub"},{"url":"https://stackoverflow.com/users/3212865/spectras","name":"stackoverflow","title":"StackOverflow"},{"url":"https://www.linkedin.com/in/julienhartmann/","name":"linkedin","title":"LinkedIn"}],"profilePicNode":{"original":{"src":"/static/profile-pic-301a9cbe7b572c3e7910c9717d2b3bcd.jpg"}}}}},"tag":{"name":"code","slug":"/tag/code"},"posts":{"edges":[{"post":{"excerpt":"After the theory, a quick review of common runtime error handling techniques.\nMost ecosystems focus on one, but knowing the others might come in handy in some situations.","fields":{"slug":"/2019/error-handling-techniques"},"frontmatter":{"title":"Error Handling part 3: Techniques","date":"2021-04-03T00:00:00.000Z","formattedDate":"03 April, 2021"},"tags":[{"name":"code","slug":"/tag/code"}]}},{"post":{"excerpt":"A C++ smart unique_ptr uses exactly the same amount of memory as a\nregular pointer, and has zero runtime cost. That is what we love about C++. But what if I need a custom deleter for my pointer? Can I get it at zero cost too?","fields":{"slug":"/2019/zero-cost-unique_ptr"},"frontmatter":{"title":"Zero-cost unique_ptr deleters","date":"2019-03-05T00:00:00.000Z","formattedDate":"05 March, 2019"},"tags":[{"name":"code","slug":"/tag/code"},{"name":"c++","slug":"/tag/c"}]}},{"post":{"excerpt":"We cover the basics of correct error handling, so it is no longer an afterthought.\nIn previous post, we left some crucial questions unanswered, such as\n“What exactly makes an error recoverable?”. In this post, we dive into levels of abstraction and what they mean for error handling.","fields":{"slug":"/2019/error-handling-levels"},"frontmatter":{"title":"Error Handling part 2: Abstractions","date":"2019-02-28T00:00:00.000Z","formattedDate":"28 February, 2019"},"tags":[{"name":"code","slug":"/tag/code"}]}},{"post":{"excerpt":"","fields":{"slug":"/2019/error-handling-introduction"},"frontmatter":{"title":"Error Handling part 1: Introduction","date":"2019-02-19T00:00:00.000Z","formattedDate":"19 February, 2019"},"tags":[{"name":"code","slug":"/tag/code"}]}},{"post":{"excerpt":"In the previous post we designed our testing infrastructure to work with aiohttp.\nWe will now put that testing infrastructure through a baptism by fire.","fields":{"slug":"/2018/testing-aiohttp-client-part-2"},"frontmatter":{"title":"Unit Testing aiohttp Clients - part 2","date":"2018-11-30T00:00:00.000Z","formattedDate":"30 November, 2018"},"tags":[{"name":"code","slug":"/tag/code"},{"name":"testing","slug":"/tag/testing"}]}},{"post":{"excerpt":"Asynchronous code is the new paradigm in python those last years.\nTesting it, though, is significantly harder.\nLet's see how to test asynchronous HTTP client code written with aiohttp.","fields":{"slug":"/2018/testing-aiohttp-client"},"frontmatter":{"title":"Unit Testing aiohttp Clients","date":"2018-11-25T00:00:00.000Z","formattedDate":"25 November, 2018"},"tags":[{"name":"code","slug":"/tag/code"},{"name":"testing","slug":"/tag/testing"}]}},{"post":{"excerpt":"Initial design is done. It is now time to start laying the basis of the project.\nAt this point, there are a few technical choices we can no longer defer.","fields":{"slug":"/2018/cryptomate/groundwork"},"frontmatter":{"title":"Laying the Groundwork","date":"2018-09-24T00:00:00.000Z","formattedDate":"24 September, 2018"},"tags":[{"name":"code","slug":"/tag/code"}]}},{"post":{"excerpt":"We hack together a couple of modules, do quick manual testing. Eventually, the code remains a\nhackish mess rotting away which may be fine but a little unsatisfactory.","fields":{"slug":"/2018/starting-python-project"},"frontmatter":{"title":"Starting a Python Project","date":"2018-09-14T00:00:00.000Z","formattedDate":"14 September, 2018"},"tags":[{"name":"code","slug":"/tag/code"}]}}]},"tags":{"edges":[{"tag":{"name":"architecture","slug":"/tag/architecture"}},{"tag":{"name":"c++","slug":"/tag/c"}},{"tag":{"name":"code","slug":"/tag/code"}},{"tag":{"name":"pattern","slug":"/tag/pattern"}},{"tag":{"name":"ports","slug":"/tag/ports"}},{"tag":{"name":"testing","slug":"/tag/testing"}}]}},"pageContext":{"slug":"/tag/code"}},
    "staticQueryHashes": ["1733002695","4006707078"]}