​​​​

 

 

Place yourself in the centre of your datahttps://cleverlance.com/en/blog/Pages/PST-interview.aspxPlace yourself in the centre of your data<p>​​In May 2022 Petr Štros gave ​an interview to <a href="https://www.cio.cz/clanky/postavte-se-do-stredu-svych-dat/">CIO​ Business World​</a> telling what's in the store at Cleverlance.  ​​​​​​</p><p> <strong>​​Since 2019, Cleverlance has been part of a group of technology companies united under the Aricoma brand. The original plans were that you would build a large international organization, ready for expansion into foreign markets. How is this vision being fulfilled?</strong></p><p>​This is a huge and key topic for us.<br>The goal of making the company a European technology supplier has not changed at all. We are standing on the threshold of great things, of which Cleverlance will be a significant part.<br><br><strong>What does building a European supplier mean to you?</strong><br><br>There are a lot of American and Asian providers on the market but really big European players are missing.<br><br><strong>Do you mean with the EU flag?</strong></p><p>​​​​​​​​​No, with the European flag. We want to have the flag of Europe, but to do business worldwide,  to be proud that we are from Europe. In the United States, for example, Europe is still considered a mark of quality, so why not take advantage of that? Today we are at the beginning of our European journey. There are currently around three and a half thousand of us in Aricoma, we want to grow at least threefold, only then will we be big enough to operate in the European context. For me personally, it is interesting to take part in it, to give meaning and contours to the expansion. The target customer is Europe, it is our home address, we certainly will not even resist exporting our services to other continents.<br></p><p> <strong>Why is it so important for the growth of a company to be part of a large international group?</strong></p><p>Our business is connected to digitization, which has two parts – customer and delivery. The delivery part is problematic all over the world due to the lack of people who would be able to deliver all the required services within the framework of digitization. It is no longer possible to do it with just one company from the Czech Republic and Slovakia.<br>That is why we are part of Aricoma and why we opened branches in Germany and Spain. We need to expand our options. But even there, of course, we have problems finding skilled people at a reasonable price who will fit into our company culture. And we need a lot of them.<br><br>Many of our potential customers in Europe and around the world are really large and as such expect their partners and suppliers to be large companies as well. Cleverlance, even though we are huge with a thousand employees, is not big enough for them. Big companies simply don't like small ones, so Aricoma's size, when it grows to the strength of at least ten thousand employees, will be a springboard for us to new large international customers.<br><br><strong>So you're finally delivering on the strategy </strong><a href="https://www.linkedin.com/company/cleverlance/"><strong>Cleverlance</strong></a><strong> was founded with? That it will be a company that will primarily serve the foreign market.</strong><br><br>Those were the original assumptions. But after the bursting of the dotcom bubble in 2000, we had to reorient ourselves to the Czech market. After a while Czech clients started asking us to go abroad with them on international projects. So we went beyond the borders again. We started to rebuild our positions on the German market. But nothing will ever change about the fact that the domestic market has become key for us and we'll never leave it, nor our Czech clients.<br><br><strong>Which foreign markets do you prefer?</strong><br><br>We are starting in Germany, we already have offices in Munich with salesmen and technicians, now we are trying Austria and eventually we will go to Switzerland. These countries suit us best with their mentality.<br></p><p> <strong>How does Spain, where you opened offices in April, fit into the expansion?</strong></p><p>Because we are looking for a solution to the critical talent shortage problem, and in addition to expanding our reach, we need English-speaking people. We looked around Europe and found an ideal place in Valencia that offers thousands of technically educated university students every year at a reasonable price, so it was an obvious choice for us. Let's hope it goes well. We want to have 20 people there within six months and 100 within a year, thereby starting a major expansion into Europe. Our goal is also tenders from the European Union.<br></p><p>But it is not easy to get such tenders. You have to go through a series of checks and tests, sign a framework contract with the European Union.<br><br>That's right, we've already gone through all that and we've been officially promised that we'll be one of the 8 companies that will sign such a contract with the European Commission. The contract will set barriers for the supply of services, people or technology for any European company that falls under the European Commission. The contract is for five years and the amount of money contracted is huge.<br><br>And this is also possible only because we are in <a href="https://www.linkedin.com/company/aricoma-group/">ARICOMA Group</a>, because one of the monitored elements was of course our size and stability, which Cleverlance alone would not be enough for, although our knowledge and capabilities are.<br><br><strong>So that contract gives you automatic access to European Commission contracts?</strong><br><br>No, it gives us the opportunity to participate in tenders for contracts from the European Commission, we will be able to apply for contracts in competition with the other seven companies that also have this framework contract. For the fact that we are actually only a Czech company in quotation marks, this is a phenomenal success.<br><br><strong>What are your expectations for the impact on </strong><a href="https://www.linkedin.com/company/cleverlance/"><strong>Cleverlance</strong></a><strong>?</strong></p><p>We expect our turnover to triple at least within those five years.<br>Of course, we would grow even without the contract with the European Commission, but not nearly as fast.<br></p><p> <img src="/en/blog/PublishingImages/Pages/PST-interview/Petr%20Stros-7945.jpg" alt="Petr Stros-7945.jpg" data-themekey="#" style="margin:5px;" /> <br></p><p> <strong>Cleverlance is establishing itself very much in the digital economy service. What do you think is the situation in this area?</strong><br><br>The world simply needs <a href="https://www.linkedin.com/feed/hashtag/?keywords=digitization&highlightedUpdateUrns=urn:li:activity:6975061770495266817">#digitization</a> or <a href="https://www.linkedin.com/feed/hashtag/?keywords=digitaltransformation&highlightedUpdateUrns=urn:li:activity:6975061770495266817">#digitaltransformation</a>, it doesn't matter what buzzword we call it. For now, as a world, we are only in the initial phase of the next act of the digital future.<br><br>Undoubtedly, we need tools to build a digital environment that allows us to acquire and use data, communicate with third parties, and then work with all that knowledge. But there are so many of them that it is simply not humanly possible to process them all. Therefore, tools are created to process them, which tell you what you should do on the basis of this data, how you should behave, what to buy, what to sell... But even with automatic data processing, you are soon overwhelmed by the reduced outputs. There's just too much.<br><br><strong>And what can be done about it?</strong></p><p>Change the approach completely. From an attitude of machines telling us what to do, you need to move to a system that offers advice on how to do better what you think is good for your business.<br><br>Therefore, you or your systems must learn to take only the one tiny particle that interests you from the processed <a href="https://www.linkedin.com/feed/hashtag/?keywords=data&highlightedUpdateUrns=urn:li:activity:6975061770495266817">#data</a> and continue to work with it. In a week you can take another part and alternate it as needed. As a customer, you have to put yourself at the center of your data and only get what you need and want, not be overwhelmed by the volume.<br><br>Today, however, it still essentially does not work that way. When that time comes, it will be very interesting. We want to be both a data platform supplier and a user when the system recognizes the customer's feelings in advance and offers him exactly what he needs.<br></p><p> <strong>What do you mean by that feeling? Do you mean his current business need?</strong></p><p>No, needs can already be found and satisfied by today's artificial intelligence or machine learning algorithms. But recognizing those feelings will be more girlish for the AI, we are only very slowly heading down a very difficult path there. No one even knows yet how to incorporate such an ability into algorithms. First, AI has to really be AI, and then all these things can be incorporated into it. The question is also whether AI will ever really reach a state where it will be intelligent.<br></p><p> <strong>What limits it today?</strong></p><p>Mainly hardware, when there are quantum computers, we will be in a different situation. Today we are really at the beginning of this journey.</p><p>And thanks to Aricoma, we can embark on that journey and work to create the future. Because the future of the digital economy does not end with building a platform for smart intelligence. An additional layer of blockchain will be needed on top of the AI layer.<br></p><p> <strong>How does blockchain fit into this?</strong></p><p>I'm not talking about cryptocurrencies, those are completely out of the question. I am referring to pure blockchain technology, which itself offers a safe, unassailable and trustworthy space. Trust is key in business, and so will blockchain in the future. And we are gradually trying to make these technologies available to our customers in the future.<br></p><p> <strong>How are you trying?</strong></p><p>We have our own blockchain research department where we test our stuff. It's really pure research, classic blockchain science. It is still early for practical use, it will take years. But without science, the future would not come. We are a technology company, and this is exactly the field for us.<br></p><p> <strong>When we talk about artificial intelligence, the European Union wants to regulate it in a fundamental way. How do you look at it?</strong></p><p>Now, if we set some frameworks for AI behavior, it's not entirely out of the question. I think that is correct, but it depends on the size of the playing field that the EU wants to define. It's a hard nut to crack, because we can't see into the future, it's hard to build future guardrails. If the playing field is too small, we won't be very competitive, if it's too big, there won't really be any regulation and it could happen that the whole thing gets over our heads.<br></p><p> <strong>Will Skynet or the Matrix come?</strong></p><p>I don't believe that AI will take over us, but it can go over our heads. We're not going to like that anymore, so we have to have some way to stop it. Let me give you an example for drivers - if you drive aggressively, such an overpowered AI will conclude<br>that you are dangerous to the environment and will stop you at every traffic light you meet on the road. Even if you calm down and drive sensibly, he will still run a red light just out of inertia, because you were simply a risky driver. You won't like that. Therefore, it is necessary to have the rules set in advance, and I note that I am not a fan of regulations. But in this area, you can't rely on everyone to self-regulate.<br></p><p> <strong>But won't such rules limit the competitiveness of European companies?</strong></p><p>I think the whole world will follow us in this, just like for example with GDPR. Everyone feared it as the scourge of mankind, and in the end nothing really happened.<br></p><p> </p><p> ​<br> </p>​<br>
Five Current UX Trendshttps://cleverlance.com/en/blog/Pages/UX-trends.aspxFive Current UX Trends<p>​​​In 2009, when we issued the first yearbook on User-friendly Interface in the Czech Republic, there were only about twenty professionals focusing on the area in the Czech Republic. Today, according to data from Glassdoor, a global leader in the area of information about jobs and employment trends, the position of UX designer is the 25th most sought-after job world-wide. Google’s entry into the world of education resulted in more than half a million certificates being issued. The field is still evolving and so are the requirements and outputs of these creative activities. Let’s have a look at which ones we found the most interesting at the moment.</p><h3>1. User interfaces as brand bearers</h3><p>The more we can learn about users from research, the more time and resources development teams have to focus on the form and consistency of user interface outputs. In order to achieve the best possible user experience, all outputs need to have a unified design –companies cannot afford to use a different tone every time they speak to the client. Still, many companies only focus on the appearance and controls of the application, and at best perhaps also on the corporate colors. However, the brand essence carried by the user interface is an important communication dimension not only towards clients but also within the companies themselves. One such example is Nike, whose user interface is always easily recognizable already at first glance.</p><h3>2. Design system as part of UX delivery</h3><p>In order for a brand to maintain its uniqueness, it is not possible for the look of individual technological solutions to depend only on the supplier or the platform. Design System Management (DSM), which is a set of standards for large-scale design management, is becoming increasingly popular. The tools created in this field provide non-stop access to the current design manual, even to third parties. This ensures visual consistency across various interfaces and digital channels.</p><h3>3. Increasing reliability through user experience</h3><p>Just like before, users who make a purchase get not only the product but also the buying experience, only this time in a digital environment. The fact that the consistency of the appearance and controls are crucial for the user’s relationship to the brand has been confirmed by many studies. For example, according to Adobe Trust Report (The digital economy is personal, 2022), 57 % of users claim that as soon as a company breaks their trust, they will not give it another chance. 70 % of users then stated that inaccurate personalization reduces their trust in the brand. This goes hand in hand with the handling of customers’ data. Here it also holds that the more transparent the digital approach to the processing of the customer’s data, the more willing the customer is to share their date with a company they trust.</p><h3>4. Typography – small details with fatal impact</h3><p>Typography is a small but crucial detail for branding. The more text is transferred to digital equipment, the better the required quality of the text. A UX designer has to keep in mind that today text is used in various situations and places: a driver watching the dashboard in a car, a jogger setting the pace in their application, someone reading the news on the phone during their morning commute, a warehouse operator checking the data from a scanner, an operator configuring a machine in a production plant… All these situations have one thing in common: the user often holds the device in their hand and reads from a shaky screen. This of course places higher requirements on the font than when used on a static device. At Cleverance we often create new fonts on the basis of the client’s requirements to ensure legibility and readability of the text in highly demanding conditions.</p><h3>5. Limits of internal UX teams</h3><p>Many companies that desire to forego UX consultants and create their own internal UX teams quickly find out about the limits of such an approach. The expectation that a single internal UX expert can cover all UX skills often proves to be unrealistic. Sub-fields of UX such as research, copywriting or design are so specialized that not even one expert can manage to master all of these on the required level. This is why many companies now have UX teams with several members, and it’s becoming more difficult to find specialists with the expected skill levels and experience on the job market. As a result, the internal team often focuses on only one area of UX, for example research. However, without a high-quality designer, this only leads to theoretical results. A significant handicap of these teams is their narrow (albeit understandable) specialization on a specific product of the company. Designers and researchers then lack a comparison to, insights from and the best practices for other areas. That is where technological companies come in again, as the variety of the projects they handle can enrich companies with new approaches and nicely complement internal UX teams.<br></p>
The Automatic Testing Machinehttps://cleverlance.com/en/blog/Pages/Automatic-Testing.aspxThe Automatic Testing Machine<p>​​​​No universal testing program exists for automated testing. Every project needs its own unique script which is created based on an extensive expert assessment. Before each new project, an exact calculation must be made of which type of testing is optimal, effective, and more economical. Only after this can automated testing and a testing robot enter the picture.<br></p><p> “Generally speaking, testing automation speeds up the process, that’s evident. And thanks to automation, several different scenarios can be tested, the scope of the tests can be expanded, and each of them can be performed identically because robots perform scenarios absolutely the same way each and every time,” says Tomáš Mertin, an automated testing system developer at Cleverlance. As a result, testing and code writing are essentially simultaneous, and developers can fix any errors or inaccuracies within a short period of time.</p><p> “In recent months we’ve witnessed an increase in interest in automated testing, it’s a trend, but everyone’s expecting that it will reduce the number of people involved in development. I don’t think that’s going to happen,“ says Mertin. “Automated testing will definitely speed up development. It also provides us with better knowledge of the state of the application at any given moment. But tests, deployment, operations – someone still has to maintain all that. The human dimension is going to stay,” Mertin explains, adding that he thinks automated testing will not fully replace humans. “But it will save time, which they can then spend on actual development.”</p><p> Automated testing frameworks have proven successful in segments where development is constantly underway. Like the banking sector. “We’ve got a big project in which we’re practically building the entire digital banking framework. One phase has to precisely dovetail with the next one. These days agile management is used for things of this size, which makes it all possible,” says Jan Vajsejtl, who is in charge of testing at Komerční banka, one of the largest banks in the Czech Republic.</p><p> In the past, large companies like banks used waterfall testing. Testers would receive completed sections while work on development would halt because the developers waited to hear what they needed to fix. If any major intervention was needed, it was followed up with another phase of testing, prolonging the work. </p><p> In the past two years, automated testing has been added to conventional, time-tested, and efficient testing methodologies. It’s proven successful wherever development is practically non-stop. The experience with it has been exceptionally good, says Komerční banka’s Jan Vajsejtl.  </p><p> These are cases where automated testing makes a substantial difference. “Our experience is exceptionally good. The automated system my colleagues and I fine-tuned for our own needs allows us to test practically all devices and environments, cell phones, websites, and more,” Vajsejtl says. </p><p> Although the inside of the system is complicated, its use in practice is surprisingly easy. “I think the main advantage is that it’s essentially very simply written. So just a short, half-day training session is enough to be able to start to use it. You definitely don’t need to know how to program or have some deep technical knowledge.” </p><p> “For me it’s a testing success. We’ve put the testing framework to practical use and tried it out; my colleagues at Cleverlance and I tailored it to Komerční banka’s needs and augmented it with additional functionality. Given the amount of development we have, it’s a really efficient thing,” Vajsejtl.<br></p>
When you say analyst, it means that...https://cleverlance.com/en/blog/Pages/analysts.aspxWhen you say analyst, it means that...​​<br><div><p>From an IT perspective, being an analyst means several different positions with various job descriptions. These includes the role of IT analyst, which is also commonly referred to as systems analyst, or business analyst, data analyst or test analyst. But what do people who hold this position actually do and what are they responsible for? Let’s have a look at the roles chronologically as they enter the IT project.</p><h3>Business analyst</h3><p>The first analytical position to join the project is the business analyst. Very simply put, business analysts are responsible for communicating with the client, with business representatives on the customer’s premises. The aim of their work is to collect the client’s needs, transform them into requirements and rank them in order of importance. Subsequently, analysts develop a solution design, i.e. de facto build the software from the user’s point of view. They record their design in the business analysis, which means creating process diagrams, Use Case models or User Stories, activity diagrams, describing user roles, drawing wireframes of screens and so on, i.e. everything that will show how the system should work from the user’s perspective. You can read what a good business analyst needs to know here.</p><h3>IT analyst</h3><p>IT analysts, also known as a systems analysts, enter the project process early or together with the business analyst. Their responsibility is to design the technical solution of the system. In their work, they communicates intensively both with the IT architect, who is responsible for designing the concept of application development, and with the business analyst, who presents to them functional requirements and a description of the solution from a business perspective. The IT analyst then designs and describes the details of the technical solution, individual system modules, data and object structures including their links, defines interfaces and models sequence diagrams, etc. The results of work performed by the IT analyst, together with the results of work performed by the business analyst then constitute the specifications according to which the developers program the required system. This is also why a standard requirement for IT analysts is that they are familiar with programming languages such as Java, .NET, SQL or XML. Knowledge of methodologies such as RUP and ITIL or the recently widespread DevOps approach to software development.</p><h3>Test analyst</h3><p>Test analysts process the test analysis. They study the inputs provided by the business and IT analyst and go through the processes and logic of the entire expected solution with them to understand how the system should work in the end. This means that they enter the project either after the business and IT analyses have been elaborated or before their completion. After familiarising themselves with analytical documents, they develop test scenarios (Test Cases), test suites (logical groupings of tests which are related in some way) and test scripts. It may also happen that during the creation of test scenarios, they come across a deficiency in the business or IT analysis. In this case, they will draw attention to this fact so that the business or IT analyst can incorporate the identified deficiency in the analysis. Test analysts also defines the necessary test data for testing of the software during the creation of test scenarios. In the end, they are able to propose a test plan, i.e. the order of testing the individual test scenarios. Sometimes they are also the ones who prepare the test data or participates in the software testing itself.</p><h3>Data analyst</h3><p>Data analysts, as the name implies, work with data. Each system contains thousands, sometimes millions, of data records from which a wealth of interesting information can be extracted for business purposes. This concerns numeric values, but also text data. Data analysts works with both primary data sources, i.e. data from the main system, and also secondary data, for example, data from systems which deal with less important, i.e. supporting processes. Analysts sort, clean and analyse the data using standard statistical tools. They create various types of reports and visualisations for business or management. They design and create relational databases, define correlations and patterns in complex datasets. The primary skills of a data analyst include database design, familiarity with data warehouses and BI platforms, SQL, data mining, and the ability to visualise the resulting data and present the results. But also knowledge of statistical techniques, mathematical knowledge and orientation in the field of finance. In fact, data analysts can join the project at any time. They can be part of the team almost from the very beginning, for example, if the project involves migration of data from the original system to the new one. Or they can get involved in the project after the system is deployed in production to extract and process the first outputs for the client’s business or management, while continuing this work and continuously preparing various reports and visualisations.</p><p>As can be seen from the description above, several analysts are involved in creation of the system design, and their work builds on that of each other. This is one of the reasons why ongoing, more or less intensive communication is important for everyone. Actually, designing new software could be described as a performance given by a symphony orchestra, with the violin accompanied by the flute or the oboe, with the occasional horn or timpani. If everybody is in tune, they create a beautiful melody, and if not, everybody has to cover their ears. In the case of software, any “wrong notes” would result in a non-functional solution which would not meet the client’s needs and, moreover, would probably not be usable.​<br></p></div>
Unexpected bad practiceshttps://cleverlance.com/en/blog/Pages/unexpected-bad-practices.aspxUnexpected bad practices<p>​​Some programming practices are so familiar to us that we use them automatically without much thought. Sometimes these techniques become obsolete; sometimes they are applied in the wrong context. Addressing such poorly experienced habits is often met with revolt. Especially by those who use them and perceive the topic as useful, so let's do exactly that!</p><h3>Marks<br></h3><p>Programming IDEs often recognize specific types of comments to help navigate across the codebase. Xcode’s <em>FIXME</em> lets other developers know that a piece of code deserves more attention. <em>TODO</em> is helpful when something is, well, to be done. <em>MARK</em> differs from the previous cases; it serves a documentation purpose. The same feature in IntelliJ IDEA/Android Studio is called r​egion.<br></p><p>Marks divide the source code into multiple parts using headings. That can make the code appear broken into logical units. If you are a reader familiar with the former Objective-C era of iOS development,​ know that this is just an updated <em>#pragma mark</em> directive.<br></p><p>Typical usage is in files with a large number of lines. <em>Marks</em> create the illusion of clarity by breaking them into pieces that supposedly belong together.<br></p><p>The usage of marks in such cases is a bad practice. Developers often abuse them to justify a file being too big. One should not depend on Xcode to make the code comprehensive and readable. Small and well-decomposed classes are more straightforward to reason about and navigate without IDE features. Especially for pull request reviewers using the web interface where those features are absent.<br></p><h3>Extensions</h3><p>Modern programming languages such as Kotlin or Swift allow you to extend classes, interfaces/protocols, structs, or enums to provide an additional implementation. You can divide your code into multiple pieces using extensions to outline what belongs closer together. Another usage is to make a convenience extension around another type you might not even own to make its use more intuitive. The possibilities are almost limitless. This isn't always a good thing, but first, a peek into history.<br></p><p>Extensions existed way back in Objective-C as well. If you're not blessed with experience with programming in such a language and had to guess the name for extensions, you'd likely be surprised. It's Categories! Another surprise is that Extensions are a thing in Objective-C too, but serve different purposes. What's interesting is the difference between both languages. Categories in Objective-C forced the developer to come up with the name. That's why files named in style <em>Class+CategoryName.swift</em> are often used even for Swift extensions. And more importantly, to use Categories, you had to import them explicitly.<br></p><p>Extensions in Swift are an unnamed piece of code. Such code may be more complicated for the reader to grasp. If multiple extensions of the same type exist, adding a name to the code and wrapping it in a type might help readability immensely.<br></p><p>Improper extension of widely used types causes namespace pollution. It's critical, before creating extensions, to ask whether all instances of the type should have such an ability. Should all UIViews have access to a blinking method? Does one specific subclass of UIView make more sense?<br></p><p>Some developers use extensions to break down the implementation of multiple protocols: which might also be a warning sign. If a class implements many protocols, it may be time to consider splitting it into smaller classes.<br></p><p>For trolls out there: you can make your co-workers mad by extending <em>UIView</em> with <em>translatesAutoresizingMasksIntoConstraints and watch them compare it with translatesAutoresizingMaskIntoConstraints.</em><br></p><p>But don't.</p><h3>Comments<br></h3><p>The ability to write comments might lead undisciplined programmers to create code of poor quality. Unfortunately, it's easier to neglect to name a variable and describe what's going on in my head with a complicated but not-so-clear comment. Easy should not be our goal. Brevity and clarity should.<br></p><p>Great comment for poorly written code is still a code smell. Don't just take my word for it. Robert Martin states: "A comment is a failure to express yourself in code. If you fail, then write a comment; but try not to fail."<br></p><p>Another reason is as the code lives in the repository and is modified and refactored, its behavior might change, and its name can express it everywhere it is called. But its comment is rarely updated and may become more confusing than helpful.<br></p><p>Documentation comments serve their purpose very well when you're designing an API for others to use. Remember that the API needs to stand by itself, and clarity is the priority. Don't use the documentation comments as an excuse for a lousy design.<br></p><h3>Structure</h3><p>The structure of a project is one of the first things you see when you check out a codebase, and it should outline the app's purpose at first sight. However, it is not an exception that some projects have folder structures inspired by the layers of architecture, e.g., View, ViewModel, Model.</p><p>Project ​struc​ture based on architecture layers is a bad practice. It makes reusability effectively impossible. Navigating through such a structure is unnecessarily complicated and becomes harder to maintain as the scope increases. It doesn't scale. Folders inspired by the architecture might have their place, not just at the top level. It should not be the first thing you see.<br></p><p><img src="/de/blog/PublishingImages/Articles/MobileIt/unexpected-bad-practices-01-01.png" data-themekey="#" alt="" style="margin:5px;" /><br></p><p>See for yourself, what structure tells you more about the application?<br></p><h3>Dependencies</h3><p>Open source offers many libraries to simplify life, from UI components through networking to dependency injection solutions. It can often save a great deal of time and effort. On the other hand, this carries various dangers and limitations; using third-party libraries requires discipline, order, and balance.<br></p><p>Randomly scattered third-party dependencies significantly reduce robustness. Shielding the core of the application and using the libraries from the outer parts of the architecture helps mitigate the risk. Abstraction eases the process of replacing one library with another.<br></p><p>It's OK to utilize 3rd party dependencies, but with caution. Ask yourselves: How much time will it save me? How much effort will it take to replace? Can I install enough defense mechanisms to protect the application?<br></p><p>The silver bullet to protect your app, though sometimes tricky or impractical, is to have the import of the dependency in only one place.</p><p>We've had the pleasure of taking over multiple apps that were impossible to maintain anymore due to this problem. Without abstraction, no longer supported (or closed sourced) libraries disintegrated the codebase. External dependencies should never hold your product hostage.<br></p><h3>Tests</h3><p>Test-driven development is a programmer's good manners, a discipline overflowing with benefits. Technical impacts are a blog post by itself, if not a series. Non-technical impacts such as easy onboarding of new team members and executable documentation that cannot become obsolete speak for themselves.<br></p><p>Yet they are often neglected. A complete absence of tests is the apparent first and most common violation, followed by writing tests after the production code, which mitigates all the benefits and introduces other obstacles.<br></p><p>You must write unit tests first - before production code. Testing first will prevent you from creating code that's too complex. It will guide you through building components of the right size. The big classes are challenging to test, and the tests will direct you to decompose them into smaller ones.<br></p><p>Tests written after production code are inherently lower quality and can even be misleading. Unless you write the production code as proof of the first failing test, it is impossible to say whether the tests assert what they declare. It is then questionable how well such tests protect the system under test.<br></p><p>If you write tests after implementation, you may find a component challenging to test, which is impossible with a test-first approach. You can't create untestable code!<br></p><h3>The devil's in the detail</h3><p>Even the mundane can be harmful if we do something too automatically and with less attention. Challenge the ordinary and seek bad practices that you wouldn't expect.​​<br></p>
May dedicated to designhttps://cleverlance.com/en/blog/Pages/graphics-for-children-II.aspxMay dedicated to design<p>​​We dedicated all of the Wednesdays in May and the first one in June were to graphics and design. The QUB creative department prepared a five-part course in graphic design for children. The lessons were set up as five one-hour online sessions and we were thrilled with what the 11 little designers aged 7-12 managed to accomplish during the course. Incidentally, you may have <a href="/en/blog/Pages/graphics-for-children.aspx" target="_blank">read the article by twelve-year-old Viky​</a>.</p><p>We started with the basics - we explained the basics of colour theory, went through some interesting facts about creation of pigments and finished the first lesson with the creation of a colour palette, which is essential for the start of any design project.</p><p>During the second meeting we touched lightly on history. From pictograms, hieroglyphs and cave paintings we made it all the way through to division of typography into expressive and functional and the children learned, among other things, to distinguish between serif and sans serif fonts. Be prepared for your little designers at home being able to amaze you with interesting facts about font construction and correctly state that some characters have bellies, tails and eyes and that a pin needn’t necessarily be the one you use in bowling! We finished the lesson by practising the correct way to adjust spacing between letters.</p><p>At the third meeting, we discovered together that the style of comic book heroes with black outlines originated in Japanese traditional woodcut and Art Nouveau posters. We shared a few tips on how to add dynamics to a story, work with bubbles, and made it clear that a comic should have a hero, a plot, a setting, and a consistent graphic style. Together we created a short comic strip on the theme of Surprise.</p><p>In the fourth lesson, we delved into packaging design, practised the skills we had acquired relating to colours and typography and put the little designers up against a difficult task - designing the packaging for a bag of sweets. Again, we followed the same procedure as we would in normal practice, starting with research and noting details and differences between, for example, fruit and chocolate sweet designs. The children showed a tremendous amount of creativity and, apart from designing the packaging, they also came up with ideas for the names of the new sweets - would you buy Chicken Beaks if you saw them on the shelves?</p><p>In the first four lessons, we deliberately avoided the computer and worked with designs on paper (again, the same as is the case in practice when creating designs). In the fifth and final lesson we tried to make our way to a graphic editor and introduced the children to <a href="https://www.figma.com/">Figma</a>. We tried to transfer the design for our bag of sweets into a computer. The children passed this last test, almost a trial by fire, and we are currently collecting all of their creations. </p><p><em>On behalf of <a href="https://qub.digital/en/our-work" target="_blank">QUB Digital</a> Ivana Stránská, Michal Hořava and Jan Čermák​</em></p>
Why are cookies a nuisance in our lives?https://cleverlance.com/en/blog/Pages/cookies.aspxWhy are cookies a nuisance in our lives?<p>​​Have you noticed that lately cookie consent bars have been popping up on almost every website you visit? Very annoying, isn’t it?</p><p>Does this mean that companies might finally be starting to take our privacy seriously? It’s certainly nice of them to always ask when they want to use cookies. But the reality is that website operators do not do this voluntarily, but because they have to.</p><h3>New legislation</h3><p>This is to say that new legislation came into force on 1 January 2022 which changes Act No. 127/2005 Coll., on electronic communications. This concerns a very extensive amendment with more than 400 changes. This amendment also led to changes to a number of other acts, such as the Roads Act, the Radio and Television Broadcasting Act, and others. All of the changes introduced by the amendment were adopted due to the implementation of the European Directive 2018/1972 into the Czech legal system, in the area of electronic communications.</p><h3>Cookies then and now</h3><p>This new act has a major impact on the use of cookies on websites. Even in the past, the website operator had to have the user’s consent to store cookies (according to the GDPR). However, it was assumed that the user primarily agrees to use of cookies unless they explicitly choose otherwise (the so-called opt-out principle). The option of refusing to allow use of cookies always had to be possible on the website.</p><p>But from 2022, the opposite applies to the use of cookies (the opt-in principle). The website operator must assume from the outset that the user does not primarily agree to cookies. And it therefore cannot use them to store data. Cookies can only be used on the website from the moment when the user has explicitly and actively expressed their consent. The only exception to this is constituted by basic technical cookies which are necessary for the functioning of the website and for provision of the service. The user’s prior consent is not required for this type of cookie. However, the condition still applies here that this concerns processing of personal data and the requirements of the GDPR must be met. And the website must inform the user about cookies.</p><h3>What should the new cookie bar look like?</h3><p>The cookie bar has been used for provision of consent for a long time, but it must now comply with new legislation. It is no longer enough to inform the user which cookies the website uses. It is no longer possible to have pre-ticked checkboxes to give consent. Consent cannot be re-expressed by using the site for which cookies are set.</p><p>The bar must have the prescribed properties and must not be aggressive or block web content. It must meet the following requirements:</p><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px;"><p><em>• The user must actively opt-in to the use of cookies. Until then, use of cookies on the website is prohibited.</em></p><p><em>• The website must clearly and transparently inform the user which types of cookies it uses and what they are used for.</em></p><p><em>• The website only allows the user to check the consent box for certain types of cookies.</em></p><p><em>• The website must function without consent to use of cookies, it must not force consent.</em></p><p><em>• The user must be able to return to the cookie settings repeatedly and withdraw any consent which has been given.</em></p></blockquote><h3>What in fact are cookies?</h3><p>All of you have probably experienced the situation when you are looking for accommodation or car rental for a holiday on the web. You surf websites, researching alternatives, availability and price. After a while you return to the best offer and heavens above ... You are surprised to see that the price of the service has suddenly increased!!</p><p>How is that possible? Yes, the cookies are to blame! Marketers assume that if you come back to an offer, you are genuinely interested in it, so they raise the price. This is an example of use of so-called marketing cookies, which we regularly come across on the web. And we don’t even know about it.</p><p>A cookie is a simple technology which is part of a website and web browser. Precisely put, it is a file on your computer’s hard drive. The website stores various information about your settings and your behaviour on the site. If you reconnect to the site after some time, the site will retrieve this information and can work with it to adjust the site to your previously set preferences.</p><p>This behaviour is where this technology gets its name. Cookies are offered by hosts in the Anglo-Saxon world to make their visitors feel at home.<br></p><p><img src="/de/blog/PublishingImages/Articles/CreateIt/cookies_unsplash.jpg" data-themekey="#" alt="" style="margin:5px;" /><br></p><p style="text-align:center;">Photos via <a href="https://unsplash.com/" target="_blank">Unsplash​</a>.</p><p>Some cookies are useful to users because they make browsing the web more enjoyable. For example, the website will remember that you prefer “dark mode” and will always be displayed in dark colours for you. Other types of cookies allow us to track user behaviour and use this in advertising and marketing. This is the only real risk to the user if they turn cookies on - the imposition of content and targeted advertising. But it certainly won’t happen that the website won’t load, will be slow, or even infect you with a virus.</p><h3>Three quarters of the population don’t know what cookies are used for</h3><p>In April 2022, Avast commissioned performance of a public survey regarding cookies, which came up with some rather interesting findings. How did we do? Not very well in fact ...</p><p><em>Half of Czechs accept all cookies without thinking.</em></p><p>Most Czechs don’t know exactly what cookies are. Only a quarter of users (26%) know what this web technology is used for. When visiting a website , half of the Czech population automatically opts in tocollection and possible disclosure of all accessible information to third parties. This means that people “accept all” so to speak. Most often because they want to get to the website as quickly as possible (31%), the trust the website (20%) or they visit it repeatedly (18%). Some people (31% of respondents) even think that rejecting cookies will make it impossible to view the website at all. But as we already know, this should not happen thanks to the new act.</p><p>Another option is to reject cookies altogether, but only 9% of people do this, and these are mostly people who know something about cookies. Almost half (41%) of those who don’t know cookies don’t even know how to reject them. The internet population is clearly quite uneducated in this regard. For example, according to the survey, 29% of respondents believe that cookies slow down the website and 7% believe that they can even infect a website with a virus.</p><p>Based on the results of the survey, Avast decided to develop a public education campaign called <strong>The Man Who Allowed All</strong>. The face of the campaign is actor Martin Kraus and its aim is to explain to the Czech people how cookies work and how they are beneficial. But also how to protect your privacy online.</p><h3>Cookie bar remover</h3><p>So now we have learned that companies and website operators cannot work with cookies by default unless the user explicitly allows them to. So if you close the cookie bar using the “x” button, the website must behave as if you had rejected use of cookies. It must logically have the same result. Yet closing the bar is so annoying. If we reject cookies on a particular website, the website has no way to easily save this option (cookies are after all disabled) and the next time the website is loaded, the bar pops up again. How do we stop this happening?</p><p>There is a simple solution. You can install the <a href="https://www.i-dont-care-about-cookies.eu/" target="_blank">I-DONT-CARE-ABOUT-COOKIES.EU​</a> plugin which can be installed in most web browsers (Chrome, Firefox, Opera and Edge). This will ensure that the browser does not display the cookie bar at all. And it works surprisingly well!<br></p>