No. 15 • September 2013 • www.todaysoftmag.ro • www.todaysoftmag.com
TSM
T O D A Y S O F T WA R E MAG A Z I NE
ad P i d e an
hon P i r fo p p a ag M y t f o undr S
y Toda
ini m e G f
Fo
go n i h c 8 aun hone P The L s dow n i W M in MVV
Lean Six Sigma and Innovation Management The Trilulilu Team from Cluj has Launched a Revolutionary National Service Model Based Testing without assumptions
How I’ve Done My First Azure Mobile Service Business Networking from offline to online on Business Days platform Debugging in production Clustering for High-Dimensional Data Sets Empathy, the new required professional competency
6 TodaySoftMag app for iPhone and iPad Ovidiu Mățan
8 The Trilulilu Team from Cluj has Launched a Revolutionary National Service Călin Biriș
9 The Launching of Gemini Foundry Ovidiu Mățan
11 Today Software Magazine iOS Client App Iunieta Sandu
13 MVVM in Windows Phone 8 Cosmin Stirbu
18 How I’ve Done My First Azure Mobile Service Florin Cardasim
20 Test Driven Development and incremental design Alexandru Bolboaca și Adrian Bolboacă
22 Clustering for High-Dimensional Data Sets Lucian Brăescu
25 Debugging în producție Radu Vunvulea
28 Model Based Testing without assumptions Tudor Cobâlaș
30 TheOpen.com – digitally sustaining a successful championship Bogdan Moscaliuc
32 Business Networking from offline to online on Business Days platform Ovidiu Mățan
35 Lean Six Sigma and Innovation Management Monica Petraru
38 Java SOA Cookbook by Eben Hewitt Silviu Dumitrescu
39 Empathy, the new required professional competency Antonia Onaca
51 Gogu and the Perspectives Simona Bonghez, Ph.D.
editorial
I
Ovidiu Măţan, PMP
ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine
t gives me great pleasure to inform you that together with the publication of no. 15 we are also launching the first TSM application for mobile devices. I am talking about the reader for iPhone/ iPad which is already available in Apple Store. It was a unique experience to create this application. In just two months, the technical collaboration of two companies, 3Pillar Global and Gemini Solutions, led to the realization of a finite application which offers a facile way to read the magazine when you are not in front of the computer. In the desire to provide the community with something better, the team has invested a lot of passion and skill. I would like to thank everyone for the given support and in the pages of this magazine you will find two articles dedicated to this application. I would also like to invite you to download it from the site of our magazine and to let us know your opinions!!! In accordance with the launching of TodaySoftMag application, number 15 TSM is dedicated to mobile applications as a general theme. Also, besides the magazine’s monthly launching in Cluj, TSM will have the opportunity to become known also in Bucharest, within the Gemini Foundry event. Other important events in September, which we invite you to take part in are: SmartWeb Conference (Bucharest), SAP Conference (Cluj) and Cluj Business Days (Cluj). We have dedicated an article to each of these events. As usual, we make a brief inventory of the articles that can be found in this issue. We begin with Test Driven Development and Incremental Design, which is a revision of the way in which TDD is applied and it offers us practical solutions for application design. The MVVM pattern is applied to Windows Phone 8. In the same area of mobile applications, we mention the titles: The iOS Today Software Magazine Customer, Comparison between the development of native and hybrid applications, Favorites - from CRM to FRM, as well as The Trilulilu team from Cluj has launched a revolutionary national service. To those who wish to remember the Euclidian geometry and spaces, I recommend you to read Clustering for High Dimensional Data Sets. The management section contains Lean Six Sigma and the management of innovation, Empathy – the new competence and the interview on Business Days.
Enjoy your reading !!!
Ovidiu Măţan
4
Founder of Today Software Magazine no. 15/September | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE Editorial Staf Editor-in-chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com Editor (startups & interviews): Marius Mornea marius.mornea@todaysoftmag.com
Authors list Alexandru Bolboaca
Călin Biriș
Agile Coach and Trainer, with a focus on technical practices @Mozaic Works
Marketing manager @ Zonga
alex.bolboaca@mozaicworks.com
calin.biris@trilulilu.ro
Cosmin Stirbu
Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com Copyright/Proofreader: Emilia Toma emilia.toma@todaysoftmag.com
Victor Miron
miron.victor@gmail.com Co-fondator @ Favorites
3Pillar Global Team
Translator: Roxana Micu roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com Made by
Today Software Solutions SRL str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com
ISSN 2285 – 3502 ISSN-L 2284 – 8207
Radu Vunvulea
Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest
Lucian Brăescu
Adrian Bolboaca
Software Developer @ Accesa
Programmer. Organizational and Technical Trainer and Coach @Mozaic Works
Monica Petraru
Bogdan Moscaliuc
Senior Business Analyst @ UNIQA Raiffeisen Software Service
Project Manager @ Endava
lucian.braescu@accesa.eu
monica.petraru@urss.ro
adrian.bolboaca@mozaicworks.com
bogdan.moscaliuc@endava.com
Antonia Onaca florin.cardasim@endava.com
anto@aha-ha.com trainer and consultant
Head of Architecture &Analysis @ Endava Iași
Tudor Cobâlaș Ovidiu Măţan, PMP
ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine
Simona Bonghez, Ph.D.
simona.bonghez@confucius.ro Speaker, trainer and consultant in project management
Copyright Today Software Magazine
iOS Software Developer @ Fortech
@ 3Pillar Global
Florin Cardasim
www.todaysoftmag.com www.facebook.com/todaysoftmag twitter.com/todaysoftmag
alex.bolboaca@mozaicworks.com
tudor@xlteam.ro Business Developer @ XL Team Silviu Dumitrescu silviu.dumitrescu@msg-systems. com Consultant Java @ msg systems Romania
Owner al Colors in Projects
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 www.todaysoftmag.ro www.todaysoftmag.com
www.todaysoftmag.ro | no. 15/September, 2013
5
launch
TodaySoftMag
app for iPhone and iPad
W
Ovidiu Măţan, PMP
ovidiu.matan@todaysoftmag.com
e developed the TSM application for iPhone / iPad at the initiative of Dan Suciu , Director of Engineering @3Pillar Global , to collaborate to write it and publish it on AppStore . The development team has been Agile in every sense. The team was originally made up of three iOS programmers: Madalina Miron , Daniela Bulgaru and Tudor Stânean, with Gabriela Botiş as project manager. Subsequently, Robin Molnar brought his contribution on the QA part, and for look & feel, our colleagues from Gemini Solutions: Dan Hădărău and Marius Chincisan .
Editor-in-chief Today Software Magazine
There were many features but unfortuIt began with some general requirements of a first prototype, but at the end nately they were removed as the product of the second iteration, we had something matured. You might like some, so write to functional. After that, the desired direction us, maybe we will reconsider: • infinite scroll - initially seen as a way has been established, and we quickly heato align with similar products such as ded to the final product. We wanted to have Engadget client, we gave it up, although something simple, practical and functional, technically it worked very well, because, and in less than two months the application in terms of user experience, the focus was already available on the AppStore . The was practically moved on animation and main feature of the application is the abito the freedom to quickly see hundreds lity to view all published TSM issues and read every article. If one of the articles is not available in HTML format, especially in old numbers of the magazine, we opted for the solution offered by issuu.com which is now available on Apple devices and allows direct visualization of the PDF file. Visually, we had to redefine the identity of the product for mobile devices, and I would like to point out in this regard, the application icon and the splashscreen. Rounding the experience, the list of magazines available and the animation for selecting a number and have tried to make the entire usage of the application as natural as possible. We also note the possibility to change the language, which reloads the application and all items in the selected language. An optimization of this feature is redirection, depending on the language chosen, to www.todaysoftmag.ro for Romanian and to www.todaysoftmag.com for the English language.
6
no. 15/September | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE will include it in a complete form.
The general architecture of the system
Both the iPhone and the iPad app use the same mechanism, namely REST communication with the server using JSON objects. We tried to keep everything in a simple form, so we have only three types of requests: • Issues - List of new available issues considering last number available per client • Articles - the list of articles in a particular issue • Author - details of an author
of articles, losing in exchange an essential thing, namely directing the reader to the latest articles, • offline mode - the most important feature that for now I had to omit including. The reason is that it can create user confusion. This is caused by the fact that the articles stored for offline viewing were only the articles that have already been read. But in terms of usage the question arises: why would I want to reread an article? The actual value would instead be the ability to read throughout the last issue of the magazine or the ones I want to download. You also need to give the reader the opportunity to free up used space. This feature is only postponed, and in one of the next versions, we
If you wonder how the article itself is submitted, it is discharged directly into HTML format , thus providing a greater freedom in terms of content display. Virtually from the AppStore listing, Disquss comments have been added, and the appearance of the items that are not fully formed was changed at the moment redirection is done directly to issuu.com
• Implement Apple notifications ; • Search functionality ; • Include a separate video section , which is currently available only in articles ; • Events planner - a better organization for the events I want to thank the development team, because together we created a very practical and useful app in less than two months. With this opportunity we have demonstrated what potential the Romanian IT industry has at this moment, potential which can be used to support local small businesses.
What next?
The Android version, which will be developed by the Android team in India from the 3Pillar and Gemini Global Solutions for the look & feel. Regarding the TSM application of iPhone / iPad, we plan to have releases that will include gradual improvements and bug fixing. Some of the main feature: • View full screen photos; • An initial help screen that contains tips & tricks for application development;
www.todaysoftmag.ro | no. 15/September, 2013
7
business
The Trilulilu Team from Cluj has Launched a Revolutionary National Service
T
he way in which we listen to music has enormously changed over the last 15 years, from audio tapes and the well-known walkmans, to audio CDs and mp3, up to the iPods with thousands of songs. Nowadays, if you have internet access and a mobile phone, you can listen to millions of songs, anywhere and at any time. This is due to the evolution of onlines and smartphones which have opened a new horizon towards collaborative consumership. The team which had developed the well-known trilulilu.ro platform, launched in October 2012 the music service called Zonga. It offers its users access to over 19 millions songs on mobile, PC and tablet, through the online platform zonga.ro and some dedicated applications for Android, iOS and desktop. Zonga revolutionizes the manner in which the Romanians listen to music, providing them with a legal alternative to piracy and service functionalities which make life easier: • Synchronization of music, playlists and favorites among all the Zonga devices and applications; • Real time updating of the musical content, along with the new musical launches on the market; • Offering personalized suggestions of songs, albums and artists, according to the user’s activity; • Social section, where one can follow the musical activity of friends who are
using Zonga. The completion of such a service took more than 2 years, from the idea phase up to its official launching. In this project, the most important international and local record labels are involved, as well as the mobile phones operator, Vodafone. These partnerships helped the project to materialize, grow and have put it in open view. The development strategy was to enter the market with a good product which would then be continuously improved in accordance with the customers’ feedback and the project vision. It’s almost one year now since the launching moment and all applications have received major updates, which are more stable, faster and easier to use. Soon, the application for Windows Phone will be launched, too. The challenges of the project were to bring together the legal content of the biggest record labels, in a moment when the online music piracy is flourishing, to have an important mobile phone operator as a partner, to develop the best music applications on the market, to launch an unsurpassed offer and to reach the targeted audience. In 2013, Zonga has won 5 awards for mobile music applications, and at the moment, there are over one million auditions a month from the Zonga applications. All these have been accomplished by the Trilulilu team from Cluj, which continues to prove that we have an important IT center here, where national or international level services can be developed.
Călin Biriș
calin.biris@trilulilu.ro Marketing manager @ Zonga
8
no. 15/September, 2013 | www.todaysoftmag.com
startups
TODAY SOFTWARE MAGAZINE
The Launching of Gemini Foundry
S
Ovidiu Măţan, PMP
ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine
tart-ups are beginning to be a fashionable subject in 2013. There are more and more organizations which wish to support these efforts, and we have recently published, in no. 12, an article on Gemini Foundry. We come back to this subject since different start-ups have shown interest in this initiative and there is the need of some clarification. Serban Tir, the technical director of the Gemini Solutions group of companies, together with Radu Popovici, have answered a few questions for us. What do the start-ups mean for Gemini Solutions, from the perspective of the collaboration with them? Gemini Solutions has a long history of working with start-ups, so far from Silicon Valley. From this point of view, we believe we understand very well the startup culture. Even if the Romanian startups are a little different from the ones in the USA, their culture and their way of facing the problems is essentially the same. From this point of view, Gemini Solutions holds enterprising people, entrepreneurs and the startup culture in high esteem, as it has always been attracted to such initiatives and it wishes to enter different types of partnerships with them.
understanding of the feedback from the users and embedment in the product, as well as the future development directions that one aims at. It is very important for us to understand that once a product is “out in the wild”, comprehending the feedback from the users and taking actions accordingly is a key factor in maintaining the product appealing to the target customers. Another factor which usually tends to be less elaborated than it should be is the correct evaluation of the potential methods of monetization. Nowadays, the classical methods of monetization (selling the application, revenue from adds, etc.) tend to no longer be in the pipeline as a main revenue source, but rather as additional How do you see the correct evolution of sources of income. a startup in order for it to become a success? What is your opinion on the Romanian We do not think someone has a recipe that generally holds true for the success of start-up market until now and can you offer a startup. There are a lot of factors that can us a forecast on the following two years? We believe and hope that the start-up contribute to its success: of course, the idea also counts – but not as much as we tend market of Romania will grow considerato think on a first impulse, what matters is bly during the next years. Economically the fine tuning of ideas – a complex pro- speaking, Romania will no longer be able cess that needs to take into consideration a to sell itself as a cheap work force country lot of factors such as the target public, the – even in the case of areas where high quaforms of promotion, its virality, the correct lification is required. Under these circumstances, the next assessment of the targeted market niche. Obviously, what also matters a lot is logical step is for economic activities of the execution of the product itself, the higher added value to emerge. Obviously, www.todaysoftmag.ro | no. 15/September, 2013
9
startups The Launching of Gemini Foundry this can only be done through innovation, and start-ups are the essence of innovation. Concerning the present start-up market from Romania, we are clearly at the beginning, which means that the covered area, the initiative approach manner by the local entrepreneurs is quite inconsistent, as there is no local culture or tradition in this respect. This means that we have encountered start-ups which have very well understood the problems and have a clear development direction – measuring up to those over the ocean, but also startups with a rather empirical, if not naive, approach. Of course, in regard to the number of start-ups, we hope it will increase in the future.
of Automatic Control and Computers of Politehnica University of Bucharest. Of course, we also invite all of you young entrepreneurs of the IT domain, full of ideas and initiative, to participate.
For the TSM readers who wish to take part in the Gemini Foundry launching, what is the registration procedure? The participation to the event will be based on the registration form on our site www.gemsfounWhat does Gemini Foundry mean for dry.com and subsequent confirmation. the Romanian start-ups? Gemini Foundry is intended as a road What is the difference Romanian startups can take if their target is the American market. We believe that between an Incubator and after almost fourteen years of working with a Foundry? While an incubator is companies from Silicon Valley – many of which were startups – we have a good an initiative which helps understanding of the ecosystem and the the startups with a clear mechanisms over there and we can help and pre-defined list of Romanian startups reach that market and services and facilities, the Foundry is an initiative be successful there. characterized by flexibiAs far as we know, there will be an offi- lity, which builds its offer cial launching of Gemini Foundry, organized for each startup, accoron September 24th, in Bucharest. Can you ding to its necessities and tell us a few words about the guests of this particularity. event? Which is the particulaOn September 24th, 5:00 PM, at Marshall Garden Hotel, the official laun- rity of Gemini Foundry as ching of Gemini Foundry will take place, compared to other similar initiatives? Gemini Foundry’s particularity is that an event organized together with the Commercial Department of the United it aims to “raise” start-ups which have as a States Embassy in Bucharest. Among final target the United States market and it those who will take part in this event offers direct and concrete connections with we mention: Mr. Theo Nissim – CEO the institutions, the entities and the busiof Gemini Solutions company group, ness environment over there, maximizing Jim Cunningham – Regional Senior thus the chances of the startups to receive Commercial Officer, South-East Europe, as investments and have a real success on the well as Nicolas El Baze – General Partner, market there. Partech International. What does Gemini Foundry offer to and We will also enjoy the presence of Mrs. Adina Magda Florea, Dean of the Faculty get from a partner startup?
10
no. 15/September, 2013 | www.todaysoftmag.com
I would like to group what Gemini Foundry has to offer into several categories of services. Among these categories I believe there are: services meant to ease the entrepreneurs’ life, in the way that it relieves them from the routine, but important everyday tasks, and allows them to focus on their business idea (legal services, accounting services, office); services meant to lead to the rapid and healthy development of the business, such as mentorship and technical support, qualified guiding regarding business development, but maybe most important, we offer direct and concrete connections with the investors and the environment of Silicon Valley. What do we get in return? It’s simple. We get a percentage of the incubated company, which will remain minor, anyway. Evidently, this percentage differs depending on the offered services.
programming
TODAY SOFTWARE MAGAZINE
Today Software Magazine iOS Client App
T
he demand for mobile applications is on the rise and, as an effect of that, so has the New Media focus shifted from web-only or predominantly-web to the newer mobileand-web or, at least, mobile-friendly content and content distribution paradigms.
3Pillar Global Team @ 3Pillar Global
So, in this shifting landscape of mobile content accessibility, 3PillarGlobal and Gemini Solutions partnered with Today Software Magazine to not only deliver a content-serving application, just another piece in the already-available plethora of New Media applications, but to deliver a content-focused solution for iOS readers, empowering mobile users to not only read the IT-related articles, but to also socialize around them by means of sharing, harvesting the power of many for the benefit of them all, being known that technology and expertise can be - and actually are - a strong community drive. Based on this principle of community evolving around technology and, in extenso, the principle of evolving community around evolving technology, we, 3PillarGlobal, only found it appropriate to share some of our newly-gained insight into developing the TodaySoftMag iOS application (already available in Apple Store), as this was not only a fun exercise, but also a refining experience and a team-building activity that enriched our skills and offered us a clearer vision of what it takes to develop a client-server application running on iOS. We hope, in the paragraphs to follow, to share some of these.
Brief description of main features
The application tries to meet the user’s needs even from the first run, by letting him choose the language in which the articles are preferred, as the magazine is available in Romanian and English language as well. After choosing the language, the app displays the latest issue of the magazine, the other issues’ articles are brought later so that the user experience will not be interrupted while they are downloaded from the server. Between all the features present in the app, we can mention the following ones: 1. Read/Browse through issues/articles - The main feature of the Today Software Magazine iOS app is the browsing through the published issues, which is provided in a friendly designed manner. The user can chose to browse through issues by selecting one from the list of issues shown in the menu. The displayed issue will be selected in the list, this way the app will always remember the user’s state in the app. Each issue has a list of articles that are arranged in the order of
www.todaysoftmag.ro | no. 15/September, 2013
11
programming Today Software Magazine iOS Client App their appearance. Once selected, an article will remain information. This way the UIActivityViewController default actithis way, until a new one is selected. vity will become available. 2. Fetch/Re-fetch issues - As the magazine is written in both Romanian and English language, the user can switch between them by choosing another language from the Settings menu, which will trigger a fetch/re-fetch of issues in the wanted language. The app will enter the “downloading” state and display a new view with a suggestive message until the articles of the latest issue are brought from the server. 3. Share articles - By having the Social Network Framework integrated, the app gives the user the possibility to spread After selecting the method of sharing, the application will disthe word about any interesting article through: play a window specific to each social network and fill in the text of a. Facebook the action with a standard text message that includes a link leading to the article. b. Twitter c. Email
Versions considerations
After selecting the preferred sharing method, the app will Implementation of two versions of the same applications in display a specific dialog for each social network and fill in the parallel brings some challenges. message of the action with a default text that includes a useful link For the TSM application it was desired to have an iPhone and directing to the article being shared. iPad version and things could not be more different in terms of UI. Same data was desired to be displayed but in the same time to UIActivityViewController, a new integrated component, avai- be properly fitted for each type of device. iPad has a large display lable only from version 6 or higher of the OS, was used in the that a user can easily see any type of information, from small to TodaySoftMag for the feature of sharing an article. Being a new large icons and very detailed charts, while the iPhone - on the component, we encountered some unexpected obstacles when other - has a smaller screen , but device is more common among using it. The activities that form the component consist of ways of iOS users. sharing an article: Facebook, Twitter and Email. In order to display the available activities, this component uses the credentials stored in the phone’s settings. If the credentials are not stored, the component does not display the activity for the social networks Facebook and Twitter. To provide access to these activities, we introduced the custom activities that assure that the user will login the social network account, before sharing the article. Accessing a custom activity triggers the action of composing a post on the chosen social network, done by using the SLComposeViewController class. SLComposeViewController *facebookController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; ComposeViewControllerCompletionHandler __block completionHandler=^(SL ComposeViewControllerResult result) { [facebookController dismissViewControllerAnimated:YES completion:nil];
Due to the large difference in resolution of the iPhone and iPad, it was decided that the application should display relevant information instead of all information simultaneously. With this switch(result){ idea all application screens were created. case LComposeViewControllerResultCancelled: default: After selecting the language, the application’s main screen { } appears displaying the most important information : the list of break; case SLComposeViewControllerResultDone: items for the latest issue. For the iPad version the magazines list { UIAlertView *alertView = [[UIAlertView alnumber is displayed simultaneously with the list of items, but the loc] initWithTitle:kPOST_SUCCEDED message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:nil]; iPhone version only shows the list of items, and another magazine [alertView show]; can be selected by clicking the left menu. We wanted both versions [alertView performSelector:@selector(dismissAnimated:) withObject:nil afterDelay:1.0f]; to keep the same behavior. } break; The list of articles will appear in the middle, and on the left }}; [facebookController setInitialText:kPOST_MESSAGE]; there will be listed journals in a more hidden way so as not to [facebookController setCompletionHandler:completionHandler]; disturb the user visually . Therefore, on the iPad „ Split View” has After displaying the instance (SLComposeViewController*) been introduced, which contains a narrow column on the left and composeSheet one wider in the right and on the left of the iPhone version menu [self presentViewController:composeSheet animated:YES is presented again in a thin form by the addition of a component completion:nil]; called „IIViewDeckController”, an open source class that is increathe application will notice the lack of credentials and will singly used in iPhone applications. The next application window displays the selected item . At the prompt the user to settings where he can enter his account
12
no. 15/September, 2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE Overview Diagram
top of the screen can be seen the information about the author, so while scrolling the article this remains visible. On iPad, on the left, an article list items is present to help the user change easily items between them. iPhone version is maintained simple , as expected by any mobile phone user. The application uses at the same time many new components introduced in language and some customized to enhance the user’s interest . We’re talking about small attention items, such as an animation application for early language selection , arrangement and ordering of windows in a natural way for a reader. It is very important that with the growth of the language and technical innovations the developer should also grow in terms of techniques and components used .
The final aspect of each version was designed so that the information is displayed in an effective way. Each user can say that the application meets its needs and requirements, taking into account the constraints of each individual device and preserving at the same time the focus on what is important and how it is displayed.
Short technical details
The iOS application supports iOS 6.0 and upper versions, this way most of the latest features provided by 6.0 and 6.1 iOS versions would be implemented and because it’s a universal app, it can be downloaded on both iPhone and iPad devices.
All the articles and authors’ detail information are provided by the server through a certain API. The communication between the API and the iOS app is implemented using the AFNetworking Framework. For a better user experience all the requests to the server is split in smaller requests, and the ones that require bigger data transfer are done in background so that the UI components’ behavior is not affected by the data download. This way, when the user starts using the application for the first time, only the articles from the last issues are downloaded and while this happens, a spinner will be displayed on the main screen. When the download is finished, the user will be brought in the home screen having displayed the articles from the last downloaded issue, while all the articles from older issues are downloaded in background. Also all the information about certain authors and the articles’ images along with authors’ images are also downloaded in background so that they won’t impact the user interface components. If a certain article image or author image did not load yet, a certain placeholder will be displayed until the download of the certain resources is completed. In the following code sequence is examplified the JSON object received from the server after sending a request for a specific author: {
description = „Product Mindset \n”; name = „Dan Suciu\U0103”; picturePath = „http://www.todaysoftmag.com/tsm/images/ppl/photosmall.jpg”; }
All data downloaded from server will be stored locally on device, this way the articles’ images and all the information about the needed authors will be available along the user interaction session without being needed to be downloaded again from the server. If the needed author details information is not stored locally on device, a request will be done and the certain placeholder will be displayed until the download is completed. If the certain author image resource is not available from the server side the placeholder will remain, but all the other information regarding the author will not be affected. For a better resource management CocoaPods library was used for adding and managing the external project frameworks. This way the latest version of each framework is added and updated in an easier manner. The fact that the general global workspace contains the CocoaPods library is invisible for the final product and the frameworks can be used exactly in the same manner as if they were added manually. The “PicturePath” field is used for downloading the author’s image. This is not done right away after the author’s information is downloaded, because this could take even longer due to possible bigger data size it is downloaded in background without impacting the user experience. For a better user experience all request to the server which are bigger are split out into smaller requests, judging after the memory size they require to save the certain downloaded data, for example taken into consideration the first run of the application the user will see at first the articles from the last number and all the other articles from previous numbers and all other related data is downloaded through background threads without impacting the user experience.
www.todaysoftmag.ro | no. 15/September, 2013
13
programming Clientul iOS Today Software Magazine Future development
Since the first version is already available in AppStore, plans are already made for creating the next version of the iOS application considering the following main features: • Push Notifications - Will be used for notifying users when new content is available for download whenever they have the Today Software Magazine app closed or set in background or the device in sleep mode. • iOS 7 Support - Later versions should support most of the iOS 7 features and should have all the UI components updated to the iOS 7 standards and layout. • Allowing Users to Refresh Content Manually - Users should be able to refresh their content manually whenever they want to. This would be available by dragging the content down and releasing it after a certain time interval. Data will be updated in a manner that won’t affect the user’s experience. • Adding Several Settings Options - In the future releases it is desired that the user should have more options for configuring and personalizing the iOS client, for example having the possibility of setting the maximum number of articles that can be saved locally on device. • Newsletter Subscription - The iOS application would allow each user to subscribe for Today Software Magazine news feeds. This way he can find out the latest news regarding Today Software Magazine.
Our core competencies include:
Product Strategy
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
14
no. 15/September, 2013 | www.todaysoftmag.com
Product Development
Product Support
TODAY SOFTWARE MAGAZINE
programming
MVVM in Windows Phone 8
M
odel-View-ViewModel (MVVM) design pattern defines three major components: Model, View and ViewModel: • Model: Business domain (logic related to the business of the application, entities, data access) • View: User interface (in Windows Phone – PhoneApplicationPage) • ViewModel: “The model of the View” – an abstraction of the View that facilitates the communication between the View and the Model
Cosmin Stirbu
cosmin.stirbu@fortech.ro iOS Software Developer @ Fortech
One of the major differences between Model-View-Controller and MVVM is that the ViewModel objects do not have a reference to the View objects. The View object binds to the properties of the ViewModel object which in return exposes the data from the Model and other View specific properties. The binding mechanism assures that when the properties from the ViewModel change, the ones from the View are automatically updated and vice-versa. When the user presses a button, a command is invoked in the ViewModel, the View doesn’t ever modify the entities from the Model directly. The View classes are not aware of the Model classes while the ViewModel and the Model classes are not aware of the View classes. In this way, the View objects are merely a consumer of the ViewModel objects, and they can be easily replaced with unit tests.
Sursa:
How do we apply MVVM in Windows Phone 8?
MVVM Light is a great and very popular toolkit, developed and maintained by Laurent Bugnion used for fast development of MVVM applications in WPF, Silverlight and Windows Phone. This toolkit helps us to separate the View from the Model so we can write cleaner, easy to maintain and extend applications, the user interface layer (the code behind) is as thin as possible and so the applications are easy to develop and to automatically test. One of the components offered by the toolkit is ViewModelBase class, a class that each ViewModel class can extend and so it doesn’t have to implement INotifyPropertyChanged to notify the View when a property changes. Usually in a Windows Phone 8 application, for each Page there is a corresponding ViewModel object that extends the VIewModelBase class. Another big advantage of using the class ViewModelBase is its IsInDesginMode
blogs.msdn.com/b/tims/archive/2010/11/02/kung-fu-silverlight-architectural-patterns-and-practices-with-mvvm-and-ria-services.aspx
www.todaysoftmag.ro | no. 15/September, 2013
15
programming MVVM in Windows Phone 8 property that allows us to check if we are using Expression Blend or Visual Studio Designer and if so, to offer “design data” so the designer would have a much easier job. We have to do this because neither Blend nor Visual Studio Designer allows networking operations or database connections. The general approach is to expose all our ViewModel objects as properties using the class ViewModelLocator (offered by MVVM Light). In this class we can use a preferred IoC Container (or SimpleIoc included in MVVM light) to create the ViewModel objects and inject dependencies into them (for instance an interface that exposes methods to manage entities from the model). A ViewModelLocator object can be added as a resource in App.xaml and then used by each page to bind its DataContext property to the corresponding ViewModel property exposed by the ViewModelLocator object. ViewModelLocator object added automatically as a resource in App.xaml when creating a new project using the MVVM Light Visual Studio template.
text in a TextBlock object all we have to do is to bind its Text property to a string property from the ViewModel object, in this way we don’t have to write any code behind. The binding can be done in Blend and as well in the XAML code. string _textProperty public string TextProperty { get { return _textProperty; } set { if (_textProperty != value) { _textProperty = value; RaisePropertyChanged(„TextProperty”); } } }
The call of the inherited method RaisePropertyChanged assures that the UI will update every time the value of the property changes. The binding code looks like this: <TextBlock Text=”{Binding TextProperty}” Style=”{StaticResource PhoneTextNormalStyle}” HorizontalAlignment=”Center” VerticalAlignment=”Center” TextAlignment=”Center” TextWrapping=”Wrap” FontSize=”40” />
Basically any property of any UI element can be bound to any property from the ViewModel object without <Application ... having to write any code behind. We xmlns:vm=”clr-namespace:{Default Namespace}. ViewModel” can for instance bind the ItemSource ...> <Application.Resources> property of a ListBox to a List<T> <ResourceDictionary> <!-- Global View Model Locator --> property in a ViewModel and then con<vm:ViewModelLocator x:Key=”Locator” d:IsDataSource=”True” /> figure the ItemTemplate for the ListBox ... </ResourceDictionary> that will have as DataContext a T object </Application.Resources> </Application> which conceptually speaking is also a We can bind the DataContext of our ViewModel (or an ItemViewModel). Page to the ViewModel object exposed by the ViewModelLocator using Blend (but How does the View communicate also directly in the .xaml file). After that with the ViewModel? we can bind all the properties that we need MVVM Light offers from our ViewModel to UI elements (and EventToCommand class that extends not only) from the Page. Behavior class and allows the binding If we want for instance to display some of an event to a command property in
the ViewModel. In this way when a new event is raised we can execute the code in the ViewModel without having to write any code behind code. In the ViewModel we can expose a RelayCommand property which using EventToCommand we can bind it to any event. The Click event of a button is bound to ButtonPressed command // Button Pressed public RelayCommand ButtonPressed { get { return new RelayCommand(() => { Console.WriteLine(„Button Pressed”); }); } }
We should mention that when using
16
no. 15/September, 2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE EventToCommand we can also send parameters, for instance we can send the text from a TextBox by binding the event to a RelayCommand<string> command. EventToCommand can be attached to any UI element, even to the Page itself, in this way we can invoke a command when the page has loaded (Loaded event) to fetch some data from a web service for instance.
How does the ViewModel communicate with the View?
Besides the binding mechanism the ViewModel can communicate with the View through other mechanisms such as Behavior, Messenger or by using interfaces implemented by the View and injected in the ViewModel. By extending the Behavior class we can expose properties (DependencyProperty) together with regular properties that we can bind to properties from the ViewModel, in this way, when the ViewModel properties change we can execute UI code. The advantages of Behavior objects are that they can be easily reused, they are “blendable” and they allow us to move the code behind away from the View. MVVM Light offers a Messenger class used by different objects to communicate in the application through a low coupling mechanism. The messages can contain simple data types or more complex ones. This class is often used to allow the ViewModel objects to communicate or to allow the ViewModel objects to communicate with the View. Another approach is to create interfaces that will be implemented by the View.
For instance if we want to display an alert in the View we can create an interface that exposes those methods, implement it in the View and after that inject it in the ViewModel (we can get a reference of the ViewModel by using the DataContext property). We should mention that the preferred way to handle this communication is Behaviors, although MVVM doesn’t clearly specify this, it is quite clear that as long as the code behind is kept to a minimum the application is easier to test. A disadvantage of Behaviors is that they are not available in Windows 8 out of the box, so the code would be less portable, but there are libraries that offer classes similar to Behavior classes. (WinRtBehaviors - http://winrtbehaviors.codeplex.com/)
Common challenges and their solutions
One of the common problems is navigation: from where do we navigate to another Page and how? The solution is quite simple – we create an interface that exposes the needed methods for navigation, implement it in a dedicated class and inject it in the ViewModel objects from where we want to perform the navigation. Another problem is offering design time data – the recommended approach is the creation of interfaces for the data managers (classes where we have access logic, persistence logic) and implementing them in two different classes (one for design time, and one for production). Using the IsInDesignMode property we can register in the IoC container the corresponding class that later will be injected
in the ViewModel. This feature combined with Blend gives the possibility of having both developer and design teams to work at the same time on the project. Behavior classes allow us to make the transition between different states of a Page and even to trigger animations, this being possible without writing any code behind. Behavior classes such as DataStateBehavior and GoToStateAction allow this. In Windows Phone 8 unfortunately we cannot bind the Application Bar to different commands in the ViewModel out of the box (this is possible in Windows 8). So this can be one of the situations where we have to write code behind, to listen to events from the Application Bar buttons and invoke the commands from the ViewModel manually. But if we don’t want to do this (and usually we don’t) we can use the AppBarUtils library (http://appbarutils.codeplex.com/) that offers Behavior, Trigger and Action classes that allow the binding to different commands and other properties.
Conclusions
The MVVM design pattern is very popular among Windows Phone developers, it allows fast application development that are easy to maintain, extend and test and it also allows a fast user interface development (Blend). The components defined by the pattern have clearly defined responsibilities and the coupling is kept to a minimum. If when the design pattern was introduced its implementation seemed pretty difficult because it required a lot of code lines, nowadays the libraries and the toolkits found in the community makes it much more fun and interesting.
References MVVM Light http://www.galasoft.ch/mvvm/ http://msdn.microsoft.com/en-us/magazine/ jj651572.aspx http://appbarutils.codeplex.com/ http://winrtbehaviors.codeplex.com/ http://vimeo.com/53068482 http://channel9.msdn.com/Events/TechDays/ Techdays-2012-the-Netherlands/2264 http://outcoldman.com/en/blog/show/308 http://blogs.msdn.com/b/tims/ archive/2010/11/02/kung-fu-silverlight-architectural-patterns-and-practices-with-mvvm-and-riaservices.aspx
Using EventToCommand in Blend. In this example it was attached to the Page and bound to the Loaded event.
www.todaysoftmag.ro | no. 15/September, 2013
17
programming
programare
How I’ve Done My First Azure Mobile Service
T
his is a story about simplicity and robustness, two terms that apparently don’t fit very well together in the same sentence while speaking of software development. And this was a reality back in the days when everybody was building their own backend solution, their own communication stack, their own language, their own … whatever. Cloud based platforms transformed this complicated world into a world where the most challenging matter is to have the right world and business understanding; technical stuff? – forget about it, it’s in the cloud, up and running, just use it.
Florin Cardasim
florin.cardasim@endava.com Head of Architecture &Analysis @ Endava Iași
18
no. 15/September | www.todaysoftmag.com
This is how I recently rediscovered the beauty of the public clouds: being in the rush of preparing the next IT community conference in Iasi (it speaks for itself here: http://iasi.codecamp.ro/ ); and rush is like hell, it just blurs your mind. The event website (browser version) was ready, but in a world where you don’t exist unless you’re mobile, that’s a serious issue. Luckily enough, communities are made of smart people and, without us (the event organizers) even knowing, the native mobile CodeCamp applications were already in the app markets (Apple, Google, and Microsoft) – and are still there, go check them out. “That’s so cool” – we said; “but where are these apps getting the event data from (speakers, sessions, agenda and so on)”? We shortly found out that our friends – brilliant pPhone, Android, Windows Phone developers -, were using a static JSON file with a copy of the data posted on the event web site. Of course, apps and web site were constantly out of sync and the JSON file had to be updated on a daily basis to accommodate the web site changes. The agilists would probably say that this is an emergent architecture . And we decided we need to “emerge” more and build a proper backend for all those apps and the web site. So we started to look around for a technical solution, having on top of our minds the following serious constraints: • lack of learning and development time for the not yet existing backend; we didn’t want to invest more than couple of
days at maximum, including testing and integration; • as few as possible changes in the already published mobile apps – pretty much ensured by the JSON “interface”; • simple hosting, deployment and configuration; • the intention to add multi target (iOS, Android, Windows) push notification support. That led us to the very obvious question: is there anything out there in the cloud kind enough to consider all the above and offer out of the box support? The answer is yes, nowadays there’s a quite good offering: Parse, Pusher, Azure Mobile Services and others. Azure Mobile Services was the way to go for us, given some previous experience with the Microsoft’s Cloud. Let’s see it at work. Speaking of simplicity, I logged on into my Windows Azure portal (https://manage. windowsazure.com/ ) and it took me literally not more than 5 clicks and 1 minute to create a Windows Azure Mobile Service. Very simply put (and the above picture will assist the explanations), the mobile service is just a bunch of relational tables in a SQL Server database, provisioned during service creation, accessible via HTTP RESTfull services to provide CRUD access to the data by the means of the POST (create), GET (read), PATCH (update), DELETE (delete) verbs and JSON payload. Having the aforementioned JSON structure already used by the mobile apps, it was
TODAY SOFTWARE MAGAZINE very easy to define tables such as Events, Locations, Sessions, Speakers, Tracks – that was the place where my data was going to be stored and read from. Wanted to see all lines stored in my Events table? Just do a HTTP GET https://codecampevents. azure-mobile.net/tables/Events and you’ll get the data in JSON format. On top of this very simple data access model there’s security – each table operation can be accessed either in the presence of some secret keys (managed in the portal) or for authenticated users (microsoft, google, facebook, twitter identities supported aut of the box).
What if I want to programatically do my own processing when the HTTP request hits my service and not just do CRUD data storage? Take a look at the picture below, that’s where the Server Side scripts enter the scene. The HTTP request hits Layer 1, built into the Mobile Service – this is where the HTTP request and JSON payload are interpreted, mapped into Java Script object and passed to the Scripting Layer, which is in your hands. Java Script? Oh, yes – the scripts run on top Node JS which is hosted somewhere into the platform. There’s simple API out of the box for accesing databases, calling other HTTP web services, sending push notifications to iOS, Android, Windows Phone and Windows 8 devices, accesing Azure Service
Bus and others. After you do your stuff the execution control goes to Layer 2 where the java script objects are mapped onto database fields. The picture below presents the interaction between the mobiles apps, the backend and me sending push notifications to all registered devices.
Each operation has a pretty straigthtforward corresponding Server Script written in Java Script. The rest was some simple identity and push notification related configuration in the portal. Would you believe me saying that I’ve done all that stuff in just a couple of days (well, give or take a few extra hours for some mind-twisting Java Script bugs )? And that’s not me being a genius, it’s just the simplicity of Azure Mobile Services. I’ll leave you with some food for though: is what we’ve seen so far enough for a robust and ready to production service? How about monitoring & logging; scalability; scheduled tasks? It’s already there, try it out! http://www.windowsazure. com/en-us/develop/mobile/
www.todaysoftmag.ro | no. 15/September, 2013
19
programming
Test Driven Development and incremental design
A
s we were saying in the last articles about software craftsmanship, Test Driven Development is one of the practices considered to be at the core of a software craftsman. Besides the increasing numer of articles, blogs, short movies or books on this subject, Test Driven Development (TDD) continues to be a subject that generates confusion in the programmer communities. This article will try to structure and to clarify the subject and to offer support to those willing to learn more about it. Alexandru Bolboaca
alex.bolboaca@mozaicworks.com Agile Coach and Trainer, with a focus on technical practices @Mozaic Works
Adrian Bolboaca
adrian.bolboaca@mozaicworks.com Programmer. Organizational and Technical Trainer and Coach @Mozaic Works
20
no. 15/September | www.todaysoftmag.com
The classical description of TDD is that the programmer: • Writes only one automated test that fails (often called the „Red” step) • Does the smallest change in the code to make the test pass („Green” step) • Refactors the code („Refactor” step) This cycle repeats with a high frequency, reaching to maximum 5 minutes for experienced practitioners. For beginners, 15-30 min is the normal duration, that decreases once experience is gathered. We do not talk here about writing tests on existing code; in this case the time needed to write tests is proportional with the code complexity. This description is very easy to show, but unfortunately it does not contain essential details for those that want to start applying TDD, and this creates confusion. The first thing we need to understand about TDD is that, contrary to its name (development lead by tests), it is not a method of testing. TDD is a method to obtain an appropriate design for a solved problem. The tests are used with two purposes: • advancing the design (the solution) • verifying that the changes in the code did not affect the problem solution
created until the tests were run. Because the notion of software design is ambiguous, it worths explaining what is design in this context. Design is not anything else but „creating artifacts that solve problems”1. For programming, the artifact is the code. More exactly, at the bottom level, the created artifacts are the variables, methods, classes and the collaboration between objects (called as well „contracts”). Two things are important for the design of a software application: • solves a problem... • the simplest and elegant way possible If programmers write elegant code and do not solve a problem, then by definition they did not obtain a design. The fastest and most elegat way of demonstrating that the problem is solved is by running some automated tests what can be reviewed that they cover all the aspects of the problem. Finding some simple and elegant solutions hits a couple of obstacles: • Incomplete understanding of the problem. The human brain has a limited capacity, and the problems programmers need to solve increase in complexity. So nobody should be amazed that sometimes
TODAY SOFTWARE MAGAZINE not even the best programmer cannot understand all the aspects of a problem. • Premature generalization (as other „cognitive biases”2). Often programmers want to obtain a generic solution, before having enough specific cases to justify it. To extreme, this tendency can create an apparently well concieved code, but which is very difficult to maintain. • The tendency to use known solutions. „When you have a hammer, everything you see are nails”, as the old saying is. The problems the programmers solve each day can seem, at a superficial level, very similar. The reality is that in programming solutions depend a lot on small details. • Fast requirements change. It is already well known that the requirements change from one day to another. One solution that was good yesterday might not fit today anymore.
with height 1 and the game ends (alternatively, one can consider that the square filled a row that needs to be elliminated, just that the rule of elliminating the row can be easily added later). • Identify concrete examples (expected values of input and outpu). For example, after the game begins, the piece that appears on a board into a certain position. • Implement one example in the simplest way possible. Incremental design fights the problems mentioned earlier in the following way: • By defining exemples, the problem becomes clearer. Even more, the examples can be discussed easier with non-technical persons (customers) than the code. • The list of examples is filled-in as new behaviours are identified during development. By iterating, the chances of forgeting parts of the problem decrease. • Simplifying the problem lets diminishing the complexity so that our brain can manage it. • Implementing the simplest solution for every example leads to avoiding premature generalization. • The solution is always simple (as much as the problem lets it to be), which makes easier to change it in the case of requirements change.
The realities from the day to day life of a programmer lead to the need to have an easy to change design. The requirements change, teams change, programmers learn more each day about the product and about technologies. During these days, a good design is almost synonim with an easy to change design. This is why the qualities of a good design are: • Both the structure and the code are easy to understand for all the prograTest Driven Development is the best mers involved • Most of the required functionalities known method to do incremental design. can be implemented with minimal chan- The tests code examples of usage of the solution and can be used to continuously ges in the code. verify the solution. Implementing the This is possible when small and very simplest solution at every moment helps specialized classes work together by premature generalization. Refactoring following some very well defined contracts leads to simplifying the solution. Because developing using TDD starts between their interfaces. • It is easy to check that the changes from examples, and the code written at in the code did not affect the existing every step is as si as possible and without generalizatins, the refactoring step implies implementation. especially identifying and reducing simA solution for these problems is incre- milarities from the code (also named mental design. Incremental design means „duplication”, becaue two chunks of code creating the design while writing the code. do the same thing in different ways). The Incremental design is an alternative to the simmilarities can be elliminated just by classic way of doing design: before starting generalization, which is tranlated in code writing code, on paper or by using special by abstractions. (No, it is not about abstract classes, but about classes that serve tools. To do incremental design one needs to for a larger purpose that they were initially made for). follow the steps: By introducing abstractions, the • Analyse the problem and divide it in smaller problems. For example, in the programmers obtains a flexible design, case of creating a Tetris game, you can start perfectly adapted to the current problem. with the simplest game possible: one piece Because of using automated tests, the of the size of a square that falls intro a well programmer can anytime show that his
solution is perfeclty valid for the list of behaviours defined by tests. Sounds excellent, right? But apoting TDD is not simple. At a personal level some obstacles need to be overcome: • Learning necessary techniques to write simple unit tests. The test doubles (most important stubs și mocks) are very important here. • Simplify. This is an ability that evolves in time, by exercise and with feedback from other people. • Identifying simmilarities from the code. Some simmilarities are obvious, but others are more subtle and can be seen with training. • Design. Simmilarities can be minimized by several ways, and some of them lead to better results than the others. The knowledge of software design (design patterns, design principles from which we mention SOLID principles and the four elements of simple design) are essential to create the simplest solutions. • Focusing more on the problem and less on the solution. School teaches programmers to think about solutions. Incremental design asks to identify examples and simplifying the problem before writing the first line of code. The programmer that tries TDD needs to push back the tendancy to think about design or about code at this first stage. • Fast and efficient refactoring. Refactoring can take a lot of time if it is not well mastered by programmers. Exercising the refactoring techniques with the purpose to increase the speed is very important when using these techniques in production. At the level of one team, even more, a period of defining a common design and tests style is needed. For more complex environments (a lot of existing code without automated tests, more teams working at the same product, remote working, etc), the adoption needs to be treated with great care in order to avoid problems related to productivity. The recommandation is that for complex situation technical coaching is needed to manage the changes
Conclusion
Incremental design means creating the design while the code is written Incremental design is an alternative to the design made on paper or in specialized tools before writing code. Incremental design
www.todaysoftmag.ro | no. 15/September, 2013
21
programming
programare
Clustering for High-Dimensional Data Sets
C
lustering is a means to analyze data obtained by measurements. This allows us to cluster data into classes and use obtained classes as a basis for machine learning, faster measurement analysis or approximate future measurement values by extrapolation. In the following sections we will try to cover the topic of how to cluster data. This technique is especially useful when dealing with large amounts of data, a scenario not uncommon in regards to the explosion of data and information we are dealing with nowadays. Lucian Brăescu
lucian.braescu@accesa.eu Software Developer @ Accesa
Introduction
Clustering is a process that examines a collection of “points” and groups called points into “clusters” according to some distance measure. The main goal of clustering is to achieve a state where points in the same cluster have a small distance from one another and points in different clusters are at a large distance from one another. The definition of the terms “large” and “small” depends on the domain in which clustering is applied. An example of clustering in a bi-dimensional space can be seen in the following image: Modern clustering problems however involve Euclidean spaces of very high dimension, or even more fun is the case
when they involve spaces that are not Euclidean thus making the distance measure very unintuitive. A real world scenario for clustering might be the need to cluster documents by their topic based on the occurrence of common, unusual words in the documents or the requirement to cluster moviegoers by the type(s) of movies they like in the context of various business processes. The concept of distance is a measure described by a few basic properties. A distance measure is always nonnegative (only the distance between a point and itself is zero), it is symmetric (it does not matter the order in which you consider the points when computing their distance) and it must obey the triangle inequality (the distance from X to Y to Z is never less than the distance going from X to Z directly).
Clustering Strategies
There are two types of clustering strategies available in the state of the art: hierarchical algorithms and point-assignment algorithms.
22
no. 15/September | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE Hierarchical algorithms start with each point in its own cluster, combines clusters based on various definitions of “closeness” and stops when further combination leads to clusters that are undesirable (for example when we have reached a predetermined number of clusters for our domain or when a resulting cluster has points that are spread out over too large a region). In point-assignment algorithms points are considered in some order and each one is assigned to the cluster into which it fits best. It is usually preceded by a short phase in which initial clusters are estimated. Variations of these algorithms occasionally combine or split clusters or allow points to be unassigned if they are too far from any of the current clusters in order to reduce noise.
exponentially with the dimensionality. For example high-dimensional Euclidean spaces and also non-Euclidean spaces have a number of unintuitive properties such as almost all pairs of points are equally far away from one another or almost any two vectors are orthogonal.
Hierarchical Clustering
For Euclidean spaces hierarchical clustering begins with every point in its own cluster and large clusters will be constructed by combining two or smaller clusters. In this scenario we have to decide in advance how the clusters will be represented, how we will choose which two clusters to merge and when we will stop combining the clusters. The basic algorithm is illustrated in the figure bellow:
• Minimize the sum of the distances to the other points in the cluster • Minimize the maximum distance to another point in the cluster • Minimize the sum of the squares of the distances to the other points in the cluster
Point-assignment Clustering
We will only present two point-assignment clustering algorithms in the following section but there can be variations depending on various domain requirements. The K-means algorithm assumes a Euclidean space and also that the number of clusters, k, is known in advance. It is possible to deduce the value of k by trial and error or other methods. The basic algorithm is illustrated in the figure bellow:
Curse of Dimensionality
When dealing with large amounts of data the concept of the curse of dimensionality appears and needs to be considered during processing. This curse refers to various phenomena that arise when analyzing and organizing data in high-dimensional spaces. The common theme of these problems is that when the dimensionality increases, the volume http://en.wikipedia. org/wiki/Volume of the space increases so fast that the available data becomes sparse. This sparsity is problematic for any method that requires statistical significance. In order to obtain a statistically sound and reliable result, the amount of data needed to support the result often grows
For non-Euclidean spaces we need to use some distance measure that is computed from points such as a Jaccard, cosine or edit distance. A restriction in this scenario is that we cannot base distances on the “location” of points. Another restriction is that we cannot represent a cluster by its centroid and thus, we have to pick one of the points of the cluster as a representative equivalent and ideally it should be a point close to all other points of the cluster so in some sense it lies in the “center”. Such a point is called a clustroid and can be obtained by the following techniques:
A variation of this algorithm is the BFR (Bradley, Fayyad, and Reina) algorithm which enables us to execute k-means on data that is too large to fit in main memory. It assumes the shape of the cluster must be normally distributed about a centroid i.e. the axes of the cluster must align with the axes of the space, assumption illustrated in the following figure: The BFR algorithm begins by selecting k points. The points of the data file are read
www.todaysoftmag.ro | no. 15/September, 2013
23
programming Clustering for High-Dimensional Data Sets
in chunks and each chunk must consist of few enough points that they can be processed in main memory. The algorithm stores in main memory summaries of the k clusters and some other helper data but not the main data being processed. T h e C U R E ( C l u s t e r i n g Us i n g REpresentatives) algorithm is used for large-scale-clustering and does not assume anything about the shape of the clusters. Instead of representing clusters by their centroid, it uses a collection of representative points that are as far away from each other as possible and that define the borders of the cluster. The algorithm then proceeds to assign new points to clusters based on the closest representative point. An illustration of the clustering outcome is illustrated in the figure bellow and it is clearly a different form of representation from the clustering outputs of previous algorithms:
Conclusions
Cluster analysis or clustering is the
24
task of grouping a set of objects in such a way that objects in the same group called cluster are more similar in some sense or another to each other than to those in other clusters. It is commonly used in exploratory data mining http://en.wikipedia.org/wiki/Data_mining
and statistical data analysis used in many areas such as machine learning http://en.wikipedia.org/wiki/Machine_learning, pattern recognitionhttp://en.wikipedia.org/ wiki/Pattern_recognition, image analysishttp:// en.wikipedia.org/wiki/Image_analysis, information retrievalhttp://en.wikipedia.org/wiki/ Information_retrieval, and bioinformaticshttp:// en.wikipedia.org/wiki/Bioinformatics.
Cluster analysis is not defined by one specific algorithm http://en.wikipedia.org/wiki/Algorithm
but the general task to be solved and can be achieved by various algorithms that differ in definitions of what constitutes a cluster and how to find them optimally.
References “Mining of Massive Datasets”, Anand Rajaraman, Jure Leskovec, Jeffrey D. Ullman Stanford University S. Guha, R. Rastogi, and K. Shim, “CURE: An efficient clustering algorithm for large databases,” Proc. ACM SIGMOD Intl. Conf. on Management of Data
no. 15/September, 2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE
programming
Debugging in production
H
ow many times has it happened to you to have a problem in production or in the testing environment which you are unable to reproduce on the development machine? When this thing happens, things can go off the track, and we try out different ways of remote debugging. Without even knowing, helpful tools can be right near at hand, but we ignore them or simply don’t know how to use them. Radu Vunvulea
Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest
In this article I will present different ways different code areas. in which we can debug without having to use Visual Studio. What solutions do we have? Generally, there are two possibilities at hand. The first one is entirely based on Why not using Visual Studio? Though Visual Studio is an extremely logs. Through logs we are able to identify good product, which helps us when we need the application areas which do not function to discover bugs and to debug, it won’t be of appropriately. But using logs can be twogreat help to us in production. The moment edged. It is required that you know what when we have a bug in production, the rules exactly must appear in logs and how often. of the game change. In production, the appli- Otherwise, you may end up with thousands cation is compiled for release, and debugging of pages of useless and almost impossible to analyze logs. If we end up having too many is no longer possible. logs, we may be taken by surprise by the alteration of the behavior of the application. When do we need these tools? When it is possible, we can send the The moment we cannot reproduce the problem on our development machines. No PDBs on the production machine. This way matter what we do, we are not able to repro- we will have access to the entire stack trace duce the problem we are dealing with. Since generated by an exception. Logs can be of great help for us to solve we cannot reproduce the problem, it’s like different problems that emerge in produclooking for a needle in haystack. If by chance the problem appears, but tion. But even if logs are very useful, they we do not have a reproduction scenario, we won’t help us every time. There are different find ourselves back in the situation above problems which can appear and which are extremely difficult to identify by using logs. mentioned. Another case is when the memory occu- For example, a dead-lock would be almost pied by our application increases in time, impossible to identify by means of logs. Another alternative that is available for the phenomenon emerging only on the production machines. We can only guess what us is creating memory dumps and analyzing the problem is, but we do not know the them. exact cause. That is why we may “fix” totally www.todaysoftmag.ro | no. 15/September, 2013
25
programming Debugging in production What is a memory dump?
A memory dump is a snapshot of the process on a certain moment. Besides the information regarding the allocation of memory, a snapshot also contains information on the state of different threads, objects and cod. By using this information we can obtain very valuable information regarding the process that is running. This snapshot represents the image of the memory in 32 or 64 bits format, depending on the system. Generally, there are two types of memory dump. The first one is minidump. This is the most uncomplicated memor y dump that can be done, which consists of mere information on the stack – the state of the process or on the calls that are made and so on. The second type of memory dump i s f u l l du mp. It contains all of the information that can be obtained, including a snapshot on memory. It takes much longer to obtain a full dump compared to a minidump and the dump file itself is much bigger.
valuable information. The only problem of this tool is that it is not very friendly. We will see a little later what the alternatives to Windbg are. We must remember that in almost all the cases, the alternatives to Windbg are using this debugger behind – it’s just that they display a friendlier and more useful interface. An alternative to Windbg is any Visual Studio that is more recent than Visual Studio 2010. Beginning with Visual Studio 2010, they offer us the possibility to analyze the dumps for .NET 4.0+. What we can do in Visual Studio is not as advanced as what Windbg allows us to do, but generally it can suffice.
Windbg
The first step we need to take after opening Windbg is to upload a dump (CTRL+D). Once uploaded, a dump can be visualized in different manners. For example, we can analyze the How can we generate a memory dump? There are different applications which allow us to do this. threads, the memory, the allocated resources and so on. Some of them allow us to automatically generate a dump, accorIn order to be able to do more, for instance to visualize and ding to different parameters. In the case we need to generate a memory dump, the easiest analyze the managed code, we need to upload additional libraries solution is the Task Manager. All we have to do is to click right on such as Son of Strike (SOS) or Son of Strike Extension (SOSEX). a process and select “Create dump file”. We can do the same thing These two libraries open new doors for us, as they are able to also by using Visual Studio or “adplus.exe”. The last alternative is a analyze the data from the dump in an extremely useful way. debug tool for Windows which can be found on almost all machines on which Windows runs. Son of Strike (SOS) In the following example, we place an order in adplus to create SOS allows us to visualize the process in itself. It allows us a memory dump at this moment: to access the objects, threads and information from the garbage collector. We can even visualize names of variables and their value. adplus –hang –o C:\myDump –pn MyApp.exe One must know that all the information that can be accessed is part of the managed memory. Therefore, SOS is highly connected By means of pn option we specify the name of the process for which we wish to create a dump. If we want to create a dump to CLR and its version. When we upload the SOS module, we must make sure we are uploading the one that is correspondent to the automatically we can use the –crash option. .NET version of our application. adplus –crash –o C:\myDump –pn MyApp.exe adplus –crash –o C:\myDump –sc MyApp.exe
If it is necessary for us to automatically create a dump, besides “adplus.exe” we can use DebugDiag and “clrdmp.dll”. The three options we have in order to automatically create a dump are rather similar. DebugDump allows us to set up the system so that it automatically generates a memory dump the moment when the CPU level is higher than X% within a certain time span. Besides these tools there are many others on the market. Depending on your requirements, you can use any tool of this type.
How do we analyze a dump?
The native debugger for a dump is represented by Windbg. This is a powerful tool, by means of which one can get very
26
no. 15/September, 2013 | www.todaysoftmag.com
. loadby sos mscorks . loadby sos clr
It the examples above, we have uploaded the SOS module for .NET 3.5-, and in the second example, we have uploaded SOS for .NET 4.0+. All the SOS orders start with “!”. The basic order is “!help”. If we wish to visualize the threads list, we can employ the “!threads” order which has an output that is similar to the following: 0:000> !threads ThreadCount: 5 UnstartedThread: 0 BackgroundThread: 2 PendingThread: 0 DeadThread: 0 Hosted Runtime: no Lock ID OSID ThreadOBJ Count Apt Exception …
TODAY SOFTWARE MAGAZINE Debug a crash
So far we have seen there are many tools available for us to create and analyze a dump. Time has come now to see what we have to do in order to be able to analyze a crash. 1. Launch the process 2. Before it “crashes”, we order adplus to create a dump the moment when the process “crashes” adplus –crash –pn (numeProcesor) 3. Launch Windbg (after the crash) 3.1 Upload the dump 3.2 Upload SOS 3.3 !threads (to see which thread has crashed) 3.4 !PrintException (on the thread that has crashed in order to see the exception) 3.5 !clrstack (to see the stack of calls) 3.6 !clrstack –a (to see the stack together with the parameters) 3.7 !DumpHeap –type Exception (it lists all the exceptions that are not related to GC).
In this case, the first step is to create a dump using the order: adplus –hang –o –c:\myDump –pn [NumeProces]
Then, it is necessary for us to analyze the stack trace for each thread and see whether it is blocked (Monitor.Enter, ReadWriteLock.Enter…). Once we have identified these threads, we can find the resources used by each thread, together with the thread that keeps these resources blocked. For these final steps, the order “!syncblk” comes to our help. It lists for us the units of memory for a certain thread.
Abstract
In this article we have discovered how we can create a dump and which the basic tools to analyze it are. By means of dump files we can access the information we could not normally access. Some data can only be accessed through these dumps and not by other means (Visual Studio debug). We could state that these tools are very powerful, but they are rather difficult to use, as they require quite a high degree of One must know that the results are according to the way knowledge. in which the application is compiled. For instance, if there has been a code optimization performed during the compilation. Moreover, the exception list we can get may be quite long due to some orders such as !DumpHeap, which returns all the exceptions encountered – even the ones which have been pre-created, such as ThreadAbord.
How do we identify a deadlock?
A deadlock emerges when two or more threads are waiting for the same resource. In these cases, a part of the application, if not the entire application, gets blocked.
www.todaysoftmag.ro | no. 15/September, 2013
27
testing
Model Based Testing without assumptions
M
odel Based Testing nicely deals with modern development methodologies. But also in traditional development projects, this way of testing has many advantages over other testing methods. However, this is highly dependent on the way we organize our MBT testing process and what role is played by the tester. Should the tester blindly assume an already established model or should the tester be responsible for the preparation of the test model?
Tudor Cobâlaș
tudor@xlteam.ro Business Developer @ XL Team
28
no. 15/September | www.todaysoftmag.com
Increasingly, we see that Model-Based Testing (MBT) is used for software testing. This is a logical step to keep our value as a functional tester high. As a tester, we simply can no longer carry out testing as they previously did, which was accustomed to the traditional development processes. No, especially if we look at the contemporary agile development processes, as a tester we must anticipate the new ways of working. Project properties such as interactive, iterative, incremental and multidisciplinary must therefore be consistent with the current test approach. MBT deals nicely with that, provided that this new way of testing is applied correctly. The benefits of applying MBT are now known. Thus we can, through the proper use of MBT, address any ‘open ends’, ambiguities, inconsistencies and errors in the requirements, at a very early stage. This
will shorten the duration of the project and improve the quality of the software. Another great advantage of MBT is the flexibility and adaptability of the test set. If changes occur in the requirements, we merely need to adjust the model and then we can generate a new test set automatically. This automatic generation of the test set is another great advantage of MBT. The condition is that we have the proper tool. With regards to the above, I would emphasize that MBT is the modern way of testing and has many advantages over other testing methods, but this is highly dependent on the way we organize our MBT testing process and what tool we are using. If we look at the traditional development processes, we see that the tester has an
TODAY SOFTWARE MAGAZINE
independent view on the test basis. Think of the V-model, it shows that the basis for technical testing and development is the technical design and that the tester will use the functional design to set up the test set for the functional test. Precisely this will effectuate an independent view of the tester and any interpretation errors in the requirements will be observed. The tester can make no assumptions and all the required information to establish the tester himself collects a thorough test set. But how does this work in MBT? Is a tester also able to maintain an independent view and does the tester have a clear field to complete the test basis, without making assumptions? The answer is yes, as long as the tester is able to draw the test models himself. We too often see that within MBT the models that are used to generate the test set are too technical, static or poorly readable and these models have not been
produced by the tester itself. Who can say the author of these models has made no mistakes in the interpretation? Who takes care of updating the models after an update in the requirements? Do all project members, such as the tester, product owner, etc., understand these models? Are all test situations captured in these models? And perhaps more importantly, are these models so arranged that for the generation of the test set, a test algorithm can be used, based on the desired test coverage? The solution to the above-described problems is simple. In MBT, the functional tester must draw the test models. The tester should then evaluate these models with the team members and business and where necessary adapt the model. Just as the functional tester composes the test set within traditional development processes. With this, the functional tester preserves an important independent perspective, these models are world-readable, these models are easy to adjust by the tester itself and these are really test models. From out of these models, now the test set can be generated automatically based on a test algorithm, taking into account the desired test coverage. The tool, which will be used, must be adapted to this. The tester itself
must be able to draw the test models in the tool and the tool must automatically generate the test set based on different test algorithms (test coverage). The conclusion is that for functional testing, MBT perfectly fits to modern development processes, but that the value of the functional tester is even greater, with a correct insertion of this method. We have developed a tool called DTM Tool, which is based on this methodology and helps functional testers to auto generate the test scenarios -www.dtmtool.com
www.todaysoftmag.ro | no. 15/September, 2013
29
business
programare
TheOpen.com – digitally sustaining a successful championship
T
he Cluj R&A Endava team operationally hosted The Open Championship, golf ’s biggest European Open, for the 3rd time in a row and contributed to another successful chapter of Open’s history.
Bogdan Moscaliuc
bogdan.moscaliuc@endava.com Project Manager @ Endava
30
no. 15/September | www.todaysoftmag.com
The Open Championship® is organized by the R&A® starting with the 19th century and the sport barriers were long time exceeded – currently The Open® represents one of Scotland’s most popular icons and draws hundreds of thousands of tourists each year. Endava Cluj proudly supports the Championship each year by developing new sections and features for 6 -7 months and exposing them during the 4 days of The Open®. One week before and during the tournament a WAR room is setup and an event team comprising developers, testers, webmasters, DB and hosting support ramps-up. During the year the website popularity trends into normal limits with peaks during some events. During the Championship it’s a completely different experience – the system needs to scale from supporting
200-300 users a second during practice rounds, up to 80,000 concurrent users during the last day of the Championship as shown by analytics. A tournament product is much different from any other and the difference is mostly due to the evolution and scaling. The website evolves along with the Championship, having several states: pre-tournament phase, practice rounds, Championship day 1 to day 4, post – tournament phase. Ensuring a great experience for almost 7million unique users gives Endava credit and visibility in the digital media area. Beside TheOpen.com the users are exposed to a wide range of digital items, all for amplifying the event availability: • 50% of the users access the site from a mobile platform • iOS® and Android® Apps were placed
TODAY SOFTWARE MAGAZINE 1st in the Top Free UK AppStore and 3rd in Top Free US AppStore • On-site mobile site for the venue to receive regular bulletins and updates but also Weather information • Live coverage and Streaming from large media broadcasters. Live Streaming via @TheOpenLive and Audio Streaming via @TheOpenRadio and Radio 5® TheOpen.com number one attraction in 2013 was The Leaderboard, an aggregate of statistical information containing Live scoring, score cards, hole statistics but also a Live Course representation for tracking players on a mini- course map. Each player has a GPS tracker which throws data to our servers and then we can accurately show their live position. The user can then • Peaked at 78k concurrent users per follow the favourite players. second on the final day Projects of this size include challen• 8.3m page impressions on the busiest ges and the most notable one is to assure day – 2nd day of Championship a completely scalable architecture that • Trending #TheOpen in #1 slot in the can accommodate such a large number of UK and US on Twitter users. Different levels of caching are used at • The Open event consumed more CMS level or DB level. Thorough Load and platforms than previous years: desktop, Performance tests are done using Amazon mobile, iPhone®, iPad®, Android®, Web Services™ prior to the event and optiBlackberry® and an on-site mobile site, mizations are performed by the Endava live video streaming, live audio streaproject team and configuration engineers. ming, Video on Demand Another challenge is the requirement • 4m video on demand clips initiated to geo-target the content based on different regions. Besides regular content other The Open® 2014 roadmap already resources like banners and Live Streaming contains exciting new features on which channels are also geo-targeted – all for offe- Endava will demonstrate once again that ring an ultimate user experience. digital media innovation has no limits. The Endava team efforts include 8 hour rotations for assuring a 24/7 support for two weeks prior and during the Championship, support on content, database and 3rd party service integration. Here are few official numbers of The Open® 2013 as shown by analytics: • Almost 7 mil. unique users during the Championship week
www.todaysoftmag.ro | no. 15/September, 2013
31
events
Business Networking from offline to online on Business Days platform
B
usiness Days is already a well-known event on the national market and this month we have the opportunity to take part in its edition in Cluj. Laszlo Pacso, Business Days’ organizer had the kindness to answer to Today Software Magazine’s questions. Ovidiu Măţan, PMP
ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine
32
no. 15/September | www.todaysoftmag.com
Tell us a few words about yourself. Very briefly about me: I’ve been an entrepreneur for more than 13 years, very passionate on project management, a business networking specialist, event organizer, video and educational shows producer, coordinator of some online and social media projects and more recently, a social entrepreneur. In my everyday life, I like nature a lot, the mountains, movies, books, classical music and photography. For 3 years and a half, we have been coordinating the Business Days program, which wishes to stimulate the Romanian business environment and to create the foundation of a healthy entrepreneurial culture in our country. It is a difficult mission, with a lot of challenges, but we are doing it out of passion and with a lot of faith in this country’s future. These things and especially the tenacity to face the numerous challenges are the things that essentially differentiate us from others who also activate in this domain. No matter how hard it has been for us, we kept on going. When you want to help and to generate a social impact in the environment in which you are active, you sometimes need to give up your comfort and set as a priority the interests of those whom you attend to through your project. From my point of view, this is what differentiates a social entrepreneur from an
entrepreneur. A lot of people do not understand this yet. What does Business Days mean and what novelty does it bring in comparison to the other business events? Business Days is more than just a series of events. It is firstly an opportunity platform whose role is to generate numerous business possibilities for those who are using it, no matter whether we refer to the Business Days events, to the business networking sessions, to the mobile and online applications, to the socializing platforms, or to the educational video platforms. If we refer strictly to the Business Days events area, the novelty we bring on the business events market is primarily the itinerant character and the fact that Business Days covers most of the country through the impact it generates. Another ace up our sleeve is the fact that our events are rigorously prepared. Before drawing up the program of an event, there are numerous meetings with business people from the respective area (managers, entrepreneurs, specialists from different domains) with whom we discuss and analyze the problems and challenges they are facing. These inquiring discussions help us identify new opportunities and especially map
TODAY SOFTWARE MAGAZINE the actual needs and problems to which we try to come up with solutions, answers and ideas through the 16 workshops of the event. Another fact that differentiates us from any other business events organizer in Romania is the event’s structure, as it unfolds on three levels: • conferences – which are meant to fill those present with positive energy, to inspire, motivate and give them ideas, conferences through which we offer an analysis of trends, we point out opportunities in the technological development and progress. • workshops – whose role is to develop people’s skills, especially through experience exchange and interactivity, which focus on the practical, pragmatic component, on case study, good practice examples and many question – answer sessions in which we encourage the people attending to state their problems so that they find advice, ideas, solutions and even resources in order to solve them. • formal business networking sessions – whose role is to generate real business opportunities. Thus, after the participants have been filled with positive energy and have been exposed to a fusillade of ideas and inspiration and they are eager to generate businesses and to put them into practice, we create the opportunity for them, be it in the form of micro-meetings, or in the form of some open sessions, or in the form of some meetings generated by the matchmaking application, so that they can move on to taking action and benefit from the existing resources, contracts and opportunities at such an event. Besides these, I would like to add the existence of an online and mobile application through which the people who attend have access to the entire data base of participants, speakers and partners and they can set meetings or they can generate exchanges of virtual calling cards. One other trump
of ours is also the live transmission of the event and the involvement of some local or national televisions in a marathon of related shows or live transmissions from the place of the event, by which we make sure that the valuable information conveyed by the speakers reach those who could not be present at the event, but who are interested in the issues discussed in conferences and over panels.
Laszlo Pacso - Business Days organizer
BD is one of the few events which promote the local initiatives and businesses. Congratulations! How do you see their evolution in time? Are the same activity domains maintained in the evolution of the Romanian market? Yes, that’s true. It is the essence of Business Days events to promote the Romanian businesses and the valued entrepreneurs or managers of the local business environment. It is not easy, because, unfortunately, the consumers of such events still prefer to pay for the models brought from abroad and less for those entrepreneurs who have tried and managed to obtain success in our country. Maybe not all of them are yet extraordinary speakers, but the information they share and especially their wish to help is more sincere
and more useful than that of any stranger who comes here for a day or half a day to teach the methods and ways to obtain success, based on recipes which work in other countries, without really knowing the needs, the challenges and the specific needs of the Romanian business environment. Moreover, since we are absolutely convinced that the improvement of the public speaking skills of those who speak in Business Days events will generate a higher success in getting the ideas and inspiration through to the people present in the conference rooms, we have created a speaker support group, a team of professionals in the art of public speaking, who work with those speakers who wish to improve their skills on three levels: • before the event – in preparing the presentation and developing the abilities to create an impact in front of the people in the room • during the event – they evaluate each presentation, together with the TOAST MASTER Romania team, according to several criteria, with the purpose of helping each speaker understand its drawbacks and find ways to increase the quality of his public presentations. • post event – with coaching and training sessions for skills development, based on the things revealed in the evaluations. It is a win-win situation, as from one edition to another the quality of presentations improves and we are developing, here in Romania too, a class of elite public speakers, who can attend business events from abroad, where they can promote, as ambassadors, the investment and partnership opportunities in our country. In respect to the domains, I can say that each region has its own particularity; there are regions that are highly entrepreneurial, there are regions that are strongly corporatist and there are regions where the development of economy has entered
www.todaysoftmag.ro | no. 15/September, 2013
33
events Business Networking from offline to online on Business Days platform regression. All in all, we are optimistic, since everywhere we have been we have encountered companies and enterprises which grow every year during a period of crises, proving that it is possible and that when you truly want something and you are willing to invest a lot of work and patience, success is not late in coming. It is from such people that those who attend the Business Days events can get inspiration and find out solutions. Business Days is not about how you can become a millionaire overnight, it is about how you can get a chance to succeed through honest and sustained work and through cooperation, because, yes, we do believe in the associative spirit and we believe that for long term success it is necessary for us to find partners, associates, investors and sponsors who understand and have trust in our business, and for this we have to learn to be transparent in communication and in relations. What should a BD participant get after taking part in the two days of the event? At least three things: inspiration, experience and business contacts. This is also our motto: “Inspiration, experience and opportunities for those who wish to generate value in Romania”. If the first two are hardly quantifiable as value and only time and practicing the learnt things can generate to a certain extent their assessment, the last one is clear and obvious. I will give you an example: a CEO of a company, who takes part in a micro-meetings session during the first day, in an open session during the second day and uses the matchmaking application before, during and after the event, can generate approximately 25 + 99 + 100 = 224 leads to an event, with people about whom he knows at least 4 pieces of information: who he is, in what domain, what position he holds, where he can help and in what areas, where he needs help or where to look for references. Furthermore, over 70% of those who have filled in the questionnaires and have taken part in the Business Days events estimate that following these meetings they expect revenues of more than 10.000 lei, but half of them estimate to over 100.000 lei the value of these future businesses. I believe these figures speak for themselves. With an investment of maximum 100 euro, you have 70% chances to generate over 2.500 euro in business and 100% chances to increase your data base with over 200 contacts with whom you have interacted and
34
you have either had a short conversation, or you have corresponded through the application, or you have met in workshops and panels. I saw that BD will come back to Cluj in September. What novelty do you bring in this edition? Compared to last year, we have a more interesting and much better adapted program. It is the second time we come here and we are much better acquainted with the business environment and its needs. We also have the matchmaking application, which is offered for free to everyone who attends. We will have a national premiere, a common endeavour of the academic environment, the local administration, the civil society and the business environment, to create a debate concerning the city’s long term strategy, with focus on attracting foreign investors, including by involving the immigrant community in this event. Besides these, we will have different additional manifestations and we will extend the impact area through the support which will be provided for some startups, by giving them the possibility to test their business idea in front of those present to the event and by facilitating their meeting with a few business angels and investors. Since we are an IT publication, can you tell us a few words on the mobile applications developed by BD? To be more specific, we have two applications, one is included in the other, but in terms of functionality, there are two. The first one is an application for smart-phones, whose role is to facilitate the access from these mobile terminals to the program of the event, the speakers, the video channel, the live streaming, the facebook page, the blog and the different interactive components of communication through the platform. The second one is that of “meet-me” matchmaking, which is offered free of charge to any participant to such an event. The application allows searching, filtering and sorting the data base of the participants, according to four criteria: activity domain, position, company and name, facilitating thus the process of identification of potential partners. Two actions can be started with each of those identified as interesting: one can either request a virtual exchange of calling cards, or a meeting somewhere in an area especially set up for
no. 15/September, 2013 | www.todaysoftmag.com
such meetings within the event. Both actions are done through a permission e-mail, so that the person receiving the request can accept it or turn it down, and in the case of a meeting he can reschedule it according to his agenda. The access to this application is based on a username and password that can be found on the invitation received once the registration process is completed. How do you see the evolution of the Romanian IT market from the perspective of the companies which take part in the event? The IT market is well represented to our events and it is one of the most dynamic in our country, especially that of software. That’s the reason why in the event of 25th -26th September from Cluj, we will organize a meeting one evening between the members of the IT community in the area. BD is a big event for the Romanian market. Can you tell us what does organizing such an event imply? It is a very hard work, there are multiple causes, but the most significant is the still nascent mentality of customers to pay for the participation in such events. Also, there is an inflation of events on the market, which sometimes fail to offer the expected experience to the participants and sponsors. Therefore, in order to gain the partners’ trust, a lot of work and passion are required, as well as a constant concern with quality. Moreover, for us to differentiate ourselves on the events market, we chose to communicate entirely transparently. Each time, we publish the video recordings, the photos and especially the info-graphics containing the data gathered from the feedback questionnaires from the former events, warts and all. Due to this open attitude and especially to the fact that we do not abandon this path no matter how hard it gets, we have managed to gather around us partners, supporters, ambassadors, friends, fans and speakers who support us almost unconditionally. It is a beautiful feeling which gives us the impulse we need so much when we have a hard time. Business Days is in itself an inspirational story, as it is a project started up by a handful of people, in the middle of a financial crises, with no budget, nor experience in organizing events, but with a lot of passion, willingness to work and patience.
management
TODAY SOFTWARE MAGAZINE
Lean Six Sigma and Innovation Management
T
he idea of innovation is approached by numerous companies which focus on the optimization of their internal processes and finally on increasing the business value, adding the benefit of seeing their clients extremely satisfied with the products they offer. Lean Six Sigma, a relatively well-known approach for obtaining some excellent and efficient results, can help the executives of multinationals to discover new innovation opportunities beyond carrying out simple operations, to reach a high degree of productivity, a solid financial performance, as well as an inherent disposition towards innovation. Monica Petraru
monica.petraru@urss.ro Senior Business Analyst @ UNIQA Raiffeisen Software Service
On today’s global market, we all know there is an extremely competitive environment, as all the companies are permanently searching for improvements. Thus, in order to reach their goals, they will turn to expert consultants for help, whose aim is to implement these methodologies. Many of these organizations are willing to implement the performance optimization method offered by Six Sigma. While this is an excellent starting point, the first question that arises is: “What precisely is Lean Six Sigma and how is it different from Six Sigma or Lean?” You, dear colleagues from the IT world and not only should ask yourself the following question: “If my company is not in production, could Lean Six Sigma be applied even to my organization?” In this article, we will try to answer these questions in detail, offering an overview of the fundamental frame of this methodology. Before starting to use a methodology of improving the processes within the companies in which we carry out our daily activity, it’s good to know what exactly we are dealing with. Thus, it is essential for us
to understand the fact that Lean, Six Sigma and Lean Six Sigma are three totally different technologies. Obviously, they all have as an epicenter of their existence the objective of defining value for the client, and by value, everyone has to understand the client’s financial potential he can count on and, at the same time, the amount he wishes to invest. Therefore, all of the three methodologies mentioned above involve processes optimization by reducing loss and simplifying the activities that eventually lead to the delivery of a valuable product. Nowadays, everybody has heard of the Lean Six Sigma methodology and evidently they wonder what it is all about, where it has started from and how it needs to be applied in order to get the desired results in the end. The answers sought and wanted are not complicated at all. It is good to notice the fact that at a first sight we realize from the play on words “Lean Six Sigma” that this methodology is a combination of the good things taken from Lean with the advantages of Six Sigma, thus it can be defined as an integrated management approach. It focuses
www.todaysoftmag.ro | no. 15/September, 2013
35
management Lean Six Sigma and Innovation Management on obtaining a constant improvement of the processes. In order to do this, it absorbs both elements of the Lean methodology with the purpose of reducing the time of their progress, by eliminating the loss factors, as well as elements of the Six Sigma methodology, represented by a decrease of the variability degree of the process. This method can be used in any company or enterprise which registers losses on the cycle of processes with input and output parameters that are fluctuant in time. Lean Six Sigma is a natural evolution of the subjects of improving quality and processes, which have their origin in the 1950s, in view of making the production mechanism more efficient. It all started with defining the focus on quality improvement, in order to reduce the cost of the flawy material production. This evolved in the implementation of similar principles in order to improve the efficiency of the process at factory level, by eliminating the waste of effort only to manufacture the necessary quantity, not to over-agglomerate the storehouses. In time, other parts of the organization have felt the need to approach this process optimization perspective, a relevant example in this respect being also the commercial departments within an enterprise.
The difference between Lean, Six Sigma and Lean Six Sigma
Lean and Six Sigma are both study subjects for the continuous improvement of processes within a company, but they differ in stating their prime goals and their approaching manners. Lean is a subject whose goal is that of eliminating waste and increasing the process efficiency by focusing on speed and cost optimization. Lean is defined as a subject whose goal is to ensure the stability of the processes by reducing loss and simplifying the activities which offer value to the client. Elements such as reducing loss, value flow or process flexibility represent archetypal components of a Lean type structure or company, no matter the activity domain or area in which they carry out their activities: production, public services, health, financing etc. If Lean ensures process stability and their development in a continuous flow, the Six Sigma management methodology focuses on quality improvement, through the reduction of variability, by means of different statistical and qualitative tools. While in Lean one uses Kaizen type events, mapping the value stream, work load balancing and waste analysis, the
36
Six Sigma methodology will employ the it is necessary to go through the following DMAIC model (Define, Measure, Analyze, steps: Improve, Control) in view of reducing 1. Define the variability of processes, by a deeper orientation towards the client. Thus, the understanding perspective of the critical points of each offered product or service will improve also by making some decisions based on the available values and the circumstances. In the table below, one can observe the features of the two above mentioned methodologies: Lean
Six Sigma
Eliminating loss
Eliminating variation
Increasing the process optimization level
Eliminating flaws
Maximum focusing
Speed and cost
Quality
Necessary tools
Kaizen type events
Pareto analysis, control charts
Value stream mapping
Statistical analysis, carrying out experiments
Goal
Work load balancing 7 wastes
Sursa: www.sixsigmadaily.com
2. 3. 4. 5.
Measure Analyze Improve Control
1. Define
• The aim of this step is that of setting the goal and purpose of the project. • Collecting the necessary information related to the process and the client. • For the time being, the final goals of the project will be estimated in accordance with all the knowledge regarding the strategic goals of the company, the clients’ claims, as well as the process which is to be improved. • One wishes to reach a higher level of sigma type.
Based on the definitions enunciated above, the Lean Six Sigma is defined as a hybrid: it absorbs both Lean type elements as well as Six Sigma elements. What is required is a pragmatic approach of process improvement within a company, with focus 2. Measure on what is necessary and important for the • Process understanding. client. Characteristics such as time-focused • Maximum focusing on the effort of strategy of Lean with statistical analysis improving the current situation. tools from the Six Sigma methodology • Establishing an optimal level of allow a flexible solution within the context capability in order to obtain a high degree of approaching a complex set of problems. of process performance. The central axis of the Lean Six Sigma methodology is represented by the DMAIC 3. Analyze framework (Define, Measure, Analyze, • Once the initial data have been estaImprove, Control). As one can notice, it has blished, one can more easily identify the been adopted also by this hybrid, especially origin of causes. for those projects which aim at improving • Consequently, during this phase, one the existing business processes. can locate and identify the causes, as well as their confirmation, by using a set of concrete data. The DMAIC framework DMAIC illustrates an extremely rigo4. Improve rous project methodology whose essential • Defining and validating the system goal is to increase the capability degree and of monitoring and control of the new at the same time to reduce the flaws idenprocess. tified in the process – the optimization of • Identifying the possible manners of services, products and processes within a optimization. company / enterprise. In order to do this,
no. 15/September, 2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE statistic level (or the degree of satisfying the customers’ claims). At the same time, this methodology provides organizations with all the tools necessary in view of optimizing the capability of its processes, increasing the performance of the business environment and reducing the variation of the results → higher quality of the products and services.
Sursa: deakinprime.com
• Elaborating some pilot studies. • Adjusting/ Re-evaluating the potential solution. 5. Control • Controlling the performance of the new process. • Defining some internal standards and work procedures. • Implementing a statistic control process. • Drawing up a plan for the statistic control process. • Estimating the capability of the new process. • Elaborating and transferring the solution to the project’s beneficiary. • Reducing the costs and increasing the profit. • Completing the project and the documentation.
The implementation of the Lean Six Sigma methodology within enterprises or big companies
If so far we have tackled things from a theoretical point of view, surely the aspects we have focused on must also be translated into practice, within our daily activities. Therefore, I dare you imagine yourselves in the position of a multinational company manager, a company whose processes are complex and complicated. The question is what we can do in the future in order to optimize these processes… Nowadays, companies use the basic principles of the Lean Six Sigma methodology in view of reaching the following targets: • Real focusing on the client’s claims – increasing the customer’s satisfaction; • Increasing the profit; • Enhancing the quality of the products; • Increasing the satisfaction of the
employees; • Reducing the operation costs and regaining most of the invested capital; • A mechanism of generation of the management of change; • Reducing flaws; • Cultivating the extraordinary feeling of excelling.
Possible traps that can emerge during the implementation of this methodology
Lean Six Sigma offers a methodology and a set of tools that lead to continuous improvement, through an analysis based on facts and permanent feedback from the client. This simplicity is often lost in the eagerness to obtain measurable results as quickly as possible, and the companies fail to see the imminent success. Here we can identify some of the most common traps: • Focusing on the study in view of obtaining the certification; • Avoiding the balance of resource allocation; • Maximum focusing on collecting as much information as possible; • Implementing a rigid program based on standard models; • Deviation from the observance of the steps characteristic to the DMAIC methodology; • Assuming the fact that certified people possess the professional skills specific to project management; • The tendency to obtain the best results right from the very first moment of approaching this methodology.
Conclusion
Any person who wishes to become initiated in this methodology or to involve effectively in its implementation can notice the fact that Lean Six Sigma measures the performance of a product or process on a www.todaysoftmag.ro | no. 15/September, 2013
37
programming
Java SOA Cookbook by Eben Hewitt
T
his edition of the Today Software Magazine appears at a time when the vacation is ending and people come back to work, have energy and appetite to learn and improve. That is why I will not disappoint the readers of this magazine and of my book reviews and I will choose a captivating subject. Book Java SOA Cookbook by Eben Hewitt addresses mainly to developers and architects with a large degree of experience. Those with less experience can find references about the level at which the architectures with witch they are working should reach. The experimented ones will find solutions to their problems. The book has a major advantage: it does not only issues, but also provides solutions. Service-oriented architectures (SOA) are probably the most spread enterprise architecture and hence in world of web. It must be said from the very beginning that SOA does not mean a style or a methodology for developing web applications, but it is architecture and a strategy of organization. Developers can thus understand the context in which their work is carried out, and architects can improve their work based on good practices based on the authors’ team and its years of experience and on all the studies dedicated to Java development evolution. Personally, I think that any developer or architect of an enterprise application, which has reached a certain level of experience, should also consider the solutions offered by this book. Although the technical support of the applications is JDK 6, the enterprise version of the platform is 5, and the Glassfish server has only the 2nd version, I see no problem to that. The new versions help us eliminate some of the operations that are part of what we call „dirty job”, but knowing as many details as possible is benefic. Before entering the actual review of the book I want to mention that for service processes the author uses BPEL (Business Process Execution Language) despite all the existing disputes over time between BEA Systems and BPEL . The alternative to BPEL is provided by BPM suite. The book is structured into 4 main parts: • The fundamental part, in which are presented SOA concepts and details on
38
XML. Until the advent of annotations, XML has played a decisive role, both for data descriptions and for validations or conversions. The web services part , which includes a detailed overview on web services and Java APIs that support them . The first chapter of this parts focuses on WSDL descriptor, customer service and monitoring tools and debugging of services during development. Simple examples that complement the theoretical part can be read here. The next chapter focuses on SAAJ API (SOAP with Attachments API for Java) . The gradual transition to the current APIs is welcomed. On the one hand because it is a low-level API that communicates directly with XML , and on the other hand because following APIs are more abstract, so difficult to understand without SAAJ. In the next chapter is presented JAX -WS (Java API for XML Web Services) . This API is based on JAX -RPC API, but is much altered from it. Customers web services are introduced in the next chapter, and are actually a detailed continuation of the discussion about customer service introduced in the previous chapters. Finally, the last chapter of this part is probably the most current. It focuses on REST services (Representational State Transfer). REST services are obviously much easier to use and therefore more popular. Almost complete lack of XML ‚s is an asset worthy of attention. Currently many customers, including those on mobile devices, use REST as a way to communicate with backend. New specifications for REST appear at every new version of Java Enterprise. • The 3rd part is about Business Processes. Although a little surprising for me, the author uses BPEL for Orchestration Service. The surprise comes from the fact that Oracle supports BPM suite and that is why most Java architects use this standard
no. 15/September, 2013 | www.todaysoftmag.com
to create business process. Clearly, both are widespread. The orchestration process of services is gradually introduced (invoking multiple web services or XSL transformation - for transformation XML documents into other formats). Parallel activities, delays or correlations are advanced elements integrated in this part. In the last chapter of this part are introduced tracking tools for web services. Perhaps the most popular element introduced here is the UDDI service (Universal Description, Discovery and Integration). • The last part is about interoperability and services quality. The main topic of interoperability refers to interoperating web services clients with services and clients on different platforms. In this part are made referrals to the WS-Addressing specification and implementing clients in Ruby or .NET. Regarding service quality, the author talks about standards that increase the confidence in web services. The book has a high degree of difficulty. It is not actually the book that one reads in the evening, before bedtime. The plentiful examples and the pertinent comments, along with the style of the book: presenting problems, offering solutions and giving comments with many examples, create an order in thinking, capable of brining performance. Take your time and energy to go through the entire material! If you understand all the issues raised, surely you will have acquired a knowledge base that will enhance your value indisputable. Enjoy the book!
Silviu Dumitrescu silviu.dumitrescu@msg-systems.com Consultant Java @ msg systems Romania
HR
TODAY SOFTWARE MAGAZINE
Empathy, the new required professional competency
E
mpathy is defined as the ability to stand in someone else’s shoes. This is the definition we tend to use. The specialists define empathy somewhat the same, presenting however different facets of it.
Antonia Onaca
anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub formă de antreprenor, intraprenor şi antreprenor din nou
Why do I write about empathy? Firstly, because it’s more and more encountered. It’s not new but now it gets a lot of coverage especially in business writings. At this point empathy is considered that one quality that makes the difference in the work environment. I agree with this and most probably a lot of people do but not because it’s the new thing, but purely based on an utilitarian perspective. Empathy, when present, helps us interact with those around us in more relevant ways (peers, team members, clients, customers). I will try to provide you with a very pragmatic applicability of empathy so that we’re not left with the idea that it’s just a cute and cool philosophy or buzz word. I will analyze how it might be applied in product or service development. Empathy, the ability to stand in someone else’s shoes allows us to build products or services that are tailored to customer’s needs. This is already at cliché level as “adapted to needs” has been heard over and over again. Empathy leads us to a nuanced but also very in depth perspective into the needs of our beneficiaries. How does this happen? Let’s get into the concept and see how it works and how we can develop this feature. I won’t get into details but if the topic interests you I recommend that you start with “The empathic civilization – on YouTube” and the database available from “The Centre for Building a Culture of Empathy”. So let’s get back to the concept. Those that specify empathy as their field of expertise mention that it is a process not a state. If
you go deep into research you will find that it has a nature but also nurture component. This means that we come with a higher or lower predisposition towards empathy but that this can be extended or retracted by the environment. You will also learn that it can be visible from early age and that the problems with empathy are visible in autism or sociopathy. Empathy has as components (this classification is found in most approaches but with different name tags):
This definition seems very logic but it does not state what we can do. Let’s see in this context what capacity means. Self-empathy refers to the level of introspection needed so we can identify clearly what, how and why we feel different emotions. Mirror-empathy is closely connected with neuropsychological components but it talks about how “infected” we can be by other’s internal states. Cognitive empathy assumes that we have
www.todaysoftmag.ro | no. 15/September, 2013
39
HR Empathy, the new required professional competency enough knowledge about the human operating system so that we can cognitively analyze what the others are feeling. Empathic action assumes that after we understood the mechanism in the other people we can identify that action that can produce the desired changes in others. We can conclude that empathy, be it towards us, towards others or towards groups of individuals, requires an understanding of “the internal state”. The state is about how we feel, which means emotions and thoughts but also about how those emotions and thoughts are formed or are expressed and how they impact behaviors. I’ll oversimplify psychology but emotions are sort of like shortcuts. They come as a consequence of how we interpret a specific situation. We can assert that emotions are consequences of an interpretation. We can also state that emotions are more than “I feel good/bad”. Behavioral reaction or what I do, next to physical or cognitive reactions are also a consequence of how we interpret reality. Knowing all the above we can conclude that “practicing empathy” means to identify what someone feels, thinks and does in relationship with the reason why those feelings, thoughts or actions appeared. Shorter empathy means “understanding what the input was and how the input was processed so that it led to a specific output” It is already obvious how empathy helps us in developing products or services as it allows us to: • Understand what our user feels and does while interacting with a product or service • Understand why the user feels and does something (by understanding the mechanism that led to that feeling)
Using empathy assumes that we understand the processing rule of each individual or group because in this way we can have an insight that could help us even modify the rule. I would only like to point out that each processing rule is individual specific and many times we will feel it doesn’t make sense, it’s not logic, nor rational. Applying empathy we do not search for logic but we merely try to identify which is the rule. By doing this, we can build products or services, interact with others, practice leadership or build a sales pitch that generate those emotions and actions we want.
So if we wish for our user to feel or think or do something, we build that specific contact that will be interpreted in such a way that it generates the outcomes we want. This means that we need to know the processing rule that produces the desired outcome.
40
no. 15/September, 2013 | www.todaysoftmag.com
TODAY SOFTWARE MAGAZINE
management
Gogu and the Perspectives
G
ogu is a funny character, cynical here and there, an introvert for whom the interior monologue represents an alternative to real life. With Gogu’s help, we analyze different aspects of the life of a project manager and his team, we suggest solutions that are easy to understand and apply. As Gogu would put it… “almost common sense”.
Simona Bonghez, Ph.D.
simona.bonghez@confucius.ro Speaker, trainer şi consultant în managementul proiectelor, Owner al Colors in Projects
We invite you to follow Gogu and send him your suggestions. “Gogu, what’s with that dumbstricken face?!” Misu pitied the imprudent that dared pick on Gogu on such a moment. Nobody wished to become Gogu’s target when he was angry, as the sourness of his replies would burn the soul of the unfortunate, and if by any chance you also had the lunacy to answer back, the fire of Hades would immediately become a much happier alternative. The glances of those from the department offices avidly fixed on Gogu. The jackals – Misu thought – they are waiting for the slaughter to begin. But, much to everyone’s surprise, Gogu pushed back his jowl with a natural gesture (his mouth was indeed open), giving no impression of being interrupted from his daydream. So, Misu thought, he is not angry, he’s only self-absorbed. Over the last 10 minutes he had been analyzing every possibility, every fact, message or happening that could have caused Gogu’s anger. Obviously, except some insubstantial assumptions, he wasn’t able to find anything. Now he had diligently restarted the analysis from the new perspective: what could preoccupy Gogu to such an extent, what could trouble him?
“Any troubles, Gogu?!” Misu had the clear impression that his thoughts had found their tongue. What the hell… However, he quickly realized that it was not his thoughts that had become verbose, but Chief had made his entrance, smiling, relaxed, suntanned and fresh, well, just like someone after having a holiday. The department began to ferment instantaneously. It’s just that, instead of gathering around Chief to ask him where he’d been, what he had seen, where he’d stayed, what he would recommend, the fuss seemed to completely ignore him… Lists were being checked on computers, computations were in progress… “Hello, does anyone notice me? Come on, I wasn’t gone for that long…” It’s only then that Gogu noticed Chief ’s presence. His surprise turned rapidly into relief and he smiled to Chief. “Or has everyone gone nuts?! Gogu, what are these people doing?” “Ha, ha”, Gogu had come back to his senses and now he laughed heartily. “It’s all about bets, Chief! How long you can stand your holiday, how many days earlier you come back to program…” “Even hours, Misu added, with a large smile on his Transylvanian man’s face. We knew you couldn’t go on for 15 entire days without the commotion over here…”
www.todaysoftmag.ro | no. 15/September, 2013
41
management Gogu and the Perspectives
Two hours later, after the operational meeting and after Misu had sufficiently trumpeted the victory brought by his predictions, after the entire department had found out all the details of the Chief ’s holiday, time had come for Gogu to be called to account for what had happened with the projects in which he had replaced the Chief. “Well, Chief, a lot of care and trouble this delegation of yours…” “Any problems, Gogu? Chief smiled.” “ It’s rather a puzzle of mine… Except that, Gogu proudly stood straight, I took care of everything.” “I’m sure you did, Gogu, otherwise I wouldn’t have appointed you to fill in for me. Tell me, what is it that puzzles you?” “It’s something strange, Chief ”, Gogu started. “Do you remember the optimization ideas of the Moon project? I analyzed some of them myself and turned them formal, into changing requests. There were a few which required the approval of the project manager, and we have already implemented them. There were, however, some which you had to approve, as the sponsor of the project.” “So?” asked Chief, with unfeigned curiosity. “Have you approved them for yourself?” Seeing Gogu’s puzzle, he quickly added: “Any delegation comes with responsibilities as well as with the authority necessary for decisions. I totally trust in you, Gogu, and I will support your decisions; I have no doubt that those requests should have been approved.” “That’s just it, Chief. I did not approve them.” Chief looked blank. A certain shadow of disappointment emerged in his eyes when he reproached to Gogu: “Well, I did not expect you to postpone making some decisions on my behalf. You know very well that the lack of a decision can sometimes have a greater impact than a bad decision, especially in the case of our project. We need quick resolutions here.” “No, Chief, wait. You did not understand. I didn’t postpone. I made the decision, it’s just that…” “It’s just what? Come on, spell it out!” “Well, the resolution was “No”. I rejected my own request!” Gogu uttered spitefully. Chief respired with relief. For a moment he had doubted his decision to delegate to Gogu – during his leave of absence – the responsibilities of chief of department and sponsor of the two major reorganization projects. He suddenly felt guilty for his lack of trust. He encouraged Gogu to continue. “So, you’re saying you turned them down?” “Yes, Chief. And it bothers me. Was I chuckle headed when I requested them or is it that I didn’t have the guts when I turned them down? ‘Cause the risk no longer seemed acceptable to me…” Chief was silent for a few moments, chewing on the answer. “It’s probably neither one thing, nor the other. You are not the first one in this situation. There is a little story on the internet, most probably an urban legend, on general Milea. They say that – and here Chief leaned on his back – at the time when he was a garrison commander, just like any other commander, he would send different requests for the endowment of the garrison, to the general headquarters. Promoted chief of staff and forced by circumstances to assume quickly his new responsibilities, he finds himself in the situation of having to analyze two of his last requests sent in his capacity of garrison commander. His assistant, taking over the requests file, is surprised to notice the negative resolution
42
no. 15/September, 2013 | www.todaysoftmag.com
and, astonished, dares to ask whether the requests were not legitimate. The answer of the general, Gogu, I think suits your case, too. “The requests were and are legitimate from the position of garrison commander. From the position of Chief of Staff, however, things are seen from a totally different perspective!”
Romanian Mobile Systems Community Conference
Mob S Cluj Napoca, 21 - 22 November 2013 Hotel Golden Tulip Ana Dome www.romobos.com
SPEAKERS Android: 21.11.2013 Sergi Almar
Enirique Lopez Manas
iOS: 22.11.2013 Kuba Brecka
Matteo Manferdini
TODAY SOFTWARE MAGAZINE
sponsori
powered by