====== 2020-11-18 - code dive 2020 notes ====== ...and the [[https://codedive.pl|code::dive]] is now officially over. this year was different -- due to [[wp>covid-19]] it was fully remote, with presentations being streamed over a youtube ([[https://www.youtube.com/watch?v=SUnaA-HYshY|stage 1]] and [[https://www.youtube.com/watch?v=fVbtzxk4Gjo|stage 2]]). additionally there was a [[https://app.slack.com|slack channel]] for discussions. since the recording were pre-made, speakers were constantly available on Slack to discuss topics from the talk and do Q&A as the talk progressed, which worked out great. :) what i am personally missing is the afterparty! :) due to obvious reasons it could not have taken place "the usual way". i think a [[wp>WebRTC]] conference with cameras and beers would be a next great thing here, though! :D anyway -- let's hope the next year we will just be able to see each other at the venue and on the afterparty, in person. :) ===== notes from talks ===== just some (more or less) random thoughts and notes, taken down during the talks. [[http://codedive.pl/speaker/felix-petriconi|Felix Petriconi]] gave a nice talk on [[http://codedive.pl/2020/concurrent-code-test-it-how|concurrent code testing]]. it triggered a very nice discussion on the slack, too. during [[http://codedive.pl/speaker/maciej-norberciak|Maciek's Norberciak]] talk on [[http://codedive.pl/2020/embedded-systems-101|embedded systems]] (great intro, btw!) during slack discussion [[https://www.embedded.com/wp-content/uploads/2019/11/EETimes_Embedded_2019_Embedded_Markets_Study.pdf|EE Times embedded 2019 market study]] was linked. it's nearly 100 pages of graphs and plots i highly recommend you to have a look into, if you're interested in the embedded field (btw: talk also addressed a common misconceptions on what does "embedded system" mean -- thank you Maciek for that! :)). some notes i find interesting in the report are: * 79% of embedded projects are C (56%) or C++ (23%). * C++ moved from 22% in 2017 to 23% in 2019. * next year, more new projects are expected to be done in C++. * around 2/3 of the microprocessor selection criteria weight is not the chip itself or a vendor, but its ecosystem (toolchain, support, etc.). * [[wp>FPGA]]s' vendors were rated very low when it comes to "best ecosystem" ranking (i assume it was normalized to usage group). i hope it will change as more open source FPGA environments show up. * in Americas and EMEA system-level tools are selected mostly by engineers; in APAC mostly by managers. cultural thing, apparently. i found a mention on [[wp>LoRa]] -- a Long Range (up to 10km in rullar area) 300kbps, wireless communication protocol, i completely forgot about. while i do not really need it atm, i think it's a great finding to keep in mind, since ready modules on pinheaders are available for this, starting at 7 EUR price range, which is just great! :D similarly [[wp>Bluetooth mesh networking]] is (finally) there and can be used. modules available. might be a nice thing for a p2p sensory network project. noted down. another Q&A session of [[http://codedive.pl/2020/effective-code-review|effective code review]] session by [[http://codedive.pl/speaker/karol-przybylski|Karol Przybylski]] resulted in a link to a [[http://codedive.pl/speaker/karol-przybylski|podcast about code review]]. according to microsoft research only (?) about 15% of the remarks are about code defects/bugs and about 50% are on maintenance. rest is mostly learning experience -- which is great yet often underestimated benefit of a code review process -- spreading knowledge across the team. i also linked [[https://www.youtube.com/watch?v=j055VZN8Xys|Sean Carroll's Mindscape podcast episode on mistakes, justification and cognitive dissonance]] -- after listening to that one you'll be surprised how much of what we do is driven by our brain's need to maintain consistent model of the world. this year [[http://codedive.pl/speaker/kamil-witecki|Kamil Witecki]] shared his experiences on [[http://codedive.pl/2020/sw-compatibility-plan-it-or-face-eventual-consequences|need for planned software compatibility]]. again it triggered interesting Q&A parallel to the talk, on slack. generally you want to plan for both backward and forward compatibility. it never works fine by accident, neither you shall be saved by a framework. it always require lots of though and engineering to make it fly. CyberSec is another interesting dimention here as it often conflicts with backward compatibility -- in this world dropping a legacy crypto algo (thus potentially braking some client's) can actually be THE feature. there was also a [[http://codedive.pl/2020/experience-from-feature-toggling-platform-implementation|talk on feature toggling]] by [[http://codedive.pl/speaker/filip-olszewski|Filip Olszewski]] and [[http://codedive.pl/speaker/piotr-pietron|Piotr Pietron]]. FT is a great feature, that is somehow rarely seen outside of banking industry (see: [[wp>Close of Business|COB]]-dating). an [[https://martinfowler.com/articles/feature-toggles.html|introduction to feature toggles]] (aka: feature flags) on Martin Fowler's page, too. last but not least -- make sure you're not doing manual deployments, as it can be a real [[https://dougseven.com/2014/04/17/knightmare-a-devops-cautionary-tale/|knightmare and companies can get bankrupt]].