    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: C++ On Sea 2019 Trip Report</title>
        <link>https://members.accu.org/index.php/journals/2630</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 31, #1 - March 2019</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c396/">311</a>
                    (6)
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;C++ On Sea 2019 Trip Report</h1>
<p><strong>Author:</strong>&nbsp;Bob Schmidt</p>
<p>
<strong>Date:</strong> 04 March 2019 15:57:00 +00:00 or Mon, 04 March 2019 15:57:00 +00:00</p>
<p><strong>Summary:</strong>&nbsp;Arne Mertz and Frances Buontempo share their experiences of a new C++ conference.</p>
<p><strong>Body:</strong>&nbsp;<h2>Arne Mertz</h2>

<p>From February 3rd through February 6th I have been in Folkestone, UK, to visit the first <em>C++ On Sea</em> conference. There must be something in the water on that island that enables them to organize fantastic conferences like <em>ACCUConf</em> <a href="#[1]">[1]</a> and, since this year, <em>C++ On Sea</em> <a href="#[2]">[2]</a>.</p>

<p><em>C++ On Sea</em> is definitely the best conference I have ever been to, and hereâ€™s a little glimpse why I think so.</p>

<p>To put my experience in context, here is what my main reasons are for going to conferences:</p>

<p><img src="/content/images/journals/cvu31-1/Mertz/Mertz-01.png" /></p>

<p>I arrived in Folkestone on Sunday evening. It is in Kent, UK, directly where the channel tunnel emerges. Leas Cliff Hall, where the conference took place, is situated directly on the cliffs and has a great view that sometimes lets you see the French coast. If itâ€™s not windy, rainy and foggy as it was most of the time during the conference.</p>

<p>Conferences donâ€™t start with the opening speech or first keynote. They start on the day before, when people meet to chat and socialize. In this case, I had dinner with one of several groups of people from the #include&lt;C++&gt; community <a href="#[3]">[3]</a>.</p>

<h3>Monday, February 4th</h3>

<p>On Monday morning, the actual conference programme started with an opening speech by the conference organizer Phil Nash.</p>

<p>C++ was not only in the conference name, but also in the details: The opener was titled â€œHello, Worldâ€, there was a â€œmain()â€ plenary hall and session rooms titled â€œconst westâ€, â€œeast constâ€, and â€œunsignedâ€. The latter was the smallest of the session rooms and had an overflow problem a few times, but luckily that did not lead to undefined behavior, because C++ conference attendees seem to be very nice people in general.</p>

<p>The list of C++ puns goes on, as you can see from the floor plan <a href="#[4]">[4]</a> and schedule <a href="#[5]">[5]</a>.</p>

<p>The first keynote of the conference was â€˜Oh, the humanity!â€™ by Kate Gregory <a href="#[6]">[6]</a>. She showed how the clichÃ© of the logical, unemotional programmer is wrong. We can see lots of emotions in the code we write, and we better check whether itâ€™s the emotions we want to show towards our fellow programmers.</p>

<p>One of the takeaways from the talk was that single letter variable names are bad and a sign of laziness. I myself am guilty of this, and throughout the conference, lots of speakers commented on their own slides along the lines of â€œyeah, since Kateâ€™s keynote I know I should fix thoseâ€.</p>

<p>After the keynote, normal sessions started in four tracks. The first talk I went to was â€˜Postmodern immutable data structuresâ€™ by Juan Pedro Bolivar Puente <a href="#[7]">[7]</a>. Juanpe showed some great examples of very efficient, partially copy-on-write, vector-like data structures.</p>

<p>The next talk I visited was by Adi Shavit and is called â€˜What I Talk about When I Talk about Cross Platform Developmentâ€™ <a href="#[8]">[8]</a>. Adi showed how the â€˜Salami tacticâ€™ enables us to write as little platform-specific code as possible by building thin layers of platform-independent C and C++ APIs around a pure C++ domain core.</p>

<p>Subsequently, I went to the <code>main()</code> track to see Jason Turner talk about â€˜Practical Performance Practices Revisitedâ€™ where he showed how seemingly innocent changes can enable the compiler to optimize our code. The talk contained a fair amount of â€˜life-godboltingâ€™ and showed how optimizer technology is advancing: Jason himself sometimes seemed to be surprised that newer versions of Clang reduced his examples to a no-op or a constant return statement.</p>

<p>After that followed the most amazing talk I have ever seen at a conference. The keynote â€˜Deconstructing Privilegeâ€™ by Patricia Aas <a href="#[9]">[9]</a> does not seem to have anything to do with C++, but it has to do a lot with the people who use it.</p>

<p>In her talk, Patricia shows how even though we might have hardship in our lives, being spared discrimination due to race, gender, sexual preferences and/or other factors can give us a head start in life. If you look again at the list in my Tweet above, this talk is a great example of #2: I have never before seen a large room filled with so many people in complete stunned silence.</p>
<p>After the keynote, there was a session of 11 interesting, enlightening, and entertaining lightning talks. The day concluded with a gala dinner where speakers and attendants met to eat and chat.</p>

<h3>Tuesday, February 5th</h3>

<p>After a short kick off, day two of the programme started with another round of sessions. The first one I visited was â€˜Programming with Contracts in C++20â€™ by BjÃ¶rn Fahller <a href="#[10]">[10]</a>. Contracts let the programmer define preconditions and postconditions for their functions that can, depending on compilation flags, be checked at run time.</p>

<p>While this sounds like a great thing to have, the current state of the standard draft looks rather disappointing to me. This is also due to some properties of the language that implementers cannot always work around. However, while I am writing this, a standing committee meeting takes place at Kona, where no less than seven papers regarding contracts are scheduled for discussion.</p>

<p>The second talk was quite something different in many regards. Hana DusÃ­kovÃ¡ talked about â€˜Compile Time Regular Expressionsâ€™, but not in person: Due to a cancelled flight, she had to give the presentation remotely. And, of course, Murphyâ€™s law provided some technical difficulties so she had to rely on Matt Godbolt as an avatar to handle her slides and, lacking a working camera, tell her about reactions from the audience.</p>

<p>This manner of talk delivery was quite an experience and had an element of fun, at least for the audience. But the talk itself was just amazing. Hana presented the intricacies of parsing regular expressions at compile time in a casual manner that makes constexpr template wizardry seem like a stroll in the park. In addition, there even was a working regex parser written in JavaScript <em>in her slides</em> (that Matt had to type the input for) to demonstrate the tree her library builds at compile time. Quite a few minds were blown by this talk.</p>

<p>Then it was time to give my own talk about â€˜Learning (and Teaching) Modern C++ â€“ Challenges and Resourcesâ€™ <a href="#[11]">[11]</a>. In the presentation, I talked about how the quick evolution of our language makes it hard for teachers and authors to keep their knowledge and teaching materials up to date, and about the benefits and drawbacks of the different resources available to us.</p>

<p>As the next talk to watch I chose â€˜Sailing from 4 to 7 Cs: just keep swimmingâ€™ by John Shearer <a href="#[12]">[12]</a>, because it mentioned one of my blog posts <a href="#[13]">[13]</a> in the abstract and the talk: John presented how his team started out with the â€˜4Câ€™ development environment (Clang, CMake, CLion, and Conan) and added three more â€˜Câ€™s and quite a few other letters to their tool stack.</p>

<p>The last keynote of the conference was by Matt Godbolt: â€˜What Everyone Should Know About How Amazing Compilers Areâ€™ <a href="#[14]">[14]</a>, in which he showed us how good optimizers are at guessing what developers want to do. In a series of live compiler explorer examples, he presented how modern optimizers can sometimes melt multiple lines of code into a single assembly instruction.</p>

<p>The key takeaway from this keynote: Trust your optimizer, donâ€™t manually optimize in â€˜smartâ€™ ways without checking the output, because you might actually inhibit the optimizer from recognizing common patterns.</p>

<h3>Conclusion</h3>

<p>For me, the conference was a blast. I met a lot of people I had known from other conferences, quite a few that I had only met online before at #include&lt;C++&gt;, and made a handful of acquaintances I would not have made otherwise. Full marks for #1 of my conference checklist.</p>

<p>There were also quite a few talks that were fun and/or engaging to attend, for me and others. A check on #2 of the list, and also for #3, as I find it always rewarding to share thoughts and experiences with a room full of people, even though the prospect is extremely scary every time I submit a talk proposal.</p>

<p>If you have not been there, there are two things you should do: Try to get a ticket for the next instalment (hopefully 2020) and watch the videos on YouTube <a href="#[15]">[15]</a>. (At the time of writing, new videos are being uploaded every day.)</p>

<h2>Frances Buontempo</h2>

<p>Phil Nash organised a new conference, CppOnSea <a href="#[2]">[2]</a>, this year. I was lucky enough to be accepted to speak, so attended the two conference days, but not the workshops.</p>

<p>There were three tracks, along with a beginners track, run by Tristan Brindle, who organises the C++ London Uni, which is a great resource for people who want to learn C++ <a href="#[16]">[16]</a>. Iâ€™ll do a brief write-up of the talks I attended.</p>

<p>The opening keynote was by Kate Gregory, called â€˜Oh The Humanity!â€™ She made us think about the words we use. For example, Foo and Bar trace back to military usage, hinting at people putting their lives on the line. Perhaps we need better names for our variable and functions. We are not fighting a war. What about one letter variable names? â€™k. Nuff said. What about <code>errorMessage</code>? If you call the <code>helpMessage</code> instead, how does that affect your thinking?</p>

<p>Kate was also talking about trying to keep the code base friendly, to increase confidence (Figure 1).</p>

<table class="sidebartable">
    <tr>
        <td><img src="/content/images/journals/cvu31-1/Buontempo/Buontempo-01.jpg" /></td>
    </tr>
    <tr>
        <td class="title">Figure 1</td>
    </tr>
</table>

<p>I went to see Kevlin Henney next. I have no idea how to summarise this. He covered so many thing. What does structured programming really mean? By looking back to various uses and abuses of <code>goto</code>, by highlighting the structure in various code snippets, he was emphasising some styles make the structure and intent easier to see.</p>

<p>I saw Andreas Fertig next. Inspired by Matthew CompilerExplorerâ€™s Godbolt <a href="#[17]">[17]</a>, he has created <a href="https://cppinsights.io/">https://cppinsights.io/</a>. Try it out. It unwraps some of the syntactic sugar, so you can see what the compiler has created for, say, a range-based <code>for</code> loop. This can remind you where you might be creating temporaries or have references instead of copies or vice versa, without dropping down into assembly. Do you know the full horror of what might be going on inside a Singleton? (See Figure 2.)</p>

<table class="sidebartable">
    <tr>
        <td><img src="/content/images/journals/cvu31-1/Buontempo/Buontempo-02.jpg" /></td>
    </tr>
    <tr>
        <td class="title">Figure 2</td>
    </tr>
</table>

<p>This led to an aside about statics and the double checked locking pattern. His headline point was the spirit of C++ is â€˜you pay only for what you useâ€™, so be clear about what you are using. The point isnâ€™t that the new language features are expensive. They are often cheaper than old skool ways of going things. Just try to be clear about whatâ€™s going on under the hood. Play with the insights tool.</p>
<p>Next up, I saw Barney Dellar, talking about strong types in C++. His slides are probably clear enough by themselves, since they have thorough speaker notes <a href="#[18]">[18]</a>. My main note to myself says â€˜MIB: mishap investigation boardâ€™, which amused me. He was talking about the trouble that can happen if you have doubles, or similar, for all your types, like mass and force:</p>

<pre class="programlisting">
  double CalculateForce(double mass);</pre>
  
<p>Itâ€™s really easy to use the wrong units or send things in the wrong order. By creating different types, known as strong types, you can get the compiler to stop you making mistakes. Use a template with tags, you can write clear code avoiding these mistakes.</p>

<p>Next up was a plenary talk by Patricia Aas on â€˜Deconstructing Privilegeâ€™. Sheâ€™s given the talk before, so youâ€™ll be able to find the slides <a href="#[9]">[9]</a> or previous versions on YouTube. Her take is that privilege is about things that havenâ€™t happened to you. Many people get defensive if you say they have been privileged, but this way of framing the issue gives a great perspective. Loads of people turned up and listened. Maybe surprising for a serious geek C++ conference, but the presence of <a href="https://www.includecpp.org/">https://www.includecpp.org/</a> ensured there were many like minded people around. If you are privileged, listen and try to help. And be careful asking intrusive questions if you meet someone different to you.</p>

<p>After quite a heavy, but great talk, I was â€˜in chargeâ€™ of the lightning talks. Eleven people got slots. More volunteered, but there wasnâ€™t time for every one:</p>

<ul>
    <li>Simon Brand â€“ C++ Catastrophes: A Poem.</li>
    <li>Odin Holmes â€“ volatile none of the things</li>
    <li>Paul Williams â€“ std::pmr</li>
    <li>Heiko Frederik Bloch â€“ the finer points of parameter packs</li>
    <li>Barney Dellar â€“ imposter syndrome or mob programming</li>
    <li>Matt Godbolt â€“ â€˜words of powerâ€™</li>
    <li>Kevlin Henney â€“ list</li>
    <li>Neils Dekker â€“ noexcept considered harmful???</li>
    <li>Patricia Aas â€“ C++ is like JavaScript</li>
    <li>Louise Brown â€“ The Research Software Engineer: A Growing Career Path in Academia</li>
    <li>Denis Yaroshevskiy â€“ A good usecase for if constexpr</li>
</ul>

<p>My heartfelt thanks to Jim from <a href="http://digital-medium.co.uk">http://digital-medium.co.uk</a> and Kevlin â€˜obi wan kenobiâ€™ Henney for helping me switch between PowerPoint, PowerPoint in presenter mode and the PDFs, and getting them to show on the main screen and my laptop. No body knows what was happening with the screen on the stage for the speaker. If you ever attend a conference, do volunteer to give a lightning talk. Sorry to the people we didnâ€™t have time for.</p>

<p>Day one done. Day two begun. First up, for me, after missing my own talk pitch, was Nico Josuttis. Donâ€™t forget his leanpub C++17 book <a href="#[19]">[19]</a>. Itâ€™s still growing. He talked about a variety of C++17 features. The standout point for me was the mess you can get into with initialisation. Heâ€™s using <code>{}</code> everywhere, near enough. Like</p>

<pre class="programlisting">
  for (int i{0}; i&lt;n; ++i)
  {
  }</pre>
  
<p>Adding an equals can end up doing horrible things.</p>

<p>Much as I wanted to go see Simon Brand, Vittorio Romeo and Hana Dusikova (with slide progression by Matt Godbolt) next, I had a talk to do myself. I managed to diffuse my way out of a paper bag, while reminding us why Câ€™s rand is terrible, how useful property based testing can be, using some very simple mathematics: adding up and multiplying. This was based on a chapter of my book, and you can download the source code from that page if you want, even if you donâ€™t buy the book <a href="#[20]">[20]</a>. I used the SFML to draw the diffusing green blobs. Sorry for not putting up a list of resources near the end.</p>

<p>I attempted to go to Guy Davidsonâ€™s â€˜Linear algebraâ€™ talk next, but the room was packed and I was a bit late. I heard great things about this. In particular, how important it is to design a good interface if you are making libraries.</p>

<p>My final choice was Clare Macraeâ€™s â€˜Quickly testing legacy codeâ€™ <a href="#[21]">[21]</a>. This was my unexpected hidden gem of the conference. She talked about approval testing <a href="#[22]">[22]</a>. This compares a generated file to a gold standard file and bolts straight into googletest or Catch. Itâ€™s available for several other languages. It generates the file on your first run, allowing you to get almost anything, provided it writes out a file you can compare, under test. Which then means you can start writing unit tests, if you need to change the code a bit. Changing legacy code to get it under test, without a safety hardness is dangerous. This keeps you safer. Her world involves Qt and chemical molecules visualisations. These can be saved as pngs, so she can check she hasnâ€™t broken anything. She showed how you can bolt in custom comparators, so it doesnâ€™t complain about different generated dates and does a closer than the human eye could notice RGB difference. Her code samples from the talk are available <a href="#[23]">[23]</a>. Iâ€™ve not seen this as a formal framework before. Her slides were really clear and she explained what she was up to step by step. Subsequently twitter has been talking about this a fair bit, including adding support for Python3.</p>

<p>Matt â€˜Compiler Explorerâ€™ Godbolt gave the closing keynote. Apparently, the first person Phil Nash has met whose first conference talk was a keynote. He also had some AV issues (Figure 3).</p>

<table class="sidebartable">
    <tr>
        <td><img src="/content/images/journals/cvu31-1/Buontempo/Buontempo-03.jpg" /></td>
    </tr>
    <tr>
        <td class="title">Figure 3</td>
    </tr>
</table>

<p>If youâ€™ve not encountered the compiler explorer before, try it out <a href="#[17]">[17]</a>. You can chose which compiler you want to point your C++ code at and see what it generates. You need a little knowledge of the â€˜poetryâ€™ it generates. More lines doesnâ€™t mean slower code. His tl;dr; message was many people spread rumours about whatâ€™s slow, for example virtual functions. Look and see what your compiler actually does, rather than stating things that were true years ago. Speculative de-virtualization is a thing. Your compiler might decide you only really have one likely virtual function youâ€™ll call so checks the address and does not then have the â€˜overheadâ€™ it used to years ago. He also demonstrated what happened to various bit counting algos â€“ most got immediately squashed down to one instruction, no matter how clever they looked. How many times have you been asked to count bits at interview. Spin up Godbolt and explore.This really shows you need to keep up to date with your knowledge. Something that was true ten years ago may not longer hold with new compiler versions. Measure, explore, think.</p>

<p>There was a lovely supportive atmosphere and a variety of speakers. People were brave enough to ask questions, and only a few people were showing off they thought they knew something the speaker didnâ€™t.</p>

<p>Thanks to Phil for arranging this conference.</p>


<h2>References</h2>

<p class="bibliomixed"><a id="[1]"></a>[1]  Arne Mertz (2018) â€˜ACCUConf 2018 Trip Reportâ€™, published on <em>Simplify C++</em> on 25 April 2018: <a href="https://arne-mertz.de/2018/04/accuconf-2018-trip-report/">https://arne-mertz.de/2018/04/accuconf-2018-trip-report/</a></p>

<p class="bibliomixed"><a id="[2]"></a>[2]  <em>C++ On Sea</em>: <a href="https://cpponsea.uk/">https://cpponsea.uk/</a></p>

<p class="bibliomixed"><a id="[3]"></a>[3]  #include &lt;C++&gt;: <a href="https://www.includecpp.org/">https://www.includecpp.org/</a></p>

<p class="bibliomixed"><a id="[4]"></a>[4]  <em>C++ On Sea</em> 2019 floorplan: <a href="https://cpponsea.uk/rooms/">https://cpponsea.uk/rooms/</a></p>

<p class="bibliomixed"><a id="[5]"></a>[5]  <em>C++ On Sea</em> 2019 schedule: <a href="https://cpponsea.uk/schedule/">https://cpponsea.uk/schedule/</a></p>

<p class="bibliomixed"><a id="[6]"></a>[6]  Kate Gregory (2019) â€˜Oh The Humanity!â€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/watch?v=SzoquBerhUc">https://www.youtube.com/watch?v=SzoquBerhUc</a></p>

<p class="bibliomixed"><a id="[7]"></a>[7]  Juan Pedro Bolivar Puente (2019) â€˜Postmodern Immutable Data Structuresâ€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/watch?v=y_m0ce1rzRI">https://www.youtube.com/watch?v=y_m0ce1rzRI</a></p>

<p class="bibliomixed"><a id="[8]"></a>[8]  Adi Shavit (2019) â€˜What I Talk About When I Talk About Cross Platform Developmentâ€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/watch?v=dU3IgHrAmFA">https://www.youtube.com/watch?v=dU3IgHrAmFA</a></p>

<p class="bibliomixed"><a id="[9]"></a>[9]  Patricia Aas (2019) â€˜Deconstructing Privilegeâ€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/watch?v=ZYvyO27uMCU">https://www.youtube.com/watch?v=ZYvyO27uMCU</a></p>

<p class="bibliomixed"><a id="[10]"></a>[10]    BjÃ¶rn Fahller (2019) â€˜Programming with Contracts in C++20â€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/watch?v=Dzk1frUXq10">https://www.youtube.com/watch?v=Dzk1frUXq10</a></p>

<p class="bibliomixed"><a id="[11]"></a>[11]    Arne Mertz (2019) â€˜Learning and Teaching Modern C++: Challenges and Resourcesâ€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/watch?v=fKCwDg0vd18">https://www.youtube.com/watch?v=fKCwDg0vd18</a></p>

<p class="bibliomixed"><a id="[12]"></a>[12]    John Shearer (2019) â€˜Sailing from 4 to 7 Csâ€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/watch?v=1Eh-uEzpikw">https://www.youtube.com/watch?v=1Eh-uEzpikw</a></p>

<p class="bibliomixed"><a id="[13]"></a>[13]    Arne Mertz (2016) â€˜The â€˜4Câ€™ Dev Environmentâ€™, published on <em>Simplify C++</em> on 10 August 2016: <a href="https://arne-mertz.de/2016/08/the-4c-development-environment/">https://arne-mertz.de/2016/08/the-4c-development-environment/</a></p>

<p class="bibliomixed"><a id="[14]"></a>[14]    Matt Godbolt (2019) â€˜What Everyone Should Know About How Amazing Compliers Areâ€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/watch?v=w0sz5WbS5AM">https://www.youtube.com/watch?v=w0sz5WbS5AM</a></p>

<p class="bibliomixed"><a id="[15]"></a>[15]    Presentations from <em>C++ On Sea</em> 2019: <a href="https://www.youtube.com/channel/UCAczr0j6ZuiVaiGFZ4qxApw/videos">https://www.youtube.com/channel/UCAczr0j6ZuiVaiGFZ4qxApw/videos</a></p>

<p class="bibliomixed"><a id="[16]"></a>[16]    Start Learning C++: <a href="https://www.cpplondonuni.com/">https://www.cpplondonuni.com/</a></p>

<p class="bibliomixed"><a id="[17]"></a>[17]    Godbolt compiler explorer: <a href="https://godbolt.org/">https://godbolt.org/</a></p>

<p class="bibliomixed"><a id="[18]"></a>[18]    Barney Dellar (2019) â€˜Strong Types in C++â€™, presented at <em>C++ On Sea</em> 2019: <a href="https://docs.google.com/presentation/d/17WRh90KWWqobRX1miUFCnRwaJJXxqvlcu-t3DvFVHOA/edit#slide=id.p">https://docs.google.com/presentation/d/17WRh90KWWqobRX1miUFCnRwaJJXxqvlcu-t3DvFVHOA/edit#slide=id.p</a></p>

<p class="bibliomixed"><a id="[19]"></a>[19]    Nicolai Josuttis (2017) <em>C++17: The Complete Guide</em>, available from http://www.cppstd17.com/</p>

<p class="bibliomixed"><a id="[20]"></a>[20]    Frances Buontempo (2019) Genetic Algorithms and Machine Learning for Programmers, available from <a href="https://pragprog.com/book/fbmach/genetic-algorithms-and-machine-learning-for-programmers">https://pragprog.com/book/fbmach/genetic-algorithms-and-machine-learning-for-programmers</a></p>

<p class="bibliomixed"><a id="[21]"></a>[21]    Clare Macrae (2019) â€˜Quickly Testing Legacy Codeâ€™, presented at <em>C++ On Sea</em> 2019: <a href="https://www.slideshare.net/ClareMacrae/quickly-testing-legacy-code">https://www.slideshare.net/ClareMacrae/quickly-testing-legacy-code</a></p>

<p class="bibliomixed"><a id="[22]"></a>[22]    Approval testing: <a href="https://github.com/approvals">https://github.com/approvals</a></p>

<p class="bibliomixed"><a id="[23]"></a>[23]    Clare Macrae (2019), code samples from â€˜Quickly Testing Legacy Codeâ€™, presented at <em>C++ On Sea</em> 2019: <a href="https://github.com/claremacrae/cpponsea2019">https://github.com/claremacrae/cpponsea2019</a></p>

<p class="bio"><span class="author"><b>Arne Mertz</b></span>  Arne Mertz is a C++ programmer living in Hamburg. He runs a blog called â€˜Simplify C++â€™ at <a href="https://arne-mertz.de/">https://arne-mertz.de/</a>.</p>

<p class="bio"><span class="author"><b>Frances Buontempo</b></span>  Frances has a BA in Maths + Philosophy, an MSc in Pure Maths and a PhD technically in Chemical Engineering, but mainly programming and learning about AI and data mining. She learnt to program by reading the manual for her Dadâ€™s BBC model B machine.</p>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
