tsm_7_2013_en

48
TO DAY SOFTWARE No. 7 • January 2013 • www.todaysoftmag.ro www.todaysoftmag.com MAGAZINE How to Web 2012 has reached its end. Thank you all for attending! Achievements and visions at the end of 2012 The Cluj IT History (II) SEO - Improving CTR with Rich Snippets? Financial software development: trading platforms requirements Liferay Service Builder vs. Spring Roo Situational Leadership Art & IT: overcoming the conventional framework by stimulating creativity Alternative PHP runtimes What are the real cucumbers of the ISV gardener? How to be a Registered Sole Trader (PFA) Windows Azure Mobile Services 10 design principles - part II Cheap startup Startup - TXTFeedback Introduction to Grails (II) The Case for PHP Gogu and Miorita

Upload: today-software-magazine

Post on 31-Mar-2016

216 views

Category:

Documents


2 download

DESCRIPTION

http://www.todaysoftmag.com/pdf/TSM_7_2013_en.pdf

TRANSCRIPT

Page 1: TSM_7_2013_en

TSM T O D A YS O F T WA R E

No. 7 • January 2013 • www.todaysoftmag.ro • www.todaysoftmag.com

M AG A Z I N E

How to Web 2012 has reached its end. Thank you all for attending!

Achievements and visions at the end of 2012

The Cluj IT History (II)

SEO - Improving CTR with Rich Snippets?

Financial software development: trading platforms requirements

Liferay Service Builder vs. Spring RooSituational Leadership

Art & IT: overcoming the conventional framework by stimulating creativity

Alternative PHP runtimes

What are the real cucumbers of the ISV gardener?

How to be a Registered Sole Trader (PFA)

Windows Azure Mobile Services

10 design principles - part II

Cheap startup

Startup - TXTFeedback

Introduction to Grails (II)

The Case for PHP

Gogu and Miorita

Page 2: TSM_7_2013_en
Page 3: TSM_7_2013_en

6How to Web 2012 has

reached its end. Thank you all for attending!

Oana Călugar

7Achievements and visions at

the end of 2012Ovidiu Mățan

8Made in România

Ovidiu Mățan

10The Cluj IT History (II)Marius Mornea

12SEO - Improving CTR with Rich Snippets?

Radu Popescu

14Financial software

development: trading platforms requirements

Cristian Ruja

17Liferay Service Builder vs.

Spring RooVlad Hosu

20Situational Leadership Andreea Pârvu

23The Case

for PHP

Ioan Bercea

26AlternativePHP runtimesAttila-Mihaly Balazs

29What are the real cucum-bers of the ISV gardener?Mihai Nadăș

31Introduction to Grails (II)Tavi Bolog

34Windows Azure Mobile ServicesRadu Vunvulea

3610 design principles - part II Ștefan Baritchii

39Cheap startup

Dragoș Andronic

41Startup - TXTFeedbackDragoș Andronic

43How to be a Registered Sole Trader (PFA)Delia Coman

45Art & IT: overcoming the conventional framework by stimulating creativityDelia Coman

46Gogu and MioritaSimona Bonghez, Ph.D.

Page 4: TSM_7_2013_en

4 nr. 7/2013 | www.todaysoftmag.com

Let’s review 2012. It was a year of preparation, negotiation, optimization of processes and a lot of plans. Some of them were accomplished and others will be put into practice in the future. We have started the idea of promoting the IT world, which was largely unknown to the local public and I think we achieved it. In this year’s seven editions we had a total of 160 articles and 56 published authors. We had over 8,000 unique visitors, with a total of 27000 viewed pages, given that many readers have directly downloaded the magazine in pdf format. Cluj leads among cities with nearly half of the visits, followed by Bucharest and Timisoara. I would like to mention the series of events during the magazine launch, which have enjoyed great success. All this would not have been possi-ble without the four main sponsors: ISDC, Small Footprint, 3 Pillar Global and Endava. I would also like to thank Skobbler and Ullink in this issue for their support. Last but not least, we thank our readers, because without their support all this would not have happened!

Looking back, I would like to mention the most important events I attended and which are a point of reference for the Romanian software development: IT Camp, Business Day Cluj and How To Web 2012. I should note that none of these are at their first edition, which again proves the importance of prediction and learned lessons.

What do we want for next year? A monthly publication of the magazine, publishing to Apple Newsstand and a new website. We have a lot of ideas and we believe we will surprise you in a pleasant way.

Number 7 contains several articles begun in the previous issue: 10 design principles and Introduction to Grails and the series Made in Romania, The Cluj IT history. We also have Achievements and vision at the end of 2012 from three major Romanian business-people. Financial software is a topic that has not been addressed so far, so we will try to have a series of articles on it. A special emphasis falls on PHP language with two articles on this topic in this issue. A description of two RAD frameworks: Liferay Service Builder Vs. Spring Roo. TXTFeedback is a startup from Cluj. Dragos, its co-founder, explains how we can create a startup using minimum funds, but with different programs that the Romanian state makes available. He will also tell you about the way he wants to improve the customer support services using a product developed by them. What are the real cucumbers of the ISV gardener shows the business challenges and solutions in Cluj and beyond. An original article is the link between programmers and streets art by a specific event. Finally, I suggest you shouldn’t forget about Gogu and Miorita, a quick, enjoyable and instructive reading.

Ovidiu Măţan

Founder & CEO of Today Software Magazine

Ovidiu Măţan, [email protected]

Founder & CEO @Today Software Magazine

editorial

Page 5: TSM_7_2013_en

5www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

Editorial Staf

Fondator / Editor in chief: Ovidiu Mățan [email protected]

Editor (startups and interviews): Marius Mornea [email protected]

Graphic designer: Dan Hădărău [email protected]

Marketing:: Ioana Fane [email protected]

Translator: Cintia [email protected]

Reviewer: Tavi Bolog [email protected]

Reviewer: Adrian Lupei [email protected]

Made byToday Software Solutions SRL

str. Plopilor, nr. 75/77Cluj-Napoca, Cluj, [email protected]

www.todaysoftmag.comwww.facebook.com/todaysoftmag

twitter.com/todaysoftmag

ISSN 2285 – 3502ISSN-L 2284 – 8207

Copyright Today Software Magazine

Any reproduction or total or partial reproduction of these trademarks or logos, alone or integrated with

other elements without the express permission of the publisher is prohibited and engage the responsibility of the user as defined by Intellectual Property Code

www.todaysoftmag.rowww.todaysoftmag.com

Ovidiu Măţan, [email protected]

Founder & CEO @Today Software Magazine

Marius [email protected]

Founder of Mintaka Research platform

Tavi [email protected]

Development lead @Nokia

Attila-Mihaly [email protected]

Code Wrangler @ UdacityTrainer @ Tora Trading

Andreea Pâ[email protected]

Recruiter @Endava

Radu [email protected]

Senior Software Engineer@iQuest

Simona Bonghez, [email protected]

Speaker, trainer and consultant in project management

Owner of Confucius Consulting

Radu [email protected]

QA and Web designer @ Small Footprint

Authors list

Mihai Nadăș[email protected]

CTO@ Yonder

Oana Că[email protected]

Customer Care@ Weebly

Cristian [email protected]

Product Team Manager @ ULLINK

Vlad Hosu [email protected]

Senior Developer @ ISDC

Ioan [email protected]

Senior Web Developer@ 3Pillar Global

Dragoș [email protected]

CTO

@ TXTFeedback

Delia [email protected]

economist, trainer and antreprenor

Rodica [email protected]

Marketing & PR Specialist@ .msg systems Romania

Page 6: TSM_7_2013_en

6 nr. 7/2013 | www.todaysoftmag.com

events

How to Web 2012 has reached its end. Thank you all for attending!

After months of planning, organizing, waiting, overloaded schedule and hundreds of hours of communication, the organizers, Bogdan Iordache and his team, have lived the beautiful moments of the success-ful event and received applause for their efforts. As a supporter of How to Web I lived a bit of the excitement preceding the event, when I helped sending the message about How to Web to those who should Know about it. Thus to minimize the num-ber of people who will tell you their stories after the event: If I knew that it was so inte-resting, I would have come too. Because How to Web is so interesting and important for this part of Europe and especially for those people in Romania who work with, live and breathe technology.

Below are the most important ideas we heard:

Phil Libin, CEO @Evernote -- The power of innovation

Advice on building a company and a tech business: don’t do it, it’s tough. If you do it, do it for the right reason. Build something for yourself. You have to be good at math to be an entrepreneur.

David Bizer, Talent Geek @HackFWD -- The Culture Club

For startup, everyday meetings are like air. You need to gain support for your idea from your colleagues.

Product-focused culture: It’s empowering to be asked to look at what’s possible, not told how to do it. If you’re not embarrassed by the first version of your product, you’ve launched too late

David Noel, Community Manager @SoundCloud

How to Build a Community: Three Confessions Humanize customer care; when our service is down, respond with a picture with the worried team, the people who care

-- there are live humans behind the software

Max Niederhofer, Partner @Accel Part-ners -- Building Big in Europe

There are many obstacles to building billion dollar companies in Europe: struc-tural, regulatory, industrial. But the biggest barrier to building a big company in Europe is the one in our heads.

Listen -- most great entrepreneurs are great listeners.

Take pride in what you do. Everything that’s worth doing, is worth doing well.

Christian Boos - Founder & CEO @Arago AG -- Particle Collision in Code Space - API meets Big Data

79 times more CPU power than used in Apollo Missions -- on one iPhone.

Your platform can not handle infinite exploration and your users will not under-stand the mechanics behind your data processing.

Example: Big Data-based IT modelling and pricing app: mars-o-matic.com

Mark Pascarella, CEO @UberVU -- The pains of growth

Why consider global growth?• Follow the money: US, China, Brazil,

Japan, China -- go where the money is

• 21% disposable income spent online in US, UK, Canada, Australia

• Global expansion means:• huge markets• access to talent• access to partner & platform• access to capital • Expansion may not be good for you:• if you don’t speak the language• if you’d rather be a big fish in a small

pond• if your product doesn’t translate to

local market• it could divide your team

• if you don’t like this kind of lifestyle • Resources to make it happen:• culture• communication• network• presence

Besides the two-day conference, Romanian and international startups ente-ring the Startup Spotlight competition had four days of workshops, pitching sessions, mentoring sessions, meeting with 12 busi-ness international accelerators and $ 20,000 cash prizes. Those who were not in a start-up, have immediately wanted to start or work In a startup!

My impression after two days of How to Web: there are people who have succeeded – so it is not impossible, even in Romania we can learn from the best; the speakers are very eager to share – we only need to have the curiosity to ask; technology is great to work with because change and innovation are the only constant and we learn all the time.

All in all, If all participants left with something new they learnt at How to Web, it would be a good step forward for the Romanian tech entrepreneurship.

When you enter 2012.howtoweb.co, you encounter these words: How to Web 2012 has reached its end. Thank you all for attending! One month after the conference, I am still inspired by some of the speeches I’ve heard and the people I’ve known. And I’m really sorry it only lasted for two days and it was over. How to Web was held in Bucharest on 7 and 8

November.

Oana Că[email protected]

Customer Care la Weebly@ 3Pillar Global Romania

Page 7: TSM_7_2013_en

7www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

Achievements and visions at the end of 2012

Q: What are your main achievements in 2012?

This year’s key achie-vements were related to the launch of a new educational program called BusinessDrive, a

program which is aimed to both small and medium entrepreneurs and mana-gers as well as medium-large companies, to regional development of some of my portfolio investment companies, such as FashionUp, the online expanding mall in Bulgaria, the significant turnover rise in virtually all companies in which I invest as business angel and last but not least, the fact that I started work on the board of Tarom, the national airline, in order to improve as fast as possible this important Romanian brand.

Q: What do you think the worldwide lines of evolution will be in 2013?

Worldwide, I believe that 2013 will be similar to this year, a new year of entre-preneurship, meaning that most progress in the global economy will be sustained or even defined by entrepreneurial business, which at the same time will continue to be the main source in creating new jobs. The verticals with the most significant develop-ment will be the IT ones (mainly mobile Internet and mobile Internet-based appli-cations, as well as related equipment such as tablets and smartphones) green energy (wind, solar / photovoltaic, other forms of renewable energy), environment (envi-ronmental goods and services, recycling), and bio-technology and the health busi-ness (especially medical care for the aging population).

Q: What about the Romanian software development market?

I think that it is a market not valued at its real potential, because the products and services of low added value (call center, outsourcing) perform most of the volu-mes of the Romanian IT market, while the ideal situation would be that in which Romanian IT firms will increasingly focus on the production of original software which can then be scaled and will produce high added value for those companies, but also for the Romanian economic environ-ment as a whole. However, good signs have appeared in recent years from this point of view in the Romanian IT market, especially that the entry barriers in global markets are falling, along with the occurrence of aggregation sites, cloud opportunities or application platforms such as appstore.

Q: What are your main achievements in 2012?

• Clevertaxi, the angel investment at the end of 2011 launched the product as planned and started to generate reve-nue positioning itself as a market leader• a new type of angel

investment in i-Rewind, a worldwide patented innovative product which will be released soon

• TechMind, the headhunting agency for software engineering has become breakeven and began to grow.

• I co-founded TechAngels together with Radu G. and Bogdan I., the first group of angels in technology in Romania

• As the President of ANIS I brought Ixia as a lead partner in HowToWeb,

the biggest Tech event of the region. Ixia offered prizes for Startup Spotlight, a contest with 32 partici-pating companies selected from over 120 applicants from all countries around.

• The ANIS participation in the state aid scheme for companies with an innovative component / Tech for more than 20%, the scheme initia-ted by the IT & C Commission of AmCham.

Q: What do you think the worldwide lines of evolution will be in 2013?

Worldwide, 2013 will mark the emergence of new competitors in the mobile devices market. Microsoft just released the Surface; Amazon is likely to introduce a phone as far as their Fire tablet is more and more present. I do not think Nokia has said its last word. It is also expected that the man-computer interaction to be increasingly linked to mobility, if only emails are now on your phone or tablet or computer and, along with the increasing penetration of cloud technologies, we’ll see the documents for any device.

Q: What about the Romanian software deve-lopment market?

The Romanian software development mar-ket continues to grow due to the existence of qualified specialists, but especially due to foreign offers, not at all cheap. We see that more and more IT entrepreneurs are turning to their own product development and even attacking foreign markets. The mobile application market will grow furt-her. I think The Romanian Ecommerce will have an explosive growth as people are more familiar with the cards and the returns policy is increasingly better.

We had the opportunity to ask Marius Ghenea, Andrei Pitis and Voicu Oprean’s about their achievements in 2012 what glo-bal vision they have for 2013. We have also discovered their opinion about the Romanian software industry. These mini interviews were conducted using Business Days www.businessdays.ro. We would like to thank Codruta Nicolescu, CEO

of ADESCO, for all her help.

business

Marius GheneaBusiness angel

Andrei Pitiș President of ANIS

Page 8: TSM_7_2013_en

8 nr. 7/2013 | www.todaysoftmag.com

Made in România

IDEA Studios is a startup founded in 2007 by Daniel Tamas and Tudor Rad, two young entre-preneurs and former web development freelancers, or SEO. If firstly the company focused on web design outsourcing contracts, today SEO and game development only focus on their own

products and they have created a network of Flash games portals that raise 9 million visitors each month. In early 2012 they bought what today is their main project, www.enjoydressup.com and Paul Muresan, the site owner, joined the management team.

Q: Describe the newly launched productTudor: Our latest product is www.gamolition.com launched in March 2012 and is a Flash portal focused on games for boys. Working for 4 years only in the girl gaming niche we felt the need to diversify the range of games we produce as well as our portals’ traffic pool. The incentive was twofold: the opening of a new market and the fact that we got tired of drawing and coding pink dresses and curly hairstyles every week :)

business business

www.ideastudios.ro

Q: What are your main achievements in 2012?

- The l aunch of TraficOK, the first plat-form that integrates software from Romania and t ransmits rea l -

time traffic information nationwide;

- The launch of Smailo TMC - the first GPS solution in Romania with preinstalled TMC (Traffic Message Channel)

- The strenghtening and expanding of the operations in Hungary and Moldova

-The increase of over 1500 clients only in Romania

- New contracts for software deve-lopment in countries like U.S., Canada, Finland,Sweden and Norway

- The development of a new version of the OptimallSFA product for mobile termi-nals operating on Android

- More than 300 employees in Cluj, Iasi, Bucharest, Oradea, Ploiesti, Budapest,

Kishinev- The launch of Web Smailo Energy -

the first Smailo tablet

Q: What do you think the worldwide lines of evolution will be in 2013?

The optimization processes and restructuring of companies started in the early years of crisis would rather have to be completed and in 2013 we should start to see the effects. Even if the economic envi-ronment is still unstable, we do not know how the euro will evolve and whether there will be repercussions on EU countries, the investors are reserved, and so on. There are and will be areas that will record growth in both services and manufacturing.

Q: What about the Romanian software deve-lopment market?

The software market in Romania has increased steadily over the past five years even if not as spectacular as in the past but it is a healthy growth based on efficient businesses. For example, the segment of

applications for mobile devices increased 5 times in 2012 as compared to 2011 and will definitely keep its pace in 2013, since external demand is growing. The call cen-ter services also recorded a large increase and more and more foreign companies are outsourcing these services for Romanian companies. However, the internal demand remains small compared to the potential benefits. The budgets that companies or institutions from Romania invest in tech-nology are greatly diminished and 2013 does not seem to be spectacular in this matter. The only software solutions that have increased domestic sales are those dedicated to reducing costs and optimizing the activities with short-term effects and results.

Voicu OpreanCEO Arobs

This section started in the previous issue is now presenting another games production company in Cluj-Napoca. It is an area of particular interest in terms of Romanian innovation. The company initially started offering outsourcing services, but then it gave them up, the focus being now 100% on developing new applications.

Ovidiu Măţan, [email protected]

Founder & CEO @Today Software Magazine

Page 9: TSM_7_2013_en

9www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

business

Tudor [email protected]

Co-founder@IDEA Studios

Q: Describe the technologies usedTudor: Exclusive Adobe Flash and Adobe Illustrator. We are trying to gradually change phones and we use Adobe Air to port some of over 300 games created by us on Android. Many people asked me why we do not shift to mobiles faster, because this is the place where the money is, because Flash is dying, etc. The reason is simple: we have a rather big piece of the International Flash market and earn our bread here. The mobile still remains the main technology but we do not want to replace what we have with Angry Bird, at least until we gather some market data with our exploratory product.

Q: Describe the main challenges that have appeared in product development and what solutions you found?Tudor: We are in a massive traffic industry and the main difficulty was our lack of experience in the management of viral content sites that caught spikes which destroyed the server every few weeks. I have not actively participated in their development but my colleagues Daniel and Paul have done a great job in optimizing web sites and the server for our growing traffic. Another technological chal-lenge is the change from Flash to mobile - even if Adobe Air is becoming a more attractive option for porting, there are still enough problems and it takes user-made extensions to use certain features, such as Facebook integration, using micro transactions in games, commercials integration etc. We are in the process of learning and still do not know exactly what Air’s limits are, but the fact that games running and functioning as well as those written in native code are already ported to Air on Appstore and Google Play gives us some hope.

Q: Tell us a few words about the companyTudor: Besides my other two colleagues in management, we have a team of 5 Flash developers, 5 and 6 graphic content managers dealing with the PR of games portal and other secondary projects. Aside from our network of sites, which reached some respectable numbers, I am mostly proud that we managed to build a team. We are all young and may not have much experience but my collea-gues have proven many times that they are united for better or for worse. It’s an incredible feeling that under the economic and social conditions in Romania we can create our own products and an enthusiastic team without external capital flows and without signing contracts with the devil (or the Romanian state).

Q. Care este următorul produs la care vă gândiți să îl lansați ?Tudor: We are now discussing the details for more complex game for girls, which we want to launch simultaneously in Flash and Android (perhaps the Appstore, which is yet untested). I think the niche games for girls is still very poorly represented in mobile gaming and our experience in Flash might help us create products to a quality standard that would give us that „edge” that you need to succeed in any industry. In 2012 we started with one site that had ~ 2 million active users per month and the target for the end of the year was to reach 10 million (a target that we missed with almost 1 million). In 2013 we aim to reach and stabilize ourselves to 15 million visits and have at least 5 quality mobile products.

Page 10: TSM_7_2013_en

10 nr. 7/2013 | www.todaysoftmag.com

The Cluj IT History (II)Lessons from the past

history communities

In contrast, the social perspective is much poorer in information, and most of the prominent historical figures are harder to come by and challenge to one on one discussions. As such, we turned for help to Mr. Ioan Salomie, university professor at UTCN, and he granted us a meeting full of memories, nostalgia, but also impor-tant data and characters from Romanian ITs early years. The meeting went exactly as expected, raising more questions than answers, and the new information and figures deserve at least a dedicated article much bigger than what I had planned for this number. I’ll dwell on one curiosity: information access. Trying to identify knowledge sources, in a time before the Internet, with solid political borders, I’ve come across three slightly unorthodox solutions, hard to imagine for any contem-porary IT worker.

First spot is occupied by the Russian publishers: represented by a small bro-chure found at the University Library, which listed all of the titles translated from English to Russian by Moscow edi-tors, and it was renewed every two weeks. More precisely, everything that was publi-shed internationally, especially from the states, was translated in a matter of six months. If one title raised your interest, you could just write your name next to it and, in about a months time, you would get an identical copy of the original edition (Addison-Wesley, John Wiley, etc), transla-ted into Russian, for the price of one or two beers. The only drawbacks were: the fact that you had to learn Russian and to accept the massive intellectual theft, carried on by the Russian publishers, with no regard for any international copyright policies. The professor assured me that necessity, one

dictionary, English code fragments and a lot of determination, allowed him to learn Russian all by himself. Standing proof are approximately 500 titles in his basement.

Coming in second place are article titles and classic mail. Some local institutions, like ITIM, had subscriptions at „Current Contents”, which listed, every week, all the titles of the latest scientific publications from international journals. You would drop by, read titles and try to infer a loose idea about whats new in science, gene-ral trends, and if one article in particular would raise your interest, a quest, to find the authors mailing address and start a long term plea for a copy of the article, would commence. Sometimes, after spending your time and money on international land mail, you would find that the article does not suit you, but you still had to send your thanks and try to build friendly relations for future collaboration.

On the third spot, Xerox: big industrial players had a few photo-copiers and seve-ral ladies in charge of their well being. It was a distinct type of diplomacy to build alliances with those ladies, which would come in handy once you found out that a valuable book surfaced in Iasi, Bucharest or Timisoara, and ran along on a night train and borrow it for a week, enough to make a quick and cheap copy of the book.

In conclusion I would like to share my lessons learned from the above. First comes the strength to fight off the over saturation feeling I get from the constant bombard-ment with information. To ignore the smart sport shoes, fridges, mirrors and TV’s, all of them sharing the latest weather forecast, number of burned calories, what vitamins to take in the morning and what all of my friends posted on their social networks. I

should be glad that Google and Wikipedia don’t send search results through land mail, Kindle doesn’t have Russian only books, and I can always join a MOOC and directly interact with leaders from almost any field of science and knowledge.

Secondly, I shouldn’t get upset on high profile intellectual property law suits, every time a big multinational tries to own hot water and the word “mother”. Its enough to step back and change to the historic perspective, which just showed me how a systematic, large scale, theft and distribu-tion of scientific publications inside the soviet block can take place without any regard for copyright, only abiding by the law that all is fair in war, even the cold one. Don’t take me wrong, I’m not inciting to theft, but I’ve just learned that people will always find a way to access and profit from information. And what at some point looks like a generation of intellectual propriety thieves, over the decades, turns into a gene-ration of highly skilled programmers that allow the previous victims to cover their losses and even make big profits through outsourcing.

In our last issue, we’ve asked many questions, some philosophical, some statistical, some to the point, others completely open, most requiring complex answers in need of in depth research. As a result, we began with the more approachable side, the technical one, discovering straight away that most of its history profits from an abundance of information made available due to the “great

achievements of the people” cult, specific to the political medium that gave birth to the Romanian IT. Also, in the same direction, we benefited from our readers support, and I’m taking this opportunity to give my thanks to Mr. Marius Muntean, for all the materials he sent.

Marius [email protected]

Founder of Mintaka Research platform

Page 11: TSM_7_2013_en

11www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

Transylvania Java User GroupJava technologies community.Website: http://www.transylvania-jug.org/Started on: 15.05.2008 / Members: 518 / Events: 40

Romanian Testing CommunityCommunity dedicated to QA.Website: http://www.romaniatesting.roStarted on: 10.05.2011 / Members: 560 / Events: 1

GeekMeet ClujCommunity dedicated to web technologies.Website: http://geekmeet.ro/Started on: 10.06.2006 / Members: 522 / Events: 13 (Cluj)

Cluj.rbRuby community.Website: http://www.meetup.com/cluj-rb/Started on: 25.08.2010 / Members: 130 / Events: 31

The Cluj Napoca Agile Software Meetup GroupCommunity dedicated to Agile development.Website: http://www.agileworks.roStarted on: 04.10.2010 / Members: 293 / Events: 17

Cluj Semantic WEB MeetupCommunity dedicated to semantic technologies.Website: http://www.meetup.com/Cluj-Semantic-WEB/Started on: 08.05.2010 / Members: 136/ Events: 19

Romanian Association for Better SoftwareCommunity dedicated to IT professionals with extensive experi-ence in any technology.Website: http://www.rabs.roStarted on: 10.02.2011 / Members: 193/ Events: 11

TSM communityCommunity created around Today Software Magazine.Website: http://www.todaysoftmag.roStarted on: 06.02.2012 / Members: 389 / Events: 5

Instead of the usual introduction, I want to say a few words about CodeRetreat. Due to space constraints, I won’t go into details about what it is (googleit), but I want to share how it is. It is very cool! I genuinely felt the pleasure of being and engineer, faced with a problem, without any costs concerns or deadlines, with the sole purpose of trying to solve it. Further more, I had the oppor-

tunity to search for solutions in three different programming languages, with different partners and growing constraints that made things increasingly difficult and called for strategy shifts, while every 45 minutes a debate session at least as interesting as the coding one would follow. A very good analogy would be a proper fitness training, where you work your muscles, growing tired, occasionally its hard and frustrating, when you reach your limits, but you always walk away with a positive energy and a general state of well being and relaxation. And similar to the fitness trainings, if you want to be in top shape, you need to have a proper schedule and keep at it. I’m sure that frequent sessions of CodeRetreat will push the local programmers towards their peak performance.

Calendar

6th FebruaryMonthly Meetuphttp://www.meetup.com/Tabara-de-Testare-Cluj/

1-3 MarchStartup Weekend - Recomandat TSMhttp://cluj.startupweekend.org/

Thursday/weeklyOpenConnecthttp://www.facebook.com/groups/355893314491424/

Wednesday/bi-monthlyOpenCoffeehttp://www.facebook.com/opencoffeecluj

Local communities

communities

Tabara de testareQA dedicated community.Website: http://www.meetup.com/Tabara-de-Testare-Cluj/Started on: 15.01.2012 / Members: 133 / Events: 7

Others: Cluj Perl Mongers (www.cluj.pm), GeekMeet (http://geekmeet.ro/), ITSpark (http://itspark.ro/default.aspx), CodeCamp (http://www.codecamp.ro/), CodExpert (http://www.codexpert.ro/), PHPRomania (http://www.phpromania.net/), ARIES (http://www.aries.ro/)

Page 12: TSM_7_2013_en

12 nr. 7/2013 | www.todaysoftmag.com

First we need to understand what Rich Snippets are. They are a set of information, images or links that appear in a result of a search, to give users more details about it. All of this additional information will make the result stand out. Rich Snippets offer some valuable advantages like:

• Helps increase the CTR and lower bounce rate;

• Provides additional information on a search result;

• Draws the attention of users to your result;

To confirm the benefits mentioned above, I would like to bring up a test made just a few months ago by Catalyst American Company using a blog with food recipes. In the first month after using Rich Snippets, the site had a CTR increase of 150% which demonstrates the huge potential of this internal SEO technique.

Next, let’s see two examples of results that are using Rich Snippets. In Figure 1 we have the result, of Google Play, on a search for a game called „cut the rope”. This result is in the software category content and it displays the game rating, its price and the platform on which it runs. Figure 2 shows the result of IMDB.com for the search

„titanic”. Here we can see that it contains a rating, film grade, the number of votes received as well as the director and actors names.

Using Schema.orgSchema.org offers a series of HTML

attributes which site owners can use to take advantage of Richs Snippets. These attribu-tes are also known as micro data and they are accepted by the most important search engines like Google, Bing and Yahoo.

This site offers a wide range of attribute collection which we can use for different content categories like: organization, per-sons, events, restaurants and many more. To see the difference between a simple HTML code and an enhanced one, below is an example of a personal web page:

Code without micro dataJohn Doe <img src=”johndoe.jpg” /><br/>Professor <br/>2341 Whitworth Institute <br/>45 Whitworth <br/>Seattle WA 980 <br/>(425) 123-4567 <br/><a href=”mailto:[email protected]”>[email protected]</a>

Code with micro data<div itemscope itemtype=”http://schema.org/Person”> <span itemprop=”name”>John Doe</span> <img src=”johndoe.jpg” itemprop=”image” /> <br/>

SEO - Improving CTR with Rich Snippets?

Formatting and adjusting the SERPS results can be done by any site owner thought Rich Snippets (an internal SEO technique). One of the most important advantages it can bring to a website is the growth of organic traffic by making the result stand

out from the crowd.

programming

Radu [email protected]

QA și Web designer @ Small Footprint

programare

Figure 1 Figure 2

Page 13: TSM_7_2013_en

13www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

<span itemprop=”jobTitle”>Professor</span> <br/> <div itemprop=”address” itemscope itemtype=”http://schema.org/Posta-lAddress”> <span itemprop=”streetAddress”> 2341 Whitworth Institute <br/> 45 Whitworth <br/> </span> <span itemprop=”addressLocality”>Seattle</span>, <span itemprop=”addressRegion”>WA</span> <span itemprop=”postalCode”>980</span> <br/> </div> <span itemprop=”telephone”>(425) 123-4567</span> <br/> <a href=”mailto:[email protected]” itemprop=”email”>[email protected]</a><div>

As we can see, micro data is used in <div> and <span> tags. The Schema.org attributes role is to transform simple HTML tags in semantic tags. The example above shows us how we can do that. First we need to include all the content in a container (div or span) which is going to tell search engines in what category that content belongs. On the first line, our container specifies that its content is about a person (itemscope itemtype=”http://schema.org/Person”). Next we need to encapsulate each property of that person with the corresponding attribute. For example, the person’s name “John Doe” will be wrapped around a span with itemprop=”name”. In the same manner, we wrap his job title “Professor” in a span with itemprop=”jobTitle”.

Author information with Google+There is a simple way to use Rich Snippets to show author

information on a search result, without the need of knowing HTML. In figure no.3, for “radu popescu” query, you can see little information about me and a picture. In order to achieve this, we need to follow two simple steps:

1. On the pages you would like to show author information, there must be a link to your Google+ profile. The link needs to contain the profile ID and the “rel=author” attribute link in the following example:

<a href=”[ URL_PROFIL_GOOGLE+ ]?rel=author” >Google+</a><a href=”https://plus.google.com/10954875114587?rel=author” > Google+</a>

2. On Your Google+ account, in “Contributor To” section, adds a link to your website.

The author information will not be available as soon as you go through the above steps. You need to allow up to 3 weeks for the search results to update. However, you can test the updates made using a free tool offered by Google: http://www.google.com/webmasters/tools/richsnippets

programare

Page 14: TSM_7_2013_en

14 nr. 7/2013 | www.todaysoftmag.com

and the process used to build it, keeping high quality standards required by such a software.

Nonfunctional requirements of a trading platform• Reliable - having a software product

which will always works, without interruptions/errors (ex. during stock exchanges opening hours Monday to Friday 9:00 - 17:00)

• High Throughput/Performance - platform should process high number of orders/Transactions on a longer period of time (ex. stock exchanges opening hours Monday to Friday 9:00 - 17:00) all the platform parameters being in the optimum range.

• Low latency - orders delays crossing the platform should be minimum,

in order to ensure fast access to the exchange’s transactions engines(ex. ~50μs)

• Load balancing, hot failover & highly availability (99.999%) - capacity to be always up and running usually having at least 2 servers such that if one is is restarted the other will take the responsibility to process order, the change being invisible to the customer.

• 24h „follow the sun” availability - the platform should be available 24h being available all around the globe, starting with Tokyo Stock Exchange, continuing with London Stock Exchange and continuing with NewYork Stock Exchange

• Highly scalability - The architecture should be easily scalable in order to respond to increasing number of

Financial software development: trading platforms requirements

What would you feel developing software used in the biggest financial institu-tions worldwide, software which trades billions of Euros daily? Responsible? proud? happy? all of them together :) ? We are are trying to present, below,

which are the functional and nonfunctional requirements of such a trading platform

requirements

Cristian [email protected]

Product Team Manager @ ULLINK

Page 15: TSM_7_2013_en

15www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

markets and customers, distributed around the globe;

Functional requirements of a trading platformOne of the key features of a trading platform is to act as a

multiprotocol connectivity hub making connectivity between different markets participants. Different markets supports diffe-rent protocols for connectivity so the platform needs to be able to work with different protocols in order to enables to connect and intelligently route transactional messages to their final desti-nations: exchanges, brokers, Buy-Side firms, trading applications, order management systems, and routing networks through FIX protocol or custom protocols/APis Fix (http://www.fixprotocol.org/) protocol is the most common protocol used in this industry; however platform must be easily extensible to support other cus-tom APIs and different versions of the FIX protocol.

Some non-functional requirements regarding connectivity: low latency for order processing/ routing(ex ~50μs); high throu-ghput (ex 1000 messages/sec, ~10 millions messages per day)

HighTouch Trading solution covers the daily trading acti-vity. Its targets is to work with the ~10k orders daily - used to replace paper tickets used in trading rooms with electronic tickets, to manage client orders which can be forwarded to different users and processed easily, and to share information in real time between all users (sales, dealers, clients).

It should work in real-t ime across asset classes (equity,derivatives) It should provide fast and reliable order sub-missions with instant feedback to clients Another trendy feature is the algorithmic engine enabling automatic trading. Beside stan-dard algorithms it should provide also easily pluggable

Low Touch Trading Solution - cover the low latency Direct Market Access and includes also liquidity-seeking smart order router (finding the best prices over all available markets), sophis-ticated pre-trade risk management software, advanced monitoring capabilities (dealing with ~10 millions orders daily).

Risk management is another mandatory component of a tra-ding platform and is enforced by regulations. Beside that, brokers need to filter their client flows in order to check two types of rules:• Contractual : clients have to respect their broker rules• Compliance : clients have to respect the targeted market

rules

The purpose is to check and validate in real time orders and end user positions (long/short/net) across markets. All this should happen with minimum impact in processing time e.g. very low latency (ex: 3μs latency wire to wire).

Middle Office management handles management of the executed orders morespecifically it handles the allocation and confirmation workflows. Allocation information is provided usually through instructions (how to dispatch the executed quantity), or some third party systems will provide these infor-mations Confirmations is the “acknowledgment” received back for the different accounts. Last step is the settlement and delivery information, with account-specific, exchange specific added infor-mation. The product is also responsible for computing all fees and commissions (including market fees) which need to be invoiced to the clients.

How to produce such a softwareWhich are the steps to create such a high quality software

platform?

First step is to get together top specialists from different areas: business analysts, architects, developers, QAs and working closely together using SCRUM methodology.

Having a top performers team is not enough. We need to listen and react to customers needs: business analysts listen to customers requests and maps them in the context of the existing products and platform. They are also detecting the new customer requi-rements and gaps between products and customer needs. In this phase, the system architects come with suggestions mostly for defining the products architectures and the APIs for communica-ting between products and components; The purpose is to enforce homogeneity through products and components for easy extensi-bility and maintainability.

Splitting and defining the functionality for each individual product which is the responsibility of the „Product Owner”.

In the development phase we need to focus on high quality and use industry best practices.

SCRUM process is suiting well for developing this type of products; team estimates the effort needed trying to identify problems which might generate risks related to performance, quality,regression;

Quality is very important for such products; In order to keep the high quality standards we are using industry best practices:• unit tests - automated code testing• code review - process in which team members are revie-

wing the code of their pairs, before going to QA• continuous integration - process which ensure automati-

cally build, test and integration of the platform QA is the last step in the development process;

Page 16: TSM_7_2013_en

16 nr. 7/2013 | www.todaysoftmag.com

Targets for the QA are:• functional validation, testing that

functional requirements are fulfilled• non regression validation, ensuring

that previous functionality is not affected

• performance validation, ensuring non-functional requirements are fulfilled

• platform integration validation, focusing on products interaction

Most of the QA is based on the auto-mated tests

Which is the receipt of success for developing such a platform?

Since 2001, the ULLINK client expe-rience has been grounded in access to our reliability to deliver the most current and innovative technology available in the industry. Clients benefit from ULLINK’s modular, scalable front and middle-office solutions, across all asset classes, encompas-sing low latency, pre-trade risk, algorithmic and direct market access (DMA) trading.

With almost 300 expert staff distri-buted across eight offices (New York, Sao Paulo, London, Paris, Cluj-Napoca, Hong

Kong, Tokyo, Sydney, and growing), with a lot of professionalism, hard work, passion for technology and fun, ULLINK has the local knowledge and expertise to support customers worldwide, around the clock.

Innovation is the salt & pepper over all these products and processes. More information about the trading platforms is available on www.ullink.com

Figure 2 - detailed diagram

Financial software development: trading platforms requirements

requirements

Page 17: TSM_7_2013_en

17 nr. 7/2013 | www.todaysoftmag.com

architecture

The concept of Vendor Lock-in is meant to bring attention upon technical decisions regarding the easiness for inte-grating a source code generator within the used technology as well as the dif-ficulty to customize or even remove certain generated components. This is a common practice. It’s used by Oracle, IBM, Apple, shortly, everyone does it.

In order to detail this concept I chose a case study: Spring Roo vs. Liferay Service Builder. Both are source code generation tools and both are compati-ble with Liferay. From this point of view I will make a DAR (Decision Analysis and Resolution).

For this analysis the following crite-ria will be used:• Meta data: the capacity of cus-

tomizing the generated code through descriptors

• Generated Code Quality: regar-ding coding standards, e.g. Oracle Code Conventions (http://www.oracle.com/technetwork/java/codeconv-138413.html)

• Documentation• Vendor Lock-out: the easiness to

get rid of the generated code or integrate it within the application

• Compatibility: Liferay integration aspects

Meta date - Liferay Service Builder

Benefits are from an Eclipse Plugin which is simple and intuitive in order to run the tool. Another way is to use Ant or Maven in order to run it. The major configuration entry stands as an xml, which will help generate for each entity a domain model, persistence layer and service layer. It will also automatically generate CRUD methods and finders for the entities based on their fields. This tool covers most of the required layers except the presentation layer. However it will offer integration with web services for JSON and SOAP.<?xml version=”1.0” encoding=”UTF-8”?><!DOCTYPE service-builder PUBLIC „-//Liferay//DTD Service Builder 6.1.0//EN” „http://www.liferay.com/dtd/liferay-ser-vice-builder_6_1_0.dtd”><service-builder package-path=”ro.tsm”> <author>Vlad Hosu</author> <namespace>TSM</namespace>

<!-- PLACE YOUR ENTITIES HERE --> <entity name=”Articol” local-service=”true” remote-service=”true”> <column name=”id” type=”long” primary=”true” id-type=”increment” /> <column name=”titlu” type=”String” /> <column name=”descriere” type=”String” />

Liferay Service Builder vs. Spring Roo

R.A.D. also known as Rapid Application Development is common sense nowadays when we’re speaking about development methodologies. Briefly, this methodology assumes gathering of functional and non-func-

tional requirements through workshops or other means of fast communication, prototyping as well as re-using already implemented components. In order to successfully assume this technology regarding the time needed for application deve-lopment, many companies use source code generation tools.

Figure 1 - Structure of Liferay Builder service

Vlad Hosu [email protected]

Senior Developer @ ISDC

Page 18: TSM_7_2013_en

18 nr. 7/2013 | www.todaysoftmag.com

<column name=”autor” type=”String” /> <column name=”likeCount” type=”long” /> <finder return-type=”Collection” name=”Autor”> <finder-column name=”autor”></finder-column></finder></entity></service-builder>

The package-path attribute from the “service-builder” tag is used for setting the base package name of the generated code. The tag “namespace” is used to name the database table namespace; for example, for this entity it will be tsm_Article. The “local-service” and “remote-service” attributes from the “entity” tag are used for specifying local persistence and respectively whether you want web services (JSON and SOAP). Specifying the “finder” tag will generate API as well as implementation for obtai-ning a list of Articles depending on the author field. It is obvious that this example can be customized much more.

Meta date - Spring RooIn order to configure Spring Roo you

need STS (an Eclipse muscled for Spring), or another option is to choose the console. For the console you will need to define a command for each task. You will iden-tify a lot of tasks which can be abstracted in order not to make a repetitive task so much. From my point of view the configu-ration is not as visual as a diagram design tool (which generates code) or an xml. A negative aspect is that for each .java gene-rated file, Roo will also add an AspectJ one, which might conclude in twice as much files, hence a more complex maintenance when it comes to customizing certain components. A very important aspect is that Roo is able to generate all the needed layers, including the presentation one. This is a great pro against the Liferay Service Builder.

The same Article example can be gene-rated with Roo by using the following

commands and we will also benefit from presentation layer, integration tests and Spring Security:• project --topLevelPackage ro.tsm• jpa setup -- provider HIBERNATE

--database MySQL• entity jpa --class ~.domain.Articol

--testAutomatically• field string --fieldName titlu --notNull• field string --fieldName descriere

--notNull• f ield string --f ieldName autor

--notNull• field number --fieldName likeCount

--type java.lang.Long• finder add --finderName findArtico-

leByAutor --class ~.domain.Articol• perform tests• perform eclipse• web mvc setup• web mvc all --package ~.web• security setup

As I was saying earlier, if you’ll need much more entities, you’ll have to repeat

for each of them, the steps which refer to this. The command „perform tests” is used for testing the integrity of the generated entity within the project. The command „perform eclipse” is used for configuring the workspace. If you’re using STS, you won’t need to run this command anymore. Otherwise, either the command has to be run or you need to install an additional plugin for this in order to mavenize the project.

Code QualityIt is important to mention that this cri-

terion doesn’t matter unless you’ll need to access the generated code. Otherwise, most probably the generated code will end up in an external library.

Calitatea Codului - Liferay Service Builder

If we put Sonar (see http://www.sonar-source.org/) you’ll find that at each method there’s at least a Major. For example:

• CatchingThrowableinexceptions } catch (Throwable t) {

• UncheckedCastingAdditionalInformationClp oldCplModel = (AdditionalInformationClp) oldModel;

The manner in which an entity generates is very complex and mainly unconceivable unless to be a part of an API (this because of the desire to support major database providers like MSSQL, PostgreSQL, MySQL and so on). We won’t include here the service layer also which adds up eight more classes: (http://www.liferay.com/community/wiki/-/wiki/Main/Service+Builder)Figure 2 - Structura of Spring ROO service

Liferay Service Builder vs. Spring Roo

architecture

Page 19: TSM_7_2013_en

19www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

Code Quality - Spring Roo Offers a code which respects the best

practices imposed by Oracle and Google (regarding the front-end)

Also you’ll find that at any moment you’ll have the ability to extract a method from generated code state to customiza-ble code state which brings a powerful advantage

Documentation - Liferay Service BuilderThere is only Wiki page available – ine-

xistent documentation. However, you will be able to find much information regar-ding this tool on forums due to the fact that Liferay has big community which is growing.

If you consider a partnership with Liferay you’ll benefit for all the needed support in order to use this tool.

Documentation - Spring Roo Roo however through comparison with

Liferay Service Builder has an enriched documentation. Regarding the forums, the

Roo community is still pretty narrow.

Vendor Lock-out - Liferay Service BuilderAll code needs to be re-written in

order to reach Java extensible code, usa-ble and easy to maintain considering but considering that Liferay generates the API detached from the implementation you can write another implementation at any time in another plugin. However this will never help removing the generated code. Briefly, Liferay Service Builder offers a contract for the services and the model and this should suffice for most of the cases.

Vendor Lock-out - Spring Roo The tool can translate everything

which is written in the AspectJ files into the Java classes. This offers a high degree of extensibility.

CompatibilityIt is important to mention the inte-

gration aspects can sometimes offer a greater time penalty than the source code

generation tool can actually bring. Briefly, there might come up prototyping issues.

Also, Spring integration with Liferay is a bit different, meaning that the Spring container is in Liferay and the bean injection is done in a different plugin. This fact assumes you will have to make an addi-tional configuration in order to use Spring Roo.

ConclusionsAs a conclusion you can consider using

the Service Builder when Vendor Lock-in is not taken into account. Also Code Quality and Documentation lack a bit of confi-dence. This means that you’ll not assume any technology change throughout the pro-ject and also you have enough knowledge regarding this tool. On the other side, Spring Roo will offer a bigger satisfaction regarding the code quality and documenta-tion but you will have a risk for integration, depending on the application prototyping. funcție de prototipizarea aplicației.

ISDC.EU/CAREERS

WE DO PROJECTS

WITH IMPACT. WE

DELIVER RESULTS,

NOT RESOURCES.

OUR CUSTOMERS

ARE IMPRESSED

BY OUR AWESOME

TECH TEAMS.

ISDC

ENGINEERS

YOUR

DREAMS! [email protected]

[email protected]

WE HIRE IN GOOD COMPANY

PROJECT MANAGERPROJECT MANAGER

JAVA DEVELOPERSJAVA DEVELOPERS

.NET DEVELOPERS.NET DEVELOPERS

JAVA ARCHITECT JAVA ARCHITECT

.NET ARCHITECT

Page 20: TSM_7_2013_en

20 nr. 7/2013 | www.todaysoftmag.com

In my personal opinion, a good leader should have the capacity to adapt in every circumstances and situations. I would like to mention that people have different moods and feelings and certainly motiva-ting factors so varied that it is advisable to treat them mostly as individuals not as a group.

B efore star t ing to write about Situational Leadership, I would like to underline the difference between „being a Leader” and „being a Manager”.

At my first job, I had the opportunity to have „a boss” who over-passed the Romanian stereotype of being in a leaders-hip position. I will explain in a few lines what this stereotype means: „a boss” is a person who takes advantage of the status that he has in a company. Frequently „a boss” is the only person that has always right and more than this it is the only per-son who knows better how things should be done. It is sad, because most of the times the employees don’t have a reaction.

If I would have to make a short refe-rence to my first „boss” I would always describe him as a model for me, I would say that he is a „Business developer, people

enhancer, team creator”, because he always was business oriented but without for-getting that results can always be achieved only together with a great team of moti-vated and developed members. Despite the fact that many of us were novices, he knew how to let us learn from our mista-kes, and when to offer support in situations where third parties intervene in our team. He was the perfect combination between a Manager and a Leader. Changing my job and starting in a new working environment I understood that the Leadership Style that “my perfect boss” applied was not suitable in the new company. It was the first time when I realized how important it is for a Leader to know how to adapt in different situations. Based on this key learning point I have started to study in detail this topic and the theoretical model that draw my attention was the one developed by Harsey and Blanchart.

Based on Hersey – Blanchard model I will present the Leadership Styles that sho-uld be implemented by taking into account 2 important factors: motivation and expe-rience of each of team members

This article is the first one when I am writing about Leadership. I have to confess that at the very beginning I was not very comfortable in addressing this topic, because everybody has an opinion on what means to be a Leader and what kind

of Leadership style should be better used. Any affirmation on this topic may be very easy contradicted because there are so many Leadership Theories developed and people can find a lot of counter-arguments.

HR

Situational Leadership

Andreea Pâ[email protected]

Recruiter @ Endava

Page 21: TSM_7_2013_en

21www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

Lider vs. Manager

Leaders have „followers” peo-ple who follow them because they strongly believe in a vision that the Leader knows how to transmit. In our human history it was demonstrated several times, that sometimes leaders can also have a negative impact not only a positive one, but the power with which they transmit their vision and how they attract others is impressive in both cases.

Managers have „subordi-nates” because they have a position in the hierarchical organizational chart. In these situations the employees must listen to managers’ orders, because otherwise they could be „punished”. More than this, managers are the ones who tell the employees what should be done.

Leaders are most of the times charismatics and with excel-lent communication skills, they manage to attack people to follow them.

Managers are more tasks ori-ented than people.

Leaders are people oriented more than task oriented, being capable to create a personal rela-tionship with the „followers” by understanding their needs. Even though Leaders are more people oriented than task, they always keep in mind the final goal and vision that they’ve set.

Managerii sunt orientați spre sarcină și pe ceea ce este de realizat, mai mult decât spre crearea unei relații cu angajații și înțelegerea nevo-ilor lor.

Leaders are risk takers, they see in every challenge that they encounter a big opportunity and they take advantage of it.

Managers are the ones who are not that willing to take risks, they are trying to avoid them.

Leadership Style – DELEGATIVEThe role of the Leader is low, because employees have the

experience and the motivation to successfully accomplish their tasks and to achieve objectives. It is encouraged for the employee to take control and the Leader only interferes only when reques-ted or in crisis situations. Decisions are taken by the employee. In this phase employees can receive new responsibilities, not to be excluded the Leadership ones.

Leadership Style – DIRECTIVEThe role of the Leader is very high by being final responsible

of accomplishing the tasks. Team members have high motivation and low experience the Leader take decisions and communicates task and explains in detail what the employee has to do. In real life are the first weeks of the employee in a new job.

Leadership Style – COACHINGIt is one of the most difficult Leadership Styles, because the

employees are demotivated and they still don’t have the necessary skills to accomplish their tasks. The role of the Leader is dou-ble: increase the motivation of the employee, but also the level of experience, so he has to pay attention on how he communicates the tasks and how much time he dedicates to the employee. It is one of the most risky phases of the Situational Leadership, beca-use the risk of leaving the team by the employee is very high. This phase happens few weeks after hiring a new person and putting him/her in a new working environment.

Leadership Style – SUPPORTIVEThe role of the Leader is to facilitate discussions and decisions

while encouraging the employee to take responsibility on them, because in this phase the level of experience is high. This time the leader is the one who positively stimulates each employee to successfully raise motivation.

For a proper implementation of this Leadership Styles it is necessary that each Leader knows very good every team member.

The Level of expertize it is quite easy to be settled, because from the very first days of a new employee in a company it is known the degree of theoretical and practical knowledge he/she

Page 22: TSM_7_2013_en

22 nr. 7/2013 | www.todaysoftmag.com

holds. The evolution it is simple to follow, by constantly monitoring the way in which he/she works or by the help they require from the other colleagues or leader. It is therefore necessary to evaluate the per-formance to analyze the progress of each employee.

The Level of motivation it is much more difficult to be defined, because it is necessary to build a trustful relationship with the employee in order to identify the factors that motivate him/her in order to become a true performer. A reference system can be the extremely known theory of Maslow. It is important to remember that employees’ age is an influenced moti-vational factor. (Ex: (1) the young employee (25-30 years old) are motivated by the opportunity to develop a career path, (2) the employees that over-past 30 years old are motivated by a flexible working pro-gram in order to have more time to spend it with their family, (3) the older employees (45 – 55 years old) are motivated by involv-ing them in coaching the novices). There are some aspects that should be taken into

consideration. The reward for increasing motiva-

tion is again a different one. Most of the company’s focus is on financial motivation, which is not everything. Money can cover the first two levels of Maslow’s pyramid, but the other 3 what happens? The answer is simple you can use other types of rewards:• Public recognition of the contri-

bution of each employee: offering medals, titles or promotions.

• Recognition programs: employee of the month (clear criteria defined), celebrating success;

• Special awards for great results;• Non –wage benefits; • Career path and career development

opportunities.

And these are only few examples of ways to motivate the employees.

To identify better the level of satisfac-tion, it could be used different instruments for evaluating the level of motivation: questionnaires, interviews, individual dis-cussions, focus groups.

From the theoretical point of view things are easy, but when it comes to imple-mentation things are getting even difficult, but I believe that the results that could be accomplished are worth all the effort.

Who would wish to come with plea-sure and energy every day at work? I don’t believe in the ideal company or ideal job, but I truly believe that the beauty of a job is to put passion in all the responsibilities and tasks that you have to do and more than this to be part of a team with a vision an common objectives and goals, with a manager that can overcome the hierar-chical barriers. I have the chance to come daily at work and to meet leaders from all the fourth Leadership Styles mentioned above. To see directive Leaders who are there to explain in detail how a task sho-uld be accomplished. I see Leaders who motivate people and who are preoccupied in assess their development needs and to build together a career path. I see Leaders who unleash the potential of their team members. I see colleagues who are capable to become Leaders for the new hires. And I see an organization that grows sustainable, because the people inside it are doing the same.

I wish all good luck and if you want to find more about this topic, do not hesitate to read: Management of Organizational Behavior (10th Edition) by Paul Hersey, Kenneth H. Blanchard and Dewey E. Johnson (Jul 28, 2012).

Situational Leadership HR programming

Page 23: TSM_7_2013_en

23www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

The Case for PHP

The first version created by Rasmus Lerdorf in 1994, was written in C and was a suite of scripts to monitor visits to his personal page (Personal Home Page Tools). Over time it has brought more functiona-lity suite of scripts, so it was capable of connection to the database, allowing users the capability to develop dynamic web pages. After a period in which he experi-mented with various new functionalities, returned in 1995 with a rewritten version of PHP.

The language was intended to be simi-lar to C structure can be easily adapted to the original developers of C, Perl and other similar languages.

In 1996 the new version 2.0 included supports for DBM, mSQL and Postgres95, cookies, upload files and other impor-tant functionalities dynamic web pages required.

In 1997, Andi Gutmans, Zeev Suraski and Rasmus Lerdorf have decided to rewrite and turn it into a mature pro-gramming language / modern, resulting in version 3.0, a version that had a great suc-cess among web developers covering 10% of web servers on the Internet.

As a result of this success and that is

not only developed web pages but also web applications, performance improvement was needed, taking birth version 4.0 in 2000, behind which is the Zend Engine.

Version 5.0, the most mature to date, based on engine Zend Engine 2.0, was launched in 2004, and brings support for OOP programming in PHP. Together with several projects very close to language: PEAR and PECL, PHP brings a wealth of facilities, libraries and extensions.

So, after this brief introduction to PHP language we cannot deny that PHP did web development accessible to users and developers.

Integration with web serversPHP integration with Web servers

experienced a variety of models. The first one, CGI, was the base from which we started expanding and enhancing the pro-gramming language. Ways in which this programming language was built in web servers include: CGI / FastCGI / Apache SAPI, CGI / FastCGI / IIS ISAPI for Microsoft’s product, and FPM for new and promising nginx web server, web server with a major increase in recent years due to high Performance and high stability.

PHP is a programming language dedicated to developing web pages and web appli-cations. Its name is a recursive acronym meaning PHP: Hypertext Preprocessor, adopted the name after the release of version 3.0.

programming

Ioan [email protected]

Senior Web Developer@ 3Pillar Global

Page 24: TSM_7_2013_en

24 nr. 7/2013 | www.todaysoftmag.com

programming

CGI - Common Gateway Interface, means that every time the web server recei-ves a query for a PHP page, the PHP upload a new process, the result of processing the request and giving back to the web server, which in turn sent him web browser. An improvement was made with FastCGI, so not every request to create a new process, but it will be reused for other applications. A recycling process was also implemented so that these processes had a fixed number of applications determined life or the life-time of the process.

Integration as how Apache web server (AIPS) was still an option that PHP was built in web server, PHP becomes an active component of the web server and there was a separate process. For Windows servers, IIS ISAPI called it.

As the newest and most advanced inte-gration method, FPM (FastCGI Process Manager) is more than a simple FastCGI, with the convenience that this technology brings: fine control of the process running PHP, the ability to control the number of processes depending on the server load, the control of these processes by turning them under different users, and more.

Continuous development and inter-connection with web servers to increase performance and high security level continues to keep PHP as the preferred programming language in relation to other programming languages.

PHP vs. other languages

PHP vs. PerlPHP was the prototype language Perl,

so the syntax is similar, therefore PHP Perl has common features with the. But PHP has been from the very beginning web programming language, while Perl site was created as a scripting language.

PHP vs PythonPHP and Python are the most popu-

lar web programming languages in this period. PHP syntax is similar to C lan-guage, anyone who has worked with C assimilate the language in a very short time. Python’s syntax is based indenture is also very simple and similar pseudo-code. Using languages PHP, Perl, Ruby you often several solutions to implement a certain functionality, while using the Python lan-guage is not so encouraging developers to solve a problem from the beginning using the best solution.

PHP has a list of more than profiling tools, debugging, frameworks, extensions and open source libraries, making work a lighter Developer, it’s got but the various tools needed to solve the problem faced.

However Python is a popular language that is gaining more and more followers in recent years due to the elegance of this lan-guage, which is exemplified by the use of this language by Google.

PHP vs ASP:PHP uses a language similar to C / C +

+ on the one similar to Basic ASP and PHP performance is high because running in dedicated memory area (CGI / FastCGI).

PHP vs Ruby:Ruby and the Rails framework site,

has attracted many followers of release. Many PHP programmers migrating after a few years into this language, but not actu-ally migrate to a programming language but to a duplex: a programming language framework.

Both are slightly deficient in terms of documentation, but PHP has the advan-tage of longevity while in Ruby, it could not keep from rapid growth and has some gaps in the documentation.

The trend of using PHP for Web sites is still a rose from 77.2% of websites in December 2011 to 78.5% in December 2012.

AdvantagesWithout going into polemics and

without starting a war of server side programming languages, we can easily dis-tinguish the advantages of choosing PHP as a programming language for web project: a large number of experts compared to other languages, rich documentation, a large community and many helpful resources (libraries, extensions, modern frameworks)

Web developer is not defined by a

The Case for PHP

diverse

Page 25: TSM_7_2013_en

25www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINEdiverse

programming language, this is merely an instrument of his work. When the project requires it, he may choose another instru-ment or even more, perhaps even more effectively (s) for the project.

DisadvantagesPHP as a programming language has a

fairly long history and over time has seen many rewrites, improvements and fixes. Some of the largest were in the security category. But they are probably related to the process by which versions of PHP was originally released, a process that was recently changed: although it is an open source programming language PHP has again organized a group called PHP / QA Team, which is the main purpose develo-per support through high quality versions released.

On the other hand, PHP can be accused some inconsistent elements: inconsistent names of functions, function parameters unnatural order some customized solu-tions that can be a little awkward. At one level, this language requires more attention Developer, due to the high flexibility offe-red by this language.

FrameworksAs a consequence of this increase PHP

web developers as preferred language, many frameworks have emerged devoted to various types of web sites and / or Web APPLICATION. Most areas were cove-red: from e-commerce, blogging, social networking pages to complex web appli-cations infrastructure by type framework sites MVC (Model / View / Controller).

Wordpress as a CMS framework type (Content Management System), has faci-litated the development of many blog type websites, making new web acces-sible not only experts or developers and content publishers information on the net. Frameworks like Magento and osCommerce online store dedicated infra-structure have brought them too many online retail businesses.

Framework MVC type sites are con-stantly developing new versions appearing adapted to new requirements for perfor-mance, security and scalability. Mature frameworks like Symfony and Zend Framework to version 2.x Both reached, use the new facilities provided by the pro-gramming language.

In parallel, development libraries ORM (Object Relational Mapping) used these

frameworks to keep pace with new needs. The most important Doctrine, Propel and ZendORM progressed, and even construc-tive competition exists between them, say constructive, because it triggers a signifi-cant increase in their Performance.

The Symfony Framework, noted for its appearance as a PHP framework that promotes the design and structure that allows a rapid application development (RAD). Symfony encourages developers to follow a set of best practices in web appli-cation development. Also a growing and active community makes this framework to be very attractive for developing web applications.

Currently, Symfony is defined to be: a PHP framework, a philosophy and a community.

One of the sites CMS frameworks, Drupal announced this year as the Symfony components will use version 8.0, which shows that Symfony is a role model and offers besides a full-stack framework for developing web applications, and other resources and integrated innovations inde-pendently in other web projects.

I gave the example of the framework, due to my experiences of fun with it. An experience devoid of tests or challenges stands even downright interesting.

One of the qualities you see in this framework, along with rich resources as documentation, plugins, bundle links, code snippets, tutorials (even video), is that this framework gives the developer more time to solve the problems of architecture, design of new product, to the detriment to write code in industrial quantities. For every problem there is a solution alre-ady written, leaving the developer to only address specific project issues.

Famous Cases

FacebookIn addition to numerous known and big

websites made in PHP (Wikipedia, Yahoo, Digg, etc.) is Facebook, which is a special case, not only because of its complexity, the tests and technical barriers experien-ced by teams (development, deploy, QA) on Facebook, but also how to solve a specific problem projects of this magnitude.

PHP performance has become cause for concern in the team after massive incre-ase in the use of the portal, and came to make a choice between PHP replace or find another way to improve this performance.

And so HipHop project, which was launched in 2010 as an open source pro-ject on Github, licensed under PHP 3.0. HipHop for PHP is a tool to transform PHP code, thus achieving a reduction in CPU uses Facebook servers up to 6 times. A more than massive improvement is now available in PHP community.

YahooAnother case worth mentioning is

Yahoo, which in 2002 began the transition to a proprietary system written in C/C++ to PHP.

FutureWere recently launched new versions,

5.2, 5.3, 5.4 and 5.5-Alpha, which conti-nues a major improvement programming language. They added its support for namespaces, „traits”, „late static bindings”, „generators”, with smaller improvements and fixed defects. Version 6.0, which now allow less expected, promises a full native support for Unicode in PHP and is still in development.

ConclusionPHP as programming language actively

in development, has a solid foundation, a rich history, an active community and innovative. Libraries, extensions, fra-meworks and modules develop into a steady pace and accelerated web develo-per offering a palette full of choices in the design and implementation of solutions. PHP is still the main language used for web programming.

Page 26: TSM_7_2013_en

26 nr. 7/2013 | www.todaysoftmag.com

Alternative PHP runtimes

The test platform was a quad-core [email protected] virtual machine with 1G memory. The operating systems used were Ubuntu 12.10 Server / Windows 7 Pro. I used an installation of WordPress 3.4.2 populated with the content of transylva-nia-jug.org. The database was MariaDB 10.0 under Linux and MySQL 5.5 under Windows.

The performance tests were repeated several times to make sure that the results are stable and reproducible. If the runtime platforms were using JIT, a “warm-up” period was granted to give time to the com-pilation/code analysis process time to run.

Standard interpreter• Ease of setup/use: easy (often comes

preconfigured)• Cost: Free• Supp or te d Pl atforms : *n ix ,

Windows, Mac OS X...• Advantages: ease of use, almost

perfect compatibility, over 50% per-formance increase (with opcode caches)

• Disadvantages: performance bene-fits are small compared with the theoretical values of more exotic

platforms

The standard PHP interpreter is avai-lable at php.net and is written in C. It runs the source code in two steps, repeated for every page request:• first it parses the source code and

generates byte codes (opcodes) encoding the functionality of the original source. Includes / requires are resolved at this stage

• then it runs the byte code using the interpreter and generates the resul-ting page

This execution strategy suggests an obvious optimization strategy: store the generated byte code and avoid parsing of the source repeatedly if it didn’t change. This optimization is implemented by seve-ral libraries/extensions known collectively as „PHP opcode caches” or „PHP accelera-tors” of which I tested four (a more detailed list can be found on Wikipedia ):• APC - Alternative PHP Cache• XCache,• eAccelerator,• Zend Server.

PHP is a very popular dynamically typed scripting language available on a variety of operating systems. There are however alternatives to the standard interpreter which provide various features that may be advantageous in certain circum-

stances. This article aims to provide a theoretical and practical overview of the existing options. The practical part consists of running the synthetic performance test from the PHP source tree against each runtime and testing a WordPress site with Apache Bench .

Attila-Mihaly [email protected]

Code Wrangler @ UdacityTrainer @ Tora Trading

programming management

Page 27: TSM_7_2013_en

27www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

The first three options are open source and free. The fourth is a commercial pro-duct of Zend Technologies which includes more than just opcode caching: perfor-mance monitoring, troubleshooting and so on. For testing I used Apache 2.2 in prefork mode with mod-php. I also did a quick test with FastCGI but I didn’t notice a perfor-mance difference (this being said, the test focused exclusively on the performance of PHP - in a less artificial benchmark you may see differences between the two alternatives).

A solution offering similar features for the Windows platform is WinCache . It was tested separately (see the “IIS 7.5 with PHP 5.4.9” section below). The project is sponsored by Microsoft and is specific to Windows platform.

All the tests were run with and without the Suhosin security extension and there was no measurable performance difference. This shows that security doesn’t necessarily affect other features (such as performance).

As can be seen from the results at the end of the article, these solutions provide a speed increase of 50% for repeated exe-cution of PHP code. If the code is executed only once, they offer no advantage and can even slow down the execution slightly (as seen in the results column for „bench.php” the shortest running time was observed when no opcode cache was present).

Note: these solutions are general (they work for any site that uses PHP). For speci-fic cases there are solutions that can provide huge performance benefits compared to the generic solution. For example installing a cache plugin for WordPress I could reduce the execution time for ApacheBench to 0.08 seconds (which is a more than 80 fold improvement over the best results obtained by opcode caches!).

Hip-Hop VM from Facebook• Ease of configuration/use: medium

(there are prebuilt packages for some Linux distributions)

• Cost: Free• Supported Platforms: *nix• Advantages: improved performance

(theoretically)• Disadvantages: limited number

of supported platforms, limited number of plugins (extensions) supported, not all standard PHP functions are supported (for exam-ple preg_replace was not supported

at the moment of testing)

Hip-Hop VM is a runtime environ-ment for PHP created by Facebook to run the PHP code behind their website and then open-sourced. It was written because opcode caches did not provide the desired performance but at the same time the com-pany did not want to switch programming languages. The Hip-Hop project has gone through several phases:• initially it was transcribing PHP

code into C++ that was compiled with GCC . The project was called HPHPc at this stage

• compiling C++ code was slow (com-pared to regular “save and run” to which PHP developers are accusto-med). Thus they created HPHPi the aim of which is to run the code in an environment similar to production (so that bugs can quickly be disco-vered) but without the overhead of the compilation process

• in the current phase they work on a virtual machine called HHVM which compiles the code using JIT

Installation was performed using the prebuilt packages for Ubuntu 12.04 (cur-rently compiling fails on Ubuntu 12.10) and the indications from the HipHop for PHP blog . Some WordPress plugins had to be uninstalled because of they used functions unsupported by HHVM. The performance numbers were well below expectations.

Caucho Resin• Ease of configuration/use: medium

to easy• Cost: free/commercial• Supported platforms: Windows,

Linux, Mac OS X, etc.• Advantages: high performance,

clustering, scalable, easy integration with Java systems

• Disadvantages: Limited number of extensions, cost

Caucho Resin is an application server (a term familiar to Java web developers). This means that it deals with all aspects the running the application and you don’t need to use other software (such as Apache as web server, Squid/Varnish for reverse proxy, a database connection pooler, etc.) because these roles are filled by Resin and components loaded into Resin. The module

responsible for running the PHP code is called Quercus.

Those who used other Java application servers like Tomcat will feel right at home. Others will need some time for adjustment. The biggest advantage offered by Resin is the easy integration of Java code with PHP (PHP code can instantiate Java classes, call Java methods etc.). It is a solution worthy of consideration for companies having exper-tise on the Java side and which need to use / integrate with a couple of PHP applications.

The biggest disadvantage is that it does not use the standard PHP libraries/exten-sions, rather it re-implements them in Java (and the set of re-implemented functions is not yet complete). There are two versi-ons of the server: the open source, freely available one and the commercial one. Its performance places it towards the middle of the tested solutions

IIS 7.5 with PHP 5.4.9• Ease of configuration/use: medium

to difficult• Cost: commercial (IIS, Windows) /

free (PHP)• Supported platforms: Windows• Advantages: availability of all stan-

dard extensions, integration with Windows technologies (COM, Active Directory, etc.)

• Disadvantages: cost (for the OS), complicated setup process

There are several ways to install the standard PHP interpreter on Windows: manually, using WebPI , packages like XAMPP , etc. For this test the manual installation was chosen because WebPI currently installs PHP 5.3 (an older ver-sion). WinCache 1.3.4 was also installed for better performance (WinCache is not installed by WebPI). More difficulties were encountered during the benchmarking, the most disturbing of which is the presence of an approximately 2 seconds delay for every HTTP request. This resulted in very poor performance on the first run of the bench-mark. The problem was caused by a DNS lookup issue and was solved by using „skip-name-resolve” in the MySQL configuration and by changing the source of Wordpress to use persistent connections, after which the benchmark was redone.

management

Page 28: TSM_7_2013_en

28 nr. 7/2013 | www.todaysoftmag.com

IIS 7.5 with Phalanger 3.0• Ease of configuration/use: medium to difficult• Cost: commercial (IIS, Windows) / free (Phalanger)• Supported platforms: Windows, Linux (using Mono)• Advantages: availability of all standard extensions can use

native extensions compiled for Windows, .NET integration, access to Windows technologies (COM, Active Directory, etc.)

• Disadvantages: cost, complicated setup procedure

Phalanger is a re-implementation of PHP on Microsoft’s .NET platform. It’s an open source project and can be used on multiple platforms/web servers (Apache under Windows, IIS on Windows, and Apache under Linux with Mono). It is the easiest to set up using IIS, thus this option was chosen for the benchmark.

Besides the supposed speed advantage, Phalanger has several advantages:• the close integration between .NET and PHP (the PHP

code can call .NET code and vice-versa)• includes a compiler that can generate executable from PHP

files (which still depend on the .NET framework and the Phalanger runtime libraries however)

• can use native extensions compiled for Windows if the “managed” version is not available

Untested alternativesThe options analyzed in detail were the ones which are most

readily available and actively supported by the community. There are many other projects that do not fall into these categories and as such they will be only briefly mentioned:• TalariaTech - a commercial product. Their website con-

tains very few details. They promise “a 10x performance gain on real applications like WordPress or Drupal”

• php-llvm - is an extension which generates native code from PHP byte code using the LLVM project. It is in its early stages of development and I was unable to compile it.

• phc - the open source PHP compiler - is based on the same idea as the original version of Hip-Hop (translation of PHP code into C++ code which is then compiled with GCC). Unfortunately the current ver-sion cannot be compiled under Ubuntu 12.10

• Hippy VM - an open source project based on PyPy. It was designed as a performance test. The PHP extensions were never implemented and it pro-vides no way to be integrated with a web server.

• php.js - is a partial implemen-tation of a PHP-to-JavaScript compiler. This creates the foundation for interesting use cases (such as running PHP code directly in a web page or on the server with Node.js), but currently cannot parse/compile bench.php

• Roadsend PHP and Roadsend PHP Raven - are two rela-ted PHP compilers that are no longer actively developed and are not compliable with the current versions of the libraries they depend on

• Pipp - is a PHP implementation on ParrotVM, a virtual machine “designed to efficiently compile and execute byte code for dynamic languages”. It is not actively developed and is not compatible with current version of the libraries it depends on.

• PHP4Mono - was developed in 2005 as part of a graduate project. Development stopped in 2006 and the current ver-sion is not able to compile bench.php

• Project Zero / IBM sMash - a project from IBM which seems no longer to be supported. It is a PHP runtime written in Java. It has the advantage that native extensions can be used directly through JNI

ConclusionThere is no general solution that will work for any PHP appli-

cation (aside from opcode caches). Alternative technologies/runtimes are worth considering when there is a need to provide specific functionality (for example integration with Java or .NET) but they do not provide a performance advantage. At the same time they assume a high degree of familiarity with the platform underlying them (for example you should know about things like WEB-INF or web.config). I would not recommend them for someone who has never used the platform for other applications.

Almost everybody should be using an opcode cache (APC or eAccelerator probably) and should consider application-specific modules for caching (like W3 Total Cache like or WP Super Cache for Wordpress).

Performance test results

Alternative PHP runtimes

programming business

Page 29: TSM_7_2013_en

29www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

Companies are thus under pressure to increase their agility, and according to the lessons learnt during the last few decades, the most efficient manner of reaching this goal is by concentrating the efforts of the company on the aspects that really matter and at the same time by externalizing those functions that can be managed more effici-ently by external experts.

The DilemmaThe challenge resides in identifying the

critical functions, which bestow unique-ness on the market value of the company, from those that can be externalized. The gardener will never buy cucumbers from other gardeners, because this would mean limiting their potential and added value, thus implicitly the profit margin; howe-ver he will always be interested in buying equipment, cultivation technology, fer-tilizers, pesticides, fungicides, and seeds from specialized suppliers. The produ-cers of standard software solutions (ISV companies) are confronted with the same dilemma, but the slightly higher complexity than in the case of gardening leads to a less clear border between the final product, the

development process and the technology used. The question raised is, in fact, which are the real “cucumbers” of the producers of standard software solutions? Or said in a different manner: does it make sense for an ISV to externalize the development process of its own product?

The challenges of an ISVIn order to answer correctly to this

question, we first must have a look at the main challenges that the ISV companies are facing in the new context of development for the software products.

FlexibilityThe condition of adaptability requi-

res flexibility in allocating the resources for development. The optimum can be attained only with teams that vary in size during a period of time, and this is difficult to achieve when costs increase from one year to the next one. The opportunities for expansion and optimization of products are neglected because of the pressure coming from the market and from the competition. The new ideas must wait in line on the list of priorities, and many times they end up

It is no longer a surprise for anyone that we live in hyper-dynamic times, when the rhythm imposed by the new trends and technologies creates an environment favo-rable to those who are capable of adapting quickly, anticipating the positions the

market is going to adopt.

business

What are the real cucumbers of the ISV gardener?

Mihai Nadăș[email protected]

CTO@ Yonder

CTO at Yonder, in his role being responsible for the R&D activities and for increasing the level of innovation of the products of Yonder’s partners.

Page 30: TSM_7_2013_en

30 nr. 7/2013 | www.todaysoftmag.com

being implemented with delay, thus mis-sing opportunities for development and for reduction of costs.

InnovationTechnology evolves at a pace with

which the original development team can-not keep up, so that they would have both a vision regarding the applicability of the new trends and technologies as well as the experience needed in the actual imple-mentation of those. The consequence translates to delays in the cycles of moder-nization which imply costs and limitation of new opportunities. For instance, Cloud Computing is a paradigm which will ine-vitably dictate the new order in the coming decade; however, even though the techno-logy surrounding it has been available on the market for at least 5 years, too few com-panies defined a clear strategy for adopting it. There will come a moment, not too far away in the future, when the threshold of critical adoption will be crossed, and those who will not have benefited from the advantages offered by the new model by then will suffer.

Efficiency and predictabilityThe process of development of software

solution is a complex one, and one

subjected to risks. For meeting deadlines are sacrificed most of the times accuracy, with an impact on the quality and degree of the final client satisfaction. At the same time, because it’s lacking a high degree of maturity, the efficiency of the development process is affected, while the final costs rise to be significantly higher than optimal.

DaaSThe list above represents a common set

of challenges for most of the ISV compa-nies I come in contact with, regardless of their size. The solution I found to be most adequate each time consists of externali-zing the responsibility for solving these. The reason is a very simple one - “the cucumbers” of the ISV companies are the products they sell on the market. This means that what is truly essential for these companies is to understand and to have a vision regarding what the market expecta-tions are, to structure these requests and finally to sell their product. The process through which the identified requests get to be put into practice in a new version of the product may also be according to the observations made during a period of time and must be completely abstract. In the same way as in 2020 very few companies will buy IT infrastructure that they will

manage by themselves, choosing instead the IaaS model, the ISV companies must begin to think at a similar moment for the technical development of their products. A simple analogy with Cloud Computing made me think of DaaS – Development as a Service. I think it represents accu-rately the essence of what the new trend may be on the software market, namely the specialization of some companies in the direction in which they serve the pro-ducers of standard software solutions by serving them in a transparent manner, but fully externalizing the development pro-cess (SDLC).

At Yonder we have been success-fully experimenting with this model for over a year and the conclusion that our ISV partners from Western Europe are communicating to us is a completely favorable one; this makes me even more confident in its potential for the future

External links• innovation.tss-yonder.com• mihainadas.com

What are the real cucumbers of the ISV gardener?

business

Page 31: TSM_7_2013_en

31www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

The file name is login.gsp (which stands for Groovy Server Pages). We will add a login form to it. Listing is here: https://github.com/tavibolog/GrailsSocialNetwork/blob/master/grails-app/views/user/login.gsp

This is plain HTML with additional tags specific to Grails. These are pretty similar with other view templates, so I won’t insist too much. One thing to mention is the “url” parameter of the Grails form, which allows you to specify the controller and action to be executed on form submission.

Let’s start the application now, by running run-app command and browse to http://localhost:8080/GrailsSocialNetwork. You notice that app redirects to the login page under http://localhost:8080/GrailsSocialNetwork/user/login. Because of the security filter we created, Grails redirec-ted the application to UserController and “login” action, which rendered the “login” view. If you try to login with an incorrect user/password combination, you noticed an error message being displayed: “Wrong username or password!”, because for this case, the “login” action renders back the “login” view and passing to it the model, which is basically a map. In our case, the map contains a “message” key and associ-ated value (the error message itself). Then, on the “login” view, we test for the existence of the “${message}” variable and render it as error. The “model” is implicit in the GSP files, so no need to call it explicitly.

Let’s try to use the proper credentials of one of the users we created in BootStrap. The login is successful, and we get redirected to /message/list, but we don’t have yet the asso-ciated controller action and view and we get a not found/available page from the servlet

engine used by Grails (Tomcat) To avoid this, we need to build

the action to list the messages in the MessageController:

def list() { def allMessages = Message.list() def myMessages = Message. findAllByUser(session.user) [allMessages: allMessages, myMessages: myMessages] }

This action retrieves all Message instan-ces we have (posted by all users) and also all the messages of the current user. After the successful login, the “current” user object was set on the session and can be used in the controllers. Both queries are possible due to GORM. The action returns a map contai-ning the two lists and will render them with the associated “list.gsp” view file.

Few things here:• Name of the key and value on the

returned map is identical, but this is just habit and there is no restriction

• On Groovy, keyword “return” is not mandatory, but the last expression that can be evaluated is considered the returned value.

• You can put different types in maps and lists, but be careful when you read them

Listing of the view is here: https://github.com/tavibolog/GrailsSocialNetwork/blob/master/grails-app/views/message/list.gsp

Let’s now create our login page for the application. As I mentioned in the beginning, Grails uses conventions a lot. This means that if you have a domain class called “User”, you need to have a “UserController” controller. If you have an action defined

in a controller, like “login”, you need to have a view called “login” view under grails-app/views/user. To create views, Grails offer a script: generate-views com.todaysoftmag.gsn.User, but for the time being we can just create them by hand.

programming

Tavi [email protected]

Development lead @ Nokia

Introduction to Grails (II)

Page 32: TSM_7_2013_en

32 nr. 7/2013 | www.todaysoftmag.com

Few things here:• Session object is used to show the

current logged in user. “session?.user” syntax is used to verify that “session” is not null before getting the “user” on “session”.

• Flash.message is an informative message used to show an end result based on a previous user action. We will see below how this gets created on the controller.

• G:link is displaying a link to the action called “create”. Since there is no controller specified, the action has to be in the MessageController (current controller).

• G:each is used to iterate over list of objects. The list is declared in the “in” parameter and you can define a variable with “var” to use it in the loop. If no variable is defined, “it” is the default variable name. To show the post, we called the toString() method implemented for Message domain:

String toString() {message + „ on „ + date + „ by „ + user}

which uses toString() from the User domain (mind again the usage of return is not mandatory, last expression that can be evaluated gets returned):String toString() {userName}

Now, we have all our friends messages displayed and also we can see ours. One last thing we will do is to create a new message in the spirit of keeping everybody up to date with what we’re doing right now.

For this we need “create” and “save” actions in the MessageController and the associated view here: grails-app/views/message/create.gsp. Listing is here: https://github.com/tavibolog/GrailsSocialNetwork/blob/master/grails-app/views/message/create.gsp

“Create” action is used to handle even-tual request parameters when displaying the create message view. It is pretty basic, by just passing to the view an eventual Message object that can be constructed from request parameters to prefill the form.

def create() { [message: new Message(params)]}

“Save” action is the one posting the message and handling validation and redirects: def save() { def message = new Message(params) def user = User.findById(session.user.id) user.addToMessages(message) if (!message.validate()) { render(view: „create”, model: [message:message]) return } if (!user.save(flush:true)) { render(view: „create”, model: [message: message]) }else{ flash.message = „Message posted with success!” redirect(action: „list”) } }

Let’s see what happens here:• We create a message object from the

request parameters coming from the “create” view

• We look for the current user and add the message to it

• Validate the message attributes. This will invoke the constraints applica-ble to Message objects and, in case of errors, it will fill those in the “errors” attribute of Message.

• If validation fails, we re-render the “create” view with some error messages (internationalization will be discussed on the next article)

• If validation succeeds, we persist the changes, and instruct GORM to flush them into the storage

• If persistence fails, we re-render the “create” view with some error messages

• If everything ok, the application redirects to the “list” of messages, but issuing a flash message. These are messages that can be used to capture user attention.

Another constraint that can be added is on the request methods allowed for each action. This is pretty straightforward to add in a controller – example below to restrict “save” action execution to only HTTP POST request, while rest of actions won’t have restrictions:static allowedMethods = [save: „POST”]

Unit testsGrails automatically creates unit test

classes for each controller, service, domain, filter, etc. created. In this chapter I would like to discuss briefly about writing and running unit tests for controllers. Grails is keeping its tests under “/test” folder. Tests could be “unit” and “integration” (there is a 3rd category, functional, but this is tes-ting using another framework to test via HTTP requests). Integration tests are well suited to test integration of components of the same application or integration with 3rd party components. I will not insist too much on those, but would mention that you can run them from Grails console: test-app –integration or test-app –integra-tion <Fully qualified test class name>. And that integration tests are usually way slower than unit because of the context they need.

Unit testing is my favorite part of tes-ting, because tests are fast, pinpoint the problematic code very fast, do not depend on other system running and allow deve-lopers to test corner cases (with help of mocking).

Let’s write few unit tests, star-t ing w it h t he Mess ageC ont rol l e r class. This has an associated test class MessageControllerTests:

@TestFor(MessageController)class MessageControllerTests { def messageController @Before public void setUp() {messageController = new MessageController()} void testRedirectOnIndex() { messageController.index() assertTrue response.redirectedUrl == „/message/list” }}

Here is what happens here:• @TestFor annotation marks that this

is a test for the MessageController.• setUp method behaves as in Junit

(executed before each test method due to @Before annotation)

• testRedirectOnIndex is the actual test (it starts with test, so there is no need to annotate it with @Test, but @Test annotation is also accepted)

• the test is calling the index method of the controller (which actually does a redirect)

• it asserts if the redirect is the expec-ted one (response object is available in tests)

Moving now to the UserControllerTest class, to test the UserController:

Introduction to Grails (II)programming

Page 33: TSM_7_2013_en

33www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

@TestFor(UserController)@Mock(User)class UserControllerTests { def userController @Before public void setUp() {userController = new UserController()} void testWrongUserNameOrPassword() { request.method = „POST” params.username = „notfound” def user = new User(firstName: „John”, lastName: „Doe”, userName: „jdoe”, password: „passwd”)

mockDomain(User, [user]) userController.login() assertTrue view == „/user/login” assertTrue model.message == „Wrong username or password!” } void testLoginWithSuccess() { request.method = „POST” params.username = „jdoe” params.password = „passwd” def user = new User(firstName: „John”, lastName: „Doe”, userName: „jdoe”, password: „passwd”)

mockDomain(User, [user]) userController.login() assertTrue response.redirectedUrl == „/message/list” assertTrue session.user.userName == „jdoe” }}

Here is what happens here (things which are new compared to the previous test class):• @Mock annotation specifies that this test will use specific

mock objects• Request object can be accessed in tests and we can prepare

our test data using it• mockDomain is used to mock domains specified by the @

Mock annotation. This is useful because of offers support for findBy* methods and long list of injected method.

• assertions use additional objects now: session – current ses-sion, model – which is the model returned to a view, view – which is the view name to be rendered

Conclusion and next stepsGrails helped my team to improve drastically the develop-

ment speed and also helped in a better utilization of team’s skills. Learning Grails was fun and fast, but of course we’re still learning while we hit into one of the not so groovy issues from time to time.

Personally, I’m happy we use Grails in our project and I recom-mend the usage it in any web project. I think at this moment the support of the framework is mature enough to be used with very good results in your projects.

The demo GrailsSocialNetwork project, built for this article is available here: https://github.com/tavibolog/GrailsSocialNetwork. It was developed using STS 3.1 on Eclipse 3.8.1 on CentOS 6.3, using Grails 2.0.4 and Groovy 1.8.

In the next article will discuss more Grails related stuff: custom validators, packaging, persistence, tag libs, internationalization, url mappings and more Groovy.

Bibliography

• http://grails.org/documentation• http://www.springsource.org/downloads/sts-ggts

Page 34: TSM_7_2013_en

34 nr. 7/2013 | www.todaysoftmag.com

Windows Azure Mobile Services

Besides the application that we need to develop, we often need a backend. Even if it is something very simple, such as data storage, it is necessary to invest time in this area.

Helpfully, Microsoft comes up with a solution in cloud - Windows Azure Mobile Services. This collection of services helps us develop in a very short time the back side, without requiring knowledge of SQL, Web Services and security.

Imagine that presently when we can develop the storage of Windows Azure data in less than 10 minutes. All you have to do is to create a class to store our data and a table in Mobile Services. We can copy from the local portal a project that is configured for our solution - no additional setup is

required.The first question that comes to our

mind is what kind of platforms are suppor-ted. We have currently three platforms that are natively supported: Windows Phone 8, Windows Store (applications for Windows 8) and iOS. Specifically, we have native support for iOS. What do we mean by native support? We provide a compo-nent through which we can enter our data. Windows Azure Mobile Services offers three types of services exposed through an API in REST format:• Data - data storage• Users - user authentication,• Push - sends notifications to the

user.

The number of people who own new generation tablets or mobile phones is increa-singly higher. Nowadays, almost every family has at least one device of this type. Much of the desktop applications have been or will be ported on this kind of

devices. On tablets and phones we can currently see everything, from Office to very complex games.

technologies

Radu [email protected]

Senior Software Engineer@iQuest

Page 35: TSM_7_2013_en

35www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

We propose the following part of the article to examine each service. Let’s begin with Date. Through this service we can store any data in Windows Azure and easily access them to a highly mobile app

We can store data in these tables can be of any time. The only condition is that these data are to be serializable. For those in the NET world, this translates to any entity that is decorated with the DataContract attribute. Each entity must have a pro-perty called „id” integer. This will be used to uniquely identify each entity separately. Each entity can have several properties of value type. Data is stored as a non-rela-tional database. Therefore, if you have references between objects, it is necessary to separately charge them using the id.

When you add a new property, you do no need to change the table definition. This is done automatically. All data that is sent on the wire are in JSON format and the layout is natively supported. Every table you create in Mobile Services may have different access rights, besides the name, for each partial operation (Insert, Update, Delete, Read). The four types of rights that we can use are:• Anybody with the application key

- Any user that uses the application can perform the operation on the table.

• Everyone - anyone who has the access credentials to Mobile Services can perform the operation, even if this is not made in our application.

• Only authenticated users - only users who are authenticated can perform the operation on the table.

• Only scripts and admin - the operation can be executed only by administrators or by scripts (It is suitable for delete or update operations).

In addition to this functionality, each operation can have a script attached on the server side. Through this script we can run any action, before the order is run on the table. We can change the command that the client sends, we can validate the data, we can even check the user and if we are to reject on request.

Setting these scripts is the gateway and the language is JavaScript. Although it seems strange, Microsoft chose to use this language for two reasons. Firstly, the reason is that this language is known by almost any developer (iOS, Web, NET). Besides this, JavaScript is a dynamic language, the-refore changing and running is extremely

simple. If we write the script directly into the portal we see that there is support for IntelliSense, which can to be very useful. There are many NodeJS libraries available for this location. We can, for example, send requests to various services without any problems.

In the following example, we will check that the length of the name is at least three characters, otherwise we have an exception

function insert(item, user, request) { if (item.name.length < 3) { request.respond(statusCodes.BAD_REQUEST, ‚The name of the student is to short.’); } else { request.execute(); }}

There are several things to which we must be careful. For example, we cannot have global variables or to store our libra-ries. We can define methods but they must be in the script. On the other hand, nothing is stopping us to call other service or upload data that are stored in other tables. Because these scripts can only be set from the por-tal, their management in a source control can be problematic.

This feature is extremely strong because we can have validation data before they are stored in tables. At the same time when a user wants to execute a query can add a new filter to limit the data that is returned.

Any application that stores data needs a mechanism to identify their users. Windows Azure Mobile Services offers the service for authentication. Through this service we have a build-in authentication mechanism. There is no need to implement our own mechanism.

At the moment we have four suppor-ted providers: Windows Live, Google, Facebook and Twitter. Unfortunately, pre-sently, you cannot define a proper provider using this service. But for a normal appli-cation these 4 providers should be enough. For each provider you want to use in your application you need to configure the id / key application portal along secret key. Once you have done this configuration, you can use the authentication mechanism. In the following example we can see how to do this in C #:var currentUser =App.MobileService.LoginAsync(MobileServiceAuthenticationProvider. Facebook);

All available data is returned from the

identify provider and, if the operation fails (eg invalid credentials), we could encounter an error of the InvalidOperationException type. Once a user is authenticated, each operation done through the Windows Azure Mobile Services will contain user

data. For example, when a user performs an insert on a table, we can add a property ”id” to the user in the server script.function insert(item, user, request) { item.userId = user.userId; request.execute();}

Push Notifications can be used when we need to push different data to the application. A scenario where I need this mechanism is that we want to update a tile or send weather notifications to the user. An interesting thing is that Push Notifications are not supported and the applications written for iOS. Windows Mobile Azure Services was integrated with Apple Push Notifications.

I said at the beginning that the majority of libraries for NodeJS are available when you define scripts for CRUD operations from tables. In an insert operation from a table, we can send a notification to the cus-tomer and make updates to the tile. Here’s how you can do this:function insert(item, user, request) { request.execute({ success: function() { request.respond(); sendNotifications(); } });

function sendNotifications() { push.wns.sendToastText04(channel.uri, { text1: „Hello kitty” }; }}

All services listed above can be success-fully used if we have an application that needs a backend to store data, allowing users to login, or if we need to push data to our users. The learning curve is extremely good, requiring less than a day to learn how to use these services.

Windows Azure Mobile Services con-tains a collection of services that could assist us in the development of applications for mobile devices. In addition to this, the complexity of our applications will decline because we no longer need to write cod to define different services.

Page 36: TSM_7_2013_en

36 nr. 7/2013 | www.todaysoftmag.com

10 design principles - part II

Do you know the story about the zebra who continuously eat it’s own tail? Thought so. Because it was a snake not a zebra. But you got the idea. It’s a thing that looks weird, and no one can predict what is going to happen about it.

In software world cyclic dependencies mean that you have a library A depending on a service within library B. In library B you have some other service that is depen-dant on something else in library A. And we all know that in software world there aren’t only library A and B. There are much much more. Now imagine that one day you change something to one of them and deploy the one that you are responsible for. You will be like Neo in front of Morpheus in Matrix han-ding you a blue and a red pill. But this time you’ll have to take both.

In order to avoid such unscripted scenarios please make sure your components don’t cross call one anothers

7. And because no one under-stood why a zebras have stripes the way they have them, they decided to DOCUMENT that for future generations so that it can be under-stood easily.

(This section describes when to write good comments so that every zebra user can understand it in future)

A lot of people stared at zebras and didn’t have any clue about what the stripes represent or why they are the way they are. But it would have been so nice if some-one would have explained this mystery somewhere (different than National Geographic).

The same is with software you write.

And because zebras have no circles on them but at most slightly curved lines which flow nicely across their bodies, they also thought about cyclic dependencies.

(This section talks about how we should avoid cyclic dependencies with few zebra world examples)

architecture

Stefan [email protected]

Technical Lead@ 3Pillar Global Romania

management

Page 37: TSM_7_2013_en

37www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

There are times when something that defi-nes a business is represented by a piece of code that contains no explanation. There are many times when you modify it and the hell breaks loose. Sounds familiar?

When writing a piece of undocumen-ted code think about these questions:

What if one of your calls got spread across multiple modules behind scenes? How easy (fast) would be for someone to figure out what it does? Is it going to be some day as a core for the whole project or for at least one or more components? Is it going to expand into new functionality?

If in doubt when answering these ques-tions please consider documenting your interfaces, your services, and why you have done certain things like you did across your codebase. Document details like weather a value stores milliseconds or seconds, what represents a null value when found in a boolean, etc. Write only what’s important, and what others may want to see explai-ned there. Pair often with other developers when doing some piece of code and let them ask what they don’t figure out. The answers to those questions make a perfect code documentation.

8. And because a zebra has NOT ONE BUT TWO colors, zebra was designed to be testa-ble for both black and white colors.(This section talks about both white box and black box testing in regards to how they designed zebra so that it can be tested this way)

Zebras like to think about themselves as being half-transparent animals when they have a black background behind them. In order to tell them it’s not true a QA pro-cess should be in place. That means check if the zebra has all the qualities and nothing more than the ones documented in functi-onal document.

Zebras are black and white. In QA world there are two concepts. Black box testing and white box testing. Black box testing refers to a zebra from outside. That means with some indulgence from QA per-spective black box testing a stuffed zebra will give you the same results as testing a live zebra(indulgence = we assumed a zebra is horse looking animal with black & white stripes). On the other hand white box

testing refers to internals. That means you should be able to test if the zebra has a liver and not some mixture of filling inside her. (Well that’s why developers never attemp-ted to create zebras - it might be too painful for them and developers love zebras).

But developers create software. And developers should care also if their software need to feel any pain when being tested either blackbox or whitebox. So for you to know blackbox testing is a method of software testing that tests the functiona-lity of an application(doesn’t require QA to know how the internal components communicate to each other i.e. for this kind of input you should receive this response), weather whitebox testing is a method of testing the application internals.

9. And because a zebra is not just a strip colored horse, zebra is called a true zebra if it follows some design principles.(This section will expand into explaining some common sense design principles - open/close principle, single responsibility principle, stable abstraction principle and how we can apply them on a zebra)

Even though some pop stars strived in their life to become zebras they haven’t succeed because they were either black or white. They couldn’t be both because unlike zebras they didn’t have a clue on design principles.

Open close principle: Any zebra sho-uld be open for extension but closed for modification.

So you don’t end up having a zebra which instead of stripes has squares. As long as you have something that works and it serves the purpose for what has been designed you shouldn’t let someone else altering it, simply because... it’s perfect! But if someone else wants to add something to it then this should be a nice & easy thing to do. (note: just substitute zebra with class, package etc)

Single responsibility principleEvery zebra should have a single res-

ponsibility, and that responsibility should be entirely encapsulated by the zebra.

This is why we call it a zebra(remember keeping things clear & simple?). We don’t want to have a zebraANDhunter thing. No. Those are two different things that serve different purposes. Therefore make sure your entities (classes, methods) respect this principle.

Stable abstraction principleAny unlikely to change core concept in

an OO design should be made abstract.Yes no joke for you in here. Because this

principle is quite serious. Don’t abstract things unless you know that what you abs-tract covers pretty many use cases that are less probable to change. By first abstracting

management

Page 38: TSM_7_2013_en

38 nr. 7/2013 | www.todaysoftmag.com

it you may end up with lots of maintenance afterwards therefore lots of money or reso-urces spent on that if it’s not done properly. And zebras will hate you for that.

10. And because when thinking of a zebra we think about a nice looking, fast, live, cute animal that lives in hordes some stuff sho-uld be ensured when thinking about how to design it.(This section explains how scalability, avai-lability, performance, reliability, security, reusability fits into a zebra world)

As Prozac or Xanax make you more friends in real life, zebras were now ready to see the daylight. But seriously they were not even close. Because a checklist of some QoS need to be ensured:

Is your zebra able to grow? Is it able to run in flocks?

This is SCALABILITY. If you see a big zebra than the same zebra made BIGGER, than that’s vertical scalability. If at some point in time you consider that one zebra is not enough for you and you want two zebras than that’s horizontal scalability. Because a zebra can’t be bigger than our pla-net always think about how you can design your system in order to be horizontal scala-ble. Vertical scalability means you put more processor, more RAM, more HDD power into a single computer. Horizontal scalabi-lity means you need to have your software run on many computers.

Does your zebra entertain you all the time?

If it doesn’t it’s useless or at least distur-bing. You need to have a responsive zebra. So does the clients of your software. They are keen for using your software. It should be available all the time, even when you sleep or do deployments to production. This is called AVAILABILITY. It can also be achieved by redundancy(you have another zebra that does exactly what the first one does, and this way you can make sure if one of them go barbecuing the other one will still entertain you). By setting up an envi-ronment of redundant components and failover, an individual component can fail and have a negative impact on reliability.

May I ride your zebra?It is said that if you lose an airplane you

may ride a zebra as they tend to run as fast as the airplanes. But they often fall asleep cause they are exhausted. So in order to have a whole trip you have to borrow one from another guy. But can you ride some-one else’s zebra? Of course. REUSABILITY is the benefit of letting you ride someone else’s zebra.

Have you walked a zebra into a bar? You will find out that they are so thirsty.

As they are given more and more water they still get the bucket empty. So RELIABILITY is the ability of the system to continue pro-cess requests and handle transactions as accurately when the load increases as it did before. Reliability may have a negative impact on scalability.

Is your zebra safe from lions?Before starting this story lions have

been created. We just know they are somewhere and sometimes are disguised themselves in zebras. Design things that you do with SECURITY in mind. You don’t want anyone ice skating in your database. In neither of your layers. Even though there are laws that protect you against such cases,

no one will bring your clients back if their credit card can be seen from the moon. So ensure that your databases are passwords protected, that you have firewalls configu-red properly, that your passwords stay with you, and the http connection is secure(that is you have to see https instead of http). And make sure your security certificate provider is a trusted one.

How fast does your zebra run?Did ever feel like jumping on fields

having the same low gravitation like you are on the moon(or in cheap chinese car-toons)? Did you ever imagined yourself jumping on such low gravity fields with a zebra? (Than you should really consider looking for a good psychiatrist, or wake up cause this document is ain’t over yet). Performance is about how fast you can make your zebra run so that it can achieve super speed to reach the moon(in order to jump in low gravity rocky fields). Usually some clients have performance imposed by audits therefore ask them before getting to work if they have certain SLAs that you need to take into account. Imposed SLAs after development are not fun at all.

architecture10 design principles - part II

business

Page 39: TSM_7_2013_en

39www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINEbusiness

Ok- I can’t tell you how to do this (ask me in 5 years) but I can tell about some pro-grams that target startups that are designed to give you a helping hand in reaching your dreams

The program for starting and developing businesses by young entrepreneurs.

This is the (translated) name of the program – more common, the famous nonrefundable 10000 EUR.

The program took place in the last 2 year and, most probably, will take be re-launched in 2013 (nothing sure, but highly probable – by spring we’ll know)

In 2012 the program started on the 15’th of February and the allocated funds summed ~ 6900000 EUR, distributed by the rule: first come, first served.

The valid applications, that met all con-ditions and got the required score, would get funds starting with March 2012 – the application validation procedure took rou-ghly 30 days.

What are the benefits of this program?• Access to one nonrefundable grant

of up to 10000 EUR, that’s up to 50% out of the eligible expenses (VAT not included). Translation: you create a business plan where, if you want the 10000 EUR grant, you have to bring another (at least) 10000 EUR + VAT (that’s VAT for the eligible expenses – more below about what is eligible).

• Collateral for getting a develop-ment credit of up to 80000 EUR. Translation: for more details about this it’s best to address a bank. Most banks offer custom deals for com-panies enrolled in this program and can answer your questions better than I can.

• Exempt ion f rom paying the employer’s social benefits for the wage of up to 4 employees, employed on a non-defined period. Translation: for 4 employees you

don’t pay the ~21% representing social security (employer’s part). The exemption is applied as long as the employee’s wage is <= than the average wage per economy. For everything that’s more than the ave-rage wage you pay full taxes.

• Exemption from paying the taxes for registering and starting the com-pany. Translation: this saves you up to ~ 500 RON and a couple of visits to the tax office.

Full details about the program/eligibi-lity/terms of agreement can be found on the AIPPIMM (Agenţia pentru implementarea proiectelor și programelor pentru IMM-uri) site. http://www.aippimm.ro/categorie/programe/programul-pentru-stimularea-infiintarii-si-dezvoltarii-microintreprinde-rilor-de-catre-intreprinzatorii-tineri-/.

Below I’ll also try to answer the most frequent questions:

What are the eligibility conditions?To be eligible the founder/founders

have to fulfill the follow conditions:• To be younger than 35 • To be “first time founders” – this

is their first company, and have not been associated to any other company

• The business plan meets 60 out of 100 points (below the details)

How do I enroll? What are the steps?1. Starting a new company of type

SRL-D (Societate cu Răspundere Limitată Debutanta ). It has to be a newly funded company – an exis-ting company cannot enroll in the program. The company can have 1 or more founders – if there are more than one than all founders have to be “first time founders” and be younger than 35. Some trips to the Commercial Registry and the Tax Office are needed (out of experience the most time consuming is getting the social office registered).

When you startup a startup (pun intended), the resources at your disposal: money, time, people, are limited and your challenge is to make the most out of what you have (and sometimes out of what you don’t have.

You know the story: you start in your parents’ garage/apartment with 2 people and 1000 $ and in 5 years’ time you have you IPO and appear in top fortune 500.

Cheap startup

Dragoș [email protected]

CTO

@ TXTFeedback

Page 40: TSM_7_2013_en

40 nr. 7/2013 | www.todaysoftmag.com

business

2. Submitting your application + busi-ness plan on the AIPPMM’s site (below will be the details about what should the application contain)

3. If you would like to cover your side of the money out of a credit, now would be the time to solicit a credit. When your credit will be approved you’ll have to let AIPPIMM knows so that your application moves forward.

4. Your application is analyzed and, if approved, you’ll have to transfer your side of the money in the bank account that will be created for this program.

Details about starting a S.R.L-D can be found at http://www.firmatineri.ro/etape.html.

What are the liabilities of the companies that join the program?

All the liabilities can be found in the applicant’s guide. The most important can be found below:

1. To keep 2 full time employees on the payroll during the time you are enrolled in the program (up to 3 years or until the turnover exceeds 500000 EUR).

2. To reinvest a minimum of 50% of the annual profit.

3. To file in at AIPPIMM all the paperwork required (there is a monitoring period and everything you buy has to be on the “at least 3 offers” model).

What are the judging criteria?For 2012 the criteria were:• Activity domain – Production (20

points), Services (15p), Commerce and other activities (10p). If you want to develop a software product you’ll get 20p.

• Number of created workplaces (full time): >= 4 20p, >=3 15p, >=2 10p. If you say that you’ll have 3 full time employee the payroll should indicate this.

• The % of investments out of the whole business plan value: >80% 20p, >60% 15p, >40% 10p. What’s considered an “investment”: buying land/commercial spaces, hardware, furniture, vehicles, software licenses, trademarks, francizes, etc. It’s impor-tant to keep in mind that you should have a minimum of 40% investments in the business plan.

• The location of the social office: rural (e.g. Floresti) 10p, urban (e.g. Cluj) 5p

• The utilization of new technologies and promoting an information based society: if you’re creating software you get 10p, otherwise you’ll most probably get 5p

• Financing: bank credit 20p, no cre-dit: 10p. They encourage you to pick a bank credit so that the investment’s value is greater.

You have to get up to 60p. For example: a software company (20p) with 3 employees (15p), with investments summing 40% of the total amount (10p), located in Cluj (5p), that promotes an information based technology (10p), will get 70 points.

What are the “eligible” expenses? On what can you spend the money?

You can spend them on: investments (hardware, furniture, web domain, software licenses, etc.), salaries, web hosting, accountant, etc. The complete list of eligi-ble expense can be found in the applicant’s guide: http://www.aippimm.ro/files/arti-cles_files/37/5794/ghid-tineri---2.doc.

Important to know about the grant1. Your share has to be transfer from

the beginning and will be locked until spent -> you’ll need a conside-rable amount of money up front.

2. The grant is “spend and then get refunded” – so you’ll actually need 20000 EUR + VAT and then be reimbursed 10000 EUR

Advantages and disadvantagesThe nonrefundable grant is always wel-

comed in a startup, but you have to look at these money as “extra funds” and not as startup money – as I was explaining, this grant will come a refund, once you have made the payments.

At the time of being accepted in the program you’ll have to transfer a consi-derable amount of money in a CEC bank account, amount that will remain there until spent -> to be least affected by this you’ll have to plan your biggest payments as soon as you get the grant.

The project is under constant monito-ring -> all purchases must be made through the auction system: 3 offers + official record of deciding the winner. This means extra paperwork to which you have to keep an

eye to otherwise your refund may not be approved. The good side is that obliges you to financial discipline – an important aspect of a sustainable company.

Another thing to keep in mind is not to rely on the refunds as operational money (day to day expenses) – you can never be sure when the state will refund you (can be weeks or months), so keep this in mind when creating the business plan – make sure you have enough money for the day to day expense without this grant.

What happens if you go bankrupt? Do you have to refund the grant?

No and yes. The non-investments money (salaries, accountant, hosting, rent, etc.) don’t have to be refunded.

The “investments” have to be leased in favor of the state: if you go bankrupt the state will get your “investments”.

Where can I get advising on creating the application?

The easies is to go directly to. Their Cluj office is on the Horea street, no 13, and the staff there will be able to answer all your questions.

You can go to a consulting company for creating the application (http://consul-tanţi.finanţare.ro/) – the costs associated to consulting can be deducted from the grant. Careful at picking a consulting – their fees can be quite high.

From personal experience it’s best to talk to someone that went through the pro-gram before applying to get some feedback and advice.

Other questions?Read the applicant’s guide.Take a trip down to AIPPIMM and

discuss with their staff. Google it: there’s plenty of information around. For example this.

If you’re serious about starting a software startup I encourage you to docu-ment yourself regarding this program, the main benefit being the nonrefundable funds – these funds come with some strings attached but can be a “breath of clean air” for a startup.

Cheap startup

Page 41: TSM_7_2013_en

41www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

The problem (examples)You are in a retail store, strolling

through the aisles searching for a certain product/brand (e.g. sushi rolls) and you don’t know where to look. Or you get to the electronics department and you’re greeted by 50 similar products, all with details tech-nical details that mean nothing to you, and you would need an store associate (specia-list) to come and help you make your mind.

Easily asking questions like: “Do you have sushi rolls? At what aisle?” or signaling “I need someone at the electronics depart-ment” associated with a prompt answer would save you time and effort.

Or you would like to offer feedback to that store – the cashier was rude to you, you were bothered that you had to queue for 10 minutes or, on the contrary, you were

impressed by the quality of the waiting and you would like the restaurant’s management know this.

In such moments you are in need for an easy and fast way to reach the staff & management. The already existing methods may fall short or may not be a good fit for you - e.g. the suggestion box may is (imho) outdated and directly talking to another employee is the last thing you want to do after you’ve been mistreated.

The TxtFeedback platformThrough TxtFeedback we’re offering a

solution for such scenarios.Once a business (store/restaurant) joi-

ned the TxtFeedback community you will see throughout the store pliers/posters with something like:

TxtFeedback is a cloud platform for customer to business interactions. The focus is on real time conversations – question and answer – the final objective being solv-ing the issue/problem as soon as it arrived. The platform was created and financed

100% in Cluj. When we started working on TxtFeedback our main drive was enhancing the “customer experience” – what your experiencing when you are buying from a store or when registering for a service.

startup

Startup - TXTFeedback

Dragoș [email protected]

CTO

@ TXTFeedback

Page 42: TSM_7_2013_en

42 nr. 7/2013 | www.todaysoftmag.com

“If you have questions or want to give us feedback, send us an SMS at XXXXXXX or go to t3xt.me/@demo from your smartphone and

we’ll answer in the shortest time”.

You text (SMS or web message) will reach an employee/the manage-ment that will answer “sushi rolls can be found at the fish depart-

ment, the last aisle near the exit. We have an entire self for sushi treats”, “a colleague will be with you in 2 minutes” or “we are sorry that you found the cashier rude. What checkout did you use?”

As a customer you receive the answer and you feel value by the com-pany because your voice was heard and your issue addressed.

The idea The idea for such a service – real

time, on premises, conversations with the employees/management – came from similar services came from the US market, a more mature market with regards to cus-tomer services.

We took this idea, refined it, analyzed the feasibility of such a product & business on the European market and once we saw that there is a niche to be exploited and that we have the know-how and resources to implement this idea we started working.

Development & architectural details The platform was developed using

more technologies & programming lan-guages, composing wirhg now: a web dashboard and mobile website powered by ASP.net MVC 3 & 4 and an android app.

On the backend we have a linux machine that runs our custom communication server developend in Java, and a MsSql database.

The required coding was done by 2 developers. We got from 0 to beta in 5 months and from 0 to release 1.0 in 7 months. Besides this we worked on our presentation website – this required an extra 2 months of effort using Wordpress as CMS.

Investment Until now we invested ~ 30000 EUR in

the startup, money coming from the foun-ders and from the EU through a program supporting young entrepreneurs.

We started from a team of 3 in Cluj and got to a team of 5 – 4 in Cluj and one sales-man in Germany.

In order to reduce costs we tried to develop everything in-house but where we saw that we didn’t have enough expe-rience we externalized: e.g. the UX and UI we realized with the help of a desig-ner, the hosting/IIS administration are externalized.

ChallengesMany, diverse and continuous.Looking back the technical challenges

seem the smallest – business development: market acquisition, marketing and sales being the hardest.

In a certain way this mirrors the exis-ting Cluj reality – well rounded technical professionals that are able to find solutions to most problems, that now have to meta-morphose into business people if they are to make the leap from outsourcing to “pro-duct oriented”.

Next stepsBusiness wise: focus on raising sales,

mainly in western Europe, through direct and indirect (distributors) sales.

Technical wise: we’re expecting an increase in the number of clients in the next period so the main challenge will be to scale up our platform and internal pro-cesses (maintenance and support).

About Ab Mobile AppsAb Mobile Apps is a startup founded

by 2 “adopted” clujeni, Dragoș Andronic and Bogdan Oros, from their desire to show that “Romania’s Silicon Valley” is not only a saying but a reality.

Presently the Cluj team numbers 4, split 50/50 between sales and develop-ment. In Germany we have only one person, focusing on sales.

startupStartup - TXT Feedback

economics

Page 43: TSM_7_2013_en

43www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

How to be a

Registered Sole Trader (PFA) –

preliminary notions

In Romania, the simplest form of authorization for carrying out commercial activities is to be a registered sole trader. Commercial activities include: trading, services (other than those considered to be liberal professions - lawyers, public nota-ries, doctors, accounting experts, auditors, tax consultants, architects or translators) or practicing crafts.

The registered sole trader is the regis-tration form of individuals who wish to perform independent activities and to get income from them. Basically, you can become a registered sole trader for any of the activities provided for in the existing NACE codes in Romania, except for a few that require a special authorization or there are special laws that prohibit the perfor-mance of those activities by the registered sole trader.

Setting up as a Sole TraderTo registering as self-employed, you

have to go to the Trade Register Office from the place where you would like to perform your activity. Additional infor-mation and models of standard forms that must be completed can be found on the website of the National Trade Register

Office: http://www.onrc.ro / Romanian / formulare_pf.php

The required documents are:• The registration form;• The proof of your business name

availability check and registration (original);

• Identity card or passport (a hologra-phic certified copy of the holder on compliance with the original);

• Copy of diploma or other docu-ments attest ing profess ional training, if applicable;

• The signature;• The information from the tax

record;• Documents certifying the rights to

use the registered office (a legalized copy or a certified true copy of the original). This document may be one of the following: property act, rental contract or loan contract;

• The Real Estate Register for the registered office – it is obtained from the Office of Cadaster and Real Estate Publicity;

• If the office is in a block of flats, you will also need the Neighbors Agreement signed by all neighbors

We are increasingly speaking about entrepreneurship, freelancing or start-ups, so I think it would be very useful to talk about an aspect that is perhaps less known to people who want to trade on their own - namely taxes, as well as

other financial accounting issues that an entrepreneur should consider.

economics

Delia [email protected]

economist, trainer and antreprenor

Page 44: TSM_7_2013_en

44 nr. 7/2013 | www.todaysoftmag.com

economics

with which the premises have com-mon walls;

• The registration form for proving the right to use the space;

• Evidence of payment of fees / legal charges: registry fees;

• The standard statutory declaration showing that the fulfillment of the operating conditions set by special legislation in the medical, veteri-nary, protection environment and safety field.

Since 2012, NTC has introduced the possibility of online operations: name reservation, tax pay. These services can be accessed on the website https://portal.onrc.ro/.

It is however advisable to check the information on the NTC website before going to the front desk, because in time there might be some changes. Moreover, if the applications mentioned above are not found on the NTC site, then you must obtain them from the Trade Register inquiry office.

Once all documents have been sub-mitted to the Trade Register Office, you have to expect a couple of days for the issu-ance of the registration certificate

Tax registrationAfter the registration certificate release

by the Trade Register Office, you must sub-mit Declaration 220 to the Department of Public Finance, within 15 days following the date listed on the certificate. You can find the declaration together with addi-tional instructions at this link: http://static.anaf.ro/static/10/Anaf/formulare /decl_220_2008.pdf.

Declaration 220 should be completed in 2 copies and signed and then submitted to the Department of Finance in town where the individual was recorded, together with a copy of the registration certificate and an ID card copy.

This statement basically determines the tax system (non-personal tax or an

income tax bracket),the form of orga-nization (individual or joined), plus it declares an expected amount to be achie-ved by the sole trader during that year (the registration year). Based on this amount, freelancers who opt for the non-personal system will calculate and pay tax income from self-employment during that year.

All other available sources will men-tion Declaration 070, which should be submitted with 220. For authorized indivi-duals who obtained registration certificate from the Trade Register Office, this tax registration statement, 070, is no longer necessary, since registration is automa-tically done based on the information transmitted from the Trade Register Office to Public Finance Administration.

Subsequent changes in tax registrationSubsequent changes in tax registration

data must be notified to the competent fiscal body subordinated to the National Agency for Tax Administration, within 30 days of their occurrence, by comple-tion and submission of the certificate of recorded amendments, which is the same statement that was originally completed (220). You should just tick on the first page the „Certificate of recorded amendments” and not the option” Initial declaration „.

If the conditions which generated the tax registration cease to exist, the tax payers are required to deliver the certificate of tax registration to the tax administration, in order to be cancelled, along with the submission of the certificate of recorded amendments.

If changes occur in the originally reported data and those inscribed in the tax registration certificate, payers will sub-mit, along with the certificate of recorded amendments, the tax registration certifi-cate, so that this might be cancelled and a new one might be issued.

The certificate of recorded amendments should be accompanied by documents that show the changes that have occurred. Changes requiring the submission of the

certificate of amendments, namely a new Declaration 220, may occur in any of the following type of information:• Tax residence (address);• NACE Code;• Registering as a VAT payer, either by

going beyond the tariff ceiling or by the taxpayer’s decision;

• Hiring one person / more people with an employment contract;

• Cessation of the activity.

If you want to change the option to determine the net income, you should sub-mit Declaration 220 by 31 January of the tax year.

The option to determine the net income based on the single-entry accounting data (ie in non-personal system) is obligatory for the taxpayer for a period of 2 consecu-tive tax years and is considered renewed for a further period, if the taxpayer does not require the determination of the annual net income based on the income tax bracket by proper completion of the declaration of estimated income and its submission to the tax authorities until January 31 inclusive.

You can find more information about revenues from independent activities in the guide for sole traders released by Contzilla.ro. The guide addresses any self-employed who makes money from independent acti-vities and is a useful tool that guides you step by step in the whole process required for registration, accounting organization and choosing the best tax option for your business. It contains practical examples and solutions to ensure a good start of your business. The guide contains related legisla-tive changes in July-August 2012.

http://www.contzilla.ro/2012/09/venituri-din-activitati-independente-mini-ghid-pentru-persoanele-fizice/

How to be a Registered Sole Trader (PFA) – preliminary notions

Page 45: TSM_7_2013_en

45www.todaysoftmag.com | nr. 7/2013

TODAY SOFTWARE MAGAZINE

Art & IT: overcoming the conventional frame-work by stimulating creativity

events

In IT the use of templates (frameworks, platforms or patterns) and “best practices” has become one of the main trends. They define standard ways of solving problems and often become routine in a software developer’s activity. Doing an excellent programming job, qualitative, yet pleasant,

means putting your print on what you rea-lize, and this requires personal creativity.

The very same idea stands behind the association and involvement of msg systems, a German company with over 30 years experience in software, in TIMAF (Transylvania International Music & Art Festival, which promotes art, both in its traditional and modern forms). The festi-val took place in Cluj Napoca, during the first three weeks of October, 5th to 28th, 2012, and has consisted of concerts, work-shops and competitions. The 13 arts were TiMAF’s central idea, and the discovery of these arts through the 5 senses: listen, view, feel, taste and scent.

Although, judging from an image and structure point of view, TiMAF and msg systems and different, we found that we still have in common the interest in overcoming the conventional framework by stimulating creativity as a source of innovation. Thus, the slogan used in our marketing campaign during TiMAF was: „discover msg systems through the 5 senses“.

Beyond lines of code there are men. Innovation in IT, as in any other field, requires overcoming the conventional framework, and discovering personal expression of creativity in every day work. Hence, we brought our own creativity as a partner in TiMAF, even if this meant chan-ging temporarily the standard image of msg systems. It was a project in which we tried to become inventive, in an area that it was not familiar to us and, at the same time, we tried to present our image as a company, bringing up front msg systems’ team.

As a partner during TiMAF we did:• An online msg branded software,

through which visitors could meet company employees and their per-sonal preferences in an unusual context. With a 100% design „street arts” and information about the taste, smell, favorite movie of col-leagues - those interested had the opportunity to come into contact with each msg team colleague on a background playing each colleague favorite song.

• Photo Exhibition in Shto College B ar, under t he s ame name: „Discover msg through the five senses.” And, not to forget, a purple „msg” cocktail was served during the entire event.

• An unconventional msg corner (see

image below), powered by the street art attitude located inside TiMAF Lounge in Piata Unirii.

We promote a culture of ingenuity, creative exploration. A modern software development culture based on creativity and innovation offers customers the best way to create or adapt their product or service in a dynamic market, constantly changing.

Let’s put aside facts and figures. Beyond annual turnover and technology, the real drivers of a business are people, their creativity and how they collaborate in order to provide services or software systems desired by the client. Software solutions have often been the innovative factor that turned conventional business services, offering customers’ significant added value.

While the processes of a certain domain, such as automotive, insurance or banking are standard, the software platform that is at the basis of their innovation makes the difference between an innovative and a standard service. Therefore, overcoming the conventional framework and endorsing creativity and innovation has become one of the targets pursued by all software companies.

Rodica [email protected]

Marketing & PR Specialist@ .msg systems Romania

Page 46: TSM_7_2013_en

46 nr. 7/2013 | www.todaysoftmag.com

- Damn with the „mioritic” shepherd! – said Gou out loud. He suddenly looked around to see if he had to give some expla-nations, but no one seemed to bother. They were all deepened into the documentation they had received, all cheerless... Yeah, no one seems too happy about the requi-rements list. How could someone accept that? Such resigned people ... He continued to read the email, becoming more and more cheerless; from time to time, he was muttering something to himself.

- What’s with the funeral atmosphere? Chief ’s entrance took everyone by surprise. Oh my God, what’s with the look on your faces? What’s wrong with you? The end of the world has been officially confirmed? Don’t worry, it won’t come, it’s snow-boun-ded on the roads of Moldova, ha-ha-ha... But he stopped instantly, it was clear that nobody shared his good cheer. He changed his tone immediately: What happened?

Since nobody seemed to have the sligh-test intention of responding, Gogu cleared his throat:

- The requirements from the client came...

- Ah, awesome! They managed to send them in time... But he suddenly realized: they are a mess, aren’t they? What did our folks say?

- Well there’s the problem, Chief! Misu intervened. I’m not quite sure that „our folks” are indeed our folks. They said it was ok because it was too late, we were lucky to even have these ones, che sera sera, there was nothing they could do, but we would certainly handle it because we’re smart guys - us, the development unit.

- It’s not like this isn’t true... Gogu couldn’t help but comment. But even so, we have to work at least a week on them! Just to be clear...

Voices of approval began from the entire office, suddenly animated. Although no one seemed willing to say anything, now, like at a signal, everyone warmed up and started sharing their opinions on the document. Comments came from everywhere, some blamed the document and its authors, others blamed their fellows who had accepted it, but most of them were already imagining themselves working hard and for nothing, hours of wasted

work, futile efforts, endeavors, anger, d i s app ointment , frustration...

- Stoop! Chief almost shouted, des-perate to cover the uproar created. Did anyone answered to the email?

The silence was an obvious answer.

- Well guys, as far as I see it, we don’t have a pro-blem yet but you are about to create one.

Gogu got struck with thunder. If he shows that playful smile now, in the midst of our general tragedy, I’m going to shoot myself ! Actually I’ll shoot him first and then myself, at least I’ll die at peace...

- Gogu, I see you’re puzzled. Let’s see, what is actually our problem?

Ours, Chief, not yours as far as I can see! He didn’t say that out loud, he verbali-zed only his greatest sorrow:

- The problem is that our guys have accepted the document! And it’s almost unusable. Formulations are vague, incom-plete, some requirements collide, there are inconsistencies in the terminology, there is no prioritization, and instead of descri-bing requirements they present solutions... Gogu pulled his breath and continued even more huffily: How can someone accept that?! They didn’t read the document? How could they send it to us? As in Miorita! This is what defines us: we reconcile to what we have, we resign. And that means we will work double tides...

- Stoop! We are back to the beginning again? Chief was desperate. I repeat the question: did someone answer to the email?! What’s with this Miorita? Sorry to disappoint you guys, but this Miorita of ours is not relevant for all of us. I admit that some of us tend to let the fate decide

for us. We gloss, but we accept the situa-tion and move forward. But not all of us, the generalization is not valid. Let’s think for a little bit: how many shepherds were they, one? Not really. There are three in the ballad, right? And what do the other two do? Plans, my boys! The other two plot! That is they met, discussed, analyzed the situation of the herds, the number of sheep and their quality, and set some goals and priorities and an action plan... So, guys, if you like this Miorita, I suggest you put aside the role of the resigned shepherd and take on the role of the others. Do a quick review of the document and send back to „our folks” our improvement requests. I know it’s easy to complain, but we can’t change anything unless we mobilize. So, let’s get to work! Let’s have solutions and action plans in our Miorita!

Gogu and Miorita

misc

Simona Bonghez, [email protected]

Speaker, trainer and consultant in project management

Owner of Confucius Consulting

Page 47: TSM_7_2013_en
Page 48: TSM_7_2013_en

powered by

sponsors