{"id":1703,"date":"2016-05-24T14:09:30","date_gmt":"2016-05-24T13:09:30","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=1703"},"modified":"2018-07-31T13:02:19","modified_gmt":"2018-07-31T12:02:19","slug":"i-t-a-k-e-2016","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/","title":{"rendered":"I T.A.K.E. 2016"},"content":{"rendered":"<p>Last week I attended the <a href=\"http:\/\/itakeunconf.com\">I T.A.K.E. unconference<\/a> in Bucharest. This <a href=\"https:\/\/en.wikipedia.org\/wiki\/Unconference\">unconference<\/a> is about software development, and has tracks such as code quality, DevOps, <a href=\"http:\/\/manifesto.softwarecraftsmanship.org\/\">craftsmanship<\/a>, microservices and leadership. In this post I share my overall impressions as well as the notes I took during the uncoference.<\/p>\n<p><strong>Conference impression<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1735\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/itake\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg\" data-orig-size=\"207,85\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"itake\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg\" class=\"alignright size-full wp-image-1735\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg\" alt=\"itake\" width=\"207\" height=\"85\" \/>This was my first attendance of I T.A.K.E, and I had not researched in high detail what the setup would look like, so I did not really know what to expect. What surprised me is that most of the unconference is actually pretty much a regular conference. For the majority of the two days, there where several tracks in parallel, with talks on various topics. The unconference part is limited to two hours each day during which there is an open space.<\/p>\n<p>Overall I enjoyed the conference and learned some interesting new things. Some talks were a bit underwhelming quality wise, with speakers not properly using the microphone, code on slides in such a quantity that no one can read it, and speakers looking at their slides the whole time and not connecting to the audience. The parts I enjoyed most were the open space, conversations during coffee breaks, and a little pair programming. I liked I T.A.K.E more than the recent <a href=\"http:\/\/beta.craft-conf.com\/\">CraftConf<\/a>, though less than <a href=\"http:\/\/socrates-conference.de\/\">SoCraTes<\/a>, which perhaps is a high standard to set.<\/p>\n<p><strong>Keynote: Scaling Agile<\/strong><\/p>\n<p>Day one started with a keynote by James Shore (who you might know from <a href=\"http:\/\/www.letscodejavascript.com\/\">Let\u2019s Code: Test-Driven JavaScript<\/a>) on how to apply <a href=\"http:\/\/agilemanifesto.org\/\">agile<\/a> methods when growing beyond a single team.<\/p>\n<p>The first half of the talk focused on how to divide work amongst developers, be it between multiple teams, or within a team using &#8220;lanes&#8221;. The main point that was made is that one wants to minimize dependencies between groups of developers (so people don&#8217;t get blocked by things outside of their control), and therefore the split should happen along feature boundaries, not within features themselves. This of course builds on the premise that the whole team picks up a story, and not some subset or even individuals.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1705\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/scalingagile\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/ScalingAgile.jpeg\" data-orig-size=\"1024,655\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ScalingAgile\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/ScalingAgile.jpeg\" class=\"alignnone size-full wp-image-1705\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/ScalingAgile.jpeg\" alt=\"ScalingAgile\" width=\"1024\" height=\"655\" \/><\/p>\n<p>A point that caught my interest is that while collective ownership of code within teams is desired, sharing responsibility between teams is more problematic. The reason for this being that supposedly people will not clean up after themselves enough, as it&#8217;s not their code, and rather resort to finger-pointing to the other team(s). As James eloquently put it:<\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"en\">\n<p dir=\"ltr\" lang=\"en\">&#8220;Human nature is to form tribes and throw poo at each other.&#8221; <a href=\"https:\/\/twitter.com\/jamesshore\">@jamesshore<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/itakeunconf?src=hash\">#itakeunconf<\/a><\/p>\n<p>\u2014 Alastair Smith (@alastairs) <a href=\"https:\/\/twitter.com\/alastairs\/status\/733199484310695936\">May 19, 2016<\/a><\/p><\/blockquote>\n<p>My TL;DR for this talk is basically: low coupling, high cohesion \ud83d\ude42<\/p>\n<p>Edit: you can now <a href=\"https:\/\/www.youtube.com\/watch?v=VOMKAa_tmQ0\">view the recording of the talk<\/a>. Sound is dodgy, but OK if you turn up the volume.<\/p>\n<p><strong>Mutation Testing to the rescue of your Tests<\/strong><\/p>\n<p>During this talk, one of the first things the speaker said is that the only goal of tests is to make sure there are no bugs in production. This very much goes against my point of view, as I think the primary value is that they allow refactoring with confidence, without which code quality suffers greatly. Additionally, tests provide plenty of other advantages, such as documenting what the system does, and forcing you to pay a minimal amount of attention to certain aspects of software design.<\/p>\n<p>The speaker continued to ask about who uses test coverage, and had <a href=\"https:\/\/twitter.com\/unclebobmartin\/status\/55966620509667328\">a quote from Uncle Bob<\/a> on needing 100% test coverage. After another few minutes of build up to the inevitable denunciation of chasing test coverage as being a good idea, I left to go find a more interesting talk.<\/p>\n<p>Afterwards during one of the coffee breaks I talked with some people that had joined the talk 10 minutes or so after it started and had actually found it interesting. Apparently the speaker got to the actual topic of the talk; <a href=\"https:\/\/en.wikipedia.org\/wiki\/Mutation_testing\">mutation testing<\/a>, and presented it as a superior metric. I did not know about mutation testing before and recommend you have a look at the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Mutation_testing\">Wikipedia page<\/a> about it if you do not know what it is. It automates an approximation of what you do in trying to determine which tests are valuable to write. As with code coverage, one should not focus on the metric though, and merely use it as the tool that it is.<\/p>\n<p>Interesting related posts:<\/p>\n<ul>\n<li><a href=\"http:\/\/qualitycoding.org\/type-safety\/\">Type Safety, 100% Coverage, and Uncle Bob: Who\u2019s Right?<\/a><\/li>\n<li><a href=\"http:\/\/martinfowler.com\/bliki\/TestCoverage.html\">Test Coverage Bliki<\/a><\/li>\n<\/ul>\n<p><strong>Raising The Bar<\/strong><\/p>\n<p>A talk on <a href=\"http:\/\/manifesto.softwarecraftsmanship.org\/\">Software Craftsmanship<\/a> that made me add <a href=\"https:\/\/www.goodreads.com\/book\/show\/17925612-the-coding-dojo-handbook\">The Coding Dojo Handbook<\/a> to <a href=\"https:\/\/www.goodreads.com\/review\/list\/16821921?order=d&amp;shelf=to-read&amp;sort=avg_rating\">my to-read list<\/a>.<\/p>\n<p><strong>Metrics For Good Developers<\/strong><\/p>\n<ul>\n<li>Metrics are for developers, not for management.<\/li>\n<li>Developers should be able to choose the metrics.<\/li>\n<li>Metrics to get a real measure of quality, not just &#8220;it feels like we&#8217;re doing well&#8221;<\/li>\n<li>Measuring the number of production defects.<\/li>\n<li>Make metrics visible.<\/li>\n<li>Sometimes it is good to have metrics for individuals and not the whole team.<\/li>\n<li>They can be a feedback mechanism for self improvement.<\/li>\n<\/ul>\n<p><strong dir=\"ltr\" lang=\"en\">Open Space<\/strong><\/p>\n<p>The <a href=\"http:\/\/itakeunconf.com\/technical-open-space\/\">Open Space<\/a> is a two hour slot which puts the &#8220;un&#8221; in unconference. It starts by having a market place, where people propose sessions on topics of their interest. These sessions are typically highly interactive, in the form of self-organized discussions.<\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"en\">\n<p dir=\"ltr\" lang=\"en\">Open space agenda is ready to be setup <a href=\"https:\/\/twitter.com\/itakeunconf\">@itakeunconf<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/itakeunconf?src=hash\">#itakeunconf<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/openspace?src=hash\">#openspace<\/a> <a href=\"https:\/\/t.co\/8LfE7WpMf1\">pic.twitter.com\/8LfE7WpMf1<\/a><\/p>\n<p>\u2014 Vlad Salagean (@vlad_salagean) <a href=\"https:\/\/twitter.com\/vlad_salagean\/status\/733257492197715968\">May 19, 2016<\/a><\/p><\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"en\"><p>Open space ready to take off! <a href=\"https:\/\/twitter.com\/itakeunconf\">@itakeunconf<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/itakeunconf?src=hash\">#itakeunconf<\/a> Open agenda is ready <a href=\"https:\/\/twitter.com\/claudia_rosu\">@claudia_rosu<\/a> <a href=\"https:\/\/t.co\/yegKxNMpWr\">pic.twitter.com\/yegKxNMpWr<\/a><\/p>\n<p>\u2014 Vlad Salagean (@vlad_salagean) <a href=\"https:\/\/twitter.com\/vlad_salagean\/status\/733258610344628225\">May 19, 2016<\/a><\/p><\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><\/p>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><strong dir=\"ltr\" lang=\"en\">Open Space: Leadership<\/strong><em><br \/>\n<\/em><\/p>\n<p>This session started by people writing down things they associate with good leadership, and then discussing those points.<\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"en\"><p>Awesome input on leadership skills at the <a href=\"https:\/\/twitter.com\/hashtag\/itakeunconf?src=hash\">#itakeunconf<\/a> open space. Thanks everyone! <a href=\"https:\/\/t.co\/xdmRPBLJ8U\">pic.twitter.com\/xdmRPBLJ8U<\/a><\/p>\n<p>\u2014 Lady Retweetsalot (@Singsalad) <a href=\"https:\/\/twitter.com\/Singsalad\/status\/733269838362202112\">May 19, 2016<\/a><\/p><\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><\/p>\n<p>Two books where mentioned, the first being <a href=\"https:\/\/en.wikipedia.org\/wiki\/The_Five_Dysfunctions_of_a_Team\">The Five Dysfunctions of a Team<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1720\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/teamdysfunctions\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/teamdysfunctions.jpg\" data-orig-size=\"1365,1024\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/teamdysfunctions.jpg\" class=\"alignnone wp-image-1720\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/teamdysfunctions.jpg\" width=\"600\" height=\"450\" \/><\/p>\n<p>The second book was <a href=\"https:\/\/www.goodreads.com\/book\/show\/43630.Leadership_and_the_One_Minute_Manager\">Leadership and the One Minute Manager: Increasing Effectiveness Through Situational Leadership<\/a>.<\/p>\n<p><strong>Open Space: Maintenance work: bad and good<\/strong><em><br \/>\n<\/em><\/p>\n<p>This session was about finding reasons to dislike doing maintenance work, and then finding out how to look at it more positively. My input here was that a lot of the negative things, such as having to deal with crufty legacy code, can also be positive, in that they provide technical challenges absent in greenfield projects, and that you can refactor a mess into something nice.<\/p>\n<p>I did not stay in this session until the very end, and unfortunately cannot find any pictures of the whiteboard.<\/p>\n<p><strong>Open Space: Coaching dojo<\/strong><em><br \/>\n<\/em><\/p>\n<p>I had misheard what this was about and thought the topic was &#8220;<a href=\"http:\/\/codingdojo.org\/\">Coding Dojo<\/a>&#8220;. Instead we did a coaching exercise focused on asking open ended questions.<\/p>\n<p><strong>Are your Mocks Mocking at You?<\/strong><\/p>\n<p>This session was spread over two time slots, and I only attended the first part, as during the second one I had some pair programming scheduled. One of the first things covered in this talk was an explanation of the different types of Test Doubles, much like in my recent post <a href=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/13\/5-ways-to-write-better-mocks\/\">5 ways to write better mocks<\/a>. The speakers also covered the differences between inside-out and outside-in TDD, and ended (the first time slot) with JavaScript peculiarities.<\/p>\n<p><strong>Never Develop Alone : always with a partner<\/strong><\/p>\n<p>In this talk, the speaker, who has been doing full-time pair programming for several years, outlined the primary benefits provided by, and challenges encountered during, pair programming.<\/p>\n<blockquote class=\"twitter-tweet\" data-lang=\"en\">\n<p dir=\"ltr\" lang=\"en\">pair programming is not a &#8220;go faster&#8221; strategy, it is a &#8220;waste less&#8221; strategy (which often results in going faster)<\/p>\n<p>\u2014 Kent Beck (@KentBeck) <a href=\"https:\/\/twitter.com\/KentBeck\/status\/565921158025842688\">February 12, 2015<\/a><\/p><\/blockquote>\n<p><script src=\"\/\/platform.twitter.com\/widgets.js\" async=\"\" charset=\"utf-8\"><\/script><\/p>\n<p>Benefits: more focus \/ less distractions, more confidence, rapid feedback, knowledge sharing, fun, helps on-boarding, continuous improvement, less blaming.<\/p>\n<p>Challenges: synchronization \/ communication, keyboard hogging<\/p>\n<p>Do:<\/p>\n<ul>\n<li><a href=\"http:\/\/coderetreat.org\/facilitating\/activities\/ping-pong\">Ping-Pong TDD<\/a><\/li>\n<li>Time boxing<\/li>\n<li>Multiple keyboards<\/li>\n<li>Pay attention and remind your pair if they don&#8217;t<\/li>\n<li>Share your thoughts<\/li>\n<li>Be open to new ideas and accept feedback<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/Mob_programming\">Mob programming<\/a><\/li>\n<\/ul>\n<p><strong>Live coding: Easier To Change Code<\/strong><\/p>\n<p>In this session the presenter walked us through some typical legacy code, and then demonstrated how one can start refactoring (relatively) safely. The code made me think of the <a href=\"https:\/\/github.com\/emilybache\/GildedRose-Refactoring-Kata\/blob\/master\/README.md\">Gilded Rose kata<\/a>, though it was more elaborate\/interesting. The presenter started by adding a safety net in the form of <a href=\"http:\/\/blog.codeclimate.com\/blog\/2014\/02\/20\/gold-master-testing\/\">golden master tests<\/a> and then proceeded with incremental refactoring.<\/p>\n<p><strong>Is management dead?<img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1721\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/abraham-thug\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/abraham-thug.png\" data-orig-size=\"500,500\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/abraham-thug.png\" class=\"alignright wp-image-1721\" title=\"WMDE management\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/abraham-thug.png\" alt=\"WMDE management\" width=\"250\" height=\"250\" \/><\/strong><\/p>\n<p>Uncle Abraham certainly is most of the time! (Though when he is not, he approves of the below list.)<\/p>\n<ul>\n<li>Many books on Agile, few on Agile management<\/li>\n<li>Most common reasons for failure of\u00a0Agile projects are management related<\/li>\n<li>The <a href=\"http:\/\/www.agilemanifesto.org\/principles.html\">Agile Manifesto<\/a> includes two management principles<\/li>\n<li>Intrinsic motivation via <a href=\"https:\/\/www.goodreads.com\/book\/show\/6452796-drive\">Autonomy, Mastery, Purpose<\/a> and Connection<\/li>\n<li>Self-organization: fully engaged, making own choices, taking responsibility<\/li>\n<li>Needed for self-organization: skills, T-shaped, team players, collocation, long-lived team<\/li>\n<li>Amplify and dampen voices<\/li>\n<li>Lean more towards delegation to foster self-organization (<a href=\"https:\/\/medium.com\/@jurgenappelo\/the-7-levels-of-delegation-672ec2a48103#.t4jv0yufp\">levels of delegation<\/a>)<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1722\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/delegationlevels\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/delegationlevels.jpg\" data-orig-size=\"597,191\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"delegationlevels\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/delegationlevels.jpg\" class=\"alignnone wp-image-1722 size-full\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/delegationlevels.jpg\" alt=\"delegationlevels\" width=\"597\" height=\"191\" \/><\/p>\n<p><strong>Visualizing codebases<\/strong><\/p>\n<p><a href=\"http:\/\/abstrusegoose.com\/432\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1724\" data-permalink=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/you_down_wit_opc-yeah_you_know_me\/\" data-orig-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/you_down_wit_OPC-yeah_you_know_me.png\" data-orig-size=\"744,612\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/you_down_wit_OPC-yeah_you_know_me.png\" class=\"alignnone wp-image-1724 size-full\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/you_down_wit_OPC-yeah_you_know_me.png\" width=\"744\" height=\"612\" \/><\/a><\/p>\n<p>This talk was about how to extract and visualize metrics from codebases. I was hoping it would include various code quality related metrics, but alas, the talk only included file level details and simple line counts.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last week I attended the I T.A.K.E. unconference in Bucharest. This unconference is about software development, and has tracks such&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3,7,8],"tags":[330,331,328,358,417,419,423,414,421,197,215,365,316,420,257,418],"class_list":["post-1703","post","type-post","status-publish","format-standard","hentry","category-events","category-programming","category-software","tag-agile","tag-architecture","tag-clean-code","tag-conference","tag-itake","tag-leadership","tag-metrics","tag-mocks","tag-pair-programming","tag-planet-wikimedia","tag-refactoring","tag-software-craftsmanship","tag-software-design","tag-teams","tag-testing","tag-unconference"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>I T.A.K.E. 2016 - Blog of Jeroen De Dauw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"I T.A.K.E. 2016 - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"Last week I attended the I T.A.K.E. unconference in Bucharest. This unconference is about software development, and has tracks such&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-24T13:09:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-07-31T12:02:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"I T.A.K.E. 2016\",\"datePublished\":\"2016-05-24T13:09:30+00:00\",\"dateModified\":\"2018-07-31T12:02:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/\"},\"wordCount\":1500,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"image\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/05\\\/itake.jpg\",\"keywords\":[\"Agile\",\"Architecture\",\"Clean Code\",\"Conference\",\"itake\",\"Leadership\",\"Metrics\",\"Mocks\",\"Pair Programming\",\"Planet Wikimedia\",\"Refactoring\",\"Software Craftsmanship\",\"Software design\",\"Teams\",\"Testing\",\"unconference\"],\"articleSection\":[\"Events\",\"Programming\",\"Software\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/\",\"name\":\"I T.A.K.E. 2016 - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/05\\\/itake.jpg\",\"datePublished\":\"2016-05-24T13:09:30+00:00\",\"dateModified\":\"2018-07-31T12:02:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/05\\\/itake.jpg\",\"contentUrl\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/05\\\/itake.jpg\",\"width\":207,\"height\":85},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/2016\\\/05\\\/24\\\/i-t-a-k-e-2016\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"I T.A.K.E. 2016\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.entropywins.wtf\\\/blog\\\/#\\\/schema\\\/person\\\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jeroendedauw\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"I T.A.K.E. 2016 - Blog of Jeroen De Dauw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/","og_locale":"en_US","og_type":"article","og_title":"I T.A.K.E. 2016 - Blog of Jeroen De Dauw","og_description":"Last week I attended the I T.A.K.E. unconference in Bucharest. This unconference is about software development, and has tracks such&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2016-05-24T13:09:30+00:00","article_modified_time":"2018-07-31T12:02:19+00:00","og_image":[{"url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg","type":"","width":"","height":""}],"author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"I T.A.K.E. 2016","datePublished":"2016-05-24T13:09:30+00:00","dateModified":"2018-07-31T12:02:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/"},"wordCount":1500,"commentCount":0,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg","keywords":["Agile","Architecture","Clean Code","Conference","itake","Leadership","Metrics","Mocks","Pair Programming","Planet Wikimedia","Refactoring","Software Craftsmanship","Software design","Teams","Testing","unconference"],"articleSection":["Events","Programming","Software"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/","url":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/","name":"I T.A.K.E. 2016 - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/#primaryimage"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg","datePublished":"2016-05-24T13:09:30+00:00","dateModified":"2018-07-31T12:02:19+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/#primaryimage","url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg","contentUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/05\/itake.jpg","width":207,"height":85},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2016\/05\/24\/i-t-a-k-e-2016\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"I T.A.K.E. 2016"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-rt","jetpack-related-posts":[{"id":1761,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/06\/01\/php-unconference-europe-2016\/","url_meta":{"origin":1703,"position":0},"title":"PHP Unconference Europe 2016","author":"Jeroen","date":"2016-06-01","format":false,"excerpt":"Last week I attended the 2016 edition of the PHP Unconference Europe, taking place in Palma De Mallorca. This post contains my notes from various conference sessions. Be warned, some of them are quite rough. Overall impression Before getting to the notes, I'd like to explain the setup of the\u2026","rel":"","context":"In &quot;Events&quot;","block_context":{"text":"Events","link":"https:\/\/www.entropywins.wtf\/blog\/category\/events\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1436,"url":"https:\/\/www.entropywins.wtf\/blog\/2015\/06\/08\/socrates-uk-2015\/","url_meta":{"origin":1703,"position":1},"title":"SoCraTes UK 2015","author":"Jeroen","date":"2015-06-08","format":false,"excerpt":"Last week I attended SoCraTes UK 2015, the UK edition of the International Software Craftsmanship and Testing Gathering. This blog post gives a short introduction to the conference, and holds a readable version of my notes from various sessions. What is SoCraTes SoCraTes is an unconference for open-minded software people\u2026","rel":"","context":"In &quot;Events&quot;","block_context":{"text":"Events","link":"https:\/\/www.entropywins.wtf\/blog\/category\/events\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2015\/06\/socrates-uk-reflections.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2015\/06\/socrates-uk-reflections.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2015\/06\/socrates-uk-reflections.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2015\/06\/socrates-uk-reflections.jpeg?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1392,"url":"https:\/\/www.entropywins.wtf\/blog\/2014\/08\/11\/socrates-2014\/","url_meta":{"origin":1703,"position":2},"title":"SoCraTes 2014","author":"Jeroen","date":"2014-08-11","format":false,"excerpt":"Last week I attended SoCraTes 2014, the 4th International Software Craftsmanship and Testing Conference in Germany. Since this was the first time I went there, I did not really know what to expect, and was slightly apprehensive. Turns out there was no need for that, the conference was the most\u2026","rel":"","context":"In &quot;Events&quot;","block_context":{"text":"Events","link":"https:\/\/www.entropywins.wtf\/blog\/category\/events\/"},"img":{"alt_text":"socrates","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2014\/08\/socrates.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1496,"url":"https:\/\/www.entropywins.wtf\/blog\/2015\/12\/10\/only-smart-people-can-learn-to-code\/","url_meta":{"origin":1703,"position":3},"title":"Only smart people can learn to code","author":"Jeroen","date":"2015-12-10","format":false,"excerpt":"I've just read the interesting blog post Learn To Code, It\u2019s Harder Than You Think. This post outlines two mistakes the author thinks are made in the general thinking on where the difficulties lie in making more people become professional programmers. Firstly that it requires wealth or special privilege to\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1553,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/24\/the-liskov-substitution-principle\/","url_meta":{"origin":1703,"position":4},"title":"The Liskov Substitution Principle","author":"Jeroen","date":"2016-01-24","format":false,"excerpt":"I have a number of web-based presentations online on the software craftsmanship topic. You can find these on the software craftsmanship page of my website. I've just written an abstract for a presentation on the so-called Liskov Substitution Principle. This is a presentation I've done a number of times and\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2016\/01\/lsp0.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2219,"url":"https:\/\/www.entropywins.wtf\/blog\/2018\/05\/09\/guidelines-for-new-software-projects\/","url_meta":{"origin":1703,"position":5},"title":"Guidelines for New Software Projects","author":"Jeroen","date":"2018-05-09","format":false,"excerpt":"In this blog post I share the Guidelines for New Software Projects that we use at Wikimedia Deutschland. I wrote down these guidelines recently after a third-party that was contracted by Wikimedia Deutschland delivered software that was problematic in several ways. The department contracting this third-party was not the software\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=1703"}],"version-history":[{"count":33,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1703\/revisions"}],"predecessor-version":[{"id":2260,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/1703\/revisions\/2260"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=1703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=1703"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=1703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}