Issue 34 - April - Today Software Magazine

Page 1

No. 34 • April 2015 • www.todaysoftmag.ro • www.todaysoftmag.com

TSM

T O D A Y S O F T WA R E MAG A Z I NE

Download from

Windows Store

one

TodaySoftMag app for Windows Ph

ram First graduates of Cluj Simplon prog

The Big Data Revolution Agile Mindset From Another Angle Legal aspects in SaaS About testing with Rene Tuinhout Realreach - find out what’s within 15 minutes of you Design is a lot like dating

(Micro)Service Discovery with Netflix Eureka Interview with Natalya Kaspersky Aspect Oriented Programming in Design Phases Advanced and Invisible Analytics Screen Sharing using Service Bus Relay ERROR 404: “Employee motivation”



6 First graduates of Cluj Simplon program Ovidiu Măţan

9 Leading an Information Security Business and Preventing System Attacks: The Catch Diana Ciorba

12 TodaySoftMag app for Windows Phone Cosmin Jeler

16 About testing with Rene Tuinhout Ovidiu Măţan

18 SafeDrive Tudor Cobâlaș

21 The Big Data Revolution Graham McEnroe

24 Agile Mindset From Another Angle

29 Aspect Oriented Programming in Design Phases Diana Vultur

32 Realreach find out what’s within 15 minutes of you Curta Cătălin and Dragoș Andronic

34 (Micro)Service Discovery with Netflix Eureka Adrian Ivan

38 Screen Sharing using Service Bus Relay (Azure) - an out of the box Radu Vunvulea

41 Advanced and Invisible Analytics Oana Călugăr

44 Legal aspects in SaaS Claudia Jelea

45 ERROR 404: “Employee motivation” Ana-Maria Trifan

Bogdan Mureșan

26 5 Steps to Mistake Proof Software Design

47 Income rax exemption for software developers Ioana Varga and Ioana Costea

Alexandru Bolboacă

49 Design is a lot like dating Ștefan Bălan


editorial

T

Ovidiu Măţan

ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine

he professional evolution of each of us is most of the times conditioned by the decision to face new and more complex situations which can make the most of our potential, make us assume responsibility and bring to us the acknowledgement of our merits. Most often, in the IT world and not only, this decision is materialized in the changing of the working place. The project called programez.ro, which I have also mentioned in the previous issues, comes to the help of those who make such decisions, but also to the help of the employer companies. To that effect, we bring an interesting proposal which combines the online tests with the presentation of the latest open positions within different companies. In this manner, a candidate will be able to evaluate his known domains before applying for the new job. Once the test was passed and a certain score was achieved, the candidate will qualify for the next stage of tests, of a higher degree of difficulty. We believe that the simulation of going through an interview assesses the availability and willingness of the person involved in the testing to assume new technical challenges and to improve. On the other hand, besides an individual perspective that underlines the advantage offered by self-evaluation, going through these tests with requirements adapted to the needs of the IT market gives the employer companies the opportunity to detect their potential employees faster. Another project of Today Software Magazine is the launching of the magazine application for the users of Windows Phone devices. It follows the direction defined by the iOS and Android applications, bringing, in addition, a better graphical interface. From this perspective, we state that this client is the most successful implementation of a TSM client until now. We invite you to download it and send us your opinions. Details on the implementation of the application are presented in an article included in this issue. In regard to the content of this issue, we have excelled in the number of published interviews, but also in the professional quality of those who have agreed to answer. Therefore, we have three interviews: Natalya Kaspersky provides us with details on the projects in the industry of security; Roxana Rugina, the initiator of the first Simplon project in Romania, talks to us about the effects of this first project, but also about her future plans. In the third interview, dedicated to the revolution of Big Data, you can read about the challenges in a company whose goal is to analyze and increase the involvement of the users. Agile Mindset, from a different perspective, invites you to a discussion about rules and best practices. The technical domain is covered by articles that you will surely find interesting: Aspect Oriented Programming in the Development of Software Systems, the presentation of Realreach technology and (Micro)Service Discovery with Netflix Eureka. We would also like to mention an interesting article from the area of psychology, which analyses the mechanisms of the employee’s motivation.

Ovidiu Măţan

Founder of Today Software Magazine

4

no. 34/2015, www.todaysoftmag.com


Editorial Staf

Authors list Alexandru Bolboacă

Tudor Cobâlaș

Agile Coach and Trainer, with a focus on technical practices @Mozaic Works

Business Developer @XL Team

Graham McEnroe

Cosmin Jeler

Content Manager at @ Ve Interactive

Development lead @ CodArt Solutions

Adrian Ivan

Diana Vultur

Software architect @ SDL

Software Developer @ Yardi România

Diana Ciorba

Oana Călugăr

Marketing manager @ Codespring

Ambassador în România @ Hello Tomorrow

Bogdan Mureșan

Vlad Ciurca vlad@techsylvania.co

Director of Engineering @ 3Pillar Global

Product Guy. Tech Events Producer. Connector @ Techsylvania

Ștefan Bălan

Curta Cătălin

Creative Director @ Lateral

C++ Developer @ Telenav

alex.bolboaca@mozaicworks.com

Editor-in-chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com Copyright/Proofreader: Emilia Toma emilia.toma@todaysoftmag.com Translator: Roxana Elena roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Accountant : Delia Coman delia.coman@todaysoftmag.com

graham.mcenroe@veinteractive.com

aivan@sdl.com

diana.ciorba@codespring.ro

Printed by Daisler Print House bogdan.muresan@3pillarglobal.com

Made by

Today Software Solutions SRL str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com www.todaysoftmag.com www.facebook.com/todaysoftmag twitter.com/todaysoftmag ISSN 2285 – 3502 ISSN-L 2284 – 8207

stefan.balan@lateral-inc.com

tudor@xlteam.nl

cosmin.jeler@codart-solutions.com

diana.vultur@yardi.com

calugar.oana@gmail.com

curta.catalin@telenav.com

Dragoș Andronic

dragos.andronic@telenav.com Product Manager @ Telenav

Radu Vunvulea

Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest

Claudia Jelea

claudia.jelea@jlaw.ro Avocat & Consilier in domeniul marcilor @ IP Boutique

Ana-Maria Trifan PR & Customer Care Specialist @ Azimut Happy Employees

Copyright Today Software Magazine Any reproduction or total or partial reproduction of these trademarks or logos, alone or integrated with other elements without the express permission of the publisher is prohibited and engage the responsibility of the user as defined by Intellectual Property Code

Ioana Varga

Ioana Costea

Expert bookkeeper Managing Partner @ A&I Consulting

Expert bookkeeper Managing Partner @ A&I Consulting

ioana.varga@aiconsulting.ro

ioana.varga@aiconsulting.ro

www.todaysoftmag.ro www.todaysoftmag.com

www.todaysoftmag.com | no. 33/april, 2015

5


interview

First graduates of Cluj Simplon program

I

met Roxana last year, when she had come to Cluj with the purpose of creating a new generation of programmers. It was a courageous statement in a local context characterized by a great number of programmers. To this, we also have to consider the fact that, at about the same time, Pitech+Academy was being launched. But Roxana kept her word and managed to launch her program in which twelve young people were selected. They were promised to be offered courses and programs, free of charge, for a period of six months, in order to become young web programmers. Now, at the end of the six months, Roxana reveals to us from the experience of implementing this program, but also the endeavors that condition its continuity. Congratulations on your first class of Simplon graduates! How do you feel at the end of the six months you have stood by the 12 candidates? [Roxana Rugina] I am very happy for innumerable reasons. First of all, because I feel that our participants have found their place, or at least they are more confident they will succeed. It is very important for us to make sure that all of our graduates manage to achieve their goals of working in the IT domain or of developing their own business online. I am happy to see that, beyond the candidates’ potential, we have developed a c o m m u n i t y, starting from a small family, where we have shared, for six months, the hardest moments, but also the most beautiful achievements. I am glad that we were able to carry this program through and that, today, we are surrounded by a community of talented people who are passionate about technology, who are supporting us and looking forward to the next Simplon bootcamp. I am happy for all the participants who have succeeded in learning a programming language in six months and who are developing today their own platforms, or

6

have been hired by IT companies. Above all, I am glad we have a powerful and positive impact on everyone around us, and this is what makes me go on and look for partners that can help us develop this program further in Cluj, but

also on a national level. Please explain to our readers what the Simplon project means. [Roxana Rugina] Our mission is to facilitate the access of nontechnical people and of those who come from vulnerable groups to a career in the IT domain. If I were to describe Simplon in just a few words, they would be education, technology and social innovation. We are developing a series of educational programs in the IT domain through methods of practical, interdisciplinary and collaborative learning, which contribute to

no. 34/april, 2015 | www.todaysoftmag.com

the development of skills necessary in the 21st century. The Simplon concept, awarded by the President of France as the most innovating initiative of social entrepreneurship of the year 2014, was brought to Romania, to Cluj. Since May 2014 until today, we have organized over 30 events for 1466 participants on national level. In our trainings, 261 adults have been trained and 245 children have been initiated into the world of programming. Of those 102 applications for the web development and ent repreneurship bootcamp, we selected 12 participants to whom we have offered almost 100 hours of training. 60% of the participants to these courses have been employed or are now developing their own business in the IT domain. The training program of 6 intensive months in web development is offered free of charge to those who come from underprivileged environments or who need professional reconversion in order to become web service developers. Besides that, Simplon also organizes courses of programming for children and activities of promoting the entrepreneurship and diversity in IT. You can find details on www.ro.simplon.co.


TODAY SOFTWARE MAGAZINE

Young spirit Mature organization A shared vision Join our journey! www.fortech.ro

What is its social impact? [Roxana Rugina] I would like to give you the example of Mariusz Siklodi, who is a student in the Music Academy. Mariusz came to our bootcamp because he has a passion for technology and he wants to combine the code with music. Together with Alexandra Crisan-Raica, they have developed a web platform in just two months from the bootcamp. Now, the platform attracts new clients every day. Their story is an example for anyone who wishes to transform an idea into a web product, but has neither the knowledge, nor the confidence that they can do this on their own. We say that Simplon encourages people to use technology in order to improve their life. Whether our participants get a better job in the future, or they discover their passion and develop a business, Simplon is the catalyst that Romanian society needs so as to develop its human and entrepreneurial potential. Most of the times, the impact we see is not just on the participants to our programs, but also on their families, friends and the entire community. The fact that a young man who cannot find a job in his domain, manages to learn a programming language in six months with our help, represents a life buoy. We are offering it to those who are in difficult situations, knowing that they will take full advantage of it and they will also offer help to those around them. We know that the faculties do not have the capacity to cover the needs of the market in the IT domain. That is why Simplon attracts people with potential, whom it prepares to face the changes. Technologies are advancing very fast, and we are training

people capable of adapting and learning quickly how to use them in order to solve problems. By encouraging young people to think this way, we are offering a chance to each of them and new talents to the companies that wish to develop new products based on modern technologies. Describe two projects developed at the end of those six months, from the entrepreneurship perspective. [Roxana Rugina] Right from the beginning, for bootcamp, we select the candidates who have ideas of projects and who are motivated to learn code in order to turn an idea into a product. We want them to believe very much in the utility of

an application or of a technology in order for them to find solutions and develop the product, thus, becoming creators and not merely consumers of technology. The professional past of those in the bootcamp stands out through diversity: designers, psychologists, musicians, law students, journalists, economists, who wanted to give their passion for technology a chance and came to study web development. As a consequence, their projects, too, were very different: from open source platforms to e-commerce. For instance, Georgiana Bere worked remotely with a team made of journalists who were in Germany, Switzerland and another developer from Bucharest, on an open knowledge

www.todaysoftmag.com | no. 33/april, 2015

7


interview platform, in an open source manner. A project developed within bootcamp, launched in beta version, is wedbox.ro – an online platform which helps you to plan your wedding, easily and quickly, to the smallest detail. The web application makes the entire range of trustworthy services and solutions for weddings available. The choices the users can make with wedbox turn the ordeal of organizing such an event into a pleasure. In a few clicks, they can find the dress, the shoes, the location, the cake, the wedding rings and the turtle doves they are dreaming of for their wedding. At the moment, the wedbox team is looking for new people to increase the number of service providers, hoping that in the future they would be able to develop functionalities and packages addressed to the most sophisticated clients, who wish for personalized and as original as possible services. Within the program, the participants learned a programming language: Ruby on Rails, but also how to develop the product from behind the web applications. Because of this, many of the ideas are transforming or still waiting for validation in order to be developed. For example, foodplace.ro is a platform dedicated to gormandizers who wish to order their favourite food rapidly from the cheapest and best place. The idea has been launched online, to test the market and see if there is interest from the part of the users. What other projects are you involved in? [Roxana Rugina] In partnership with Edusfera Association, the Simplon team organizes the courses of programming

8

First graduates of Cluj Simplon program called Digital Kids in Cluj, for children between the ages of 8 and 14. At the moment, we are offering courses for 30 children and we want to increase the capacity to double this year. Besides these, we are also preparing a series of programs that cover many areas, from robotics to game development for children. Moreover, in par tnership with Hackidemia, a mobile invention lab where children, young people and adults learn about technologies, electricity, mathematics in an entertaining and interdisciplinary environment, we organize workshops. The next one will be on the 9th of May, in TEDxEroilor, Cluj Napoca. We have also organized this kind of activities in Bucharest, Cluj and Sfantu Gheorghe. To g e t h e r w i t h S p o n g e Me d i a Innovation Lab, we also organize activities such as the hackathon and we offer support for journalists and ONGs that want to use the new media, open data and digital tools in their domain of activity. In Cluj, I am part of the teams that organize Startup Weekend and Startup Pirates and I am a mentor in several events for entrepreneurs. Another local project to which I have contributed since December is Cluj Makers, a community of creative people who are preparing the opening of the first workshop in Cluj dedicated to the new crafts. Here, people will have access to tools and equipment for digital fabrication and quick prototyping, programs of education and workshops of training in design, hardware and software, from wood processing to sensors, integrated systems and arduino. On global level, I am a consultant on

no. 34/april, 2015 | www.todaysoftmag.com

youth programs for Microsoft Youth Spark for the central and east-European regions and I activate in several social entrepreneurship networks. Given the success of the first class of graduates, what is your plan for the next round and how could local companies get involved to support this program? [Roxana Rugina] We want to keep contributing to the development of human capital and of the entrepreneurial environment in Romania. Therefore, we encourage local companies, in the first place, to invest in education in the domain of technology. It is obvious that the number of graduates from the technical faculties is much lower than the number of specialists we need. Furthermore, the classical formation in this area is not sufficiently oriented towards the product and practical experience. Now is the moment to find solutions and bring up new talents together. Simplon proposes today a successful program and is looking for partners to develop this program and enhance the number of beneficiaries. We need all the actors that are interested in attracting human resources in IT, through training programs and programming courses with the latest technologies and methods of quick learning.

Ovidiu MÄƒĹŁan

ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine


TODAY SOFTWARE MAGAZINE

interview

Leading an Information Security Business and Preventing System Attacks: The Catch

A

graduate of Moscow State Institute of Electronic Engineering with a master’s degree in Applied Mathematics and holding a bachelor’s degree in Business of The UK Open University, Natalya Kaspersky is an active participant of international business community life and actively invests in high-tech companies. Natalya is a co-founder of Kaspersky Lab, one of the world’s largest antivirus companies, and CEO of InfoWatch Group of Companies, working in the sphere of internal information security. During her 10-year tenure at Kaspersky Lab Natalya turned a small group of enthusiasts into a world-class international IT company with annual revenues of hundreds of millions USD. Featured as a distinguished speaker at elite IT events across the world, Natalya welcomed my invitation to discuss about the current challenges and trends in the information security. With an elegant presence and an open attitude, she shares her thoughts and experience with us. [Diana Ciorba] What is your motivation as an entrepreneur in the information security industry? Did it change over the years? [Natalya Kaspersky] : Initially, my motivation was to make some money for the family. As my former husband was the expert in the development of the antivirus software, my role was that of the salesman, of packing the software and putting it on the market. In 1997, even if it was not an initial desire, circumstances were such that I became CEO of the Kaspersky Lab and held that role for 10 years. Since then, things and life changed; my motivation, now, is to invest in the areas of IT, IT security and artificial intelligence. I am involved in 7 companies, some have success and some are still at the start-up phase, but that is the natural life of an investor. Based on your experience and expertise, what are the critical points that business owners should pay attention to when dealing with data in the current global landscape? [Natalya Kaspersky] It is important to understand that data in the modern world is not safe. Businesses hire professionals to secure data, yet there are two problems: firstly, the professionals may not have the knowledge to create full protection or may lack resources for this purpose; secondly, professionals are also human beings and they may overcome their responsibilities or get use of the infrastructure. That is why we divide threats in two categories: external for a company and internal. Threats coming from the inside are underestimated and there are very few tools available on the market to prevent them. In my view it is critical that business owners take the necessary time to analyze what they will do with their data and to acquire a generic understanding of the data security problem.

Natalya Kaspersky

What are the main challenges when deploying a data protection system for a customer? How is InfoWatch Group addressing these challenges? [Natalya Kaspersky] When we use the split between external and internal threats, we remark some crucial facts: External threats are more or less clear to identify – they may be viruses, general service attacks or hackers – therefore, protection against them is easier due to the wealthy knowledge base accumulated over the last 20 years. Internal threats though, are quite difficult to describe and detect. Many of our customers even find it difficult to describe what is confidential and what is not… Mainly because it is hard to explain. Therefore a task for prevention the confidential becomes impossible. If one doesn’t know what he is looking for, no software can help him to find it. At InfoWatch we produce and sell DLP (Data Leak Prevention) systems. The biggest question for us is “What information must be blocked or caught?” Otherwise we risk catching nothing or everything. I can tell you a story about that. One day I got a visit from our young competitor, a small company which also produced DLP systems. They boasted like they installed their product www.todaysoftmag.com | no. 33/april, 2015

9


interview Leading an Information Security Business and Preventing System Attacks: The Catch

to a first customer and detected 14.000.000 leakages on the first day! I wasn’t polite to give them my compliments, I simply said: “Do you understand that your software doesn’t work?” Obviously the product detected all the traffic of this poor bank as a leakage. Why did it happen? Because the developers did not work with the customer to differentiate confidential information from nonconfidential. Our focus at InfoWatch was always to analyze the data first – it means to proceed with *categorization* of information. We do it with a help of another software tool, which we created especially for this person, and we call this stage – pre-DLP stage. To shorten the pre-DLP stage we build predefined linguistic structures for predefined industries. After having installed DLP systems at +300 clients, which are large enterprises from more than 13 industries, I can openly declare that a pre-DLP stage is mandatory in order to make sure that the system will effectively work. What is the role of innovation in the solutions that you provide? How do you support its development and how do the stakeholders relate to it? [Natalya Kaspersky] DLP is a new product category by itself. It has started approximately 10 years ago, and until recently we were still struggling to explain the necessity of a DLP system for

operating systems on the market attracts an update of our software too. New devices, new forms of IT bring new challenges for the IT-security companies. That is why the IT security sector is always one step behind the IT industry. We need to analyze the new software and hardware before building the protection tools for them. The threats and the compliance requirements – Each new threat engenders innovation from our side. On top of that, the legal aspects on the protection of personal data determine us to always find the tools to be in compliance with the specific laws (FISA, Basel II, Basel III, PCI DSS, etc.) Considering all the above, as a provider of DLP systems we have to move forward with our own understanding of data security problems. We must decide what can be addressed and how can we best do that. Could you depict the main foreseeable industry changes for the upcoming years? [Natalya Kaspersky] IT security is currently evolving in two major directions: a) localization rather than globalization – businesses and governments tend to choose domestic data security providers. This trend is clearly seen in Europe; and b) the rising of defined targets with the specific methods –Targeted attacks are relatively new and you do not know from which side they will be led, therefore they are a big challenge for the industry. Take for example the case of the Stuxnet virus, which was designed to attack infrastructural objects of Iran and stayed in the wild for more than 3 years, unnoticed by antivirus companies!

Are there any new roles emerging in the information security related professions? [Natalya Kaspersky]: Actually, there is a big discussion about the CISO’s role. The Chief Information Security Officer has a difficult and sensitive position. Due to the fact that CISOs ought to focus on many aspects related to the overall business security it is expected that the holder of the position is a fine psychologist, Natalya Kaspersky și Diana Ciorba security expert and astute marketer. And this is something what is very hard to reach within one person. Alternatively, this role enterprises and confront the more delicate issue of privacy.. Since could be split among multiple persons. There are big discussions we are a software development company, innovation is at home. within the IT-security industry about the future of this role. In the DLP sector there are three main innovation drivers: The customers – They are very innovative and have imaginaIn terms of educating the new generations (both of users and tive requests, but unfortunately not everything is technologically professionals), which would be the pillars of a safe privacy system? possible. We try to choose some possible relevant tasks and to [Natalya Kaspersky]: Truth to be told, most people undebuild that specific tool or technology. restimate security. They simply do not think about it! Take as Trends of the IT industry – Each new version of available an example social networks, where people leave their sensitive

10

no. 34/april, 2015 | www.todaysoftmag.com


TODAY SOFTWARE MAGAZINE

pictures and other info about themselves. They got in contact with strangers and then surprised why somebody robbed or insulted them. The only way to change it, is to implement education about IT-security for all the age groups – from babies to adults. IT systems change too fast, whereas the educational systems are really inertial. The pillars of a safe environment are the principles of conduct in the digital world. The message for each aging group is the same “Internet is dangerous, but, if we learn to follow the simple rules, you can be safe”, but should be adjusted for a different level of understanding. And yes, we should start teaching the rules and principles since early kindergarten years. A special message for Romania’s ICT community? [Natalya Kaspersky] I value Romania for very well educated people, especially in engineering and information technology. At

Kaspersky Lab we had a successful experience with the Romanian team who developed the Linux version of Kaspersky Anti-virus. Good, talented and very qualified guys. I remember them with a good heart. Romania has its own antivirus software and that is something that must be appreciated. Personally, I think that the country should use its technical superiority for creating more software products and solutions. I wish best of luck to Romanian ICT community and may we cooperate well in the future!

BIO Natalya Kaspersky, CEO at InfoWatch Group of Companies, Kaspersky Lab cofounder

Graduated from Moscow State Institute of Electronic Engineering with a master’s degree in Applied Mathematics, and has a bachelor’s degree in Business of The UK Open University. Natalya Kaspersky is an active participant of international business community life and actively invests in high-tech companies. Natalya is a co-founder of Kaspersky Lab, one of the world’s largest antivirus companies, and CEO of InfoWatch Group of Companies, working in the sphere of internal information security. During her 10-year tenure at Kaspersky Lab Natalya turned a small group of enthusiasts into a world-class international IT company with annual revenues of hundreds millions USD. Natalya holds multiple awards in Russian and International Business and IT: • Bronze medalist of “Top-100 most influential Russian women in business” rating. • “Russian Business Leader of the Year 2012” award honoring her remarkable contribution to the progress of the Russian IT community, according to Horasis, the Global visions community. • Leader of “Top-1000 highest Russian managers of 2013” in IT according to Kommersant leading Russian business daily and Association of Russian managers. • Best Technology Business Entrepreneur, Women in Technology MEA 2014 awards, Dubai. • Nominee as The most influential person from Russia Q1 2015 for input in the IT-industry by BRIC Magazine, UK Diana Ciorba

diana.ciorba@codespring.ro Marketing manager @ Codespring

www.todaysoftmag.com | no. 33/april, 2015

11


programming

TodaySoftMag app for Windows Phone

T

Cosmin Jeler

he initiative of a TSM application for Windows Phone was born more than one year ago, within the 3PillarGlobal center of competence, as a way of exploring and acquiring of new knowledge regarding the Microsoft platform for mobiles. The project continued afterwards, with a lot of voluntary dedication and commitment of the people involved: Cosmin Jeler, the author of the present article, responsible for the development part; Robin Molnar – focused on the quality assurance part, Dan Hădărău for the support given on the design and server-side part and Ovidiu Mățan, project manager/ product owner.

Development lead @ CodArt Solutions

The Platform

cosmin.jeler@codart-solutions.com

by Microsoft on the release of Windows 10. As a hardware platform, the software giant has focused lately on the devices of the low budget area, launc h i n g many new models, or improved variants of the existing models. However, in the area of top devices, the dynamics is much poorer. Probably, the purchasing of Nokia and the associated processes of transition are two of the reasons, but in such a dynamic market as the one of mobile devices, launching at time distances that are bigger than a year is not allowed. Still, we should applaud the partnership with HTC for the M8 model, it’s just that continuity and presence of mind is required in order to keep the buyers on the boil – as no one would be content to pay the price of a top Windows phone when the newer model with Android is already launched. Nevertheless, let us hope that together with Windows 10, Microsoft will bring a new spurt to the hardware part, too.

Windows Phone is, at the moment, in the lower part of the chart regarding the market share of mobile devices. Microsoft has entered this game much too late, and once it got here, its classical marketing and product development methodologies could not overtake the competition. This is the reason why the Redmond giant was forced to start a massive process of selfreinvention: the changing of the CEO, the openness towards the open-source software, the development of applications for other ecosystems. These are only but a few points to mention in this direction. The data for the first trimester of 2015 show an increase on the West-European market, the Windows Phone mobiles have come to surpass the 10% of the mobile market in France, Spain, Germany, Italy and Great Britain. In the last few years, Microsoft has invested into the lessening of the effort made by the developers of applications for this platform, enforcing a series of actions such as: lowering the price for obtaining the developer’s account, the unification of the development platforms for tablet and phone, and soon, together with the release of Windows 10, the unification of the Stores for all the devices in the Microsoft ecosystem, including Xbox One. On the other hand, Microsoft has also recently started numerous collaborations with the producers of popular applications from AppStore and Google Play, in order to bring these applications to the Windows platform and diminish the frustration of First Impression the users regarding the lack of applications. The first challenge I faced in the deveAll these point to some high stakes placed lopment for mobile was the much greater

12

no. 34/2015, www.todaysoftmag.com


programare dynamics of the platform: the moment we started the project, Windows Phone 7 was still a full rights citizen, and WP8 was becoming the new trend. During the development, WP 8.1 appeared and, though it seems a minor update, it is actually an entirely different platform from 8.0. Passing to WP 8.1 would have meant an unsustainable effort, considering the fact that we already had to deal with the differences between 7 and 8. And later on, at the moment of release of the application, we already had a preview for Windows 10, and the application for WP7 had, unfortunately, become too old to be published in the Store.

Design

The initial tendency when starting the application was to take the design of the iOS version and transpose it in Windows Phone. But it didn’t take me long to realize that some things did not seem right at all. If, with Android, one can keep some similarities between the applications, in Windows Phone the user experience is completely different. A few examples in this line would be the manner of opening the menu (left side in iOS, with no equivalence in WP), the navigation manner (with soft versus hard buttons), the contextual menu specific only to WP and many others. Ver y soon, I saw myself facing the mission of conceiving a new design, adapted to the experience and capabilities of the Windows Phone devices, which had to comply with the recommendations for the user experience of the platform and, maybe the hardest part for a programmer, it had to look good. I took into consideration all the suggestions and feedback from all the people around me which I managed to involve: colleagues, friends, family, so that the versions I would present to the final beneficiary (Ovidiu – TSM), for another round of feedback, be as attractive as possible. But even the most accomplished design is not enough to make the application captivating; that is the reason why I also turned to those little tricks called animations. My much more experienced colleagues from the iOS platforms brought their contribution through suggestions and sometimes even details regarding the dynamics of animations, reason for which I would like to take this opportunity to thank them.

Model-View-ViewModel (MVVM)

For those with experience in the technologies based on the XAML language, the MVVM pattern we used is a model that is too well tethered in the professional environments to be considered “a choice” in the true meaning of the word. I will not go into details concerning this pattern, but in order for you to get an idea about it, we may say in a few words that it represents a specialized variant for the XAML technologies of the Presentation Model (PM) pattern, with the purpose of simplifying the programming

TODAY SOFTWARE MAGAZINE model based on events of the user interfaces. The PM pattern, as well as the Model-View-Presenter, separates the user interface from behavior and mood and it creates an abstraction of the interface.

Tools and technologies

The range of technologies we had to choose from was quite restricted, since we were dealing with a rather young development platform. As we needed a data base to store the magazines and the articles, we were lucky to begin the implementation in a very favourable manner from this point of view, as we had the LINQ to SQL data base available – a simplistic variant of the Entity Framework technology, known to every .NET developer. The only problems we encountered were related to the access synchronization – the writing of data on a tablet, from which another execution thread is trying to read, proved to be problematic, reason for which I had to synchronize the access to the data base. Unfortunately, in the RT version of Windows Phone 8.1, the data base support was omitted, the newer applications being forced to use SQLite. This thing would not be necessarily a problem, if Microsoft had also made available a LINQ provider for it. Unluckily, at the moment there is only one single decent external library, namely sqlite-net – we cannot but hope that Microdoft will not postpone the solving of this situation too much and will come with an official solution. Example of code of synchronized access to DB: public T Find<T>(Expression<Func<T, bool>> selector, params Expression<Func<T, object>>[] includes) where T : class { OperationOnDatabase.WaitOne(); using (DataContext dataContext = IoC. Get<DataContext>()) { if (includes != null && includes.Length != 0) { DataLoadOptions loadOptions = new DataLoadOptions(); foreach (Expression<Func<T, object>> include in includes) { loadOptions.LoadWith<T>(include); } dataContext.LoadOptions = loadOptions; } IQueryable<T> query = dataContext.GetTable<T>(); T result = query.FirstOrDefault(selector); OperationOnDatabase.Set(); return result; } }

A nice surprise was for me to discover the availability for WP of some libraries that are already famous in the other technologies .NET. I am talking here about the well-established Google Analytics and Json.NET – useful for the transformation of the results in JSON format from the server in the inner models of the application. Another advantage was the availability of share actions on e-mail and the social networks, offered by the operating system. Another external library we used is an extension of those from Caliburn Micro called BindableAppBar, which allows the handling of the events in the application bar (the bottom menu of the WP applications) in a MVVM specific manner – in contrast to the bar provided by the operating system that supports only code-behind events. www.todaysoftmag.com | no. 33/april, 2015

13


programming TodaySoftMag app for Windows Phone Maybe the most interesting aspect related to the technologies would be the manner of choosing the additional MVVM library. Though there are plenty of options on the market, only few of them have reached a relative degree of maturity and are available on WP. I would mention here the well-known MVVM Light Toolkit and Prism. With Prism I had already had some experience before and I knew it had its limitations; it has probably evolved meanwhile, but I preferred not to take a risk, but rather learn something new. So, the next option was the well-established MVVM Light. Unfortunately, I soon ended up doubting the choice I had made, but probably many of you find familiar the scenario of not knowing for sure if the problem resides in the choice you made or in the user’s competence… In such situations, I usually look for objective signs which can take me out of the dead end, and in this case, the decision factor was the total lack of documentation. Probably the authors of MVVM Light rest upon the fact that their tool is so easy to use that it needs no documentation – which was not my case. Even today, by taking a look at their web page, one can notice the lightsomeness they have treated this subject with, so that I ended up testing a less popular library at the time, namely Caliburn Micro. It has attracted me from the beginning, through its simplicity and offered power. It’s just that simplicity which is not also intuitive can become frustrating. But, reaching their documentation page, I realized it was of an utter professionalism – one can notice from no more than two lines that the authors have thought once and again about every thing they have written and implemented.

The life cycle of the application

Another interesting topic is the life cycle of the application – completely different from the experience of desktop and web programming up until then. The application has more states than the classical on and off, introducing many interesting scenarios related to the manner in which a page of the application gets to be visible to the user. The access to any page can be done from a previous page by following the standard navigation flow. It can also be done by returning from the following page (in this case, the page is already in the memory, it no longer has to be initialized, just becoming visible on the screen), or by starting the application from the suspended state directly to the last visited page. Besides these ways, my experience from other projects has shown me that there is also a hybrid case, where through the call from external applications or from the system, the application can be started directly into an intermediary page, without going through the normal navigation flow between the pages and it can also accept input parameters. All of these cases, plus the asynchronous nature of mobile communication, can generate very interesting states of the application.

Navigation between pages

Having a lot of experience in WPF and especially in Silverlight, I would have expected the development of Windows Phone applications not to raise too many problems. The reality, however, was a little different: on the user interface and language level, things are relatively similar, though I have noticed a big difference in the navigation between pages and the life cycle of the application. The experience can be compared to moving from desktop to web programming, for those who have been through such a thing. It’s very simple: in WP, the state is not kept between the pages of the application. Passing the parameters from one page to another is done through query strings, and for more complex

14

no. 34/april, 2015 | www.todaysoftmag.com

types the situation gets complicated, since there is no standard method for solving the problem. Caliburn.Micro proved to be a real help in this case, providing a simple and intuitive solution: navigationService.UriFor< ArticlesInIssueViewModel>() .WithParam<int>(articleVM => articleVM.IssueId ,selectedIssue.Id).Navigate();

Example of navigation code using Caliburn.Micro.

Animations

The animation part was one of the most interesting parts of the development, as they contribute to the identity and appealingness of an application. There is no way we can compare the present application to those from the top of the application stores, but this does not mean, however, that we have to settle for a trashy variant, such as plenty of those that are rearmost of the mobile applications stores. On the other hand, the more interesting the animations are, the more consuming they are in terms of time of involvement. There is a level of animations implicitly provided by the operation system, and here I am referring to the pre-established styles of the controls used in the application (themes and transitions between states). Another level of animations are those made available in libraries, which only need to be manually imported and properly used. Of these, I would mention the animations for entering and exiting a page and the rotation animations when changing the orientation of the screen. The next level would be the personalized animations, which, even though discrete, cannot be neglected. I am referring here to the buttons for choosing the language, the animation of the latest issues of the magazine when launching the start page, the oscillations of the images of the editions from the full list of magazines (still in the start page), the progressive intensity of appearance of the images of the articles in the magazine, the header that appears and hides away depending on the manner of unfolding of the content of an article. Those who had to deal with the iOS ecosystems will probably notice the similarity to the address bar of Safari, whose functionality I tried to reproduce.

Encountered problems

By far, most of the problems encountered were related to the content page of the articles. The most important piece of advice which I hereby give you for free is related to the web controls: do not use web controls in mobile applications. If, nonetheless, you have to use one, try to limit yourself to interacting with it in a manner as minimalist as possible, such as sending the address of the HTML page that has to be visualized, as everything else in cancan.


The problems of the web control are numerous and not all of them are related to the fact that we are talking about Internet Explorer – there are many which have to do with the very different nature of the control. Below, I will present a list of some of these problems I have encountered: The control does not report the navigation events and those of completing the uploading of a page in an accurate manner, requiring many tricks in order to offer a pleasant experience to the user. I am referring here to situations when the web page does not upload or it uploads with errors or the uploading simply takes too much time – for such situations, we have to find methods of administration, which are quite expensive. Implicitly, the web control gives the possibility of navigating to addresses from the content – I had to remove this functionality so as to prevent the situation in which the user uses the TSM application as a web browser. This thing could not be done by merely setting a simple attribute. The control swallows the gestures and other events generated by the user, believing that they are part of the interaction with the imbricated HTML content, and no longer exposes them to the programmer for further processing. This is the reason why the header, which appears and hides away according to the vertical movements of the HTML content of the article, has raised several synchronization problems. Upon leaving a page, the content of the control has to be deleted – I used the trick of uploading an about:blank – because, otherwise, one can end up in some strange situations such as the one when a Video that has been played sticks into memory and keeps running continuously, even if the user has navigated to another page. A video imbricated in the HTML page does not report the events, by any means, so that it was impossible for me to implement the scenario that, when the user presses the complete-screen button, I could hide the rest of the elements of the page. Another huge failure concerning web control was the attempt to implement an endless horizontal scroll between the articles of the same magazine. A swipe gesture from the right side of the screen would have led to the next article, through some animation, and analogously for a swipe from the left side. Even though I was about to complete the implementation of a functional variant, I was forced to give this idea up completely, because the web control would not report the user’s gestures faithfully, in terms of delta distance, frequency of reporting and acceleration. Other interesting aspects from a technical point of view were related to the asynchronous nature of calls in the development on mobile. What happens, for instance, when the result of an asynchronous call (to the server or the data base) returns after the user has already navigated to another page? In a first instance, nothing, but on a more careful testing, the application throws an exception

which is sometimes ignored, other times ends the application. Those calls can be cancelled, but when this is not possible, the results of those calls can and should be ignored. C# language offers support for the cancelation of asynchronous calls, the point of entrance into this subject being the TaskCancellation class, for those who wish to find out more details. What happens in the case when a page alters certain data which already appear on a previous page? When navigating to the previous page, will the changes be visible? The default answer is no, because there are no stages between the pages and neither notifications can be conveyed. The programmer can, however, be careful to deal with such situations by manually testing the state of the objects that are susceptible to change. An eloquent example is the main page, where the number of articles from a magazine is only visible after exploring that edition, moment when the list of articles is uploaded from the server. When returning to the main page, the number of articles from the respective edition needs to be manually updated. Another pretty costly section was the changing of language. Although it seems a rather simple action in itself, the final version of implementation was far from being simple. The calls in progress to the server have to be canceled, the data base has to be emptied, some settings of the application have to be reset and the application needs to be restarted without the possibility of navigating backwards.

Testing

Robin Molnar, our team mate from 3PillarGlobal, was responsible with ensuring the quality of the application, proving a lot of professionalism in respect to the testing process. He got involved in the mobile application part, as well as in the server part, and his thoroughness and suggestions will surely have a considerable impact on the users’ perception of the application. The different test scenarios applied to different devices and platforms required a lot of attention and effort.

The end

Without meaning to sound like an Oscar award cliché, I would like to thank 3PillarGlobal for the support given, the manager, Dan Suciu, for starting and supporting this project, Robin Molnar for his outstanding professionalism and Ovidiu Matan, Dan Hadarau for the design part and the Gemini Solutions team for the support offered in all the stages of development of the application. As a conclusion, I may say I have learnt a lot from this project, from a technological point of view, but especially on the communication and coordination part. I have learnt that a lot of hard work is required in order for a product to be considered complete and that you can only say this in the moment when the product is in the hands of the final clients. Though it seems easy from the point of view of the programmer who writes the code and completes the final task, the effort required until it’s really completed cannot be neglected at all. It is not the case here, but sometimes this effort can get as big as or even bigger than the implementation effort. There are many other factors that contribute to the success of a product, and rarely does the manner of implementation done by the programmer have the major impact. I conclude by inviting you to install the application from WP Store and contribute with suggestions and feedback, which we will appreciate and which will obviously constitute the starting base for the following versions of the application. www.todaysoftmag.com | no. 33/april, 2015

15


interview

About testing with Rene Tuinhout

R

ene is a senior test adviser and test coach with over 17 years of experience in software testing. He advises organisations on Lean Quality, test management, test change management, structured testing, and manage test (change) projects. This year he will be the chairman of Romanian Testing Conferences and we had the pleasure to take this interview.

1. In an interview for Professional Teste r mag a z ine ( G et ting war me r - http://www.professionaltester.com/ magazine/backissue/10/ProfessionalTesterAugust2011-Tuinhout-and-Janssen.pdf ) you made an interesting affirmation about viewing testing as a risk mitigated rather than failure prevented. Could you please elaborate this idea for our magazine readers? The idea behind the statement you quoted from Richards and my article is quite simple: We found that discussing the benefit of testing was quite complicated, and in most cases ended in a “let’s agree to disagree”-situation, when the discussion was about failures found (and fixed). We, as testers, would plead that a specific failure found was quite similar to a failure not detected in another project which caused a loss of X euro’s when it was finally discovered in real life use. So, we would say, we saved the business X euro’s. However, the business would plead the failure found (and fixed) was quite dissimilar to that previously not-detected failure, and therefore the comparison could not be made. Leaving us with no grounds to demonstrate the benefits of testing in a language the business understands: money. However, this changed when we switched from discussing the benefits of testing based on failures prevented, to discussing the benefits of testing based on risks mitigated. In the article you mentioned, Richard and myself present a simple method which allows business managers (supported by testers) to map business risk types for their specific business. Next, concrete risks envisaged in the change/new product the business wants are collected from business staff (users, operators, dba etc.). Combining the business staff ’s and the business management’s inputs, all concrete risks identified by the business staff can then be mapped onto a risk thermometer, using the business risks provided by the business managers.

16

This will lead to a model represented by a thermometer, showing concrete risks, categorized in a way with which the business management agrees. This has three advantages: • Business staff can bring their expertise about concrete risks to the table; • Business management can bring their expertise about risks for the business to the table, and can decide what

expressing the risk types into monetary values might be a good idea. As a consequence, all risks now carry a monetary value (usually expressed as “it will cost at least Y and at most Z”). Later on, when risks have been classified into the categories indicated by management, tests will be designed to cover the (most important) risks. This automatically means that a failure

risk types (and related risks) should be thoroughly tested and which risk types (and related risks) are acceptable; • The benefits of testing can be discussed in a way testers and management agree upon.

detected when testing to cover a risk would have cost the business “at least Y and at most Z”, enabling testers and business management to discuss the benefits of testing based on a common ground: money. 2. Deciding what should be tested or not based on the thermometer approach looks like a simple and powerful tool for making people better understand the importance of testing. How is this working in practice for real projects? In one word: Great! The article you mentioned was published in 2011. Even before that, the thermometer was used in some projects, and after publication of the article it has been used in many more. It

This latter point deser ves some elaboration: When discussing the risk types with business management, it usually turns out management wants to express risks in monetary values, i.e. “what would it cost when this risk occurs”? If this doesn’t emerge during the meeting with business management, business management can be suggested that

no. 34/april, 2015 | www.todaysoftmag.com


TODAY SOFTWARE MAGAZINE has proven a powerful tool to: • Help business management make management decisions about what risk types to accept and what risk types not to accept (i.e.: what must, should, could and won’t be tested on a conceptual level); • Help business, project and continuity –management make decisions about (re-)prioritization of effort spent, based on business risks; • Help business staff map real life risks onto a prioritization framework, showing them how their risks relate to the real life risks other business staff have mapped onto the model; • Help testers to identify which tests have which (must, should, could, won’t) priority; • Help testers to show the benefits of testing.

professional testers have asked for years: it results in software delivered to testers being of better quality (because it has been low level tested by software engineers), and it results in product owners being involved with product development and testing much more. However, excluding testers from product development means ignoring a very important aspect of the tester´s craftsmanship: constructive destructivity. System engineers as well as product owners are focused on making things. They tend to focus development and testing efforts on those aspects of the product under test that this product is supposed to do. Testers have the ability, skills and toolset to discover and focus on those aspects of the product under test that this product is not or very infrequently supposed to do, as well as on non-functional aspects not easily tested (for example security, performance, usability, maintainability), thus discovering potential failures system engineers and product owners are less likely to find. Therefore, I feel the testing efforts of system engineers, product owners and testers are supplemental to one another. (By the way, I think a great benefit of all these disciplines being involved in testing is the possibility to learn from one another: The system developers learn a bit more constructive destructivity, the product owners gain more insight into the technical difficulties of making a product and its associated risks, and the testers learn quite a bit about programming and the risks the product owner needs to have covered.)

The model is mostly used as the thermometer-model. However, in some cases it has evolved to a two-dimensional matrix, which provides business management with a bit more detail (basically, risk is presented on the thermometer as one value, whereas in the two-dimensional matrix, risk is split up in impact and likelihood). 3. There are projects that are delegating testing tasks to software engineers by making unit testing and integration testing. Also, we saw projects where the testing is basically done by the product owner. How do you see this approach? Although I value these developments, I also see value in involving professional testers in testing efforts. Software engineers and product owners should definitely be involved in testing. Some developments, like Agile, now pave the way for 4. If tomorrow someone asks you to cresoftware engineers and product owners to ate a testing university, what will the study be involved in testing. Something many materials look like?

A great deal of effort has been made by a Dutch TestNet (Dutch association of testers) workgroup, developing an academic/polytechnic curriculum. It would be too elaborate to discuss the curriculum that has been created in detail in this article, but the curriculum focuses on tutoring the students about user interaction, business processes, software, infrastructure, hardware interfacing and the skills analyzing, advising, designing, developing and maintaining. All materials about this are in Dutch, but if you’re interested, send me an email and we can have a chat/mailsession about it. 5. Congratulations for getting “People’s Choice Award” at RTC in 2014. This year you will be the chairman at RTC. What interesting topics are prepared for this year? Thank you! I was very honored and humbled to have won the award, and being ask to be this year’s chairman. There are many interesting topics and (seasoned as well as novice) speakers on this year’s RTC. For an overview of the entire program, please visit www.romaniatesting. ro. Personally, I think the Romanian Testing Conference 2015 has many interesting speakers (a.o. Peter Varhol, Markus Gärtner, Team Army Ants (Software Testing World Cup)) from a lot of interesting companies (a.o. Adobe, Cisco, Facebook) and focusing on interesting subjects that are hot today (a.o. cloud, privacy laws, test automation, test data quality, internet of things).

Ovidiu Măţan

ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine

www.todaysoftmag.com | no. 33/april, 2015

17


showcase

SafeDrive

H

ave you ever wanted to turn safe driving into something fun and your friends into responsible drivers? Wouldn’t it be even greater to be rewarded for this? SafeDrive app makes your dreams come true.

18

Launched by the software company XL Team, along with Know Now Solutions, and in partnership with Microsoft, SafeDrive is a mobile app that encourages safe driving, by offering points to the drivers that do not use their mobile phones while driving. The process behind the app is quite simple. All you have to do is install the app (which is available in both Google Play Store and Apple App Store) and create an account or log in with Facebook. Then, each time you get behind the wheel, you just have to turn the app on and to stop using your phone until you reach your destination. Once opened, the app activates itself as soon as your speed is over 10 km/h and it shows its Release screen. If you want to use your phone while driving, you have to press the release button. However you will be notified that you will use all the points you have accumulated during that trip if you decide to do so. When the car stops, you just press the “I finished my

no. 34/april, 2015 | www.todaysoftmag.com

trip” button and you see how many points you accumulated during that trip. With a complex algorithm, the app computes the number of points earned by the driver, taking into account the length of the trip, the time and the speed. SafeDrive points are convertible into discounts to the products of our partners. For instance, with only 50 SafeDrive points, you can get 2% discount to any evoMAG product, 50 MultiBonus Card points that you can use in any MOL gas station, or a standard holiday card, offered by 9596.ro. SafeDrive already has 2,200 active users and 2.5 driven km, so the app has already started to motivate the drivers to act responsibly while driving. What is more, the founders’ goals for the future include launching a challenge system, which, through gamification, will act as an incentive for people to stop using their phones while driving. This system will daily invite SafeDrive users to take


TODAY SOFTWARE MAGAZINE

part in a challenge, with an opponent chosen automatically by the app. The app will also select the trip from the previous day when each user earned the largest number of points. Then, the challenge winner will be the user who previously earned more points that his opponent. The prize will consist of a number of points earned by the opponent. The main objective of the challenge system is, on one side, user retention and adding a dose of risk, and, on the other side, motivating the users to use the app on a daily basis and as often as possible, so that they can earn more points, thus win more challenges the next day. Due to the founders’ initiative to incentivize the population towards safe driving and also due to their innovative solution to this problem, SafeDrive app is one of the finalists in the prestigious Edison Awards Ceremony, which will take place on 23rd of April, in New York. The subcategory where SafeDrive has been nominated and is now one of the three finalists is Health & Wellness, as part of the LIFESTYLE & SOCIAL IMPACT category. The app has been developed in native iOS and native Android. SafeDrive’s

development team includes an iOS deve- intensively in Bucharest and it’s done by loper, Gabriel, two Android developers, two testers, Doru and Alex.

Tudor Cobâlaș

tudor@xlteam.nl

Sorin and Mihai, and a UX/Designer, Oana. The testing process involves driving

Business Developer @XL Team

www.todaysoftmag.com | no. 33/april, 2015

19


communities

IT Communities

W

e are inviting you to participate in may to high quality events such as IT Camp, Romanian Testing Conference or I T.A.K.E Unconference. Also, it is the time when startups got created at Startup Weekend Cluj and Timișoara. See you around !!!

Transylvania Java User Group Community dedicated to Java technology Website: www.transylvania-jug.org Since: 15.05.2008 / Members: 598 / Events: 47 TSM Community Community built around Today Software Magazine Websites: www.facebook.com/todaysoftmag www.meetup.com/todaysoftmag www.youtube.com/todaysoftmag Since: 06.02.2012 /Members: 2270/ Events: 31 Cluj Business Analysts Comunity dedicated to business analysts Website: www.meetup.com/Business-Analysts-Cluj Since: 10.07.2013 / Members: 91 / Events: 8 Cluj Mobile Developers Community dedicated to mobile developers Website: www.meetup.com/Cluj-Mobile-Developers Since: 05.08.2011 / Members: 264 / Events: 17 The Cluj Napoca Agile Software Meetup Group Community dedicated to Agile methodology Website: www.agileworks.ro Since: 04.10.2010 / Members: 437 / Events: 93 Cluj Semantic WEB Meetup Community dedicated to semantic technology. Website: www.meetup.com/Cluj-Semantic-WEB Since: 08.05.2010 / Members: 192/ Events: 29 Romanian Association for Better Software Community dedicated to experienced developers Website: www.rabs.ro Since: 10.02.2011 / Members: 251/ Events: 14 Tabăra de testare Testers community from IT industry with monthly meetings Website: www.tabaradetestare.ro Since: 15.01.2012/Members: 1243/ Events: 107

Calendar April 22 (Cluj) Launch of issue 32 of Today Software Magazine www.todaysoftmag.ro April 23 (Cluj) 1st Share IT Event www.share-it.ro April 24 (Cluj) Cluj Startup Weekend cluj.startupweekend.org/ April 30 (Cluj) .NET Cluj Community Launch facebook.com/events/1871795056383274/ May 7-8 (București) Bucharest TECOMM bucharest.tecomm.ro May 8 (Timișoara) Startup Weekend Timișoara facebook.com/events/1536616099931448/ May 13 (Cluj) DevTalks devtalks.ro May 14-15 (Cluj) Romanian Testing Conference www.romaniatesting.ro May 29(Timișoara) Google I/O Extended 2015 Timisoara evenimentebiz.ro/event/google-io-extended-2015 -timisoara/ May 21-22 (Cluj) IT Camp www.itcamp.ro May 21-22 (București) I T.A.K.E. Unconference 2015.itakeunconf.com

20

no. 34/april, 2015 | www.todaysoftmag.com


programare

The Big Data Revolution

H

eadquartered in London, Ve Interactive is a world-leading technology company whose platform has become an essential component for any online business to acquire, engage and convert more customers. After just 5 years, Ve has grown rapidly by successfully delivering products that give incremental value to our clients. Now with over 700+ staff, 26 offices worldwide and over 10k customers in 43 territories, Ve offers employees an entrepreneurial and global environment within which to grow and develop. Graham McEnroe

graham.mcenroe@veinteractive.com Content Manager at @ Ve Interactive

We plan to employ circa 1,000 people by the end of 2015, and to support this growth we are opening a new development center in Cluj. This being the latest addition to our portfolio of development centres, in London, Bilbao and Paris. This centre will assist us in not only developing our existing Apps, but innovating and developing new products to assist our customers in increasing their revenues. Challenging the status quo in digital marketing, leading one of the top big data projects in the world, and the driving passion to become the next tech giant. Ve Interactive Director of Data Cyrille Vincey gives his personal account of how Ve will take online marketing to the next level with big data and a unique vision. The turn of the year brought more than resolutions for Big Data and Data Visualisation company qunb, an acquisition from website conversion specialists, Ve Interactive. The goal is clear. To build a

product which provides unrivalled business

Cyrille Vincey

intelligence through real-time and retrospective exploration of online consumer trends, live analytics, and pinpoint predictive analytics. In this interview, we speak with qunb’s founder and now Ve’s Director of Data Cyrille Vincey about just what he’s determined to achieve with this fusion of talents, and what he needs to do it.

www.todaysoftmag.com | no. 33/april, 2015

21


programming The Big Data Revolution Can you please tell us a little about your role? I run a team of data scientists, introducing storage data in a unified environment. When it comes to a mission statement, we have three primary objectives we would like to achieve. To create new revenue streams based on data, augment Ve Interactive’s existing suite of products using intelligence built on data, and develop new ways to acquire leads using data resources.

want to distribute your processing jobs over the storage nodes, and merge the distributed local results back into one place. So in a nutshell, this is the cornerstone of any Big Data architecture - distributed storage plus distributed processing. Cherry on the cake, the open source world generates a wealth of complementary layers that you can plug onto this foundation, depending on the goal of your platform. Real-time processing, graph management, full text search, messaging, ad hoc analysis, to name a What excites you most about this project? few. The open source community is contributing on amazingly My passion comes from the people. Never have I met as much powerful frameworks that now cover almost all the needs for data diversity and passion before joining Ve. There is also the tech management over distributed architectures. challenge. We now have a vast playground of data in terms of size and resource. In regards to big data projects, this is a dream How do you see the use of Big Data develop over the next situation for any developer or engineer to be involved in. months and years? We are still in the early education phase where we need to What are the main challenges you face? explain that Big Data is not the only answer to every data proThe pace with which the company has grown, even since my blem. Big Data is still a bit sacralized, but it becomes more and time, can make it difficult to keep track – in particular the rate more mature, and more and more easy to implement, it shall be of new product development and the unrelenting extension into regarded as an alternative to relational databases in some specific new geographic markets. cases. But not in all cases. While a challenge to keep up, this rapid expansion means the I’m probably more legitimately able to talk about the use of immense volume of potential data we can use grows also. The Big Data technologies at Ve. My apologies to the non-geeks, but 10,000(approx.) Ve clients at present represents billions of pages let’s do some name-dropping here. Our software stack is shaped and customer actions each day that can be analysed. Huge num- after the lambda architecture. We are using Hadoop for distribers. The sort that easily places this big data project in among buted data storage, Kafka for message processing at scale, Spark the top 50 in the world. And with this broad scope of tech at our for close-to-real-time data processing, MapReduce for batch data fingertips, it makes it impossible to stand still and the ideal place processing, Cassandra for the service layer, Titan and Giraph for for constant learning. a graph-based representation of our data, ElasticSearch to expose our knowledge graph to full-text search queries, plus a wealth Big Data has become a buzzword - can add some clarity by of Machine Learning for classification and regression problems. giving me your definition? Long story short, we are using a 100% open-source software I like to say that Big Data resurrects storage techniques which stack. And here comes the actual answer to your question: the were in use during the 70s, but forgotten with the relational data- next step for us at Ve is to open-source part of our proprietary bases era of the 80s and 90s. The foundation of Big Data is simple: techs, and as such contribute to the evolution of Big Data in gene“If your data is too big to be stored on one single super expensive ral with our own R&D. mega-server, just distribute the storage over a grid of small cheap servers.” What effect has big data had on how brands and companies Right after the definition, comes the part of Big Data that’s interact with their customers? exciting – well at least for data geeks. As your data sits over Correctly harnessing big data means companies have the hundreds or thousands of servers, it’s hardly ideal to move it technology to use any data for a multitude of different purposomewhere else whenever you need to process it. Instead, you ses. This technology means understanding patterns unidentifiable

22

no. 34/april, 2015 | www.todaysoftmag.com


TODAY SOFTWARE MAGAZINE by humans. For example, detecting a correlation in the hours between when something occurs and levels of mobile activity. It’s this predictive capability that makes it so valuable, in as far as it’s a way for brands to scale resources in response to anticipated trends. At the moment, most brands react to consumer behaviour online with a predetermined solution. With big data fuelled marketing, these interactions can be based on individual behavior – while using aggravated, anonymous information. By these means, we want to improve the value proposition from Ve to its customers and also its customers’ to their end user.

Why work for Ve? We know for a fact that finding exciting big data development projects is difficult, except in the case of the long-standing tech giants. What we’re doing will revolutionise web marketing with a vision unique to Ve on how to use data. The most compelling reason to work here is that with Ve, you’re challenging the present day status quo in digital. We don’t want to be acquired by a giant, we want to become one.

Do you think Big Data is being used to its full potential at present? We certainly have tools available, it’s the data itself that’s usually missing. That’s what’s so exciting about the proposition of joining Ve. We are now in the unique position of having access to immense volumes of data, which is complemented perfectly with the right talent and vision. How are Ve Interactive planning to revolutionise how big data is used? We can contribute to the big data knowledge pool by participating a shedload of R&D into key areas. While it’s important to continue nurturing advanced machine learning techniques, our primary focus is on real time responses. We want to harness tech that works toward fulfilling this goal. To do so we need engineers experienced in open source development. Open source developers are the most passionate and dedicated in the world. Their work is bourn of irrepressible curiosity for their craft, which is something that can’t be taught.

www.todaysoftmag.com | no. 33/april, 2015

23


management

Agile Mindset From Another Angle: From Rules To Context Through Best Practices For Increased Efficiency

A

while ago I attended to an Agile conference here in Cluj. Among many interesting topics, presentations and discussions, I took part in a debate where the main idea was centered on the question “Is Velocity a metric or not”. There were a lot of ideas thrown around and the final conclusions were pretty good.

At one point during that discussion I said that velocity is too waste the edge cases which are not generally solved by the rules. contextual to be a metric. One of my colleagues asked if that was The advantages of playing by the rules are multiple: a good or a bad thing. Since I was not sure of an answer I picked • We have at least the impression that the control of the the most neutral one and said that is neither good nor bad and working environment is at a high level. it’s just a fact (actually a very important fact). I continued to think • Predictability of the end result takes less effort (historical about that even after the debate ended and I started to add pros data has an important role in making predictions more easier and cons in my mind to see if something contextual can be good which doesn’t necessarily mean more accurate) or bad. I reached the conclusion that “contextual” used in the • It offers a strong starting point right way might be very good if we want to obtain the maximum efficiency from a situation. Even more I tried to see what is the Drawbacks: opposite of contextual and thinking about general solutions for • Creativity and innovation is without a doubt limited by the large number of situations and somehow rules and best practices rules. started to get into this picture. And finally I tried to picture where • The edge cases which forms the waste are not covered by the Agile mindset comes in and how it encourages and facilitates the rules or even more dramatically the rules will block or will the transition from these general solutions to contextual ones in make very hard to find solutions for this situations. order to maximize efficiency. And I was so thrilled about this argument that I felt the urge to put it down on the paper to see if Case study step 1: A new team is in place. They are ready to I got it all right. attack a project and they need to work by the Scrum rules. They have a Product Owner from the client assigned who knows the Rules. Some people love them, some people hate them, but process and who is able to provide the priorities in time. They are in the end the rules are everywhere. If we take a moment and do putting in place iterations. They manage to have all the required a little reflection over our life we will see that almost everything ceremonies: planning, daily stand ups, sprint reviews and sprint that we learn starts with some rules. Some of them are more strict retrospectives. I know what everybody’s thinking right now: this than the others but almost anytime we start something new we is the ideal situation and usually this doesn’t happen by the book start with the rules and than we adapt to how it fits us the best. in reality. Which is totally fine. The team is able to use all the Remember the first time we played tennis or the first time we Scrum rules because the stars are aligned in the right way for played basketball. Coaches are always starting with: let me tell them. you the basic rules of the game. All started with the rules and then Best practices. What would be the next logical step in order to was customized. From my point of view the rules power is the fact increase performance in these edge situations? To have the possithat they are aiming to get the best average of efficiency through bility to bypass the rules where we are convinced that results will a ton of similar situations. be better. And that’s how best practices come into the picture. This might be a little too At their origin stands the same concept as in rules situations: vague right now so let me through a lot of similar cases somebody very smart (and I know try to get into some more for sure those persons are smart because otherwise the word specific details. “best” wouldn’t fit into the picture) has found a good solution, has found a pattern to solve all of them that fits in the same category. This solution or pattern is what “best practice” represents. The Having a lot of simi- difference between a best practice and a rule is the fact that the lar contexts, if we play by best practice concept gives us the possibility not to use it when we the rules we will obtain feel we have something better for a certain situation. It gives us a the best Performance / strong starting point and it gives us a fast strong solution for our Waste average through all specific case but doesn’t force us to use it literally. Even more the the situations. I’m calling best practices allows us to juggle a little with them. They are not

24

no. 34/april, 2015 | www.todaysoftmag.com


TODAY SOFTWARE MAGAZINE as strict and intangible as the rules are. Once we gain experience we will identify easier when a best practice needs to be applied, customize or bypassed. Case study step 2: We have the setup in place and the team is following all Scrum rules. As a best practice they are doing estimations in story points and after some iterations they are able to have a stable velocity and do better and better predictions. And then something changes in client organizations e.g. the Product Owner is replaced and the new Product Owner doesn’t want to hear anything about story points, doesn’t understand them and he is pushing for time estimates because his level of comfort is much higher this way. The team will need to drop the best practice, adapt to client needs and provide work estimations in units of time. Context. A contextual solution will take into account all the edge cases and all the factors that are affecting our case. The contextual solution will take in consideration also the edge cases which are not solved by the rules or best practices and which form the waste. Therefore a contextual adaptation should maximize efficiency by solving also the situations which are not touched by the power of rules or best practices. Based on each of our capabilities and experience we can find these solutions slower or faster and we can find the right solution or customization or not. But no matter how capable or experienced we are we will not be able to obtain maximum performance if we are not ready to adapt. Case study step 3: There are an unlimited situations and factors which can influence the good processes which our team are trying to follow. In step 2 we already faced a client which doesn’t like story points. What if we are facing one which doesn’t want to have sprint reviews? We try to find alternative solutions on delivering the work and getting his acceptance. The rule might say that we need to have the review for a clean process but is not applicable here. If we run until now ten retrospectives and they were totally useless and we were not able to find a way to make them count should we invest more time in this just for the love of the rules or should we spend that time more wisely? Adopting an Agile mindset will allow us to understand the rules and their power but to be smart enough to not be tied to them. Will allow us to understand the power of a best practice but in the same time will give us the power to choose if we will use it or not. The Agile mindset teaches us to adapt to different contexts

and to get the most out of them. It is in our nature and is polished by experience. The simplest sample would be on how we gain our driving skills. First we learn the rules and in the beginning we follow them strictly. Than we are visiting England and we drop the rule which we knew our entire life which says to drive on the right side and adapt to a new rule and drive on the left side. And we drop also the best practice about changing gears with the right hand and we start changing gears with the left hand. And with experience it all comes very naturally, we don’t think at the rules and best practices anymore and how are they applied in each traffic situation but we are doing it on the spot. So an Agile Mindset is there by nature. If we really want to make the best out of each situation we should not be afraid to use it.

Bogdan Mureșan

bogdan.muresan@3pillarglobal.com Director of Engineering @ 3Pillar Global

Our core competencies include:

Product Strategy

Product Development

Product Support

3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world. Our offerings are business focused, they drive real, tangible value.

www.3pillarglobal.com

www.todaysoftmag.com | no. 33/april, 2015

25


programming

5 Steps to Mistake Proof Software Design

M

y previous blog posts have shown how to create better software design and defined the idea of Usable Software Design. Usable Software Design comes from the simple observation that the developer is the user of a software design. My thesis is that using principles and practices from Usability in software design will create two important economic benefits: • faster implementation time for common tasks • faster integration of new developers in an existing team. Alexandru Bolboacă

alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works

In this article, I will explore further usable software design starting from the simple idea that nobody likes to make mistakes but mistakes still happen. Since usable software design means software design that’s a delight to use by developers, something has to be done to prevent mistakes. So, how about Mistake-Proofing your software design to make it more usable? But first, you have to understand one important thing…

1. It’s The System’s Fault

In 1988, a cognitive scientist took upon himself to take a hard look at how we’re designing everyday objects. Professor Donald Norman explored user-centric design in his book “The Design of Everyday Things“, starting from psychology: The vicious cycle starts: if you fail at something, you think it is your fault. Therefore you think you can’t do that task. As a result, next time you have to do the task, you believe you can’t, so you don’t even try. The result is that you can’t, just as you thought. You’re trapped in a self-fulfilling prophecy. – Donald Norman, “The Design of Everyday Things”

design. […] It is the duty of machines and those who design them to understand people. – Donald Norman, “The Design of Everyday Things” This means that…

2. Developer Mistakes Point To System Design Issues

Put yourself in this scenario: you find out that Jarod the Junior Programmer did a mistake when working on a task. You realize that other people have done this mistake before, and the solution has been documented. What is your reaction? I bet your team’s Jarod is not that junior • Tell him that it’s documented and point him to the right place to read • Explain him how it’s done • Look at the design and change it so that this problem cannot repeat

I used to do 1 or 2, and still do sometimes. Old habits take effort to change. Unlike 5 years ago, I understand now that this might create a vicious cycle. Here’s how. How will Jarod The Junior Programmer feel if your answer is 1 or 2? The involuntary psychological reaction is to feel guilty. Repeat the scenario a few times and he will and the solution: stop challenging the design. Therefore, the It is time to reverse the situation: to vicious cycle. cast the blame upon the machines and their What Mr. Norman taught me instead is

26

no. 34/2015, www.todaysoftmag.com


TODAY SOFTWARE MAGAZINE that I should consider this situation as the fault of the system, not the fault of the developer. Figuring out how to improve the system so that the error doesn’t repeat is the next important thing. Here are three ways to improve your design to prevent mistakes.

similar to: Game game = new Game(playerX, playerO); game.move();

move those methods, and everything becomes right with the world. In the case of TicTacToe, it’s very tempting to write code like this:

I don’t see any way to use this design game.move(“A1”); any other way than it should. Not only it’s easy to use, it’s also easy to learn and or like this: mistake-proof. game.move(0, 0); 3. Eliminate Exceptions The Game class can only be used in Sometimes, methods throw exceptions one way, the same way there’s only a way There are many problems with this when called in a different order than they to plug in a memory card design. Nothing prevents me from sendare supposed to. In certain cases, it’s possiing in bad coordinates such as game. ble to completely remove the exceptions by 4. Pass Mandatory Arguments In Conmove(-1, 2000) or game.move(“Z9“). To redesigning the class. Here’s an example. structor avoid the problems, validations will have At various Software Craftsmanship A common mistake is to create an to be spread throughout the code. In events where we practice coding tech- object without all the mandatory parame- the first case, string processing will be niques, we have used TicTacToe as a ters. When calling a method later on, an spread around code, and it’s easy to introproblem. We typically end up with a error appears. duce off-by-one errors when doing string Game class that most developers design as For example, keeping the TicTacToe processing. If the corner cases are validated follows: realm: with unit tests, you will need to repeat the unit tests for valid/invalid coordinates in class Game{ Game game = new Game(); ... game.move(); // players have not each class that uses them. moveX(); been added to the game There’s a way to avoid all this: no matmoveO(); ... TicTacToe can only be played by two ter how you input the coordinates, convert } players, be they human or computer. There them immediately into a value object. This design leads to a potential mis- probably are TicTacToe games with more In the case of TicTacToe, the domain of take: nothing prevents me from writing than two players, but I can’t imagine a soli- the problem can be easily described: the the following code: taire TicTacToe. TicTacToe Board is formed of 9 Places that It’s only natural to express this conhave Coordinates, each ranging from 1-3. Game game = new Game(); game.moveO(); straint in the constructor: So why not: game.moveO(); game.moveO();

which is wrong according to the rules of TicTacToe. Player X should start, and then the game should continue with alternating moves. The default answer of developers facing this issue is to change the implementation to something similar with: void moveX(){ if(currentPlayer != Player.X){ throw new NotTheTurnOfThePlayerException(); } }

This still doesn’t prevent me from writing the code above. It is a bit better because it warns me that I did something wrong. However, I would argue that finding out my mistakes at runtime is too late. Mistake-proofing means designing the system so that it’s (almost) impossible to use it wrong. I find the following design to have better mistake-proofing: class Game{ Game(Player playerX, Player playerO); move(); ... }

This design typically leads to code

Game game = new Game(firstPlayer, secondPlayer);

Place place = new Place(Coordinate. One, Coordinate.One); game.move(place);

Even if we later decide to implement The user of this design cannot call the the more-that-two players version of move() method with the wrong parameTicTacToe, it’s easy: ters anymore. game.addPlayer(thirdPlayer); game.addPlayer(fourthPlayer); game.move();

5. Avoid Primitive Obsession

Recap

People using a poorly designed system tend to blame themselves instead of the system they’re using. I postulate that this happens for software developers using existing software designs as much as for users of physical man-made objects. Donald Norman shows a way out: as a designer, understand that it’s typically the system’s fault and design your software with fault tolerance in mind. We’ve looked at three ways to improve the design of a class to be more mistake-proof: Eliminate Exceptions, Pass Mandatory Arguments In C onstr uctor, Avoid Primitive Obsession. We’ve seen that the result is easier to learn, easier to use and avoids common mistakes at the same time.

Primitive Obsession is a very common code smell, besides having a very suggestive name. It was also the source of a $125 million loss in one of the rare occasions when we can measure losses caused by software issues. Ward Cunningham’s wiki discusses it: The Smell: Primitive Obsession is using primitive data types to represent domain ideas. For example, we use a String to represent a message, an Integer to represent an amount of money, or a Struct/ Dictionary/Hash to represent a specific object. The Fix: Typically, we introduce a ValueObject in place of the primitive data, Further Reading then watch like magic as code from all over When you cannot design your interthe system showsFeatureEnvySmell and faces to prevent mistakes, Design By wants to be on the new ValueObject. We Contract comes to rescue. I recommend www.todaysoftmag.com | no. 33/april, 2015

27


programming 5 Steps to Mistake Proof Software Design

The Europe Software Craftsmanship unconference dedicated to Software Architecture, Software Design and Technical Strategy

WHY ATTEND? Level-up your tech skills by attending: 20+ Talks, 3 Workshops, 4 keynotes, topics on DevOps, Architecture, Hardcore Programming, Quality Practices, Executable SpeciďŹ cations, Web, Technical Leadership, Developer's Life. Register now: www.itakeunconf.com

WHO IS IT FOR? For everyone passionate about software excellence. The content is geared to top-notch Programmers, Software Craftsmen, Architects, DevOps, Technical Managers, Team Leaders, CEOs, CTOs/Technical Co-Founders, and Technical Consultants.

5 REASONS TO BE PART OF I T.A.K.E. UNCONFERENCE 1. Dynamic learning atmosphere 2. Hands-on practice with the latest techniques applied in languages & technologies of your choice (Java, C#, JavaScript, Closure, etc) 3. Product Development & Kata Lounge for mastering software craftsmanship practices. 4. Open Space - Take responsibility for your own learning. 5 Contest - Enjoy practicing while competing for a prize.

www.itakeunconf.com | May 28-29, Radisson Blu Hotel, Bucharest, RO

reading about it as another way to mistakeWhat kind of mistakes do you make? proof your designs. What do you do to prevent them? Let me This article focuses on how to mistake know in the comments. proof software design by using elements of software design. The reality is more complex: mistake-proofing software design  certainly needs the fast feedback offered by pair programming, automated tests, continuous integration and IDE support.

28

no. 34/april, 2015 | www.todaysoftmag.com


programming

Aspect Oriented Programming in Design Phases

A

Diana Vultur

diana.vultur@yardi.com Software Developer @ Yardi România

spect-oriented programming aims at improving the modularity of software systems, by capturing inherently scattered functionality, often called crosscutting concerns, making the evolution of such systems easier and more manageable. In order to obtain this, AOP adds an extra abstraction mechanism, called an aspect, on top of existing modularization mechanisms such as functions, classes and methods. Aspects allow developers to face up the problems of scattering and tangling by reducing the spread of code belonging to a certain concern over different components. During the software development phase the product concept that was identified and researched in the pre-development phase becomes a reality. Systems requirements are translated into design specifications that are in turn translated into software code. For a given software development project, the particular breakdown of the life cycle and the activities performed within each phase will depend very much on the type of application, the method and development tools used and the target implementation environment. The emphasis throughout the development phase should be on getting a workable and acceptable version of the product to market in the minimum time. It is always necessary to guard against ‘perfect solutions’. Aspect Oriented Programming provides explicit constructs to develop software systems whose crosscutting concerns are better modularized because they are no longer tangled together and they are clearly separated from the principal decomposition. In order to extend the benefits of aspect-oriented programming to already existing systems, a significant reverse and re-engineering effort is required. The effort consists, first of all, of

analyzing the existing application source code looking for those portions that implement the crosscutting functionality. The second part of the work is the transformation of the existing program into an aspect-oriented reformulation. In order to take advantage of the potential benefits of the AOP style of programming, there is a need for migration support of existing applications and systems. Each phase of the software project – design, implementation, testing, and maintenance – accentuate certain activities. Aspect-oriented programming has a different role in each of these phases.

Design Phase

The design phase provides the detailed specifications of how the software should be developed. This is more technical than analysis specification, and at this point of time, the developer needs to think about how the software can realize the requirements into a working system. A way to use AOP is described below. • Crosscutting concerns recognition – This step is part of mapping requirements to modules. Possible crosscutting concerns may be described using an adjective or

www.todaysoftmag.com | no. 33/april, 2015

29


programming Aspect Oriented Programming in Design Phases adverb, which reduces the effort needed to modularize them in the conventional fashion. • Initial design Core concerns – The core concerns are first designed to apply easier crosscutting concerns, because they will simplify the specification of weaving rules. • Crosscutting concerns designed – Crosscutting concerns are highly addressed, and can be defined even if they are not needed immediately. This approach helps avoiding overdesigning.

Implementation Phase

Just as the design phase may include some analysis efforts approached from a computational standpoint, the implementation phase essentially always includes design efforts. Implementationlevel design is a balancing activity, where in-principle executable models, implementation languages and tools, performance requirements, and delivery schedules must finally be combined, while maintaining correctness, reliability, extensibility, maintainability and related criteria. With AOP, core and crosscutting concerns may be implemented as easily as possible. If AOP is used, much of the process and methodology is mostly unchanged from OOP. The following principles may be used to determine where AOP is necessary to appear: • Well-factored written code – Specific core functionality is implemented by an operation which is an ideal scenario. If each method maps to a specific functionality, it will achieve the right level of granularity. With this, AOP can be applied consistently throughout a project. • Consistent naming conventions usage – Pointcuts that use wildcards to capture join points not only make writing aspect easier, but also ensure that the aspects apply to all new modules introduced in the system. • Any visible tangling and scattering appearing – While implementing the core concerns, code tangling and code scattering may appear. This is possible when crosscutting concerns are implemented using OOP that may actually be candidates for AOP. • The following tasks are performed when the crosscutting concerns are implemented: • Join points identifications – In the code, places where crosscutting behavior is needed are identified. The pointcuts

30

no. 34/april, 2015 | www.todaysoftmag.com

are expressed according to the captured join points: namebased pointcuts, control-flow pointcuts, and so on. • Aspect design – In this step, the aspects are designed using patterns. To simplify the process of capturing join points inside the aspects, it is necessary to use consistent naming conventions for aspects. Let’s consider a check for a common pre- or post-condition for multiple operations in a class. With conventional refactoring, the check is included in a method and can be called from all the places where it is required, instead of repeating a block of code in all the places. In aspect-oriented programming, an aspect is written to crosscut that check into all required methods, and there is no need to call the method performing the check from multiple places.

Testing phase

Having analyzed, designed and implemented a solution, the next step is to run the algorithm with test data and making sure that it has no logical errors. In the testing phase, the programmer has to consider weaving processes and imagine how a woven program behaves, because targets of testing are not individual objects. There is a break between the design phase and the testing phase in AOP. The following examples are possible scenarios: • Creating test cases – Test programs can be created with modification of the behavior and without many changes in the code. • Implementing performance testing – Many performance problems are uncovered during close-to-real deployment, but it is not available during development phases. With AOP it is possible to perform dynamic profiling in an environment by monitoring aspect during testing. • Reporting errors – Aspects are used for collecting useful context, not only for exception call stacks, when problems may appear. With an AOP approach, the collection context is flexible.

Maintenance phase

Maintenance is the development phase that occurs to a system after it has been delivered for its original purpose. This is


TODAY SOFTWARE MAGAZINE an important phase for software projects because most development effort goes toward maintenance. It has two activities: adding implementation to meet new requirements and fixing bugs found in the testing phase. The following tasks may be handled in this phase: • Creating protection walls – This task ensures that new changes do not modify other parts of the system and prevent introduction of new bugs. • Implementing new features – New crosscutting concerns can be implemented in a simple manner, and do not modify too much the code in the core of the system. AOP does not call into question what has been achieved through OOP. AOP simply adds new concepts that allow improving object-oriented applications by making them more modular. In addition, it simplifies the development process by allowing the separation of development tasks. For example, specialized experts can develop highly technical functionalities, such as security, and aspects allow easier integration of these functionalities into the rest of the application. No doubt the adoption of AOP will take a long time and require effort, but it can be done gradually when the need is clearly identified.

project to better integrate with the JDT in Eclipse. This recent change enabled AJDT to provide a much better user experience. Scala IDE for Eclipse also followed the same route to provide a better experience for Scala developers.

Conclusion

In conclusion, programmers are slowly realizing the importance of aspect-oriented programming as crosscutting happens to be a new modularity principle. AOP is all set to be an important programming methodology given that its advantages are manifold. It also eliminates some of the difficulties prevalent in designing, developing and maintaining good software systems.

Where is AOP being used?

Enterprise applications need to address many crosscutting functionalities: transaction management, security, auditing, service-level agreement, monitoring, concurrency control, improving application availability, error handling, and so on. Many enterprise applications use AOP to implement these functionalities. Virtually every project that uses Spring uses AOP. Web and application servers, like open source SpringSource dm Server, support developing enterprise application based on OSGi. It uses AspectJ to implement various crosscutting functionalities, such as First Failure Data Capture (FFDC), context collection, tracing, and policy enforcement. The SpringSource tc Server uses AspectJ to implement monitoring of deployed applications. Application frameworks can use AOP effectively to target specific crosscutting functionalities while keeping their structure modularized. Spring includes aspects for injecting dependencies into domain objects. Frameworks that use AspectJ as their foundation have started to appear as well. AspectJ makes implementing a flexible monitoring scheme a breeze. Therefore, many tools use AspectJ as the underlying technology (Glassbox, Perf4J, Contract4J) and several commercial products also use AspectJ to implement monitoring solutions. AspectJ itself uses AspectJ to extend the JDT complier to support AspectJ constructs. AJDT uses AspectJ weaving through OSGi-based weaving service implemented by the Equinox Aspect

www.todaysoftmag.com | no. 33/april, 2015

31


programming

Realreach­- find out what’s within 15 minutes of you

A

ssume that you’re in a new city (say Genoa, Italy) and have 2 hours until your next train or flight. You see their pay-by-hour bicycle sheds and you’d like to know how far you can bike-to in 1 hour (so that you have time to get back in time) and what sights are within this time range. Curta Cătălin

curta.catalin@telenav.com C++ Developer @ Telenav

Dragoș Andronic

dragos.andronic@telenav.com Product Manager @ Telenav

Or assume that you’re driving to your calculated based on the actual usage of the next meeting and you’d like to know what vehicle (live or historical). parking places (paid or street-level) are within 10 minutes, by foot, from their Getting started with RealReach™ office. On web, the RealReach™ API documentation can be found here 3. On the Enter RealReach frontend, we recommend that you use T h a t ’s e x a c t l y t h e s c e n a r i o Leaflet for display (we’ve also written our RealReach™ functionality aims to a Leaflet plugin 4 facilitating the whole answer: that’s the real road distance you process) but we’re also big fans of can cover from a certain location, given a OpenLayers. certain time limit (or route distance), with On mobile, see the already implea certain navigation profile (pedestrian, mented examples in the demo projects5 bike, car) : (the “Real Reach” menu entries) and T h i s p u t s a s p i n o n l o c a l check the reference documentation search acknowledging that, in most situati- for Android6 and iOS7. ons, time is more important than distance. Hopefully, in no time, you will be able to offer beautiful time-bound geo fencing RealReach™ and electric vehicles in your app or web portal. One special application of the RealReach™ algorithm is the e-mobility space where you can actually ask: how far can I go given my current battery level? In this case the algorithm will also take into account not only the road geometry and battery level but also the elevation of SKRealReachSettings.html the surrounding streets and its impact on developer.skobbler.com/docs/android/2.3.0/index.html battery usage1. 3 developer.skobbler.com/getting-started/web#sec1 In order to work RealReach™ needs to 4 developer.skobbler.com/download/skobbler-2.0.js receive the vehicle’s battery usage parame5 developer.skobbler.com/support#download ters2. In an ideal case, these parameters are 6 developer.skobbler.com/docs/android/2.3.0/com/ 1 developer.skobbler.com/docs/ios/2.3.0/Classes/ SKRealReachSettings.html developer.skobbler.com/docs/android/2.3.0/index.html 2 developer.skobbler.com/docs/ios/2.3.0/Classes/

32

no. 34/2015, www.todaysoftmag.com

skobbler/ngx/map/SKMapSurfaceView.html#displayRealReachWi thSettings(com.skobble 7 developer.skobbler.com/docs/ios/2.3.0/Classes/ SKMapView.html#//api/name/displayRealReachWithSettings:


TODAY SOFTWARE MAGAZINE

RealReach - car profile, time constraint

RealReach - car profile, distance constraint

RealReach - bike profile

www.todaysoftmag.com | no. 33/april, 2015

33


programming

(Micro)Service Discovery cu Netflix Eureka

T

he article is part of a series dedicated to implementations of patterns in a modern Microservice Architecture based system: Service Discovery, Elasticity, Fault Tolerance, Resiliency, Configuration Management, Monitoring, Centralized Logging, Telemetry. The article presents a technical solution for Service Discovery using Netflix Eureka, a dedicated technology developed in Java and open sourced by Netflix, under the Netflix Open Source Software (OSS) umbrella. The code and configuration examples do not use Eureka directly. We use Spring Cloud, an initiative from Spring that brings together best of breed technical solutions for building modern distributed systems. Spring Cloud is built on top of Spring Boot and provides abstractions for Netflix OSS technologies (among others). Service Discovery is one of the key concepts for building a Service Oriented distributed system. Simply put, when service A needs to call service B, it first needs to find a running instance of B. Static configurations become inappropriate in the context of an elastic, dynamic system, where service instances are provisioned and de-provisioned frequently (planned or unplanned) or network failures are frequent (Cloud). Finding an instance of B is not a trivial task anymore. Discovery implies a mechanism where: • Services have no prior knowledge about the physical location of other Service Instances • Services advertise their existence and disappearance • Services are able to find instances of another Service based on advertised metadata • Instance failures are detected and they become invalid discovery results • Service Discovery is not a single point of failure by itself

Eureka Overview

Netflix Eureka architecture consists of two components, the Server and the Client. The Server is a standalone application and is responsible for: • managing a registry of Service Instances, • provide means to register, de-register and query Instances with the registry, • registry propagation to other Eureka Instances (Servers or Clients). The Client is part of the Service Instance ecosystem and has responsibilities like: • register and unregister a Service Instance with Eureka Server, • keep alive the connection with Eureka Server, • retrieve and cache discovery information from the Eureka Server.

Discovery units

Eureka has notion of **Applications (Services)** and **Instances** of these Applications. The query unit is the application/service identifier and the results are instances of that application that are present in the discovery registry.

High Availability

Netflix Eureka is built for High Availability. In CAP Theorem terms, it favors Availability over Consistency. The focus is on ensuring Services can find each other in unplanned scenarios like network partitions or Server crashes. High Availability is achieved at two levels: • Server Cluster - The production setup includes a cluster of Eureka Servers, • Client Side Caching. Clients retrieve and cache the registry information from the Eureka Server. In case all Servers crash, the Client still holds the last healthy snapshot of the registry.

Terminology

Eureka was built to work with Amazon

34

no. 34/april, 2015 | www.todaysoftmag.com


management

TODAY SOFTWARE MAGAZINE The settings `registerWithEureka` and `fetchRegistry` are set to `false`, meaning that this Server is not part of a cluster.

Cluster setup

Eureka Servers are deployed in a cluster to avoid a single point of failure as a set of replica peers. They exchange discovery registries striving for Consistency. Clients don’t need Server affinity and can transparently connect to another one in case of failure. Eureka Servers need to be pointed to other Server instances. There are different ways to do this, described below.

DNS Web Services (AWS). Therefore the terminology has references Netflix uses DNS configuration for managing the Eureka to AWS specific terms like regions, zones, etc. The examples pre- Server list dynamically, without affecting applications that use sented in the article use the default region *us-east-1* and the Eureka. This is the recommended production setup. Let’s have *defaultZone*. an example with two Eureka Servers in a cluster, `dsc01` and `dsc02`. Eureka Server You can use Bind or other DNS server. Here are good instrucThe Server is the actual Discovery Service in your typical SOA tions for Bind2. system. Start by cloning the Spring Cloud Eureka Sample github. DNS configuration: com repository1. $TTL 604800

Standalone setup

It is easy to start an Eureka Server with Spring Cloud. Any Spring Boot application becomes an Eureka Server by using the annotation `@EnableEurekaServer`. Use the setup below for the local development machine. Sample Eureka Server application: @SpringBootApplication @EnableEurekaServer @EnableDiscoveryClient public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }

Configuration yml: server: port: 8761 security: user: password: ${eureka.password} eureka: password: ${SECURITY_USER_PASSWORD:password} server: waitTimeInMsWhenSyncEmpty: 0 enableSelfPreservation: false client: preferSameZoneEureka: false --spring: profiles: devlocal eureka: instance: hostname: localhost client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://user:${eureka. password:${SECURITY_USER_PASSWORD:password}}@localhost:8761/eureka/

Start the application using the following Spring Boot Maven target:

@ IN

SOA ns.eureka.local. hostmaster.eureka.local. ( 1024 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL

; @ IN NS ns.eureka.local. ns IN A 10.111.42.10 txt.us-east-1 IN TXT „defaultZone.eureka.local” txt.defaultZone IN TXT „dsc01” „dsc02” ;

Application configuration: eureka: client: registerWithEureka: true fetchRegistry: true useDnsForFetchingServiceUrls: true eurekaServerDNSName: eureka.local eurekaServerPort: 8761 eurekaServerURLContext: eureka

Static servers list Configuration for the above cluster: eureka: client: registerWithEureka: true fetchRegistry: true serviceUrl: defaultZone: http://dsc01:8761/eureka/,http:// dsc02:8762/eureka/

This is handy when running without DNS, but any change to the list requires a restart.

Multiple Servers on a single machine Care is required when starting multiple Servers on the same machine. They need to be configured with different hostnames, different ports do not suffice. These hostnames must resolve to *localhost*. A way to do this is to edit the *hosts* file in Windows. eureka: instance: hostname: server1

mvn spring-boot:run -Drun.jvmArguments=”-Dspring.profiles.active=devlocal” 1 https://github.com/spring-cloud-samples/eureka

2 http://www.thegeekstuff.com/2014/01/install-dns-server/

www.todaysoftmag.com | no. 33/april, 2015

35


programming (Micro)Service Discovery with Netflix Eureka <registrationTimestamp> 1426271956166 </registrationTimestamp> <lastRenewalTimestamp> 1427199350993 </lastRenewalTimestamp> <evictionTimestamp>0</evictionTimestamp> <serviceUpTimestamp>1426157045251 </serviceUpTimestamp> </leaseInfo> <metadata class=”java.util. Collections$EmptyMap”/> <appGroupName> MYSIDECARGROUP</appGroupName> <homePageUrl>http://cljlcpdevsrv10:8000/ </homePageUrl>

[Eureka Dashboard] Eureka Dashboard

Graphic Web Interface

<statusPageUrl>http://cljlcpdevsrv10:8001/info </statusPageUrl> <healthCheckUrl>http://clj-

lcpdevsrv10:8001/health </healthCheckUrl> <vipAddress>bestprices</vipAddress> <isCoordinatingDiscoveryServer>false </isCoordinatingDiscoveryServer> <lastUpdatedTimestamp>1426271956166 </lastUpdatedTimestamp> <lastDirtyTimestamp>1426271939882 </lastDirtyTimestamp> <actionType>ADDED</actionType> </instance> </application> +<application> +<application> +<application> </applications>

Eureka offers a web dashboard where the status of the Server can be observed. We have a sample application environment where we assess technologies. We initially started with the Spring Cloud samples3 and modified them based on our needs. The example below is an Eureka Server from our sample application environment, `http://dsc02:8761`: • Discovery Server (DS) Replicas: the list of the other Servers in the cluster Instance info • Instances currently registered with Eureka: all the services The element `<instance>` above holds full details about a and their instances that are registered with Eureka registered Service Instance. • Registered, Available and Unavailable replicas Most of the details are self explanatory and hold information about the physical location of the Instance, lease information and XML/Text Web interface other metadata. HealthCheck urls can be used by external moniMore details can be retrieved in a text based interface, `http:// toring tools. dsc02:8761/eureka/apps`: Custom metadata can be added to the instance information and consumed by other parties. <?xml version=”1.0”?> -<applications> <versions__delta>1 </versions__delta> <apps__hashcode>UP_11_ </apps__hashcode> +<application> +<application> +<application> -<application> <name>BESTPRICES</name> +<instance> -<instance> <hostName>clj-lcpdevsrv10 </hostName> <app>BESTPRICES</app> <ipAddr>10.111.42.71</ipAddr> <status>UP</status> <overriddenstatus>UNKNOWN </overriddenstatus> <port enabled=”true”>8000</port> <securePort enabled=”true”>443 </securePort> <countryId>1</countryId> -<dataCenterInfo class=”com.netflix.appinfo.InstanceIn fo$DefaultDataCenterInfo”> <name>MyOwn</name> </dataCenterInfo> -<leaseInfo> <renewalIntervalInSecs>30 </renewalIntervalInSecs> <durationInSecs>90</durationInSecs> 3 https://github.com/spring-cloud-samples

36

no. 34/april, 2015 | www.todaysoftmag.com

Eureka Client

The Client lives within the Service Instance ecosystem. It can be used as embedded with the Service or as a sidecar process. Netflix advise the embedded use for Java based services and sidecar use for Non-JVM. The Client has to be configured with a list of Servers. The configurations above, DNS and static list, apply for the Client too, since the Servers use the Client to communicate with each-other. Any Spring Boot application becomes an Eureka Client by using the annotation `@EnableDiscoveryClient` and making sure Eureka is in the classpath: @SpringBootApplication @EnableDiscoveryClient public class SampleEurekaClientApp extends RepositoryRestMvcConfiguration { public static void main(String[] args) { SpringApplication.run(CustomerApp.class, args); } }

Heartbeats

The Client and the Server implement a heartbeat protocol. The Client must send regular heartbeats to the Server. The Server expects these heartbeat messages in order to keep the instance in


management

TODAY SOFTWARE MAGAZINE

the registry and to update the instance info, otherwise the instance // “bestprices” is the name of the service in // Eureka, as well as of the Ribbon LoadBalancer is removed from the registry. The time frames are configurable. // which gets created automatically. The heartbeats can also specify a status of the Service Instance: ServiceInstance instance = loadBalancerClient `UP, DOWN, OUT_OF_SERVICE`, with immediate consequen.choose(“bestprices”); ces on the discovery query results.

if (instance != null) { // Invoke server, based on host and port. // Example using RestTemplate. URI productUri = URI.create(String .format(“http://%s:%s/bestprices/” + productSku, instance.getHost(), instance.getPort()));

Server self preservation mode

Eureka Server has a protection feature: in case a certain number of Instances fail to send heartbeats in a determined time interval, the Server will not remove them from the registry. It bestPrice = restTemplate.getForObject(productUri, BestPrice.class); considers that a network partition occurred and will wait for } these Instances to come back. This feature is very useful in Cloud return bestPrice; deploys and can be turned off for collocated Services in a private } data center.

Client Side Caching

Non-JVM Service integration

This aspect is not extensively covered and may be the topic One of the best Eureka features is Client Side Caching. The for another article. Client pulls regularly discovery information from the registry and There are two approaches: caches it locally. It basically has the same view on the system as • REST API - Eureka exposes a RESt API any application can the Server. In case all Servers go down or the Client is isolated interact with it. The down side is that all the other Netflix tools from the Server by a network partition, it can still behave prothat integrate with Eureka would need an in-house counterpart perly until its cache becomes obsolete. implemented in the chosen programming language. The caching improves performance since there is no more • Sidecar - The sidecar is a process running side-by-side with round-trip to a another location at moment the request to another the main Service Instance process. The host process will use service is created. its sidecar to retrieve information about other services, load balancing, etc., and the sidecar process will take care of the Usage Client - Server protocols. Eureka Discovery Client can be used directly or through other libraries that integrate with Eureka. Key Takeaways Here are the options on how we can call our sample Service • Eureka is a dedicated Service Discovery solution bestprices, based on information provided by Eureka: • Eureka is simple and robust • Eureka is Highly Available Direct • Eureka does Client Side Caching • Eureka is open source and maintained by Netflix ... @Autowired • Spring Cloud invests supports and promotes Eureka private DiscoveryClient discoveryClient; through Spring Cloud Netflix ... private BestPrice findBestPriceWithEurekaclient(final String productSku) { BestPrice bestPrice = null; // get hold of a service instance from Eureka ServiceInstance instance = null; // “bestprices” is the name of the service in Eureka List<ServiceInstance> instances = discoveryClient .getInstances(“bestprices”); if (instances != null && instances.size() > 0) { instance = instances.get(0); //could be random // Invoke server based on host and port. // Example using RestTemplate. URI productUri = URI.create(String .format(“http://%s:%s/bestprices/” + productSku, instance.getHost(), instance.getPort()));

References • • • • •

https://github.com/Netflix/eureka/ http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html https://github.com/spring-cloud-samples/eureka http://jasonwilder.com/blog/2014/02/04/ service-discovery-in-the-cloud/ http://www.thegeekstuff.com/2014/01/install-dns-server/

bestPrice = restTemplate.getForObject(productUri, BestPrice.class); } return bestPrice; }

Ribbon Load Balancer Ribbon is a HTTP client and software load balancer from Netflix that integrates nicely with Eureka: ... @Autowired private LoadBalancerClient loadBalancerClient; ...

Adrian Ivan

aivan@sdl.com Software architect @ SDL

private BestPrice findBestPriceWithLoadBalancerClient( final String productSku) { BestPrice bestPrice = null; www.todaysoftmag.com | no. 33/april, 2015

37


programming

programare

Screen Sharing using Service Bus Relay (Azure) - an out of the box Tunneling solution

We started to work on a project where we need to be able to offer a reliable solution for Remote Screen Sharing - RDP (Remote Desktop Protocol). Luckily, all devices are running Windows operating system and we can use with success the support from Windows.

Radu Vunvulea

Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest

38

no. 34/2015, www.todaysoftmag.com

Because all the devices are spread world-wide we need a tunneling solution. All the content that is send over the wire needs to be encrypted. In theory we would need some relays servers that would be ‘the man on the middle’ between devices and people that would like to access that device - tunneling. There are some solutions on the market for Relay Servers and Tunneling. Some of them are open source and free, others are expensive and very exotic. Our solution would run on Azure, because of this, we

want to reduce the cost of operational and maintenance tasks as much as possible. Having some instances for Relay Server would require extra maintenance costs of that virtual machines. In the end we want to be as flexible as possible and to be able to scale up and down based on client needs. On top of this, we need to support peaks that can reach 500 RDP sessions in the same time. Normally we need to support 30-50 RDP sessions, but we need to be able to support 500 RDP sessions. From t he moment w hen a cl ient


management notifies us that he wants to open a RDP session to the moment when he actually needs to open the session we have 8 seconds to do all the magic. In this short period of time we need to notify device, open the tunneling channel with the relay server and establish the secure connection. I tried to look on a solution that is scalable, because now we can have a peak of 500 RDP sessions, but we need to be prepared to support more than that. I don’t want to manage or debug and fix issues in a tunneling solution that doesn’t work as expected. This would require extra time to understand how the system works, how the implementation is done and so on – in the end this means extra costs and all the time we would need to have at least one person that knows very well the tunneling solution and the problems with it.

The solution

Service Bus Relay is a service that was built for hybrid applications, which run on Azure and on-premises. It allows us to expose WCF services from on-premises systems that can be accessed from Azure without having to manage firewall rules, open ports or other things. It helps us to expose a secure channel (a tunnel) between two endpoints in a secure and reliable way. All the communication with Service Bus Relay is made over HTTPS.

Implementation

Service Bus Relay could help us a lot. In this case it sounds like the perfect solution. If we could redirect the traffic generated by RDP connection through Service Bus Relay to the other endpoint... Luckily this can be done easily. There is a great sample code written by Clemens Vasters (http://blogs.msdn.com/b/clemensv/ archive/2009/11/18/port-bridge.aspx) that works very well. It is not yet production ready, but it is a good starting point, especially for a PoC, when you want to validate if a solution works or not. I will not describe in details the solution that is offered by Clemens Vasters, because it is described in details in his blog post. The solution includes an agent called Port Bridge Agent that will run on our devices. The agent will redirect the traffic of a specific port to Service Bus Relay. In our case we will redirect all the traffic generated by RDP session to Service Bus Relay. On the client machine that wants to access the device, we will start another application (service) that will do a similar thing – map a custom port to the same relay from Service Bus Relay. In the moment when we start the Remote Desktop Connection client we will specify the port where Service Bus Relay is configured to expose the data.

In t h is w ay we w i l l have a tu n nel i ng s olut i on between this two machines over S er vice Bus Relay without having to open firewalls ports, having complex IP confirmations or having to manage relay servers. If you want to make the sample work with Shared Access Policy token you will need to change the configuration of ‘TransportClientEndpointBehavior. The token provider needs to be specified using Shared Access Signature – see the below code. relayCreds = new TransportClientEndpointBehavior

TODAY SOFTWARE MAGAZINE {

};

TokenProvider = TokenProvider. CreateSharedAccessSignatureTokenProvider( sharedAccessKeyName,sharedAccessKey)

Authentication

In this moment, Service Bus Relay is the only service from Service Bus that does not have support for Shared Access Signature (SAS). Because of this, we need to create and work with Shared Access Policies. These are pretty similar with SAS, but we cannot control access at relay level, only at namespace level. Because of this, we could have a security issue there. If the same namespace is shared between two different tunneling sessions, then both sessions content could be accessed by both clients (and this is possible and pretty simple - at package level). Another problem with them is the number of policies that can be defined on a Service Bus Namespace. We can have maximum 12 of them (Shared Access Policies). The simplest solution is to create and use a different namespace for each tunneling session. In this way, from a security perspective, we can manage access in a secure and reliable way. More about this will be described in the next part.

Proposed solution

We can create a pool of Service Bus namespaces that are managed by a server component. All the time we can have 30 namespace available in the pool for example. The service can increase or decrease the number of namespaces available in the pool based on the load or the hour. Creating a Service Bus namespace doesn’t require a long period of time. Even if there is no SLA related to how long it takes, we observed that normally it does not take more than 20 seconds. This pool can contain namespaces from different Azure subscriptions. The cost of a namespace per month is ~7€. But if we create a namespace only for 2 days, we will pay only for those 2 days.

We can see above the service that will be able to allocate namespaces from the pool. After that, the service will be able to recycle them. When a session ends, the system will be able to invalidate the access key and regenerate new keys. In this way, the old keys cannot be used anymore.

Price

At the moment, the price of 100 hours of relay is 0.10$. 100.000 messages send over a relay would cost us 0.01$. We calculated how much traffic a RDP session generates for 1920x1080 screen size (32b colors), using RDP 6.1. For normal use, we observed that in general for every 5 minutes of connection we consume: • 18MB data traffic • 9000 messages over relay Based on these estimations, in one hour we will consume: www.todaysoftmag.com | no. 33/april, 2015

39


programming Screen Sharing using Service Bus Relay (Azure) - an out of the box Tunneling • 106.800 messages • 204 MB data traffic (outbound) • 0.001$ the cost of an hour of open relay The total cost for 1 hour of RDP is 0.21$, for normal use at a screen resolution of 1920x1080. A great price for an out of the box solution that does not require maintenance and custom code and configuration on the relay server.

Possible problems

The maximum number of namespaces under an Azure subscription is 100. To be able to have more than 100 namespaces available, we can request the limitation to be changed for our Azure subscription or to use and manage more than one Azure subscription. From time to time, using the default Windows RDP protocol, we received

40

“Because of an error in data encryption, this session will end”. It is not clear for us the root cause of the problem. The problem occurs especially in the moment when the screen content is updated and a lot of content is send by RDP. We suspect that the problem is related to package size. It seems that if we change the security layer to SSL (TLS 1.0) the problem disappears entirely. Further investigation needs to be done. Last thing is not a real problem but we should be aware of it. To be able to use RDP over Service Bus Relay, we need to deactivate the certificate security from Remote Desktop Connection. The client is behind a tunnel (Service Bus Relay) that will not be able to ‘virtualize’ the client certificate. Take into account that we are already using a secure connection, offered by the tunnel.

no. 34/april, 2015 | www.todaysoftmag.com

Conclusion

Service Bus Relay is an extremely interesting service that is very capable and scalable. It works great as a tunnel mechanism for RDP – an out of the box solution. Without having to manage custom configuration, relay servers or other custom components, we can say that it is a great option for tunneling. Also, what is great is that we don’t have to use a Remote Desktop solution from Microsoft. In the end, we can use any kind of protocol, Service Bus Relay is only the port bridge solution for tunneling. The sample code for port bridge it is not a production code, but it is a good starting point that I highly recommend.


management

others

Advanced and Invisible Analytics

A

Oana Călugăr

calugar.oana@gmail.com Romanian ambasador @ Hello Tomorrow

nalytics will take center stage as the volume of data generated by embedded systems increases and vast pools of structured and unstructured data inside and outside the enterprise are analyzed. Companies will need to manage how to filter the huge amounts of data coming from the IoT, social media and wearable devices, and then deliver exactly the right information to the right person, at the right time. Analytics will become deeply, but invisibly embedded everywhere. Big Data is an important enabler for this trend but the focus needs to shift to thinking about big questions and big answers first and Big Data second — the value is in the answers, not the data. Analytics techniques are growing in complexity, and companies are applying machine learning and predictive modeling to increasingly massive and complex data sets. Artificial intelligence is now a reality. Its more promising application, however, is not replacing workers but augmenting their capabilities. When built to enhance an individual’s knowledge and deployed seamlessly at the point of business impact, advanced analytics can help amplify our intelligence for more effective decision making.

Starting with questions

incorporated into decision making? • Can the resulting analysis be seamlessly and contextually delivered to the individual based on who and where they are, as well as what they are doing? • Can text, speech, and video analytics offer new ways to interact with systems? • Could virtual or augmented reality solutions bring insights to life? • How could advanced visualization support data exploration and pattern discovery when it is most needed? • Where could natural language processing be used to not just understand semi-structured and unstructured data (extracting meaning and forming hypotheses), but to encourage conversational interaction with systems instead of via queries, algorithms or scripts?

But even the case of analytics raises some usability questions: • How can insights be delivered to a specific individual performing a specific role at a specific time to increase his or her intelligence, efficiency, or judgment? • Can signals from mobile devices, This amplified intelligence creates wearables, or ambient computing be the potential for significant operational www.todaysoftmag.com | no. 33/april, 2015

41


others Advanced and Invisible Analytics efficiencies and competitive advantage for a company. Discovery, scenario planning, and modeling can be delivered to the front lines, informed by contextual cues such as location, historical behavior, and real-time intent. As a result, intelligence is put to use in real time, potentially in the hands of everyone, at the point where it may matter most. The result can be a systemic shift from reactive “sense and respond” behaviors to predictive and proactive solutions. Data analytics is in its early days, but the potential use cases are extensive. The medical community can now analyze billions of web links to predict the spread of a virus. The intelligence community can now inspect global calls, texts, and emails to identify possible terrorists. Farmers can use data collected by their equipment, from almost every foot of each planting row, to increase crop yields.

Lesson from the front line

sector realize the vision of a better informed workforce by offering information to the right people, in the right manner, when it counts. For the IT department, data analytics offers a chance to emphasize the role it could play in driving the broader analytics journey and directing advances toward use cases with real, measurable impact. Technically, these advances require data, tools, and processes to perform core data management, modeling, and analysis functions. But it also means moving beyond historical aggregation to a platform for learning, prediction, and exploration.

References •

Leveraging smart glass hardware, analytics, and back-office • tools, a global oil and gas company created a pilot platform for amplifying the effectiveness of rig workers. The goal of this effort was to deliver hands-free job aids, decision support, and • workflow automation to individuals working in remote locations. The platform works as follows: When field equipment malfunctions on an oil rig, sensors detect the issue and proactively notify a nearby field service agent via smart glass. Analytics then delivers critical diagnostic information on the issue. This information, augmented by powerful analytics capabilities applied to sensor and other relevant back-office data, includes step-by-step instructions for repair. Using a laptop or a cumbersome paper manual to triage and troubleshoot malfunctioning equipment might require service agents to remove their gloves and step away as they look for answers. However, smart glass makes it possible for them to view needed information in real time and on the spot— thus enhancing worker efficiency, accuracy, and safety. Moreover, with a simple wave of the hand, the agent uses a gesture control armband to initiate a video conference with level-three support back at the home office. The remote expert can see what the agent sees, talk to him or her through the procedure, and even provide annotated instructions that appear on the agent’s augmented display. The agent can also send data to a central database. With a head nod or tilt, he or she can maintain a log or “checklist” of completed activities and create new notations via voice as the repair is being made. That repair log then becomes available to the next technician who services the field equipment. Critical information isn’t lost in stacks of paperwork; it becomes digitally organized and accessible to those who need it.

To infinity and beyond

Use cases for platforms like this are not limited to oil and gas field workers. At distribution centers, for example, drivers often conduct vehicle inspections prior to turning the ignition. In many instances, drivers must look for vehicle and manifest-specific details — details that would be almost impossible to memorize without years of training. Virtual instructions accessed via smart glass can guide drivers through inspections, accelerating the entire process and increasing its accuracy and effectiveness. The combined power of smart glass technology, analytics, and back-office systems (knowledge databases or warehouse management systems) can help companies in almost any industry or

42

no. 34/april, 2015 | www.todaysoftmag.com

Jeff Bertolucci, “10 powerful facts about big data,” InformationWeek, J u n e 1 0 , 2 0 1 4 , h t t p : / / w w w. i n f o r m a t i o n w e e k . c o m / big-data/ big-data-analytics/10-powerful-facts-about-big-data/d/did/1269522?image_number=4 Deloitte University Press, Intelligent automation: A new era of innovation, January 22, 2014, http://dupress.com/ articles/ intelligent-automation-a-new-era-of-innovation/ Tom Austin, Top 10 strategic technologies—The rise of smart machines, Gartner, Inc.


legal

design

Legal aspects in SaaS

S

ome legal aspects concerning software applications in general, such as intellectual property and the usage of open source code, collecting personal data through an application, publishing in Google Play, have been analyzed in the previous issues of Today Software Magazine.

Claudia Jelea

claudia.jelea@jlaw.ro Avocat & Consilier in domeniul marcilor @ IP Boutique

In the article of the current issue, I would like to focus on the way applications of the SaaS (Software as a Service) type are commercially exploited and, especially, on the partnerships that can help you collect revenues from the usage of these applications. For the beginning, I would like to make a short preliminary observation for those who are not familiarized with the concept: SaaS applications are those which software developers deliver to their clients in the form of a service. The clients do not buy and do not own the program or the application in itself, but purchase the limited (and non-exclusive) right to use its functionalities in exchange of a sum of money, usually, an annual fee or subscription for a certain period of time. What is characteristic of this type of application is the fact that the application is not hosted by the clients. Most of the times, it is hosted in the cloud, by a provider that offers cloud services or in an independent data center, and clients can access it through the Internet browser.

The birth of a dilemma: Reseller / Distributor / Agent / Stakeholder / Service Provider / Another name? Recently, during the break of a conference, I was talking to a software developer who was at the beginning of his career. Together with his associates, he had created a niche SaaS application, addressed to a well-established target public. He knew the industries in which he would approach the potential clients and he was negotiating with a partner to help them get to the

respective clients. After he told me what the application consisted in, he told me: “Everything is ready. Now, we only need a simple draft of a reseller contract to sign with the reseller. But we will take a model from the Internet and that’s it.” My natural question in relation to the role the reseller would play in the arrangement they had in plan (stakeholder, agent, distributor, etc.) confused him. By the way he looked at me, I could guess he was thinking about at least some of the clichés about lawyers: “here is another one who wants to take my money and cover me with paperwork”, “why should I pay a lawyer when the Internet is full of contract drafts?”, “I do not need a complicated contract, but rather something simple and cheap, maybe even for free”, etc. Well, maybe my interlocutor had, nevertheless, a better opinion on the work of lawyers, but, leaving the joke aside, from his commercial point of view, the matter was simple: we have created the product, we know the clients we want to reach (the ones we have established as a target), all we need now is a distributor to deliver the product to the clients; there is no need for us to complicate things with legal matters.

Does this approach sound familiar to you? Suddenly, I remembered that words often have different connotations for different people. Especially if there are also legal expressions involved, which can have various meanings. Of course, for the developers, the name under which this reseller would operate

www.todaysoftmag.com | no. 33/april, 2015

43


legal Legal aspects in SaaS does not necessarily have different meanings – he can be called distributor, agent, stakeholder, service provider; what is important is to stimulate the use of the SaaS application. Moreover, it would have no reason to have another meaning. Most of the times, it is the duty of the legal department to be aware of the legal aspects involved in a project. But what happens if the legal department does not ask all the right questions? Or, even worse, what if you do not benefit from any legal support? That is why it doesn’t hurt to have at least an idea about some of the delicate issues raised by the distribution of this type of applications.

Questions that few people ask The first thing you should do is to prepare your business strategy and think about what you would like your contractual relationship with your partner to look like, the partner who will promote and distribute / license the application to the potential clients. In order to be able to benefit from a good contract to protect your interest and position of developer of the application, it is necessary that you know certain details. You can find below a few examples of questions that you should insist on: Which will be the attributions of your partner? Will he only help you to promote your software product, will he represent you in negotiations or will he have more extended attributions? What type of relationship would you like your partner to have with the final client? Who will sign the contract with the client – your partner or yourself (the developer of the application)? Will the partner conduct his activity independently or based on the developer’s indications? Is it necessary for the developer to sign a separate contract with the final client

44

regarding the usage of the application? Who is responsible for the contract signed with the final client and for the possible actions that are not allowed on the application from the part of the final client? Which is the financial mechanism agreed upon – does the partner get a commission or directly cashes the entire amount and then pay a certain amount of it to the developer? Who ensures technical support in the case of a dysfunction? If, through the application, personal data can be collected and processed, who has to comply with the legislation in force? Will you grant any license to your partner or any other right regarding the application? For instance, for the purpose of distributing the application, will you allow him to adjust the application in any way? And others – depending on the actual case.

Why do these legal issues matter?

Based on the answers to these questions, the business intentions can be contractually reflected in a manner as accurate as possible, and, with the right help, even to your advantage. From the point of view of drafting of the contract, the quality in which your partner acts – be it as a distributor, reseller of the application, commissioner, representative that negotiates the licensing of the application on behalf of the developer, be it as an agent who signs the contracts on his behalf and assumes responsibility, etc. – attracts different legal consequences and, therefore, different rights/ obligations for the developer. In short, the content of the contract always matters. Usually, the name given to the contract can help us to legally classify that agreement, namely to identify the rules that

no. 34/april, 2015 | www.todaysoftmag.com

apply to it and to determine the extent of the obligations assumed by the parties. Nonetheless, in practice, there are numerous cases when the name does not reflect the actual relationship between the parties. If, to the problem of the name we also add the faulty editing of the contract, the conflict represents a certainty, being just a matter of time. Therefore, a clear discussion regarding these aspects is of a major importance for the developer and the advisor who assists him in the preparation of the contract and the negotiation. Firstly, it helps you not to waste time with editing some contractual clauses that afterwards might prove not to cover everything or to be inappropriate for the business goals. Secondly, it will help you limit the risk of contingent disputes with your partner, when the incomes resulted from the application substantially increase and the commercial interests change.


HR

TODAY SOFTWARE MAGAZINE

ERROR 404: “Employee motivation”

E

ach and every one of us wants “more/to have it better”, regardless if we’re talking about ourselves as individuals or as an organization. But what pleases us actually? What renders us entirely satisfied, motivated and willing to remain in the same organization for years on end? Right now, employees have a tendency to switch companies easily, in order “to have it better”. But let’s find out what this somewhat ambiguous phrase means to an employee: is it a higher pay? A diversified benefits package? A “cooler” working environment or better opportunities? On the one hand, employers seem to agree that “having it better” means either a competitive salary or an attractive portfolio of benefits. Either way, these seem to be insufficient, as employees still continue to switch companies, the retention rate keeps dropping, and recruiters are still struggling to fill vacant roles as quickly as possible. In short– a lot of money, time and resources going down the drain. The cause? Most likely the source of this situation is employee motivation. Oh no, not again! Motivation?! Let’s be frank – how many times haven’t we heard that we need to have motivated employees? And still, a miraculous solution to this “problem” is yet to be found. And that is maybe because we still do not entirely comprehend what factors truly motivate an employee. In the following paragraphs we will be looking at the concept of motivation and try to find out: what type of organization should we join as an employee and what to do, as an employer in order to avoid having employees leaving it too early.

To better understand these two typologies, let’s look at the following table: As such, if we want to have motivated employees (on the short term at least), we should firstly eliminate dissatisfaction by keeping bare necessity factors to a high level; after which, if we want to motivate on the long term, we should explore motivating factors and preferably keep them at the corresponding level.

Does money motivate?

Money has always been a delicate topic. We’re not trying to

Hygiene factors vs. Motivational factors

A competitive salary package and a pleasant working environment are the two most common criteria which are associated with employee motivation. But are these sufficient? These are necessary, but not sufficient. Let’s see why. Salary, work environment, relationships with superiors and colleagues, and company policies are regarded as hygiene factors (Herzberg, 1959), which do not actually motivate; they only eliminate dissatisfaction. Thus, if we want our employees to be truly motivated, only relying on material benefits will not do the job. Through financial motivation we will only achieve short term satisfaction, but only if the material reward is a natural follow-up to an employee’s performance. The study conducted by Herzberg (1959) concluded that the factors which truly contribute to an increase in the level of motivation are: achievement, recognition, responsibility, advancement and the work itself. Still, their lacking does not produce dissatisfaction. One of the most important things to remember is that the lacking of hygiene factors produces dissatisfaction; their presence however ensures a mediocre level of involvement, which does not generate motivation.

be cynical and claim that money does not play an important role for an employee. However, this could be a powerful motivating factor if the work we did had a mechanical, strongly standardized, or automatic nature. In this case, a high remuneration, according to performance, would be motivating: we would know that we need to work faster, deliver at the same standard of quality and in a short time frame in order to earn more money. We are, however, continuously evolving. We want our work to challenge our creativity, our strategic thinking and our problem solving abilities. In this case, financial motivation won’t do any longer. Self-development, knowledge broadening, autonomy, effort recognition, goal searching- are the most important aspects in this situation. That is why we should strive towards www.todaysoftmag.com | no. 33/april, 2015

45


HR ERROR 404: “Employee motivation” organizations which share our system of personal values.

Practical ideas for increasing employee motivation

Up until now, we’ve found out that there are two prime factors which influence employee involvement, but which are not co-dependent. In other words, if we ensure that the working environment is a pleasant one and that the material rewards are generous, this will not automatically guarantee that our employees will be more motivated; it simply means that they will not be demotivated. Let’s look at some suggestions for applying Herzberg’s dual factor theory in order to increase long term motivation in a company. Step 1 – Eliminate job dissatisfaction: • Improve obstructive company policies; • Ensure constructive, non-invasive supervising; • Create and promote a culture of respect and dignity for all team members; • Ensure competitive remuneration; • Build job status by providing meaningful work for all positions; • Ensure job security. All of the above actions help eliminate dissatisfaction in an organization. However, we must keep pushing forward! Only after we’ve surpassed this level will we be able to work on employee motivation. Step 2 – Create conditions for motivation: • Generating opportunities for achievement; • Recognizing employee contribution; • Establishing tasks which are rewarding and are befitting to each employee’s abilities and expertise; • Having each team member assume responsibility; • Offering professional advancement opportunities within the company through internal recruitment and promoting; • Ensuring trainings and development opportunities, so that employees can occupy the positions they are striving for within the company. To the above, we can add a few other helpful suggestions: • The balance between ”job enrichment” and ”job enlargement”; The concept of “job enrichment” refers to motivating employees by attributing them additional responsibilities which are specific to their hierarchical superiors. Employees benefiting from such a change will feel more appreciated, see more meaning in their work, and feel that they and their work are essential for the company. On the other hand, ”job enlargement” involves diversifying the activity portfolio of each employee, in addition to their usual workload. Avoiding repetition and monotony, coupled with offering development opportunities, are only a few of the benefits offered by ”job enlargement” measures. Also, the two concepts mentioned earlier – effort recognition and continuous development – can help with increasing motivation. • Open discussions about career development; • Implement cross-functional training. These types of trainings help employees learn new things and understand the business strategies of other departments. By

46

no. 34/april, 2015 | www.todaysoftmag.com

doing this, each employee gains a clear understanding of where they fit in the company, and how their role contributes to the achievement of organizational objectives.

Conclusion Motivated employees are an extremely important resource to any company. They are more productive, more dedicated, and remain loyal. As such, they shelter the company from the additional expenses incurred by recruiting and training new employees.

In this sense, we are often tempted to believe that we motivate our employees by offering only material rewards, a pleasant working environment, or a good relationship between company management and teams. We keep investing in all of these, without achieving any real or long term results. The actual issue is that we keep investing in hygiene factors, which will at best ensure that we do not have demotivated employees. In order for them to perform however, we need to channel our efforts towards motivating factors – those which focus on achievements, recognition, responsibility, career opportunities and employee development. There are several recommendations for developing a viable motivation strategy. Still, perhaps the best thing to keep in mind is the diversity of factors which motivate each and every one of us in a different way. Along with the examples of possible motivating actions presented above, it is recommended that one-on-one discussions are also introduced in order to determine what is important for each employee. Finally, an essential aspect to be remembered: we need hygiene factors; however we also need to make sure that these are adapted to each individual’s needs. Only afterwards will we be able to start developing motivation.

Ana-Maria Trifan

anamaria.trifan@happy-employees.eu PR & Customer Care Specialist @ Azimut Happy Employees


finance

Income rax exemption for software developers

I

Ioana Varga

ioana.varga@aiconsulting.ro Expert bookkeeper Managing Partner @ A&I Consulting

Ioana Costea

ioana.costea@aiconsulting.ro Expert bookkeeper Managing Partner @ A&I Consulting

n the case of small and medium-sized enterprises and particularly in the case of start-up companies, the accounting department or the accounting consultants serve as support for the economic and financial decision-making. Therefore, the useful financial-accounting information herein provided will address the accounting issues faced by developers, designers and IT Companies from Cluj-Napoca and elsewhere. For this issue of the magazine, we chose to offer some guidelines on how to access income tax exemptions for developers. We believe that the procedure related to this tax exemption is not clear enough to enable a good implementation, mainly in terms of the time when a company can apply for this incentive. Without getting into details, in accordance with the Order of the Minister of Public Finance no. 1479 of September 2nd, 2013, both the employer and the employee must meet several criteria. The company requesting this income tax exemption (16% applied to the taxable amount) must conduct its activity in Romania and specialise in computer programming (NACE code 5821, 5829, 6201, 6202, 6209). Furthermore, to qualif y for this exemption, the company must have obtained $ 10,000 turnover in the previous fiscal year for each employee who will benefit from this exemption during the current fiscal year. This requirement is completely discriminating and unfair for start-up companies, since it involves waiting for the end of a fiscal year to demonstrate their ability to achieve the turnover threshold required for this

exemption. Unfortunately, no provision of Order 1479 entitles a start-up company to apply this exemption. In this respect, we believe that the IT sector should suggest some amendments to the current text of the law. For example, to qualify for the income tax exemption for 10 employees in 2016, a company should have achieved $ 100,000 turnover in 2015. The exemption may also be granted to employees who signed the employment agreement in the same year when the grant was accessed, as long as the turnover for the previous year covers the amount. The turnover does not necessarily have to be generated by the employees for whom the exemption is granted, but also by freelance collaborators, provided that it derives from the activities required by law, as listed above. As regards the employee requirements, to qualify for the income tax exemption, an employee must have a Bachelor’s Degree in IT (see picture below) and hold one of the following positions in the company: analyst, developer, software architect, database administrator, software engineer or project manager. For this exemption to be applicable for

www.todaysoftmag.com | no. 33/april, 2015

47


finance Income rax exemption for software developers the company, the position must be within a specialized computer science department and it must be listed in the organizational chart of the employer.

Accounting recommendations

By translating all these data into accounting, we intend to clarify, both for companies and for employees, certain basic facts which are strictly related to this tax exemption procedure. The individual employment agreement stipulates the gross wage received by the employee for the work carried out. The company withholds the social contributions from the gross wage, and the resulting amount is the taxable income used for the calculation of the income tax payable by the employee. This results in the net income, namely the employee’s wage entitlement. As such, the income tax is withheld from the employee’s taxable income. The resulting amount is the net income payable by the company to the employee. The income tax exemption relates to amounts owed by the employee for salary income, and withheld by the employer from the taxable income. Starting with the 2nd fiscal year of the Company, if eligible for tax exemption, the income tax shall no longer be withheld from the taxable income. Therefore, the taxable income is equal to the net wage. In other words, the wage payable by the company to the employee increases with the amount of tax exempted. Given the above, to avoid unpleasant situations with employees who will benefit from tax exemption starting with the following fiscal year, we recommend one of the two approaches below, at the time of employment: 1. This exemption can be used by the employer as a tool to increase the employee’s income. For the beneficiaries of income tax exemption from the subsequent fiscal year, the surplus resulting from this exemption may represent an increase in the net income. 2. Please note that the implementation of this exemption will generate an increased net wage. If the initial net wage negotiation with the employee included the benefits entailed by this income tax exemption, you have to bear in mind that it is prohibited to reduce the increased net salary in order to reach the initially negotiated salary, without the consent of the employee. In this case, we

48

recommend informing the employee, at the time of employment, on the reduction of the gross wage during the fiscal year when the income tax exemption applies. With this article, we aimed to assist IT entrepreneurs operating under the laws of Romania to better understand the requirements underlying this tax relief (tax exemption). As specified, we want to create an open communication channel, to address the most urgent topics. You can send us a message on your topics of interest. We warmly welcome your suggestions at office@aiconsulting.ro, with the kind request to specify ‘For Today Software Magazine’ as subject. The answers will be available in the next issue of the magazine.

no. 34/april, 2015 | www.todaysoftmag.com


marketing

Design is a lot like dating

As in dating, the designer with a positive attitude will get ahead more easily. Your boss will like you more, your developers won’t run away from you, and your design peers won’t be afraid to ask for your feedback. Be positive, communicative and open minded. Ștefan Bălan

stefan.balan@lateral-inc.com Creative Director @ Lateral

Be picky

Imagine you hit on all girls in the club. What you think your success rate is gonna be? Just because you need work, doesn’t mean you should take any client, any project, any idea. While being open to new ideas is necessary, it doesn’t mean all ideas are good. Pick something you like, otherwise you’ll regret it the morning after.

Know your level

Don’t hit on a 10 if you’re a 5. Seriously. Having realistic expectations is good for your career and mental health. You need years of experience and practice to be able to hit the big clients with confidence.

It’s a numbers game

Not all the users will understand you. Even if you designed a great product, chances are the right audience doesn’t know Don’t seek perfection about it yet, so you need more exposure. It’s Because you are not perfect. Even you a numbers game, so unless you’re a master could design the same screen in 10 different pickup artist (Apple,Facebook), you need to ways. Each detail 10 times that. Go with the be open for rejection. flow and enjoy the ride.

You have to put yourself out there

Learn from rejection, don’t become bitter

Most designers feel under appreciated, think they deserve more and are hard to work with. In reality, the work they do is very poor. Not because they don’t have talent or capacity, but because they hold back, design the “safe” mockup, that will get approved by the boss & client. They are afraid of rejection and prefer to be liked rather than do their job properly. Stop designing your perfect portfolio, show your work even if it’s unfinished, get feedback as soon as possible.

Just because the greatest idea you had in your life didn’t impressed the client or your design manager, don’t go back to your desk and cry. Find out if it was a presentation problem, or if your idea was indeed great. Ask for feedback, maybe something you don’t realize is affecting your work. Ask for feedback, but take responsibility. Most designers end up executing someone else’s vision because they are unsure what to do, what to try and are afraid that yet another idea will be shut down.

www.todaysoftmag.com | no. 33/april, 2015

49


marketing Design is a lot like dating It’s your own fault if you’re not happy with what you do. Stop Is she interested in you, or does she just enjoys chatting? blaming others, your attitude reflects on other designers as well. Just because you have to be nice, doesn’t mean you have to agree with everything. Don’t be desperate. Both parties have a It’s about her, not you shared interest in it. Learn to listen. Ask questions, but don’t assault your client Don’t be afraid to put the client on the spot, make him feel from the first date/meeting. You need to create a conversation, uncomfortable and insecure. Or he will do that to you! not a q&a session. This applies to your boss or design manager. Ask sensitive questions, and see how they react. You will find Ask questions, but make sure your customer is confident you out if they are the kind of client you want to work with or not. know what you’re talking about.

Fake it!

Close the deal

Just because you’re not an expert in something, it doesn’t mean she is. Don’t know how to dance? Dance anyway, you’ll get better. Learn new things from your clients. Don’t have a clue about a certain domain? Perfect. Your client will invest his time to teach you something new, that you’ll be able to sell to the next customer.

Getting approval is the key. Do you think a girl will go home with you on the first date if she needs to ask her friends or her mother? Why should design approval be different? Most clients don’t have your experience and capacity to see all the benefits of the solution you proposed, because they see the work from a very subjective point of view. Close the deal, and they’ll be thankful later.

Dealing with competition

Don’t be the nice guy!

You know that awkward time when you’re talking to a girl and some other dude introduces himself into the conversation? Do you feel insecure? Threatened? You shouldn’t. The same with other designers. Just because they have more experience, or their portfolio looks better, it doesn’t mean the girl will go home with, or in this case that the client will trust more. Don’t start a fight. Don’t run either. Stay there, don’t let it get personal. Let them have their moment, and encourage their good ideas. Steal back the show. You are a designer, you should know how to adapt. Make their good ideas better. Screw with their confidence by correcting small mistakes they made or details they missed. But don’t keep score, be there for the long run. Make it all about the work. Soon they will become your supporter, not your enemy. Otherwise both of you will go home alone.

Check for the ring

If you ever hear your design is “nice”, that’s a bad sign. The nice guy rarely takes the hot girl home. You want your designs to be the awesome, not pretty. Take charge of the conversation, make sure people understand what’s under the pretty colors & fonts.

Cheat!

Yes, you heard me right. Cheating is healthy for your work relationship! It’s very easy to get comfortable inside a company, get a pay check each month and be happy with it. You put less and less effort into it, and neither party feels the need for change for a while. But starting your own projects will help both you and your company. Getting exposed to different experiences will enlarge your horizons and make you a better designer.

Make sure she remembers you the next morning

Your work in the end decides if you are gonna get laid or hired No ring is fair game. But unsolicited “redesigns”, or judging again or not. The talk, the clothes, the attitude, all count, but if designs without inside knowledge is easy. Be respectful of others your work sucks, you’re not getting a second date! and try to get their perspective before jumping to conclusions. Don’t be afraid to give unsolicited advice on great ideas with bad execution. Just make sure you have the facts first. To be continued.

Check the mirror before you go out.

Next Chapter: Working in a company is a lot like being in a Even if we don’t want to admit it, a lot of the design work is long-term relationship. based on intuition and trying new things. This means you need to convince your client to take risks. Well, you’d better wear a tie soon! You need to make your client comfortable, and gain trust even before you speak. Can you do that wearing a t-shirt and a beard? Great! Think a suit will do better? Suit up! But don’t over do it. Sooner or later you’re gonna have to open your mouth, so if what you wear is feeling uncomfortable, you’ll get distracted and screw up the presentation. Be confident and comfortable in your own shoes.

Poke the bear

If you want to get some, you have to risk. Sooner or later, you need to test the water, get a sense of the girl are you speaking with.

50

no. 34/april, 2015 | www.todaysoftmag.com



sponsors

powered by


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.