PeetRonics' bloghttp://peetronics.com/2021-05-27T16:00:00+01:00All can be true!The 'joy' of finding bugs2021-05-27T16:00:00+01:002021-05-27T16:00:00+01:00Peet Michielsentag:peetronics.com,2021-05-27:/TheJoyOfFindingBugs.html<p>Why do testers 'enjoy' finding bugs, or do they?</p><p><img alt="drawing of an entomologist capturing a butterfly with a net" src="http://peetronics.com/images/Joy_of_finding_bugs.jpg" width="80%"></p>
<p><em>"Testers like to find bugs"</em>. In that respect it sounds we've got a lot in common with entomologists.<br>
The remit of a tester goes way beyond finding and studying bugs. One of which is <em>preventing</em> bugs. That probably might be one of the remits of an entomologist too?
something to ponder over another time... </p>
<h2><a href="https://club.ministryoftesting.com/t/bloggers-club-may-2021-fun-with-bugs/49996">Fun with bugs</a></h2>
<p><em>"Testers like to find bugs"</em>; or do they ... ?<br>
What is the <strong>fun</strong> of finding bugs? I've often asked myself that question. Pointing out to others the things that are not right. Always being the one in the team to draw the attention away from the good areas of a system or piece of software. </p>
<p>Well, that's one way of looking at it. Instead we could approach it from a different angle. Finding bugs should be a rewarding thing: </p>
<ul>
<li>It helps improving the quality of the product </li>
<li>It helps saving money by limiting the amount of bugs to be fixed in production </li>
<li>It helps your team to avoid introducing bugs </li>
</ul>
<p>So, if "<em>finding bugs is fun</em>", We then can imply that "<em>not finding bugs is not fun</em>" (appologies for the double negative).<br>
There must be some truth in that. Imagine if you're hired as a QA, and you don't find any bugs, that must be quite demoralising. Various emotions and reactions that can come into play:</p>
<ul>
<li><em>Self doubt</em> - "Am I doing my job good enough?" </li>
<li><em>Superfluous</em> - "The quality of this product seems so good, I'm not needed here." </li>
<li><em>Wasting time</em> - "I put in all this effort with no tangible result." </li>
</ul>
<p>Therefore, to get some job satisfaction, one must find bugs, right? And the more bugs you find, the more gratification you get as a reward? To a certain extent, definitely. But what if you find too many bugs? So many, that you get serious doubts about the level of expertise of your team members. Also that can be demoralising</p>
<h2>Tester's satisfaction curve</h2>
<p><img alt="Graph of the tester's satisfaction curve" src="http://peetronics.com/images/tester_satisfaction_curve.jpg" width="80%"> </p>
<p>And with that I present to you the <strong><em>Tester's Satisfaction Curve</em></strong>. This is not something I came up with. A good couple of years ago someone showed this to me, and it stuck, part from the source. If someone knows, please ping me, so I can do the author justice. </p>
<p>A tester's job satisfaction can be correlated to the amount of bugs it finds. </p>
<ul>
<li>A low number of bugs results in a low satisfaction </li>
<li>With the number of bugs found increasing, so also does the tester's job satisfaction </li>
<li>The satisfaction increase slows down with even more bugs found, till it reaches an optimum </li>
<li>Then the gratification starts to drop with every additional bug found </li>
</ul>
<p>This resonates with me, and have felt this in numerous situation throughout the years. Is this something you can relate to? Let me know (<a href="https://twitter.com/peetronics">@peetronics</a>). </p>
<p>Have joy finding bugs, but with moderation ... </p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>The automation is dead; long live the automation!2021-02-27T12:00:00+00:002021-02-27T12:00:00+00:00Peet Michielsentag:peetronics.com,2021-02-27:/TheAutomationIsDead.html<p>A reflection on almost 25 years of working with (test-) automation</p><p><img alt="drawing of a robot behind a computer" src="http://peetronics.com/images/automation.jpg" width="80%"></p>
<p><strong><em>I'm not the best coder in the world… Let’s face it, I'm not even the best coder in my team</em></strong> (making a liberal interpretation of <a href="https://www.radiox.co.uk/artists/beatles/did-john-lennon-say-ringo-wasnt-even-best-drummer/">the Ringo Starr joke</a>).
I'm well aware of that, and am absolutely fine with it. Just putting this <em>confession</em> out here to set the scene for this article.<br>
For almost 25 years now I've been working with (test) automation, and during that time <a href="https://club.ministryoftesting.com/t/bloggers-club-february-2021-your-struggles-successes-with-automation/46900">I've had many struggles and successes with it</a>. Let me reflect on it. </p>
<h2>What "automation" means to me</h2>
<p>For me automation is so much more than using a tool for automated test case execution; I'm probably not the only one in the software testing profession with a similar view.<br>
Anything you can let a computer do to help you with your work I consider that as automation. For example in my first job at a bank, I wrote MS Excel formulas and macros to crunch- and process data; that's automation for me.
Using keyboard shortcuts for commonly used tasks (launching apps, advanced copy / paste, ...), <a href="http://peetronics.com/WhatIHaveLearnedToday-005.html">enhanced custom searches in the browser bar</a>; that's automation for me.
Using scripts to do various things (creating bug reports, produce verification reports, download YouTube clips and save as MP3); you guessed it, that's automation for me.<br>
Talking about automation here is in the broadest sense of the word. </p>
<h2>The struggles</h2>
<p>As said, I don't consider myself a good coder, even though I've been doing it for over 35 years now (first as a hobby on an <a href="https://en.wikipedia.org/wiki/Acorn_Electron">Acorn Electron</a>). Here are some of my automation struggles: </p>
<ul>
<li>Still I don't completely grasp the concept of <strong>object-oriented programming</strong>. Looking at all the code I've written over the years, a lot of it could have benefitted from an object oriented approach. Having that nagging feeling of <em>"this piece of code can be written much more effectively"</em>. </li>
<li>More often than not I have to <strong>Google</strong> for coding solutions. Almost feel a bit ashamed by that, feeling I'm wasting my valuable time. Functions I have used numerous times, I still looking it up on how the exact implementation is. </li>
<li>At the moment I have a preference for Python as a programming- / scripting language, but am happy to code in any other language,.... part from <strong>JavaScript and C</strong> (and all its variants). Don't know what it is with that, if I can I will avoid it. </li>
<li>And then there is my urge to <strong>refactor</strong>. In itself a very essential and important part of coding, but must admit I sometimes take it to the extreme. Meaning I spend more time on it than I should, and leaving a piece of automation in an unusable state for too long. At least I hope the technical debt is kept to manageable levels. </li>
</ul>
<h2>The successes</h2>
<p>Luckily it is not all bad news. If it was, I would have given up on automation a long time ago. And it is successes like the following that gives me joy, and wants me to keep going with it: </p>
<ul>
<li>What I like about the team of people I work with today, is the <strong>collaboration</strong> on our test automation suite. In my career I've set up numerous amounts of automation frameworks, often on my own. Now I'm part of a team where people's good ideas on automation has come together. This has resulted in a very robust framework, which forms an integral part of our delivery pipeline. </li>
<li>I love it when I can use my coding skills to knock up something <strong>quick and dirty</strong> to solve a problem. Be it using the API of a tool to extract or inject data, parsing a log file and plot performance metrics from it, write a wrapper around another piece of automation to make it more accessible. Not only is it handy for yourself, you can be of service to your colleagues. </li>
<li>I'm a <strong>curious</strong> person. In relation to automation this means that I want to know about new tools, libraries, techniques, and how they potentially can be used in my work. Which has resulted in me setting up proof of concepts, that got later adopted by the team / project / company. </li>
<li>Yes, <strong>refactoring</strong> can be a struggle, but also is a mechanism to create success. It's great to see that as a result of refactoring, a codebase becomes better maintainable and easier accessible. That will always be a big win for me. </li>
</ul>
<h2>To reflect</h2>
<p>Despite all the struggles, I will never give up on automation. The fun I have with it, and the successes I've achieved with it, far outweigh all the negative stuff around it. Working with automation gives me job satisfaction, but more importantly, with it I can add value. Despite I sometimes (have to) walk away from it, automation will always lure me back; <em>The automation is dead, long live the automation!</em> </p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>A commitment to yourself2021-01-30T13:30:00+00:002021-01-30T13:30:00+00:00Peet Michielsentag:peetronics.com,2021-01-30:/ACommitmentToYourself.html<p>On the topic of managing and achieving goals</p><p><img alt="drawing of arrows hitting a target" src="http://peetronics.com/images/goal.jpg" width="80%"></p>
<h2>Introduction</h2>
<p>When we're going to talk about <em>managing and achieving goals</em>, we can approach it from a lot of different angles.<br>
Several people from the tester's community already had a stab at it. <a href="https://club.ministryoftesting.com/t/bloggers-club-january-2021/46060"><em>Just follow this link</em></a>, and read some interesting and inspiring articles on this topic. Here you will read about my spin on it. </p>
<h2>Objectives, Goals, and challenges</h2>
<p>For me, goals are something completely different than objectives and challenges. If you put them on a scale of formality, I would rank objectives as the most formal, challanges the least formal, and goals somewhere inbetween.<br>
Objectives are the things you set and evaluate on a regular basis, discuss with your manager, and used as input for your appraisals. I see challenges mainly as a fun exercise which you do on your own or with others, with the aim to achieve something, e.g. a reward, certificate etc. Of course objectives and challenges can be a personal thing, I see those where you do have an interaction with others.<br>
I tend to treat goals as a thing for myself, something <strong><em>I</em></strong> want to achieve, where I only have to hold myself accountable. Truly <strong>a commitment to yourself</strong>.</p>
<h2>Setting and managing goals</h2>
<p>Technically you could treat anything you have- or want to do as a goal, but for the sake of this article lets not take it to that extreme. I set goals for myself for various reasons:<br>
- when I want to learn something new<br>
- when I want- or need to have something done before a certain date<br>
- when I want to extend my comfort zone<br>
- when I want to achieve something </p>
<p>I am an organised person, or at least that is what I want to believe. I have:
- a zero-inbox policy<br>
- clean (physical & computer) desktop policy<br>
- numerous digital lists, agenda items, reminders etc., following the <a href="https://gettingthingsdone.com/">Getting Things Done methodology by David Allen</a> </p>
<p>Pretty obvious that the goals I set myself end up in one of these tools. And since I use these so frequently, almost implicitly my goals get a regular review. </p>
<h2>(Not) achieving goals</h2>
<p>More often than not, I do not achieve my goals.<br>
- not in the way I orginally set them out<br>
- not in the timeframe I put on it<br>
- not at all </p>
<p>And you know what, I'm not sad about it. As said earlier, I only need to hold myself accountable for it. Even when a goal is not achieved, you will have gained a lot by working on it.<br>
- learned something <br>
- strenghtened a skill<br>
- relaxed your mind and body<br>
- got fitter</p>
<h2>Something meta to conclude</h2>
<p>I had set myself a goal a while back to blog more often. Put it on one of my lists, and blocked time in my calendar for it. Yet, I haven't written for a while. But see, here I am now, putting the last words of this post to paper. Well done Peet, goal achieved!</p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>Grab the opportunity2020-10-30T22:30:00+00:002020-10-30T22:30:00+00:00Peet Michielsentag:peetronics.com,2020-10-30:/GrabTheOpportunity.html<p>What’s the best career advice you’ve ever had?</p><p><img alt="cartoon of someone walking the career path" src="http://peetronics.com/images/grab-the-opportunity.png" width="80%"></p>
<h2>Introduction</h2>
<p>For the last few weeks I have been pondering over <a href="https://club.ministryoftesting.com/t/bloggers-club-september-october-2020-what-s-the-best-career-advice-you-ve-ever-had">this month's topic of the Ministry of Testing blogging club (<em>What’s the best career advice you’ve ever had?</em>)</a>, and wondering if I can write something meaningful about that.<br>
It was only after I went to bed one night and I couldn't immediately catch sleep, that it suddenly dawned on me the best advice I got was when I was still studying.<br>
One lecturer (can't remember who) of my studies in The Netherlands gave this little piece of wisdom: <strong>grab the opportunity</strong>.<br>
Looking back at my career so far it has been the advice I have followed and lived by a lot; often more unknowingly than not... </p>
<h2>Study</h2>
<p>As said, the advice to <em>to grab the opportunity</em> was given by a lecturer while I was <a href="https://www.avans.nl/opleidingen/opleidingzoeker/business-it--management-breda-voltijd-bachelor/introductie#">studying at the HEAO in Breda</a>.
But I can't remember who. There was another tutor however, called Ferrie Veen, and I always enjoyed his lectures. Probably because of his approach to teaching, which I really liked.<br>
One of the assignments he gave us was to compare yourself with an object and use that in a job application letter. I wrote a whole letter around a paperclip; the gist of it:</p>
<ul>
<li>Uncomplicated</li>
<li>Being flexible</li>
<li>Versatile</li>
</ul>
<p>But more on that later...</p>
<p>The last part of the study was a student placement at a company for half a year, and work on a pre-defined practical assignment.
That went quite successful for me and as a result I was offered a job at that company after my graduation.
The first opportunity on my career path I grabbed. I landed a job without having to use my paperclip application letter, yet ...</p>
<h2>Applying for my first job</h2>
<p>Even before I started that job, the company went bust and I still had to go in search for a job.
Looking back I could have seen it coming, but I was young and a bit naive (lesson learned). </p>
<p>Luck had it that, around the same time, a local bank where I lived was hiring for a role that matched my qualifications.
I immediately grabbed the opportunity to go to that bank and asked for the manager who was hiring, so I could introduce myself.
Of course I still had to write an official application, which I did. And yes, I did use the paperclip analogy.
I did get the job and I worked there for 2 1/2 years.</p>
<h2>Moving town</h2>
<p>After my then partner graduated, she got a job at a tourist office, in a completely different part of the country. This meant We had to move and I had to look for a new job.
Got rejected a few times on jobs I applied for locally, which was of course dissapointing. </p>
<p>A friend of my kept telling about his work and that they were always looking for colleagues to join their team. But that was a 2 hour commute one way.
I still applied though and was offered a job. And by coincidence at the same time I got offered a job closer to home.
After much deliberation I decided to take the offer further from home. Could have been interpreted as a stupid decision, but I never regretted it.
In the 6 1/2 years I worked there I had many opportunities to: </p>
<ul>
<li>Work on great projects for different clients in a wide variety of industries</li>
<li>Share knowledge with colleagues as a trainer</li>
<li>Get to know lots of people with whom some of them I am still in touch with</li>
</ul>
<h2>Moving abroad</h2>
<p>After our first child was born, something had to change in my work situation. I was away still a lot for work. And as a result of that, I only saw my son during the week when he was asleep.
Weighing the options, we decided to take the opportunity to settle ourselves abroad and start a Bed & Breakfast in Scotland. Something we often talked about.
As financial support it was wise to still have a steady income, so I went in search for a job. I had the luck that a software company in Aberdeen was hiring for a role that suited me perfectly.
I applied, had a telephone interview, flew out for a face to face interview, and soon after an offer was made. I willingly accepted, and so we packed our stuff and moved across the pond. </p>
<p>In that company, I started as the first tester in a team of 12 developers. Over the years, I built up a structured testing discipline and culture. In the 12 years at that company I've grabbed many opportunities to grow mysself.
By the time I left that company, a team of 15 test engineers was in place which I was in charge of. </p>
<p>Regarding my B&B adventures, I can tell many a story about that. But I will leave that for another day.</p>
<h2>Redundancy</h2>
<p>It was not my plan to leave the company yet, as there still were so much more opportunities to be grabbed.
But beacause of a organisational restructure I was made redundant. </p>
<p>I knew there weren't many job opportunities close by. So I had to look further afield for my next gig, and needed to be aware that it probably would take a bit longer to be back in fulltine work.
Then, a week into me <em>sitting</em> at home, a friend pointed out that a local whisky distillery was looking for a tour guide. Well, that was an opportunity I couldn't let pass.
I showed my interest and soon I was showing tourists around <a href="https://www.chivas.com/en-GB/visit-strathisla">Scotland's most beautiful distillery</a>, while I still kept applying for jobs. </p>
<p>Luckily it didn't take too long to be made a new offer for a job. But it meant I was working away from home again ...</p>
<h2>Current day</h2>
<p>Have been in my current job for almost 3 years now, and it already has given me lots of new opportunities:</p>
<ul>
<li>The opportunity to work on medical devices. Something I haven't done yet in my 20+ year career.</li>
<li>The opportunity to get my hands dirty again. Not being in a managerial role and doing actual testing.</li>
<li>The opportunity to work with hard- and software. A whole new dimension and things to take into consideration.</li>
<li>The opportunity to get into public speaking. A manager that encourages to submit papers for conferences.</li>
<li>The opportunity to get more involved with the testing community. A Ministry of Testing Meetup closer by.</li>
<li>The opportunity to make changes to the organisation. Bringing in 20+ years of experience.</li>
<li>The opportunity to build a Community of Practice. Finding likeminded colleagues.</li>
<li>... </li>
</ul>
<h2>In conclusion</h2>
<p>In your career, there are many things coming on your path you can't foresee, and not always have influence on.
You can steer your career a lot yourself, but sometimes you need to look for opportunities, grab them, and help that get you further. </p>
<p>lets see what's the next opportunity ...</p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>GUI test automation for Windows desktop2020-09-15T21:00:00+01:002020-09-15T21:00:00+01:00Peet Michielsentag:peetronics.com,2020-09-15:/GUITestAutomationForWindowsDesktop.html<p>A collection of resources to be used for Windows desktop test automation, and things to consider in choosing your tooling</p><p><img alt="Screenshot of a windows 3.1 desktop" src="http://peetronics.com/images/windows-desktop.png" width="80%"></p>
<h1>Introduction</h1>
<p>If you look at conference talk and workshop topics, (online) articles, tutorials, and courses, you could get the impression that most software testing revolves around <strong>web</strong> and <strong>mobile</strong>.
<a href="https://www.practitest.com/resource/state-of-testing-report-2020/">The 2020 state of testing report</a>, curated and published by Practitest, underwrites that. Web and mobile have got the biggest share of the technologies being tested (75% and 59% respectively).
<strong>Desktop</strong> is coming in third with 45%. Which makes you think why this technology is not getting more attention in the world of testing?
It's about time that we put the limelight on <strong>desktop testing</strong>; <strong>Windows</strong> desktop <strong>automated</strong> testing to be precise. </p>
<p>The first part of this article will give an overview of available tools for Windows desktop automation.
Then it will go into the things to consider in choosing a tool. </p>
<h1>Available tools</h1>
<p>This will not be a complete overview on available desktop test automation tools. Things that are currently not included (but might be added later): </p>
<ul>
<li>Paid for tools. I have not done enough research into these. Only open source tools are listed.</li>
<li>Tools for other operating systems than Windows (e.g. Linux, MacOS), as I've not had a lot of exposure on this.</li>
<li>Tools that are not aimed at (aiding) GUI automation (e.g. database, API, network). These are not specifically for desktop, so won't be covering those. </li>
</ul>
<p>Joe Colantonio of <a href="https://testguild.com/">Test Guild</a> (<a href="https://twitter.com/joecolantonio">@joecolantonio</a>) already has put together a very extensive list of <a href="https://testguild.com/automation-tools-desktop/">Automation tools for desktop applications</a>.
Follow the link to Joe's article for a full description of each of these following tools:</p>
<ul>
<li><a href="https://github.com/microsoft/WinAppDriver">Windows Application Driver</a> </li>
<li><a href="https://github.com/2gis/Winium">Winium</a> </li>
<li><a href="https://teststackwhite.readthedocs.io/en/latest/">White Framework</a> </li>
<li><a href="https://www.eclipse.org/jubula/">Jubula</a> </li>
<li><a href="https://pywinauto.readthedocs.io/en/latest/contents.html">pywinauto</a> </li>
<li><a href="https://www.oracle.com/enterprise-manager/downloads/oats-downloads.html">Oracle Application Testing Suite OATS</a> </li>
<li><a href="http://sikulix.com/">SikuliX</a> </li>
<li><a href="https://github.com/FlaUI/FlaUI">FlaUI</a> </li>
<li><a href="https://www.autoitscript.com/site/">AutoIt</a> </li>
<li><a href="https://www.zaptest.com/">Zaptest</a> </li>
<li><a href="https://github.com/AirtestProject/Airtest">AirTest</a></li>
<li><a href="http://appium.io/">Appium</a> </li>
</ul>
<p>Almost as important as the tools for automated test execution itself, are the tools that support you in creating your automation.
For web automation, <em>DevTools</em> are invaluable in that respect (<em><F12></em>, built in any modern browser). Similar tools are often not readily available in desktop applications.
But there is definitely help available. A collection of <a href="https://github.com/blackrosezy/gui-inspect-tool">GUI inspect tools can be found here</a> (follow the link).
With those tools you can inspect the application you want to test and look screen object identifiers. The one I particularly like is <a href="https://github.com/blackrosezy/gui-inspect-tool/blob/master/UISpy.exe">UISpy.exe</a>. </p>
<p>A last tool I would like to mention is not necessarily a desktop GUI automation tool, but definitely one that can help in testing a Windows desktop application.
It is called <a href="https://accessibilityinsights.io/en/">Accessibility Insights</a>, and is aimed at inspecting and assessing the accessibility of an application for people with and impairment like vision loss or colour blindness.</p>
<h1>Considerations</h1>
<p>In choosing a test automation tool or framework, in general, there are a lot of things things to consider, like: </p>
<ul>
<li>Supported programming languages</li>
<li>Reporting capabilities</li>
<li>Integration with other tools</li>
<li>...</li>
</ul>
<p><a href="https://club.ministryoftesting.com/t/considerations-when-comparing-automation-frameworks/41864">A more complete overview of general considerations can be found on the Ministry of Testing website</a>. </p>
<p>In addition to the above, there are a few things specific to desktop test automation to keep in mind: </p>
<ul>
<li><strong>Supported operating systems</strong>. Not all available tools will work with each version of Windows. We would have loved to use <a href="https://github.com/microsoft/WinAppDriver">WinAppDriver</a> as our platform, but it is only available for Windows 10.</li>
<li>Windows has got <a href="https://docs.microsoft.com/en-us/windows/apps/desktop/choose-your-platform">different <strong>application platforms</strong></a>, which all work slightly differently. Be sure your tool supports the platform you want to target.</li>
<li>Some desktop applications have got their own specific <strong>frontend</strong>, depending on which underlying technology is being used. For example, GUIs from a JAVA or Oracle application are constructed in a different way, and there are specific tools supporting those type of applications.</li>
</ul>
<h1>Wrapping up</h1>
<p>The aim of this post has not been to give an <em>ultimate</em> list of available desktop test automation tools.
But sure I will keep adding to it when I come across tools in this category that not yet have been mentioned. <br>
And please <a href="https://twitter.com/PeetRonics">send me a message</a> if you know of a tool that should be mentioned here.</p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>I wish I knew more about ...2020-09-03T22:45:00+01:002020-09-03T22:45:00+01:00Peet Michielsentag:peetronics.com,2020-09-03:/IWishIKnewMoreAbout.html<p>On the importance of knowing what you don't know and knowing how to gain knowledge</p><p><img alt="I wish I knew more about, against a library backdrop" src="http://peetronics.com/images/i_wish.png" width="80%"></p>
<h1>The context</h1>
<p><em>I wish I knew more about ...</em> </p>
<p>Something I say regularly, both in a professional and private context. There are so many things I would like to know more about: </p>
<ul>
<li><em>Artificial intelligence / Machine Learning</em>, and how to use that in my testing profession </li>
<li><em>Optomechanics</em> (handy for my work) </li>
<li><em>Electronics</em> </li>
<li><em>Linux & SSH</em></li>
<li><em>Plumbing</em> </li>
<li><em>Carpentry & joinery</em></li>
<li><em>The rules of cricket</em> </li>
<li><em>British history</em> (particularly handy for pub quizzes ... ) </li>
<li>...</li>
</ul>
<p>Think I'm quite curious person by nature and, because of that, I have a wide variety of interests. I always want to learn about knew things. That also means a know a little about a wide variety of things, but not a lot about a few specific topics.<br>
Having said that though, I've been involved in test automation for most of my professional career, so I dare to call myself a <em>specialist</em> on that front. But then immediately add that there are plenty of others that know a lot more in that area. </p>
<p>Based on the above, in the remainder of this post I want to touch on several aspects to come to my mind on the subject of <em>knowing more about</em>:</p>
<h1>How to get to know more about something</h1>
<p><img alt="cartoon of data-information-knowledge-insight-wisdom" src="http://peetronics.com/images/knowledge.jpg" width="80%"></p>
<p><em>Every day is a school day</em>, you learn every day. Be it implicitly or explicitly. I don't want to go into details on implicit learning, part from saying that it is important to acknowledge that aspect (<a href="http://peetronics.com/WhatIHaveLearnedToday-000.html">I've written about that in the past</a>).<br>
As soon as you think or say "<em>I wish I knew more about ...</em>", you state a desire you explicitly want to learn about a topic. And then it is up to you to find a way to gather that knowledge. </p>
<p>There are so many ways to learn and gather knowledge: </p>
<ul>
<li><strong>Reading</strong>: books, essays, blogs, articles, manuals, technical guides</li>
<li><strong>Watching</strong>: tutorials, demonstrations, conference talks</li>
<li><strong>Schooling</strong>: classes, courses, studies, certification, workshops</li>
<li><strong>Mentoring</strong>: coaching, training, consulting, counseling</li>
<li><strong>Practicing</strong>: challenges, exercises, dojos, hackathons</li>
</ul>
<p>With so many different options, it is important that you find the best approach for type of knowledge gathering you want to do. Some are better suited for certain purposes than others. Wanting to know more about philosophy probably requires a more extensive study than learning how to make kimchi.</p>
<p>And also find a way of learning what your comfortable with. For me personally, reading is not the easiest way. I rather learn by watching and having hands-on experience.</p>
<h1>Acknowledgement of your limited knowledge</h1>
<p>No matter how much you know about a certain topic, there probably - no, certainly - will be people out there that know as much or even more on that same topic. Several things to be said on this: </p>
<ol>
<li>It stimulates collaboration. Know what you know, know what you don't know, know what others know, know what others don't know. Complement each other's knowledge.</li>
<li>It allows your to keep learning. be it directly from the others you work with, be it from the vast majority of resources that are available.</li>
<li>It shows modesty. Which is not a bad thing ...</li>
</ol>
<p>In other words, don't get complacent, be open to more learning.</p>
<h1>Being fine with not knowing everything</h1>
<p>For sure, it can be frustrating not knowing enough about a certain topic. It can make you feel insecure (<em>am I good enough for this job?</em>), you might see yourself as an imposter, you feel unconfident amongst colleagues and peers, and, it is just annoying not knowing the answer to the winning question in a pub quiz.... </p>
<p>Keep in mind however, that you <strong>can't</strong> know everything and you don't <strong>have</strong> to know everything. Be selective on the things you want to know more about. Pick out the things that can bring you further (in any way), delve into subjects that bring you joy. And for the rest, of the things you don't know, there are people <strong>with</strong> the knowledge you can ask and collaborate with...</p>
<hr>
<h3>Impetus for this article</h3>
<p>I haven't written a blog post in a while, <a href="http://peetronics.com/WhatIHaveLearnedToday-retrospective.html">though I made myself a promise to write more</a>. But hey, that's how things go (don't beat yourself up on that Peet!). </p>
<p>Recently there have been a few triggers that made me decide to write this post:</p>
<ul>
<li><a href="https://club.ministryoftesting.com/c/bloggers-club">The <strong>Ministry of Testing</strong> has reignited their <strong>bloggers club</strong></a>. I have let a few iterations slip, but ...</li>
<li>... <a href="https://club.ministryoftesting.com/t/bloggers-club-august-september-2020-i-wish-i-knew-more-about">This month's topic</a> is close to my heart and think I can write a meaningful article about it</li>
<li>Two weeks ago, I joined in on an <a href="https://club.ministryoftesting.com/t/ama-how-to-start-blogging-ama-with-louise-gibbs-bruce-chris-armstrong-lee-marshall">Ask Me Anything session on blogging</a>, facilitated by the Ministry of Testing, hosted by <a href="https://twitter.com/BruceOnlyBruce">@BruceOnlyBruce</a>, <a href="https://twitter.com/christovskia">@christovskia</a>, <a href="https://twitter.com/Louise_J_Gibbs">@Louise_J_Gibbs</a> and <a href="https://twitter.com/ThePirateTester">@ThePirateTester</a>. Lots of wisdom and tips in there and enough reasons on why you should write more. </li>
</ul>
<p>And with all of that, I hadn't any excuse anymore NOT to write a blog post. What you've been reading is the result. Hope you found it useful. Feel free to <a href="https://twitter.com/PeetRonics">get in touch with me</a> if you want to comment or discuss.</p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - retrospective2019-12-07T21:00:00+00:002019-12-07T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-12-07:/WhatIHaveLearnedToday-retrospective.html<p>I write therefore I am</p><p><img alt="Notepad & pen" src="http://peetronics.com/images/notepad.jpg" width="80%"> </p>
<p>Earlier this week I posted the 30th article in the series “<em>What I Have Learned Today</em>”. And that marks the end of the <a href="https://medium.com/@peetronics/what-ive-learned-today-332e3b9836fd">challenge</a> I set myself. Pleased that I did it, and saw it through to the end. I enjoyed the whole exercise. </p>
<p>Time to take stock. </p>
<p><strong>What went well:</strong> </p>
<ul>
<li><em>The writing itself</em>. I’m not a natural writer (if that is even a thing), and was quite anxious about the prospect of having to write every day. But actually the activity felt relatively effortless.</li>
<li><em>Topics</em>. Looking at the 30 articles I think there is a nice spread of topics. I will try and keep it like that.</li>
</ul>
<p><strong>What needs improvement:</strong> </p>
<ul>
<li><em>Quality over quantity</em>. Writing every day is not necessarily beneficial for the quality of the articles. Once I’ve written something, I need to leave it unpublished, come back to it later, review and amend, and then publish.</li>
<li><em>Blogging platform</em>. I choose <strong>Medium</strong> as blogging platform for a few reasons. It is free and it seems to be a popular choice amongst peer writers. But having used it for a month I don’t like the on-line text editor.</li>
</ul>
<p><strong>Next steps:</strong> </p>
<ul>
<li><em>Host my own blog site</em>. I’m going in search of a platform that better suits my needs. And if I can’t find one, I might go and create my own.</li>
<li><em>Keep writing</em>. I definitely will keep writing about things I learn. But not forcing myself. And taking my time for it.</li>
</ul>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0302019-12-04T21:00:00+00:002019-12-04T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-12-04:/WhatIHaveLearnedToday-030.html<p>Going down the rabbit hole … of a firewall</p><p><img alt="image of a firewall" src="http://peetronics.com/images/firewall.jpg" width="80%"> </p>
<p>Following on from yesterday’s win where I managed to create a <a href="http://peetronics.com/WhatIHaveLearnedToday-029.html">Python Package</a>, today I hit a brick wall. A firewall to be precise. </p>
<p>To test the ability to easily distribute the package internally, I had to set up a sandbox package management environment. That was quickly and easily done. Managed to access the web server and install package from the command line etc. </p>
<p>Full of positivity I pinged a message to colleagues, asking if they could give it a whirl as well. And promptly I got a reply… it wasn’t working for them. Scratching my head for a bit, I came to realise that of course I had no issues because I was running everything from my local machine. By the powers of deduction I narrowed the problem down to be the network. </p>
<p>And then I spent the rest of the morning figuring out how to expose the locally running web service to the company network. After lots of searching found it was a simple matter of <a href="https://manage.accuwebhosting.com/knowledgebase/2886/How-to-configure-IIS-to-access-website-using-IP-address.html">opening a port</a> on my local computer’s firewall. Another win for me and learned a bit about web services and firewalls along the way… 🔥 </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0292019-12-03T21:00:00+00:002019-12-03T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-12-03:/WhatIHaveLearnedToday-029.html<p>Things are a lot nicer when nicely packaged up</p><p><img alt="Python Package logo" src="http://peetronics.com/images/python-package.png"> </p>
<p>Today I <strong>learned</strong> to make my first Python Package 😁. </p>
<p>We’ve got an ever growing list of Python Projects within our company and we are no stranger to some copy-paste action of code snippets between these projects/repositories. Though there are cases where this is absolutely fine, most of the time this is bad practice. </p>
<p>One of the ways we’ve tried to counteract that is by keeping as much as possible within one code-base. But that is becoming more and more of a problem (and also bad practice). </p>
<p>Knowing about 3rd party <a href="https://pypi.org/">Python Packages</a> (of course we use them a lot), I have wanted to craft of my own package for some time, as a solution for sharing generic modules between projects. I always thought it required a good dose of <em>black magic</em>, but hey, never too late to <strong>learn</strong> that 😈. </p>
<p>I followed this <a href="https://packaging.python.org/tutorials/packaging-projects/">tutorial</a> from the Python Packaging Authority, and, surprise surprise, it was a lot easier than I thought! </p>
<p>For now I wouldn’t go as far as submitting the package to PyPi as it is purely for internal use. Which doesn’t mean I won’t do in (the foreseeable) future. </p>
<p>We do have an internal package manager called <a href="https://inedo.com/proget">ProGet</a>. But naive me thought this was only for .Net. Turns out it supports local Python Packages. Who knew! <strong>Learned</strong> that as well as an added bonus today 😆. </p>
<p>Pretty sure I will do some more packaging this month 😉 🎄 </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0282019-12-02T21:00:00+00:002019-12-02T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-12-02:/WhatIHaveLearnedToday-028.html<p>Chatting with your boss’ boss</p><p><img alt="Boss baby" src="http://peetronics.com/images/boss-baby.jpg" width="80%"></p>
<p>One of the nice things at my work is the regular catch-up / check-in meetings we have. I’ve got one with my direct manager every week. We discuss priorities, objectives, private matters, … anything. </p>
<p>But also my boss’ boss does organise regular (though less frequent) one-on-ones with his wider team. And I find that really positive. Nice that he shows genuine interest in what you’re up to and how you’re getting on. </p>
<p>It helps me to frame my work (like putting things in the wider company perspective) and guide my objectives & goals. </p>
<p>This morning I had a nice chat again with him, whilst enjoying a coffee. <strong>Learned</strong> about the latest of the company and now can align my work according to that. </p>
<p>Of course we overran our allotted time-slot (that is not a bad sign I think). After we eventually put the meeting to a close he said to book some time anytime I feel like. And I should take him up on that offer. I need to <strong>learn</strong> I can take initiative in these kind of things. It is not a one-way system!! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0272019-12-01T21:00:00+00:002019-12-01T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-12-01:/WhatIHaveLearnedToday-027.html<p>Learning new coffees</p><p><img alt="Advent calendar coffee" src="http://peetronics.com/images/advent-coffee.jpg" width="80%"></p>
<p>Yesterday was the 1st of December and that means the beginning of advent; and the large offering of advent calendars. </p>
<p>I love a nice cup of coffee in the morning and my partner knows that. She gave me an advent calendar with <a href="https://brew-company.com/en-gb/">24 different coffees</a>. They come in handy pouches; you pour over water and let it brew. </p>
<p>Now I can <strong>learn</strong> about a new coffee every day ❤️ ☕️</p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0262019-11-30T21:00:00+00:002019-11-30T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-30:/WhatIHaveLearnedToday-026.html<p>Learning from your four legged friend</p><p><img alt="photo of our dog, Sky" src="http://peetronics.com/images/sky.jpg" width="80%"> </p>
<p>Not that long ago we did get a dog, Sky. He’s such a great addition to our family 🐶. </p>
<p>Today we took him out to an enclosed field where he could run around off the lead. He absolutely loved it; and so did we. </p>
<p>While being out with the dog I came to realise you can <strong>learn</strong> so much from having a four legged friend. Could name a lot of things but you fill that in for yourself… </p>
<p>For now, let me enjoy the company of Sky and a dram 🍹. </p>
<p>Enjoy your weekend! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0252019-11-29T21:00:00+00:002019-11-29T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-29:/WhatIHaveLearnedToday-025.html<p>Recognising your role model(s)</p><p><img alt="“Role Model” in block letters" src="http://peetronics.com/images/role-model.jpg" width="80%"> </p>
<h1>What you can learn from your partner</h1>
<p>It’s Friday night and I’m back home after a busy week in the office. Sitting on the sofa with my partner enjoying a 🍷 while chatting what happened this week at work. </p>
<p>She’s a support teacher in a primary school and always has got lots of stories about the things that happened at her work. I love listening to her experiences and adventures. It creates a bond between us and I do get lots of inspiration for my work. Yes,… I <strong>learn</strong> a lot from her ❤️. </p>
<h1>Role models</h1>
<p>One of the things I’ve said to my partner on several occasions already, and so I did tonight, is that in her profession she is a role-model to the pupils she’s working with; that teachers will be one of the persons kids will remember when they grow older. </p>
<p>As the conversation this night evolved, we were asking ourselves the question who our role-models were when we were young, or who are the people that inspired us. And that … was more difficult to answer than we thought. We came to the conclusion that we both can’t point out our role-models or people that inspired us when we were young. But, we do know that a lot of the people from our youth helped us form the way we are. And eventually we did point out persons from our youth that made a difference. </p>
<h1>Conclusion</h1>
<p>Reflect for a moment and think about the people that did make a difference to your life, who inspire(d)(s) you, who is your role-model. They are the people that implicitly or explicitly made who you are today. Just recognise that fact… </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0242019-11-28T21:00:00+00:002019-11-28T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-28:/WhatIHaveLearnedToday-024.html<p>Learn the art of noticing</p><p><img alt="Box with offcuts of wood" src="http://peetronics.com/images/wood.jpg" width="75%"> </p>
<p>A couple of days ago I <a href="https://medium.com/@peetronics/what-i-have-learned-today-021-9d37cf33d826">wrote</a> about getting crafty as a way to keep a balanced mind. And you <strong>learn</strong> some new skills along the way as well! </p>
<p>For the <em>secret</em> I’m working on I was needing some materials from the local hardware store. Got the stuff I needed and on leaving I saw you can help yourself to offcuts of wood in return for a small donation to charity. Popped in some cash, had a dive in the crate and picked up a few pieces of wood that can come in handy for future projects 🔨. </p>
<h1>The art of noticing</h1>
<p><img alt="Cover of the book ‘the art of noticing’ by Rob Walker" src="http://peetronics.com/images/the-art-of-noticing.jpg"> </p>
<p>Don’t know why I haven’t noticed this before; must have walked past that box at least a dozen of times. But it shows it is worth to observe and pay attention to what’s around you. And that reminded me of a podcast I listened to from <a href="https://www.artofmanliness.com/articles/podcast-541-the-art-of-noticing/">The Art of Manliness</a> back in September. Which covered <a href="https://www.amazon.co.uk/Art-Noticing-Rediscover-Really-Matters/dp/1529104432/ref=sr_1_1?crid=1RWNFDXQKJYY2&keywords=the+art+of+noticing&qid=1574978593&sprefix=the+art+of+not%2Caps%2C147&sr=8-1">The art of noticing</a>, a book by Rob Walker about the benefits that come from observing and being aware. Another book added to my list to read… 📚 </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0232019-11-27T21:00:00+00:002019-11-27T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-27:/WhatIHaveLearnedToday-023.html<p>Learning Lean Coffee</p><p><img alt="Coffee mugs" src="http://peetronics.com/images/lean-coffee.jpg" width="80%"> </p>
<p>I have participated in <em>Lean Coffee</em> sessions in the past, but never facilitated one myself. Well, today that changed. I did facilitate one 😅 </p>
<p>It went all right. Partly because I did some preparation by reading this <a href="https://medium.com/agile-outside-the-box/lean-coffee-facilitator-s-guide-d79d9f13d0a9">article</a>. </p>
<p>So, today’s <em>learning</em> moments were: </p>
<ul>
<li>how to facilitate a lean coffee session</li>
<li>feedback from all the topics discussed during the lean coffee</li>
</ul>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0222019-11-26T21:00:00+00:002019-11-26T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-26:/WhatIHaveLearnedToday-022.html<p>Visualising test output</p><p><img alt="Kibana dashboard example" src="http://peetronics.com/images/kibana.jpg" width="80%"></p>
<p>A while ago I introduced <a href="https://www.elastic.co/">Elastic and Kibana</a> to our organisation as a means to aggregate and visualise data of all sorts. Following the good example of this <a href="https://www.elastic.co/blog/improving-quality-assurance-automation-at-ramsey-solutions-with-the-elastic-stack">article</a>, a few colleagues and I made a good start with it, but then left it untouched. </p>
<p>Today, for one of may tasks I needed to generate a report / dashboard for a new set of tests. So I decided to dust off the Elastic/Kibana work done in the past and see if I could make a nice visualisation for the new piece of work. </p>
<p><img alt="Another Kibana dashboard example" src="http://peetronics.com/images/kibana-example.png" width="80%"> </p>
<p>For now I’m happy with the result, but I know that more improvements can be made. Some of the additions I would like are: </p>
<ul>
<li><em>Fail</em> labels for easier visibility</li>
<li>Pair results with log files </li>
</ul>
<p>Elastic and Kibana has got a steep <strong>learning</strong> curve. So it’s a matter of keep using it to get better at it… </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0212019-11-25T21:00:00+00:002019-11-25T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-25:/WhatIHaveLearnedToday-021.html<p>Getting crafty to keep your mind sharp</p><p><img alt="Templatemaker.nl" src="http://peetronics.com/images/templatemaker.png"> </p>
<h1>Keeping the balance</h1>
<p>When you have a job like me, where you sit a big part of your day <em>behind</em> your computer (or in <em>front</em> of a computer screen; same thing, weird isn’t it?), you need to have something outside your work that is away from your screen. At least, that is my belief as I think it will help keeping you sane. </p>
<p>And that <em>something else</em> can be anything. One of the things I like to do is cooking. I’ve already <a href="https://medium.com/@peetronics/what-i-have-learned-today-006-57b6ee7fff0a">written</a> about that 2 weeks ago. </p>
<h1>Getting crafty</h1>
<p>With the holiday season upon us, another thing I like to do is making my own Christmas decorations and little Christmas presents. Last year I made little Rudolph hangers from corks. </p>
<p><img alt="Cork Rudolph reindeers" src="http://peetronics.com/images/rudolph.jpg" width="80%"> </p>
<p>For this year I’m wanting to make my own gift boxes. Measuring and drawing them completely from scratch might be a step to far. Luckily I <strong>learned</strong> about a website that does the heavy lifting for you. It’s called <a href="https://www.templatemaker.nl/en/">templatemaker.nl</a>. It has got heaps of box designs to choose from and each can be adjusted to your liking. Once you’ve downloaded your template you can further personalise it. </p>
<p>Time to get my craft knife out! 🎄 </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0202019-11-24T21:00:00+00:002019-11-24T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-24:/WhatIHaveLearnedToday-020.html<p>The buzz you get from talking to strangers</p><p><em>Actually the title should read ”What I Have Learned Yesterday”. I had a long drive and wasn’t in the mood for writing.</em></p>
<p><img alt="Picture of the Oddfellows Arms in Sherburn in Elmet" src="http://peetronics.com/images/oddfellows.jpg" width="80%"></p>
<h1>Meeting new people</h1>
<p>It might be surprising but I find it hard to meet new people and start a conversation. I rather be me by myself than throwing myself into a conversation with strangers. but this weekend I learned to step beyond that… </p>
<p>Saturday night I had to stay over in a place I’ve never been. Found myself some <a href="https://oddfellowsarms.pub/">accommodation</a>, and had planned to stay in my room and minding my own business. </p>
<p>But after a long drive I did fancy a beer so made my way to the pub and ordered one. Settled myself in a corner of an empty table, having my phone and pint as company. </p>
<p><img alt="pint glass" src="http://peetronics.com/images/pint.jpg" width="80%"> </p>
<p>After a while some regulars came in and joined the table I was sitting at. First I was feeling a bit uncomfortable and wanted to get back to my room after finishing my pint. But after the few polite exchanges of “<em>what brings you here</em>” etc. a conversation started flowing. And it was good. </p>
<p>Before I knew it last orders were called and a final round of drinks were ordered. After that I retreated to my room and looked back at a wonderful night I had. </p>
<h1>Conclusion</h1>
<p>It felt good to “<em>get out of my shell</em>” and strike up a conversation with strangers. Yes, I was anxious and felt uncomfortable at first but <strong>learned</strong> that those feelings are unfounded. I did get a buzz out of it and I had an opportunity to hone my <em>social skills</em>. </p>
<p>Knowing that, in future I will more easily get into a conversation with people I don’t know; there’s nothing to loose. Though I know that there still will be a bit of anxiousness. But nothing that cannot be cured with a bit of Dutch Courage… </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0192019-11-23T21:00:00+00:002019-11-23T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-23:/WhatIHaveLearnedToday-019.html<p>The importance of code reviews</p><p><img alt="github code review example" src="http://peetronics.com/images/code-review.png" width="80%"> </p>
<h1>The importance of code reviews</h1>
<p>Code reviews are one of many important mechanisms (or rituals if you like) to ensure <em>quality</em> of your software project/product. Potential bugs can be caught early as well as negative performance / security implications. </p>
<p>What I find though, what is not mentioned enough, is that code reviews are also a great vehicle for knowledge transfer. By participating as a reviewer you can <strong>learn</strong> a lot. </p>
<p>That’s why I make an effort to get involved in code reviews as much as possible. </p>
<h1>Respectful Reviews</h1>
<p>While enjoying my morning cup of coffee and reading through blog posts, I came across this <a href="https://testing.googleblog.com/2019/11/code-health-respectful-reviews-useful.html">article</a> from the <a href="https://testing.googleblog.com/">Google Testing Blog</a>. It is list of <em>do’s</em> and <em>don’ts</em> for code reviews, aimed both at authors and reviewers. A quick read and very helpful tips to make reviews better. </p>
<p>As an added bonus the article can be printed on one <a href="https://docs.google.com/document/d/1_Gljf1TMTV2WPsiXCdk8oIkiq6uiajN_IqGdlD7u3Mc/edit">A-4</a>, which you can hang on the toilet of your office. Probably something I will do when I’m back in the office 😄. </p>
<h1>Going down the rabbit hole</h1>
<p>The last bullet-point of that article refers to a page on how to deal with <a href="https://google.github.io/eng-practices/review/reviewer/standard.html#conflicts">conflicts</a> during code reviews. Which is part of a wider set of <a href="https://google.github.io/eng-practices/">guidelines</a> around code reviews that Google produced. More reading, more <strong>learning</strong> and something to share with the team. </p>
<p>Have a great weekend! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0182019-11-22T21:00:00+00:002019-11-22T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-22:/WhatIHaveLearnedToday-018.html<p>Breaking the habit of using 'import *'</p><p><img alt="removestar page header" src="http://peetronics.com/images/removestar.png" width="80%"> </p>
<h1>Good coding practices</h1>
<p>I’m a strong believer of using good coding practices and will advocate for it wherever and whenever I can. Be it in <em>code reviews</em>, <em>community of practice</em> sessions, <em>mentoring</em> etc. </p>
<p>It is commonly known in Python not to use <code>import *</code>. If you want to know why, read <a href="https://www.geeksforgeeks.org/why-import-star-in-python-is-a-bad-idea/">this</a>. It makes me flinch every time I see the usage of that in Python code I lay my eyes on. </p>
<h1>RemoveStar</h1>
<p>What’s out there in Python-land keeps amazing me. Today I <strong>learned</strong> about a Python module called <a href="https://www.asmeurer.com/removestar/">RemoveStar</a>. It scans a file, directory or module, and points out usages of <code>import *</code>. Or of you like, it will auto replace with proper imports. </p>
<h1>Who knew</h1>
<p>Luckily all usages of <code>import *</code> have been eradicated in our code bases; or so I thought… </p>
<p>I tried the <em>RemoveStar</em> tool on one of our repositories. Lo and behold, 3 instances of <code>import *</code> where found. For now, rather than refactoring the code, I will have a chat with the team what I found. </p>
<p>Have a good weekend! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0172019-11-21T21:00:00+00:002019-11-21T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-21:/WhatIHaveLearnedToday-017.html<p>Making your life easier with NFC tags</p><p><img alt="desk with various nfc tags" src="http://peetronics.com/images/nfc-tags.jpg" width="80%"></p>
<p>Having a smart-phone with a built-in <a href="https://en.wikipedia.org/wiki/Near-field_communication">Near Field Communication reader</a> (NFC) I wanted to try to expand its usage beyond the handy tap-and-pay. Recently I read an article on handy <a href="https://techwiser.com/cool-uses-for-nfc-tags/">usages</a>. </p>
<p>I ordered a few NFC stickers and badges which arrived today. Found an <a href="https://play.google.com/store/apps/details?id=com.wakdev.nfctools.pro">app</a> to read-write tags. I managed to create a few badges that, when swiped: </p>
<ul>
<li>Switches on Bluetooth and open my podcast app (stuck it on my ear-bud case)</li>
<li>Sets an alarm and put phone in do-not-disturb mode (will have it on my bedside table) </li>
<li>Switches on Bluetooth and open Google maps (will stick it on my car dashboard)</li>
</ul>
<p>Only having <strong>learned</strong> some basic usages, I think there are plenty more ways these tags can come in handy. </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0162019-11-20T21:00:00+00:002019-11-20T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-20:/WhatIHaveLearnedToday-016.html<p>Python debugging from the command line</p><p><img alt="Python debugging with PDB" src="http://peetronics.com/images/python-debugging.jpg" width="80%"> </p>
<h1>Lazy man’s debugging</h1>
<p>Sure I’m not the only one out, but I’m still the kind of person that does debugging by dotting the code with <code>print()</code> statements. And with the release of <a href="https://docs.python.org/3/whatsnew/3.8.html">Python 3.8</a> and the f-string support it seems that they want me to keep to stick to that habit: </p>
<div class="highlight"><pre><span></span><code><span class="o">>>></span> <span class="n">user</span> <span class="o">=</span> <span class="s2">"eric_idle"</span>
<span class="o">>>></span> <span class="n">member_since</span> <span class="o">=</span> <span class="n">date</span><span class="p">(</span><span class="mi">1975</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">31</span><span class="p">)</span>
<span class="o">>>></span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">=}</span><span class="s2"> </span><span class="si">{</span><span class="n">member_since</span><span class="si">=}</span><span class="s2">"</span>
<span class="n">user</span><span class="o">=</span><span class="s2">"eric_idle"</span> <span class="n">member_since</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">(</span><span class="mi">1975</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">31</span><span class="p">)</span>
</code></pre></div>
<p>That’s a nice addition. </p>
<h1>A better alternative</h1>
<p>At my work I’m not making a secret of my approach to debugging and a colleague once pointed out the debug capabilities of the <a href="https://www.jetbrains.com/pycharm/">IDE</a>. Tried that but never caught on with me. So yes, I still have the ubiquitous print statements everywhere, which I always forget to remove. </p>
<p>Today I was joking about my debug super powers again and then another colleague pointed out <a href="https://docs.python.org/3/library/pdb.html">PDB</a>; a Python debugger that can be used from the command line. I found a handy <a href="https://realpython.com/python-debugging-pdb/">tutorial</a> from <em>Real Python</em> which I followed which got me started. </p>
<p>Still a lot to <strong>learn</strong> on this, but practice makes perfect. So I will stick with this. So far so good. </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0152019-11-19T21:00:00+00:002019-11-19T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-19:/WhatIHaveLearnedToday-015.html<p>Remark — a lightweight slideshow tool</p><p><img alt="Remark" src="http://peetronics.com/images/remark.png"> </p>
<p>This morning I was preparing a presentation. Being fed up with the bulkiness of MS PowerPoint I was wanting to have lighter alternative. Having seen other people using similar products, I did find a presentation tool called <a href="https://github.com/gnab/remark">Remark</a>, a slideshow based on JavaScript that can run in a browser. </p>
<p>I had a play with it (bit of a <strong>learning</strong> curve), and initial thoughts on it are positive. What I like about it: </p>
<ul>
<li><strong>Lightweight</strong>. You only need a few files downloaded without any installation</li>
<li><strong>Markdown</strong>. You can specify a whole presentation from a text editor</li>
<li><strong>Presenter mode</strong>. With built in timer and the speaker notes coming from the same markdown</li>
</ul>
<p>The examples on their <a href="https://github.com/gnab/remark">project page</a> are great to get you started but I already made a few <em>improvements</em>: </p>
<ul>
<li>Put the markdown in in a separate file</li>
<li>Using a local copy of the CSS</li>
<li>Using a local copy of <code>remark.js</code></li>
</ul>
<p>For me this works better as you don’t need an internet connection and it allows for easier editing.</p>
<p><img alt="HTML example. code snippet in article text" src="http://peetronics.com/images/remark-example.png" width="80%"> </p>
<div class="highlight"><pre><span></span><code><span class="cp"><!DOCTYPE html></span>
<span class="p"><</span><span class="nt">html</span><span class="p">></span>
<span class="p"><</span><span class="nt">head</span><span class="p">></span>
<span class="p"><</span><span class="nt">meta</span> <span class="na">charset</span><span class="o">=</span><span class="s">"utf-8"</span> <span class="p">/></span>
<span class="p"><</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">"keywords"</span> <span class="na">content</span><span class="o">=</span><span class="s">"Conference feedback, presentation, remark"</span> <span class="p">/></span>
<span class="p"><</span><span class="nt">meta</span> <span class="na">name</span><span class="o">=</span><span class="s">"description"</span> <span class="na">content</span><span class="o">=</span><span class="s">"Conference Feedback"</span> <span class="p">/></span>
<span class="p"><</span><span class="nt">title</span><span class="p">></span>Conference feedback<span class="p"></</span><span class="nt">title</span><span class="p">></span>
<span class="p"><</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">"stylesheet"</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/css"</span> <span class="na">href</span><span class="o">=</span><span class="s">"../assets/presentation-stylesheet.css"</span><span class="p">></span>
<span class="p"></</span><span class="nt">head</span><span class="p">></span>
<span class="p"><</span><span class="nt">body</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">"../assets/remark.js"</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span><span class="p">></span>
<span class="p"></</span><span class="nt">script</span><span class="p">></span>
<span class="p"><</span><span class="nt">script</span> <span class="na">type</span><span class="o">=</span><span class="s">"text/javascript"</span><span class="p">></span>
<span class="kd">var</span> <span class="nx">slideshow</span> <span class="o">=</span> <span class="nx">remark</span><span class="p">.</span><span class="nx">create</span><span class="p">({</span>
<span class="nx">sourceUrl</span><span class="o">:</span> <span class="s1">'./Conference-Feedback.md'</span><span class="p">,</span>
<span class="nx">ratio</span><span class="o">:</span> <span class="s1">'4:3'</span> <span class="p">});</span>
<span class="p"></</span><span class="nt">script</span><span class="p">></span>
<span class="p"></</span><span class="nt">body</span><span class="p">></span>
<span class="p"></</span><span class="nt">html</span><span class="p">></span>
</code></pre></div>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0142019-11-18T21:00:00+00:002019-11-18T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-18:/WhatIHaveLearnedToday-014.html<p>“I see some Python code and want to paint it Black”</p><p><img alt="Black logo" src="http://peetronics.com/images/black.png" width="80%"> </p>
<h1>Podcasts to stay up-to-date</h1>
<p>One of my favourite work-related podcasts is <a href="https://pythonbytes.fm">PythonBytes</a>. In each half-hour episode the hosts <a href="https://twitter.com/mkennedy">@mkennedy</a> and <a href="https://twitter.com/brianokken">@brianokken</a> give you the latest Python news. A great and easy way to stay up-to-date. Oh, and you’ve got to love the jokes at the end of each episode 😆. </p>
<p>While listening to episode <a href="https://pythonbytes.fm/episodes/show/156/all-the-programming-lols">#156</a> this morning, I learned that one of the must-have Python modules, <a href="https://github.com/psf/black">Black</a>: </p>
<ul>
<li>Has got a new release</li>
<li>Is probably moving out of Beta on… Black Friday 😃</li>
<li>Has an online <a href="https://black.now.sh">playground</a></li>
</ul>
<h1>Why automatic code formatting</h1>
<p><em>Black</em> advertises itself as “<em>The Uncompromising Code Formatter for Python</em>”. In short, it will deal with the code formatting automatically and it adheres to the <a href="https://www.python.org/dev/peps/pep-0008/">PEP8</a> style guide. </p>
<p>This means that, when applied on your project, you can concentrate on the code itself, without having to worry about the formatting and style. Automatic code formatting will ensure <strong>uniformity</strong> of your code and it will make <strong>code reviews</strong> a lot quicker and easier. </p>
<p>To make your life even easier, you can integrate it in a <a href="https://ljvmiranda921.github.io/notebook/2018/06/21/precommits-using-black-and-flake8/">pre-commit hook</a>. </p>
<h1>Scepticism</h1>
<p>When we first introduced <em>Black</em> in our project, we were faced with scepticism from some team members. Getting responses like: “Sure that cannot be working fine”, and “a good coder should do his/her own formatting/styling”. </p>
<p>But we pushed through, and luckily <em>Black</em> it is now widely adopted in the team. If only we would have known about the playground earlier, the adoption might have been a bit easier… </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0132019-11-17T21:00:00+00:002019-11-17T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-17:/WhatIHaveLearnedToday-013.html<p>Honing your skills by play</p><p><img alt="Image of the card game Set" src="http://peetronics.com/images/set.jpg" width="80%"> </p>
<h1>Play</h1>
<p>It is well known that playing board- and card-games has got numerous benefits. Plenty of <a href="https://www.dumblittleman.com/benefits-of-playing-board-games/">articles</a> have been written about it so I will refrain from re-iterating. Part from all the mentioned benefits, for me probably the biggest one is that it is fun 😄. So it’s no secret I’m always up for a game of any sort. </p>
<h1>Set</h1>
<p>A card game I particularly like is <a href="https://en.wikipedia.org/wiki/Set_(card_game)">Set</a>. Simple in concept, yet very gripping. Simplest explanation is to find three cards that are completely similar or opposite in shape, filling, colour or number (follow the link for full rules).The player that sees the similarities / opposites first gets the cards. Most cards wins.I believe that particularly this is a game that sits close to my profession as software tester, in which looking for patterns, similarities, opposites is a key part of your job. </p>
<h1>Conclusion</h1>
<p>So yes, even on a lazy Sunday while playing games, I’m learning to hone my professional skills…Have fun! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0122019-11-16T21:00:00+00:002019-11-16T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-16:/WhatIHaveLearnedToday-012.html<p>Dealing with distraction</p><p><img alt="Photo of an Apple IWatch, showing the fitness tracker screen" src="http://peetronics.com/images/fitness-tracker.jpg" width="80%"> </p>
<h1>Distraction</h1>
<p>One of the things that I constantly try to get better at is not getting distracted. Yes, I can get easily distracted. Not in a worrying sense but still. </p>
<p>For example, if I’m in a room where there is a television playing while having a conversation with somebody, sooner or later I will start looking at the moving images on screen. Nothing to worry about, but still not very polite for the person I’m having a chat with. </p>
<p>Luckily I’m well aware of my flaw, Which means I can put mechanisms in place to improve. In the example of the playing television, if possible I try to sit with my back to the screen. </p>
<h1>Productivity killer</h1>
<p>Distraction can be a productivity killer. In my case it is not too bad, but yet I want to be as productive as possible. Needless to say that in my work I want to remove distraction triggers as much as I can. One of the biggest ones for me are <em>notifications</em>. Think Outlook, Skype, Slack, all the social medias; that kind of stuff. If not strictly needed I will switch off notifications completely, or at least go into the settings of any app and tweak the notification settings to my liking. Of course , these ones below always get a <strong>block</strong> from me: </p>
<p><img alt="Facebook wants to show notifications: allow / block" src="http://peetronics.com/images/desktop-notifications.png"> </p>
<h1>Distracted by your wrist</h1>
<p>Having a smart-watch is not good in relation to distraction. Sure, once I got myself one it was great to be able to get notified on your watch, without having to look at your phone. But I have switched that off for a while now and it has been a blessing.Today, in my continuous effort to cut distractions I’ve now switched off the last bit of attention-grabbing from my wrist; the <em>fitness tracking</em>. So no more stand reminders 10 minutes to the hour while I’m in full flow of coding. No more “<em>you still need to burn xx calories to reach your daily goal</em>” while I’m driving. </p>
<p>Lets see how it goes. Probably I won’t miss it a bit! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0112019-11-15T21:00:00+00:002019-11-15T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-15:/WhatIHaveLearnedToday-011.html<p>Test before push</p><p>A quick one today<br>
I did a code refactor <a href="http://peetronics.com/WhatIHaveLearnedToday-008.html">3 days ago</a>. Today I <strong>learnt</strong> the importance of testing before pushing your code changes. </p>
<p>Because of the refactoring, a portion of the nightly regression tests misbehaved. And I only realised today 😦. Of course I did test the few scenarios before committing the changes; yet… I didn’t cater for all possible paths. Luckily a fix was readily available. </p>
<p>So next time I do a refactor, I need to remember to test, test, and… TEST! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0102019-11-14T21:00:00+00:002019-11-14T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-14:/WhatIHaveLearnedToday-010.html<p>Common pathname manipulations in Python</p><p><img alt="code snippet" src="http://peetronics.com/images/realpath.png" width="80%"> </p>
<p>I was fed up with all the hard-coded paths in our code repository (Python). Thought there must be a better, more elegant way. And it appears there is. </p>
<p>Today I <strong>learned</strong> about <code>os.path.realpath(path)</code>. This function resolves the full path of the specified file or directory, based on the path from where your script is run. An example implementation: </p>
<div class="highlight"><pre><span></span><code><span class="kn">import</span> <span class="nn">os.path</span>
<span class="n">resource_directory</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">realpath</span><span class="p">(</span><span class="s2">"output"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="n">resource_directory</span><span class="p">)</span>
<span class="c1"># >>> C:\git_repos\01_Private_Projects\Python_snippets\output</span>
</code></pre></div>
<p>Currently I’m going through our codebase and see where we can replace hard coded paths with the <code>os.path.realpath</code> function. Neat! Full documentation on this function and the whole <code>os.path</code> module can be found <a href="https://docs.python.org/3/library/os.path.html">here</a>. </p>
<p><strong>Bonus tip</strong>: In the code snippet above you can see I only import <code>os.path</code> and not the whole <code>os</code> module. In Python is good practice only to import what you need. Import more can pollute the namespace and can cause confusion and conflicts. Never ever do <code>import * from blah</code> !!! </p>
<h1>Conclusion</h1>
<p>It is worth solving bug-bears. In this example, code-base. Doing so will expand the knowledge of the thing you are working on/with. </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0092019-11-13T21:00:00+00:002019-11-13T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-13:/WhatIHaveLearnedToday-009.html<p>Reviewing abstracts for talks — learn from others</p><p><img alt="review testbash abstracts" src="http://peetronics.com/images/review-testbash-abstracts.png" width="80%"></p>
<h1>Reviewing abstracts</h1>
<p>In the past I have tweeted about the benefits of reviewing abstracts for talks. In this case the ones for upcoming <em>TestBashes</em> from the <em>Ministry of Testing</em>. </p>
<p><blockquote class="twitter-tweet" align="center"><a href="https://twitter.com/peetronics/status/1108145209269993474">Tweet of peetronics/1108145209269993474</a></blockquote> </p>
<ul>
<li>It provides valuable feedback for the applicants</li>
<li>It is an easy way to give back to the (testing) community</li>
<li>It gives you a sneak peek into what is current in the field of testing</li>
<li>It gives you ideas for submitting your own abstracts (if you’ve got the ambition into public speaking)</li>
</ul>
<p>All in all lots of opportunities to <strong>learn</strong>. I encourage everyone to get involved in this. Follow <a href="https://www.ministryoftesting.com/testbash/review">this link</a>. </p>
<h1>Reviewing and writing feedback</h1>
<p>I tend to do this activity on a regular basis; once or twice a month, like tonight. I had some time set aside to go through a batch of abstracts. Finished quicker than I thought as after 6 or so proposals there were no more left for me to review 😅. </p>
<p><img alt="message: There are no proposals to review at this time" src="http://peetronics.com/images/no-reviews.png" width="80%"></p>
<p>That aside, I want to focus on what I <strong>learn</strong> from these kind of exercises. As well as the benefits laid out in the aforementioned bullet-points, doing an activity like this will sharpen your skills like:</p>
<ul>
<li><strong>Critically reading</strong> a piece of text. Sometimes you grasp an abstract in a first read, but often it needs to be read two or more times to get an understanding of the applicant’s intent.</li>
<li><strong>Making a judgement</strong> based on what you’ve read. Once the proposal is understood, an assessment needs to be made, using predefined criteria (like: context, relevance, originality etc.).</li>
<li><strong>Formulating constructive feedback</strong>. And when the assessment is made, this needs to be relayed back to the organisation and author. And especially this is an area where I continue to learn. It’s harder than you think to write something that can be used by the recipient as input to improve upon.</li>
</ul>
<p>Happy learning! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0082019-11-12T21:00:00+00:002019-11-12T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-12:/WhatIHaveLearnedToday-008.html<p>The power of refactoring</p><p><img alt="image of code snippet that is used in this article" src="http://peetronics.com/images/behave-context.png" width="80%"></p>
<h1>Refactoring</h1>
<p>I’m no stranger to code refactoring. It is a well adopted practice within our team. It has many benefits. Read <a href="https://www.cuelogic.com/blog/what-is-refactoring-and-why-is-it-important">this blog post</a> if you want to know why. </p>
<p>Some benefits not listed in the article above: </p>
<ul>
<li>Get a better understanding of your code-base</li>
<li><strong>Learn</strong> about the coding practices your colleagues use</li>
<li>Get to know about used frameworks, modules and packages</li>
</ul>
<p>And that is what happened today; I <strong>learned</strong> more about a framework we use. </p>
<h1>Behave</h1>
<p>In our Python test automation framework we use <a href="https://behave.readthedocs.io/en/latest/index.html">Behave</a>, a Behaviour Driven Development implementation in Python. It has a concept of <a href="https://behave.readthedocs.io/en/latest/context_attributes.html">context</a> as a way to pass around data. We do use <em>context</em> in our framework but not to its fullest potential. </p>
<p>While working on an area of our code-base today, I noticed that the way we deal with (global) parameters is quite inconsistent and convoluted. Knowing about behave context I took the opportunity to read a bit more about the workings and see if this could be used as a replacement of global variables. </p>
<p>One hour later, I pushed a PR which gets rid of the messy variables implementation and replaces it with the more elegant context concept. See the following code snippet as a small example: </p>
<div class="highlight"><pre><span></span><code><span class="n">user_data</span> <span class="o">=</span> <span class="p">(</span><span class="n">get_user_data</span><span class="p">(</span><span class="n">context</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">userdata</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="err">“</span><span class="o">************************</span> <span class="n">context</span> <span class="n">data</span> <span class="o">************************</span><span class="err">”</span><span class="p">)</span>
<span class="n">context</span><span class="o">.</span><span class="n">allow_fail</span> <span class="o">=</span> <span class="n">get_user_data_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">,</span> <span class="err">“</span><span class="n">ALLOW_FAIL</span><span class="err">”</span><span class="p">,</span> <span class="n">ALLOW_FAIL</span><span class="p">)</span>
<span class="n">context</span><span class="o">.</span><span class="n">app_name</span> <span class="o">=</span> <span class="n">get_user_data_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">,</span> <span class="err">“</span><span class="n">APP_NAME</span><span class="err">”</span><span class="p">,</span> <span class="n">APP_NAME</span><span class="p">)</span>
<span class="n">context</span><span class="o">.</span><span class="n">response_times</span> <span class="o">=</span> <span class="n">get_user_data_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">,</span> <span class="err">“</span><span class="n">RESPONSE_TIMES</span><span class="err">”</span><span class="p">,</span> <span class="n">RESPONSE_TIMES</span><span class="p">)</span>
<span class="n">context</span><span class="o">.</span><span class="n">configuration_file</span> <span class="o">=</span> <span class="n">get_user_data_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">,</span> <span class="err">“</span><span class="n">CONFIGURATION_FILE</span><span class="err">”</span><span class="p">,</span> <span class="n">CONFIGURATION_FILE</span><span class="p">)</span>
<span class="n">context</span><span class="o">.</span><span class="n">dev_mode</span> <span class="o">=</span> <span class="n">get_user_data_value</span><span class="p">(</span><span class="n">user_data</span><span class="p">,</span> <span class="err">“</span><span class="n">DEV_MODE</span><span class="err">”</span><span class="p">,</span> <span class="n">DEV_MODE</span><span class="p">)</span>
</code></pre></div>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0072019-11-11T21:00:00+00:002019-11-11T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-11:/WhatIHaveLearnedToday-007.html<p>How Much is 12,000 satellites?</p><p><img alt="3,600 dots representing the number of seconds in a hour" src="http://peetronics.com/images/seconds-in-an-hour.png"></p>
<h1>How Much is 12,000 satellites?</h1>
<p>What I have <strong>learned</strong> today was triggered by a Slack message. Somebody posted about <a href="https://www.mynews13.com/fl/orlando/news/2019/11/09/spacex-launch-starlink-satellites-falcon-9-rocket">The Spacex launch today</a> that will bring 60 Starlink satellites into orbit with the earth. These 60 are part of a plan to bring a total nearly 12,000 of these satellites into space. So the question was asked how this would even look like. Which got my brain working on ways to comprehend large numbers… </p>
<h1>Mechanisms to comprehend large numbers</h1>
<p>I’ve come across several ways to try to get a grasp on big numbers. One of the easiest ones is to <strong>visualise</strong>. <a href="https://waitbutwhy.com/2014/11/from-1-to-1000000.html">This article</a> simply represents numbers with dots. For example, the following dots represent the number of living languages in the world: </p>
<p><img alt="6,500 representing the living languages in the world (2,000 with under 1,000 speakers)" src="http://peetronics.com/images/languages-541x600.png"></p>
<p>And <a href="https://lime.link/blog/visualizing-crowd-sizes/">this link</a> gives a nice visual overview of different crowd sizes (<em>note that I came across this website by reading another blog post last Saturday but can’t find it anymore</em>). 10,000 people (closest I could find to 12,000 satellites): </p>
<p><img alt="10,000 in a sports arena watching tennis" src="http://peetronics.com/images/10000.jpeg" width="80%"></p>
<p><img alt="Book cover of Humble Pi, by Matt Parker" src="http://peetronics.com/images/humble-pi.jpg"></p>
<p>Another way to comprehend is to <strong>transform</strong> a number into something else. I picked this up when I read <a href="https://www.amazon.co.uk/Humble-Pi-Comedy-Maths-Errors/dp/0241360234">Humble Pi, by Matt Parker</a>. He was once asked in an interview how big £1 trillion of debt is. Just simply saying “it is really big” doesn’t work. So as an example he transformed it into seconds:</p>
<ul>
<li>A <strong>million</strong> seconds translates to <strong>11 days</strong> and 14 hours</li>
<li>A <strong>billion</strong> seconds is over <strong>31 years</strong></li>
<li>A <strong>trillion</strong> seconds is well after the year <strong>33,700ce</strong>(!)</li>
</ul>
<p>Another example of transformation is done in the following video, where the history of the universe is compared with a row of dominoes. Out of 13,799 dominoes, spanning from the big bang to now, only the last 3 represents where human life takes shape. Let that sink in for a moment… </p>
<p><span class="videobox">
<iframe width="640" height="390"
src='https://www.youtube.com/embed/ObngtuPFI8A'
frameborder='0' webkitAllowFullScreen
mozallowfullscreen allowFullScreen>
</iframe>
</span></p>
<h1>Conclusion</h1>
<p>So, next time when you see a big number, or have to imagine what an x amount of y looks like, try to <strong>visualise</strong> or <strong>transform</strong>.</p>
<h1>Update</h1>
<p>Just after I posted this, Lifehacker released an <a href="https://lifehacker.com/use-wolfram-alpha-to-conceptualize-giant-numbers-1839775534">article</a> completely in line with the above. They point out you can use Wolfram Alpha to help you conceptualise large numbers. Thanks for the tip 😄 </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0062019-11-10T21:00:00+00:002019-11-10T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-10:/WhatIHaveLearnedToday-006.html<p>I tried a new recipe</p><p><img alt="picture of Mediterranean fish parcels" src="http://peetronics.com/images/fish-parcel.jpg"></p>
<h1>Cooking</h1>
<p>Another thing I like to do in the weekend is trying out new recipes. Cooking for me is a great way to get your mind away from all the hustle and bustle of work. </p>
<p>I don’t consider myself a culinary wizard, but I can put a decent tasty meal on the table. I haven’t got enough confidence in the kitchen to cook completely <em>recipe-free</em>. Rather give me the instructions which I will then follow step by step. Once I made a recipe a few times, I might venture in changing things up a bit. </p>
<p>What I want to highlight here is that cooking also is an opportunity to learn. Learning about flavours, learning about timing, learning about kitchen-skills. </p>
<p>I feel strongly about learning things not directly related to your work as I believe it helps to keep a balance. And cooking for me is a great way for doing that. </p>
<h1>Today’s meal</h1>
<p>My partner and I try to have a balanced diet. One of the things that can’t be missed from that is fish, which we eat at least once a week. And that is what was on the menu today. I found a recipe for <a href="https://www.bbcgoodfood.com/recipes/2383/mediterranean-fish-parcels-">Mediterranean fish parcels</a>. Locked myself up in the kitchen, music on, poured a drink and cooked this tasty meal. Enjoy! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0052019-11-09T21:00:00+00:002019-11-09T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-09:/WhatIHaveLearnedToday-005.html<p>Using custom searches in the browser bar</p><h1>Weekend learning</h1>
<p>Although it is the weekend, it doesn’t mean you stop learning. I’ve set myself the challenge to blog every day for a month about a thing I have learned and Saturdays and Sundays are no exceptions on that. </p>
<p>One of the <em>rituals</em> I have in the weekend is to catch up on the list of saved websites I’ve aggregated over the week. These come from various sources, like:</p>
<ul>
<li>RSS feeds I follow</li>
<li>Podcasts I listen to</li>
<li>Something mentioned by a friend or colleague</li>
<li>What I come across on social media</li>
</ul>
<p>The app I use for that is <a href="https://app.getpocket.com/">Pocket</a>. It has got a browser extension for Chrome and when installed on your phone, you can share links to it from other apps. </p>
<p>A lot of the collected links are things to read, which I try to do and then delete the link, or file it away if I want to go back to it in future. </p>
<p>Other things I tend to collect are mentions of software, Python packages and similar. These quite often involve downloading them and have a play with it. Resulting in either:</p>
<ul>
<li>Nah, not for me, delete</li>
<li>This might come in handy for a future project, file away for later</li>
<li>Wow this is awesome, keep using it</li>
</ul>
<p>The thing I learned today falls in the latter category.</p>
<h1>Enhanced custom searches in the browser bar</h1>
<p>I already use custom searches in the browser bar. It is a quick way to search specific sites. For example, with typing <code>wiki <space></code> in the search bar, followed by a search term I can directly search in Wikipedia. </p>
<p><img alt="Example of custom searches in Chrome" src="http://peetronics.com/images/custom-searches.png"></p>
<p><a href="https://lifehacker.com/five-custom-searches-you-should-enable-in-your-browser-5971715">The article</a> from Lifehacker I read this morning explains how to take these custom searches to the next level. I tried a few things from it and have now expanded the search bar of my browser with the following keywords:</p>
<ul>
<li><strong>map</strong> — gives directions on google map from my home address</li>
<li><strong>trans</strong> — translates from English to Dutch</li>
<li><strong>vert</strong> — translates from Dutch to English</li>
<li><strong>ggl</strong> — does a google search excluding results from Stackoverflow</li>
</ul>
<p>Probably there will be more clever searches I can add… </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0042019-11-08T21:00:00+00:002019-11-08T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-08:/WhatIHaveLearnedToday-004.html<p>Putting pairwise testing into practice</p><p><img alt="number_of_permutations = 3 * 6 * 8 * 2 * 13 * 2 * 2 * 2 - print(number_of_permutations) - 29952" src="http://peetronics.com/images/permutations.png" width="80%"></p>
<h1>Pairwise Testing</h1>
<p>I have learned about <a href="https://www.softwaretestinghelp.com/what-is-pairwise-testing/">pairwise testing</a> (or sometimes called all-pairs testing) in the past as being a good test specification technique to come up with a meaningful and manageable set of test cases. Until now I have experimented with it but never used it in anger. </p>
<h1>All-pairs in practice</h1>
<p>At the moment I am working on a test for a complex feature of the system pictured below: </p>
<p><img alt="Optos Silverstone; ultra-widefield retinal imaging device with integrated, UWF-guided swept source OCT." src="http://peetronics.com/images/indy-right.png"></p>
<p>In a workshop session this morning I gathered subject matter experts, and defined a set of parameters relevant for the feature under test. And there are a lot of them, with each a number of possible values. </p>
<p>Getting a full coverage with all possible permutations would have resulted in <strong>29952 test cases</strong>. For reference, with the way the system works (keep complex in mind) it takes 1/2 an hour to fully run and analyse 1 test case. This would take almost 2 years(!) back-to-back testing to get through. </p>
<p>With using the test specification technique of pairwise testing, I managed to reduce the set of test cases to 62. That is a big reduction but it doesn’t compromise on coverage. With execution these tests (still 31 hours but it only will be run over the weekend) there is confidence this feature will be adequately covered. </p>
<h1>Tools</h1>
<p>To make life easier applying pairwise testing it is highly recommended to use a tool. There are various ones out there; a list of them are mentioned in this <a href="https://www.softwaretestinghelp.com/what-is-pairwise-testing/">article</a>. </p>
<p>The one tool I particularly like is the Pairwise Independent Combinatorial Tool <a href="https://github.com/microsoft/pict">(PICT)</a> from Microsoft. (turns out they do make useful products 😉). The mean reason I like is, that it is one executable which completely runs from the command line. It has got a lot of flexibility and executes quick. </p>
<p>A command line tool might not be your cup of tea; have a look at the other tools 😃. </p>
<p>Happy pairwising! </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0032019-11-07T21:00:00+00:002019-11-07T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-07:/WhatIHaveLearnedToday-003.html<p>Is about project Galahad; A European Union funded project to improve screening and basic diagnostics for glaucoma</p><p><img alt="Screenshot of Project Galahad video" src="http://peetronics.com/images/galahad.png" width="80%"></p>
<h1>Show and Tell</h1>
<p>Today I attended a <em>show and tell</em> session at work. It is a monthly 1-hour event with 20 minute time-slots where people from all departments in the organisation can tell about what they are working on. </p>
<p>These sessions are a great way to <strong>learn</strong> about new things that are not necessarily directly related to your day-to-day job but are fundamental to the context you work in. The information <em>will</em> come in handy at some point! </p>
<p><img alt="Vertical transfoveal OCT of an eye with epiretinal fibrosis Image courtesy of Rigshospitalet (Copenhagen)" src="http://peetronics.com/images/oct.png"></p>
<h1>Project Galahad</h1>
<p>The topic of today’s session was about <a href="https://galahad-project.eu/">project Galahad</a>, which main objective is to improve screening and basic diagnostics for <a href="https://www.nhs.uk/conditions/glaucoma/">glaucoma</a>. The project is funded by the European Union (better together), and <a href="https://www.optos.com/">Optos</a>, the company I work for is part of the consortium. That makes me proud to work for this company, but that aside. </p>
<p>I must admit that a lot of the information that was presented goes way above my head; we’ve got some really clever people working at Optos, and sometimes I feel I’m the less clever one 😏. </p>
<p>But I feel it is important to be exposed to information that you might not immediately grasp. It exposes areas where there is <strong>room for more learning</strong>. And it also will add to your baggage of knowledge that you can apply in your work, and beyond. </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0022019-11-06T21:00:00+00:002019-11-06T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-06:/WhatIHaveLearnedToday-002.html<p>Today I learned a new word, flinciple.</p><p><img alt="flinciple - noun - A fundamental truth or proposition that serves as the foundation for a system of belief, behaviour or for a chain of reasoning; but which is able to be modified to respond to altered circumstances" src="http://peetronics.com/images/flinciple-definition.png" width="80%"></p>
<p>I was chatting with my partner earlier and the subject came to <em>principles</em>, and that sometimes it needs to be possible to deviate from them if circumstances call for it. In other words, be able to apply principles in a <em>flexible</em> manner. </p>
<p>And then there it was; she produced the most wonderful new word I’ve heard in ages: <strong>flinciple</strong> (after discarding other candidates like <em>flexiple</em> and <em>princible</em>). </p>
<p>The context in which it was used is about cooking vegetarian: </p>
<div class="highlight"><pre><span></span><code><span class="n">In</span> <span class="n">principle</span> <span class="n">I</span> <span class="n">only</span> <span class="n">cook</span> <span class="n">fish</span><span class="p">,</span> <span class="n">vegetarian</span> <span class="ow">or</span> <span class="n">vegan</span> <span class="n">meals</span><span class="p">,</span>
<span class="n">but</span> <span class="k">if</span> <span class="n">circumstances</span> <span class="n">require</span> <span class="n">I</span> <span class="n">can</span> <span class="n">be</span> <span class="n">flexible</span> <span class="ow">and</span> <span class="n">adjust</span> <span class="n">accordingly</span><span class="err">!</span>
</code></pre></div>
<p>Surely the concept of having flexible principles can apply to the workplace as well. I’m definitely going to start using it. </p>
<p>a word of two other words smashed is called a <a href="https://en.wikipedia.org/wiki/Portmanteau">portmanteau</a>. I do like a good portmanteau, and flinciple is a beautiful specimen. It conveys in a single word what otherwise would need two words. Portmanteaus are omnipresent in the English language and new ones appear constantly. Here are some examples: </p>
<ul>
<li>Spork — spoon & fork</li>
<li>Fortnight — fourteen & nights</li>
<li>Internet — international & network</li>
<li>Flextension — flexible & extension</li>
<li>Brexit — Britain & exit (terrible prospect)</li>
</ul>
<p>Go and start using <em>flinciple</em> yourself in your language. Or even better, try to come up with some of your own. </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0012019-11-05T21:00:00+00:002019-11-05T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-05:/WhatIHaveLearnedToday-001.html<p>Use a keyboard shortcut to start a windows application</p><h1>TL;DR</h1>
<p>Right mouse click on an application shortcut (in Windows) and there you can assign a key-binding for quick launching the application. </p>
<p><img alt="Screenshot of the windows shortcut configuration window" src="http://peetronics.com/images/notepad++.exe - Shortcut Properties 2019-11-05 20.47.37.PNG"></p>
<h1>A bit of personal history</h1>
<p>When I first started to use computers in the early 80’s, there was no such thing as a mouse. The only input device to use was the keyboard. And I liked it. It was quick, minimum arm movement, and definitely no <a href="https://en.wikipedia.org/wiki/Repetitive_strain_injury">Repetitive Strain Injury</a> (RSI).<br>
Once I got my first computer with a mouse (an Amiga 500 if you want to know), I slowly got into the habit of using the mouse more often. As that was the way to navigate a Graphical User Interface isn’t it?<br>
After I sold my Amiga to my brother (which I sometimes regret), I bought a personal computer. That was still in the MS-DOS days. But, it had a mouse, which I used wherever I could of course. And once we moved into the windows-era there was no turning back.<br>
Till I started working… with the (over-)excessive use of the mouse I developed a bit of RSI. And that was the trigger for me to start using the keyboard in favour if the mouse, where possible. </p>
<h1>Enter the tricks ‘n tools</h1>
<p>To help me battle my <em>mouse-addiction</em> I started to use tricks and tools to replace common mouse actions. Here’s a short overview of the things I picked up over the years:</p>
<ul>
<li><code><ctrl>-<c></code>, <code><ctrl>-<v></code> and more. The collection of the obvious keyboard shortcuts.</li>
<li>tab-complete. On the command line, pressing tab will auto-complete path- and file-names for you. Saves a lot of typing.</li>
<li><code>arrow-up</code>, <code>arrow-down</code>. On the command line, this will go through your previously entered commands.</li>
<li><a href="https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=en">Vimium Chrome extension</a>. In Chrome I use VIM key-bindings to navigate through web pages, without having to use a mouse.</li>
<li><a href="https://www.autohotkey.com/">Autohotkey</a>. A tool to create your own key-bindings. For example I use it to start applications and to control audio (volume up/down, stop/pause/play).</li>
</ul>
<h1>But what have you actually learned today?</h1>
<p>So, today I had to change something in an application shortcut. Opened a file explorer (<code><winkey>-<e></code>) and right-clicked (mouse…) on the shortcut.
Did the thing I had to change and then I noticed there’s a 'shortcut key' field you can set.
Gave it a try with <code><ctrl>-<alt>-<n></code> for Notepad++ and it works! </p>
<p>Step-by-step:</p>
<ul>
<li>Find the (or create an) shortcut for the application you want to create a key-binding for</li>
<li>Right mouse click on the shortcut</li>
<li>Click in the shortcut key field</li>
<li>Use a combination of <code><ctrl>-<alt>-</code> with any other key pressed simultaneously. You could use <code><ctrl>-<shift>-</code> as well if you want</li>
<li>Press <code><enter></code> (don’t click ok with your mouse)</li>
</ul>
<p>This technically means you don’t have to install third-party tools to be able to launch applications from the keyboard.<br>
I probably will keep using Autohotkey as that’s already set up the way I want (and has got the ability to export / import your bindings).<br>
But I can imagine there are situations where it is not allowed to install additional applications, and then the built in windows key-bindings can come in handy.</p>
<h1>To be noted</h1>
<ul>
<li>I’ve never used MacOS in anger and I’m not using Linux in a professional capacity (though I use that OS for nerdy private projects). So the bulk of my computing experience is on the Windows OS.</li>
<li>Although I’m using VIM key-bindings in the browser I’ve never really got into using VIM itself as my main text editor. Maybe I will set another challenge in the future, forcing myself to use VIM straight for a period and then maybe it will stick.</li>
</ul>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em> </p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>What I Have Learned Today - #0002019-11-04T21:00:00+00:002019-11-04T21:00:00+00:00Peet Michielsentag:peetronics.com,2019-11-04:/WhatIHaveLearnedToday-000.html<p>A challenge to share on a daily basis what I’ve learned. It is important that you keep learning. Recognise that you learn something every day; However the small it is. I’m going to set myself a challenge to share on a daily basis what I’ve learned that day.</p><h1>99 Things You Can Do To Become A Better Software Tester</h1>
<p>Back in August 2018 a question was asked on the Ministry of Testing website on <a href="https://club.ministryoftesting.com/t/99-things-you-can-do-to-become-a-better-software-tester/17923">99 Things You Can Do To Become A Better Software Tester</a>. I contributed to that as follows:</p>
<p><img alt="image of thread response; transcript below this image" src="http://peetronics.com/images/never-stop-learning-club.PNG"></p>
<div class="highlight"><pre><span></span><code><span class="n">Never</span> <span class="n">stop</span> <span class="n">learning</span><span class="o">.</span> <span class="n">At</span> <span class="n">the</span> <span class="n">end</span> <span class="n">of</span> <span class="n">every</span> <span class="n">day</span> <span class="n">I</span> <span class="n">ask</span> <span class="n">myself</span> <span class="n">the</span> <span class="n">question</span><span class="p">:</span> <span class="err">“</span><span class="n">what</span> <span class="n">have</span> <span class="n">I</span> <span class="n">learned</span> <span class="n">today</span><span class="err">?”</span>
<span class="n">No</span> <span class="n">matter</span> <span class="n">how</span> <span class="n">small</span><span class="p">,</span> <span class="n">every</span> <span class="n">day</span> <span class="n">there</span> <span class="ow">is</span> <span class="n">something</span> <span class="n">you</span><span class="err">’</span><span class="n">ve</span> <span class="n">come</span> <span class="n">across</span> <span class="n">that</span> <span class="n">you</span> <span class="n">didn</span><span class="err">’</span><span class="n">t</span> <span class="n">know</span> <span class="n">the</span> <span class="n">day</span> <span class="n">before</span><span class="o">.</span>
<span class="n">All</span> <span class="n">these</span> <span class="n">little</span> <span class="p">(</span><span class="ow">and</span> <span class="n">big</span> <span class="n">things</span> <span class="k">for</span> <span class="n">that</span> <span class="n">matter</span><span class="p">)</span> <span class="err">“</span><span class="n">learnings</span><span class="err">”</span> <span class="n">will</span> <span class="n">make</span> <span class="n">you</span> <span class="n">a</span> <span class="n">better</span> <span class="n">tester</span><span class="o">.</span>
</code></pre></div>
<p>Definitely give that link above a read. There is a lot to be learned from that thread :-). </p>
<h1>More on learning</h1>
<p>Learning doesn’t have to be explicit and by doing the mental exercise of asking myself <em>what I have learned today</em> I “force” myself to also recognise the implicit learning. </p>
<p><img alt="quote: “Once you stop learning, you start dying” -Albert Einstein-" src="http://peetronics.com/images/lifelong-learning1.jpg"></p>
<p>By far I’m not an expert in this field and I speak solely from my own experience. However, I do read the occasional thing, and this <a href="https://blueprintleadership.com/just-keep-learning-just-keep-learning/">article</a> links very well with what I’m talking about here. </p>
<p>As well as reading, I’m an avid podcast and audiobook listener. In the latest episode of <a href="http://theguiltytester.libsyn.com/the-guilty-tester-episode-12-testbash-manchester-unexpo-2019-part-1">The Guilty Tester Podcast</a> (at time of writing), Dave Duke (<a href="https://twitter.com/theguiltytester">@theguiltytester</a>) talks about his recent attendance of TestBash Manchester 2019. He had a stand at the UnExpo where he collected things what people felt guilty about in testing. It touched on learning and here is some of the advice from this podcast, but make sure to subscribe and listen to the whole episode as well: </p>
<div class="highlight"><pre><span></span><code><span class="n">Don</span><span class="err">’</span><span class="n">t</span> <span class="n">feel</span> <span class="n">guilty</span> <span class="n">about</span> <span class="n">how</span> <span class="n">you</span> <span class="n">want</span> <span class="n">to</span> <span class="n">learn</span><span class="o">.</span>
<span class="n">Just</span> <span class="n">learn</span> <span class="n">something</span><span class="p">,</span> <span class="n">even</span> <span class="n">it</span> <span class="n">might</span> <span class="n">turn</span> <span class="n">out</span> <span class="n">to</span> <span class="n">be</span> <span class="n">the</span> <span class="n">wrong</span> <span class="n">thing</span><span class="o">.</span> <span class="n">This</span> <span class="ow">is</span> <span class="n">by</span> <span class="n">far</span> <span class="n">always</span> <span class="n">better</span> <span class="n">than</span> <span class="n">learning</span> <span class="n">nothing</span> <span class="n">at</span> <span class="nb">all</span><span class="o">.</span>
</code></pre></div>
<h1>The challenge</h1>
<p>I attended the same conference as Dave Duke. One of the presenters was <a href="https://twitter.com/lisihocke">@lisihocke</a>. She sets herself a personal challenge every year and at the conference she talked about her challenge to become more <em>code confident</em>. </p>
<p><blockquote class="twitter-tweet" align="center"><a href="https://twitter.com/lisihocke/status/1179783401139818498">Tweet of lisihocke/1179783401139818498</a></blockquote></p>
<p>Inspired by Lisi and her great talk I wanted to set my own challenge. </p>
<p>As said, asking myself the question (as per the title) has been mainly a mental exercise, and so far that has been perfectly fine. But now I want to get it out of my head.</p>
<p>As a challenge I will start to share the outcome of my daily mental exercise of asking what I have learned today with the whole wide world. Starting tomorrow (05–11–2019), I will post on Twitter a link to this Medium blog with what I have learned. Initially I will do this daily for a month and then take stock. I will see if I stick with the format, keep up with the frequency… or maybe stop altogether :-(. </p>
<p>Items to be expect can be of all sorts. Work related, testing, personal, hobby, culinary, politics, and who knows what. So as you can see, much more than testing alone. </p>
<p>For now I will use Medium as a blogging platform. I’ve got plans for something different, but that will be a whole different challenge. More on that in the future (thanks Lisi!). </p>
<p>Look out for the hashtag #WhatIHaveLearnedToday </p>
<p><em>This post is part of a series of articles about “What I Have Learned Today”; acknowledging every day the thing I have learned. Feel free to read the other posts. all opinions in this article are my own and not necessarily represent the views of my employer.</em></p><script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>