Category Archives: Programming

The Clokie Project

In December 2018 Katherina Clokie, a known speaker, announced to look more outside the Tester community.

My reaction

Amazement, grief.

After a few months I realised that it was not a bad idea.

My change of heart

My wife has some really tough questions I have to answer. The biggest one is:
“What did you learn?”
Right behind each test conference.

So I reduced my number of test conferences and number of hours at the conferences. There are still some really good conferences like TestBash, Agile Testing Days, and European Testing Conference with plenty of awesome few insights.

I attended a lot of other conferences and after a while I would be just happy to pick up something new.

There is more to gain at a conference if you only know the basics. With more than 20 years of experience it is a way less.

It was time for my Clokie project.


Time for a small flashback to October and November 2018. I already had looked outside the Test Community.

Here are some notes from Infosecurity 2018:
In case of doubt treat data as personal data. Zip code and house number are personal data.

In EU there are several privacy government organisations, but they have different focus on privacy issues.

Steps in case of data breach:
Secure proof
Look in the logging
Determine scope
Communicate
Remediate
Learn

A change of behaviour can indicate an identity theft.

The way of accessing data in the cloud is the weakest link.

In GDPR, the European Privacy Law, a penalty is used to let the company feel the pain instead of putting a company out of business.

GDPR is not applicable for dead persons. But there can be other laws which are applicable for dead persons.

Meet the expos

How to attract people to an expo? Goodies, free access, and talks.

Some Healthcare and ICT notes of me in random order
Anonymize pictures, determine objects of interest, and annotate them using smart software.

First step is vision and then involve stakeholders like care providers, health insurers, and suppliers.

Patient panel discovered that 60 % of the patients want a personal health environment.

Care providers like hospitals and doctors are stimulated. They get money on basis of results and not on actions taken.

Law of customer’s rights. E.g. A care provider should only get information which is needed for the care to be provided.

Misconfiguration is becoming the weakest point in defense.

Meet the meetups

010dev is a small meetup in Rotterdam. It has Dutch characteristics like gezellig (cosy) and Buy Own Drink. It is in a pub after all. Once in a whole while it is in a company.

During my meetups there are no lectures, but I still listened a lot. As a tester was I am able to follow the small talk and tech talk?

In a few hours a lot of subjects passed. Programming languages, projects, and new trends were discussed. Somehow I could understand bits and pieces.

Developers.nl had a more traditional format for the meetup: free drinks, free meals, and free lectures.

I went to two meetups. The first one was abstract. It was about architecture. What are good guiding principles to set up a complex environment?

The second meetup was about vue.js. This was a challenging one. I had only basic knowledge about JavaScript and HTML. So I read some ebooks about vue.js which are based on these languages.

This talk was more understandable for me. The speaker shared some tips about vue.js.

How to speed up the performance by loading the needed content in 2 stages? First the necessary stuff was loaded for the web page. The rest followed while the user had a first impression of the page.

Looking under the hood

My blog has been made with WordPress. One day I was blogging and a conference in Rotterdam was announced in the dashboard.

There were some particular benefits: 25 Euro for a ticket including lunch, an environment friendly environment, meeting other WordPress users, short traveling distance.

As a tester I had not had a chance to attend a talk about accessibility. I honestly don’t understand this.

This conference offered more talks about this subject than I could process. I skipped the last ones.

Another interesting subject was security headers. It is possible to make WordPress secure. I was thinking that a header only contained some information.

For the interested reader have a look at my conference digest mind map.

Finishing thoughts

Retro: did I learn more than previous years?
Yes.

But what did I pick up in those previous years?
Mostly subjects related to programming and law. Less about testing.

Just made me think.


On Twitter Trish Koo placed a thought provoking tweet. In order to become better in software development  you have to learn both testing and programming.

A Bit More Responsive

Years ago some websites looked terrible on my smartphone. They looked like websites viewed from 6 meters distance.

The first time I visited my blog with my smartphone, I was really anxious: “Does it look right?”

5 seconds later “What did I worry about?”

Disclaimer

I am not a legal expert. So please have a look at my used sources. Or contact a legal expert.

I am just a tester finding test ideas about accessibility. Thanks for joining in advance.

Some test responsiveness stories

My first tablet app to be tested was intended for an iPad. I had a Windows PC instead of the tablet. This was not right.

My solution was to install Safari and let it emulate an iPad. In other words: “I know you are a Windows machine. Now you function like an iPad.”
It sounds like a hypnosis act.
“What did I worry about?”

This work around did not stop me to demand an iPad. There is nothing like the real thing.

Responsive web design is basically about creating the best possible user experience in the assigned space on the screen.

This blog looks good on a mobile device and a laptop. The same features are shown only in a different order and in a different way, but it feels the same. Really responsive.

The last years I learned CSS or Cascading Style Sheets. CSS determines how the websites looks. It is even possible to change the locations of web elements.

If I look to this website in a browser on a laptop, I can make the window smaller by resizing the window. The effect is that elements of the web page are resized or relocated or not shown any more.

During a debriefing a developer showed me this resizing trick.
Resize and look for bad things like hidden buttons or partially shown texts.
It is a fast way for the first impression.

Can not install on my machine

All that resizing stuff is not an exact science and Safari … cannot simply be installed on a company laptop because of a company policy. So I did a bit of research. If you don’t mind.

Firefox has a special feature Dev Tools. It can be accessed using the F12 key. In the upper right corner of this sub window there is a button with two rectangles, which look like a smartphone and a tablet.
A green eclipse marking a button with a smartphone and a tablet in the menu bar of Dev Tools!

This opens a lot of options to test smartphones and tablets.

It also support the screen orientation like portrait and landscape.

Just look to this website on a mobile phone while holding it in portrait mode. Then change it to landscape. In portrait mode only the headers of my last blog posts are shown, in the landscape mode the last complete blogs posts are shown. Courtesy of my website software.

Chrome and Edge also have Dev Tools which can be accessed using F12 key. Both Dev Tools windows have an emulator tab for mobile devices.

Concerning responsiveness

One of the biggest search engines decided to give a higher ranking to mobile friendly websites. So support for small screens can give a positive boost to let a user find a website.

Most people have a PC or laptop with 1 screen. It is sometimes tedious to switch application. So I tend to resize the applications to fit more of them on my screen. My preference is squeezed and usable.

Another thing for responsiveness is language. Some customers prefer to use a website or application in their own language. OK is translated to OK, but Cancel to Annuleren or Annullieren. So the button should be resized after translation.

Responsiveness is not only about reshuffling web page elements. It is also about resizing the web page elements in case of bigger fonts.

Suppose I have bad eyes, then I need to make fonts bigger so that I can actually read the text. Pressing the Ctrl key and the + key at the same time will enlarge the text in browsers and Windows applications.

Problem solved?
No, I am so sorry.

As a user I have to scroll a lot. It is like watching a picture which is split over three different screens. I have to change my seat to get the whole picture.

In 2024 this could have some legal consequences in Europe.
In Annex 1 of the European Accessibility Act “flexible magnification” is mandatory for specific commercial websites.

In case of American customers for an e-commerce website there is a law already in place at this very moment. Americans with Disabilities Act (ADA) explicitly points to  the WCAG or Web Content Accessibility Guidelines on page 196 of Americans with Disabilities Act Title III Regulations.

In WCAG  also attention must be paid to screen size and orientation.

One more chat

“How would you like your website?”
“Responsive please.”
“No problem.”
“Thank you, my dear.”
“You are welcome, grandma.”

Link Missing In Action

“Know the ways of all professions”
– Miyamoto Musashi

UX designer

A few blog posts ago I told about my attempts to make this very blog more accessible. I just walked my talk.

For people who need a story:
As a user with no or bad view I want headers tagged as headers, so that the screen reader can read the headers differently aloud.

Web master

I changed the look of the headers in a lot of blog posts. I went in a flow and gained more speed in the process, until …

A small square disappeared. I just did an undo and continued editing.

The next time I let the square disappear, I had already updated the blog post on the web.

Hit the OK, Jack.
[on the melaody of “Hit the road, Jack”]

This was not good for my user journey. I did not want to lose a user by a missing link. Just stick around.

Tester

There was an easy trick for finding missing links. On the internet there were free websites and add ons for browsers available.

Marketeer

As a marketeer I had some problems with broken link reporters. A reporter had to hit every page and every link in it. So the number of hits would increase significantly.

Even worse there are web pages referring to other web pages. So some pages are counted double. Then there are categories and months referring to pages. So some pages are counted more than twice.

This would hide the real traffic in my daily reports. But this is not a company web site. Otherwise I should have to add a note about a maintenance period. For an auditor. So I could skip this role.

Tester again

First pick of a broken link service stopped half way. The second looked promising, but it had terms and conditions.

Legal expert

Now I was curious. I clicked on the link and landed on a page with lots of legal sentences. Must be American thing.

I tried to distil the information. The most important message was that the service was provided as is. There were no financial consequences for the service providers.

I have a website which does not provide me any income.
So what was I waiting for?

Enter my website and show my broken links you can find.

Author

Now it was the turn for the author to have a fix.
Yeah. Sure.

The first broken link was ejc2008.de. This is short for European Juggling Convention 2008 in Germany. More than 10 years ago. This must be an old-timer.

I entered the URL in the browser and got an error message. After 10 years the website was taken offline. But I needed a link.

Then I looked for internet archive wayback machine in my search engine. This website stores all versions of visited websites. I entered ejc2008.de and found my website.

I picked a link to 2019 copy and replaced the link in the blog posts. This way people can still read about a convention which was visited by more than 3,000 people sharing the fun of juggling.

In my list of broken links I found a link to a Let’s Test conference in 2015. I had a better link available, so I just updated the link. A similar situation for the first TestBash conference in the Netherlands.

It was a simple test tool. No need to switch to tester mode.

Another run of broken link test revealed that I had not changed the About me page. Why did they show up now? No idea.
Anyways. Fixed.

3rd test run revealed no more missing links. But something was wrong. I missed the comeback of the square. Popping back in view.

Web master again

In my memory I tried to locate the square. It was during header 6 handling. Then I remembered the use of anchors.

An anchor is a fast way to get a reader at the right place in a blog post instead of the top of the post. This saves the reader some scrolling. Example time.

In my blog post about a test exercise the following code is shown in my code editor:

My last upload before my workshop was for me <a href="http://mindfultester.com/a-look-behind-the-scenes/#disaster">another exercise in exploration</a>.

In my blog post “A look behind the scenes – in Runö” the following code is shown in my code editor:

<h1><strong><a id="disaster"></a>Flirting with disaster</strong></h1>

A broken link checker only checks whether the link exists and ignores the presence of an anchor. So it was an anchor missing in action.

Now I had to check the 90ish blog posts for anchors. Preferably automatically and not clicking all links myself. Please.

If I could only find them. I got a flash of insight. It was possible to find blog posts with a search engine in my Content Management System or website authoring program.

I looked for #. And yes, all blog posts with anchors and links with anchors were listed. Now it was easy to add missing anchors.

Professions

So I was

  • Tester
  • Marketeer
  • Legal expert
  • UX designer
  • Author
  • Web master

I skipped the auditor though.

Tweaking My Blog Accessibility

Accessibility is something which is within my reach. It just took me some years to use it properly.

If you are in a hurry, just go to the Accessibility Tips. If you have more time, you can start with the next paragraph. Next.

Sleight of thought

For my blog I use a default WordPress theme. I try to compensate this standard look and feel with humour. Am I kidding? No.

My first blog post was a struggle with looks. I did not like header 1. The font was too big. I just used bold to make the headers. That looked just right.

During an online computer course I had my first encounter with a screen reader. Users with bad or no view can use this program to read a web page aloud.

My trick for nice headers using bold was backfiring: a screen reader would not recognise them as headers. I really needed some header tag. So I ended up with header 6. This looked good, but it was still not right.

Just a little more

After tensome blogs I started to use the alternative text of the image.

In the attachment details of the pciture the location of the Alt text has been marked!!
In the past this was primarily used for people with slow internet connection. This way they still could get an impression of the webpage, when the text was shown.

In another online course I learned that the screen reader could use this for the communication. Then I read a tweet about using a proper description. So “another mindmap” was not really helpful.

Now I had to compress the information in a picture in a few sentences. That was really tricky, if some graph was involved.
A line graph is shown with three different colours: orange for beginners, green for proficient, and blue for expert. There is a green circle "Skill IQ 135" in the green line, which is connectd to a vertical line with "40th percentile" at the foot!"
The Alt text is as follows:
“A line graph is shown with three different colours: orange for beginners, green for proficient, and blue for expert. There is a green circle “Skill IQ 135” in the green line, which is connected to a vertical line with “40th percentile” at the foot!”

Maybe you noticed the exclamation mark or ! at the end of the text. This is a trick I learned later one: the screen reader reads this text differently aloud.

I even made a blog post with a few screen reader tricks. In this particular post a screen reader user has a big advantage over a user using a normal view.

More exploration from my side

The trick with header 6 was not right. I just knew. A lot of people start counting from 1, programmers from 0. But 6 is not the right exception.

It was a matter of months that I read about a confused screen reader. So I better start from header 1. Which was not my big favourite.

On Twitter I saw a tweet of a user with a bad view complaining about bad contrast. Within minutes another blogger reacted by adjusting his website.

My turn

I did quick check of my blog. It was all black characters on a white background. Then I noticed that my quotes were vague.

Now I had to find a way to change my headers and quotes. Time to explore the Content Management System or software to maintain my blog. Mine is called WordPress.

I first focused on the desired look of my header. I opened my word processor for note taking. My goal was to have my header 1 to look like header 6.

There was a nice tool in my browser: Dev Tools or Developer Tools. In my browser on my Windows machine I pressed F12, scrolled down to a header, selected the element, and saw the properties.

After the selection of header 6 in the upper window the properties of this element are shown in the right bottom window!

I did the same sequence for the quote. In HTML it is called blockquote. Fine with me.

The colour was grayish. I started to play with all kinds of colour codes. Until I realised that “black” was also good description for a font colour.

Dev Tools allowed me to experiment with the properties of the block quote without an intimidating program.

The color of the bloack quote has temporarily been changed to black!

Easy does it.

Now I had two pieces of code. Somewhere I had to fit them in. I started touring the CMS or Content Management System and found Additional CSS using the following path
Dashboard => Appearance => Customize => Additional CSS.

CSS stands for Cascading Style Sheets. Suppose I change the look of header 1 at 1 place. It will affect the look of all headers 1 in my whole blog. Cascading is cool.

I was too early for claiming my victory. Header 1 did not change in the visual editor. I did a preview and it looked right. Okay, found something.

In the left window Header 1 is shown in the Visual Eidotr, in the right window header 1 is shown in the preview!

At the end I had changed all headers 6 to headers 1.
So I only had to modify all the headers of my remaining blog posts. Great. Extra work.

The change of colour in the block quote went smoothly. But I was not pleased with the vertical alignment of the quote. It was too close to the left margin.

On the web I discovered that margin of an object was used to place a rectangle around the quote. Another search led to padding. If I could pad the text in the quote, then it would shift to the right. Left padding was enough.

Additional Css contains: "blockquote { 	color: black; 	padding-left: 5%; }  h1 {     font-size: 16px;     line-height: 1.5; } "!

Because I had only used block quotes for quotes, all quotes in my blog were automatically modified.

Accessibility tips

  • Use header to mark headers instead of making them bold.
  • Add an alternative text ending with an exclamation mark to all pictures.
  • Make the contrast of the colours of the text and background bigger instead of using some gray colour on a white background.
  • Use Additional CSS in WordPress, if you are still not pleased with the look of the elements on the page.
  • Look for other ideas on the Global Accessibility Awareness Day website. For the record it is the third Thursday of May every year.GAAD almost encircled by a powercard attached to a keyboard!

Ending notes

  • I know that there are enough readers willing to check the accessibility of my blog. The status of accessibility on my blog is in progress.
  • At the moment of publishing this post there are still words in bold who look like headers in my first blog posts. There are still pictures without an alternative text and/ or exclamation mark.
  • I would not be surprised that there is still work to be done after all these updates.

Struggling to become a DevOps engineer

Sometimes when I am cooking, a bored kid asks:
“How can I help?”
My answer is:
“You can cut the vegetables.” Or
“You can stir in the pan.”

When my kids were smaller, they loved to make pizza. And even small hands are handy for peeling off the brown layers of an onion.

Pair programming

The Test column was empty for a few days and I had finished all preparations for the items in progress. Was there a way that I as a tester could help the DevOps engineers?

“We can do pair programming.”
I was all ears and eyes. So I joined a programmer while he was coding. Once in a while he said his thoughts aloud.

“Okay, now it is your turn.”
I looked at the DevOps engineer expectantly:
“What do I have to do?”
“Programming”
“I mean: what must I program?”

A short dialogue followed. My knowledge of the development environment was almost zero and I did not know everything about Java.
“You better take a course at Pluralsight.”

Pluralsight and Java

In this company every DevOps engineer and the tester (that’s me) had access to Pluralsight. Courtesy of the employer. Pluralsight is an online course platform with a massive load of courses.

“There is a test to determine how good you are.”
Sure no problem.

A line graph is shown with three different colours: orange for beginners, green for proficient, and blue for expert. There is a green circle "Skill IQ 135" in the green line, which is connectd to a vertical line with "40th percentile" at the foot!"

A lot of readers might think:
“Wow, I would hire Mindful Tester.”
Sorry gals and guys. Up to 40% of all people got this level. This basically means that 2 out of 5 people knew as much about Java as me. Not enough to make complex changes.

Now Pluralsight had another nice feature called learning path. So I dutifully cruised through the courses. I had the advantage of two screens, so I could play the course on 1 screen and program on the other 1.

I had some doubts about the courses. It was like a typing course. Just enter the text and you have a working program. Tada.

Another doubt was the absence of Test Driven Development. I shared my concern with a bright DevOps engineer. He reassured me:
“First focus on the language, then the rest will come.”

The same engineer noted the lack of challenge, so he referred me to project Euler. This free online platform had mathematical / programming problems. Afterwards he reviewed my Java code, which I really appreciated.

Java is great, but my team used more tools to develop programs. So I followed courses on Spring and Maven.

At the end of the course I could get some certificate. With no real practice I had some knowledge. On the other hand my experienced DevOps engineers loved Pluralsight. They set the video speed to double speed and picked up their nuggets of knowledge.

HTML, CSS, and JavaScript

“I noticed that you focused on layout.” my scrum master said.
“We need someone who can design good interfaces. Maybe you should focus on the front-end.”

In this company the front-end was a website. So I had to study HTML or HyperText Markup Language, the basic programming language of web pages. I was familiar with HTML. <b> hello </b> is shown as hello. b is short for bold.

I picked a Pluralsight course for advanced web development. This was both horrifying and clarifying.

So I should have basic JavaScript and CSS knowledge. I picked a course with JavaScript: CSS was needed. I switched to CSS. Only HTML was needed. Phew.

What is CSS or Cascading Style Sheets? In my own words it is a way to style a website in s consistent style. E.g. all the buttons look alike and the web page can respond to different screen sizes.

I followed two courses of CSS. They were practical, so I was able to modify the look and feel of a website without changing the functionality.

Next stop on Pluralsight was JavaScript. In my own words this language is used by browsers on the computers or mobile phone of the users. This programming language basically reduces the traffic between the front-end (e,g, website) and the back-end, where the important things happen like handling a payment.

I was lucky again. There were some basic courses which gave me some practice with JavaScript.

If I look at Pluralsight there are some good courses, but it took time to find them.

Edx.org

The biggest disadvantage of Pluralsight was no examination. My scrum master found an interesting alternative, edx.org.

You could call it freemium. The course and examination are free, but you have to pay a premium for the certificate.
Freemium is “free premium” without ” pre”.

I picked HTML5. The course was for beginners. But I was really happy with all the Pluralsight knowledge obtained. The course gave me a good insight in HTML5, but it also showed its limitations.

Next certificate was CSS Basics. Again I had an advantage and obtained enough points for a certificate.

ReactJS should be possible with my basic knowledge of JavaScript. In my own words ReactJS is a language, which can better interact with users than HTML5. The course was tough and I dropped out.

Edx.org and Pluralsight

Edx.org had the same choice problems as Pluralsight. I had to follow course parts to determine whether there was a click.

A major difference is, that Edx.org courses are time bound. After a deadline the course is closed and only accessible for old students of this particular course.

Edx.org has a slight advantage that it offers up-to-date information. Pluralsight has some old courses. For a Maven course this is tricky. Old versions as shown in the video cannot be used.

Another deadline disadvantage of edx.org is that timing is personal. Several courses acquire 2 hours a week. For someone new to coding this number is too low. Sometimes one block of 2 hours would take me 40 hours. There is also a deadline for a certificate. My advice is first to get the required numbers of points and then buy the certificate.

Once I bought a discounted certificate before getting the required points. Let me write it was not my best investment. There are limitations to be aware of.

Security, privacy, and usability

A DevOps engineer does more things than programming. So I learned about website security, privacy laws, and usability.

In the meantime I acquired some DevOps skills like looking in and understanding log files.

Status update

In April 2018 I got the disturbing news, that I was fired.
No bingo for me.

In case you want to know what I am doing right now.

Thanks for reading. I really appreciate it. Cheers.

Other online courses

This year Trish Koo asked for some online programming courses In the answers there are some online platforms I will try the next time.