Sri Lankan IT Students: Among the World’s Finest

Sri Lanka has a history of producing some of the world’s finest IT graduates. However, this information is not widely known enough. There are many instances where the skill, talent and the dedication of our people have shone through and The Google Summer of Code program is one such occasion.

Google Summer of Code is an annual program that provides a platform for university students from around the world to work directly with open source organizations worldwide, to learn open source development while earning a stipend for it. Over 14,000 students have been involved in the program from over 109 countries and 651 open source organizations. (1)

“GSOC students every year go from being complete novices to being contributors for organizations,” states Carol Smith, program manager for Google. Over the course of the program, GSoC has seen a shift away from participants in the US and Northern Europe, to more students in South Asia and other developing nations. (2)

Ever since the program’s inception 14 years ago, Sri Lanka has been among the top ten countries with the most number of accepted students, thanks to University of Moratuwa. From 2005 to 2011, many students have won competitions for the program, while in 2017 it had the most amount of submissions (3). With only a yearly intake of 100 students, the university has built a reputation for consistently producing world-class IT graduates, as they not only focus on an innovative approach to education, but also honing the soft skills of their students as well (4).

Rajan Anandan, Google’s vice president for South East Asia and India, has commented that Sri Lanka’s software engineers are some of the best in the world, but should expand on their capacity of student intake, as there is much untapped potential left to be discovered (5). The island has produced many gifted IT graduates, which can be attested by the many awards they have received: from winning Hackatrips (6), Microsoft Imagine Cups (7), IEEEXtreme (8), and of course Google Summer of Code.

In an interview, Vishaka Nanayakkara, lecturer at University of Moratuwa for department of Computer Science and Engineering recalled how students kept on writing proposals and submitting it year after year. They had started out with four students joining the program, and had never imagined it growing it to the scale it had developed. She proudly announced that the University of Moratuwa had not only reached the top in 2014 in winning awards, but in terms of submissions of well, compared to countries like US that were happy to be either third or fourth (9).

It also revealed the capabilities and commitment of these young Computer Science and Engineering undergraduates, as this was not just a one-time effort, but also something they have been consecutively contributing to for years (10). Up to this date, their enthusiasm has not waned.

References

[1] https://summerofcode.withgoogle.com/
[2] https://www.youtube.com/watch?v=BS4kTgaiydQ
[3] https://www.mrt.ac.lk/web/history
[4] https://en.wikipedia.org/wiki/Google_Summer_of_Code
[5] http://www.ft.lk/article/559261/Lankan-born-Google-India-Chief-tells-SL-to-go-for-tech-gold-
[6] http://www.sundaytimes.lk/180304/magazine/emerging-winners-at-hackatrips-283842.html
[7] https://www.mrt.ac.lk/web/history
[8] https://www.mrt.ac.lk/web/history
[9] https://www.youtube.com/watch?v=MTF1-YKITnM

Thenuji Gunathilaka

Thenuji Gunathilaka was an Associate Trainee Content Writer at Zone24x7.


The Challenges and Struggles Software Engineers Face Today

As cliche as it may sound, Software is indeed everywhere. What Marc Andreessen wrote then under ‘Why Software is Eating the World‘ has exploded even more today. Companies are racing to be at the forefront of the digital revolution. There’s even talk of how software development can become so mainstream that it will be the next blue collar job. And one day soon, come the age of flying cars and trips to the moon software will power almost everything that’s out there.

In Sri Lanka, thousands join the IT industry as Software Engineers every year. It’s a thriving industry with goals of reaching USD 5 billion in revenue by 2022. So with the coders here to stay, we asked a few of our own developers what they feel are the biggest challenges and struggles they face either as engineers at a personal level or from the industry. Check out what they had to say below:

SAGARA PARANAGAMA

On whether he feels the software industry faces any major threats…

I personally don’t feel that currently the software engineering field is threatened. Of course, political instability is a risk and because the Sri Lankan software industry is mainly service oriented rather than product oriented, a stable policy making body is essential. However, if we look 20-25 years ahead, coding will be a mainstream skill in the labor market. This would be the case in developed as well as developing countries. Therefore, the main attraction of cheap software engineering in countries like Sri Lanka will fade away. Our software industry has to move from service oriented to product oriented in order to have positive cash flows and survive.

Moving on, the word struggle insinuates a negative connotation so don’t blame me for being negative. There are work related struggles as well as personal struggles working in this field.

Finding a good boss…

I’ve been lucky to have excellent team-leads, who are open minded and open to new things. There have been many instances, where the whole team discuss an issue and arrive at a decision and the process has uplifted the knowledge and confidence of the whole team. Contrast that with a lead, who does not listen to the team and makes decisions without any room for discussion. It can be annoying and demotivating. Unfortunately, finding a good lead can be difficult and therefore, I regard this as a struggle.

Keeping up with technology…

This is one of the most underrated issues in software engineering. Technology is moving at an incredible pace. APIs change regularly. New frameworks come up saying it would make our lives easier (ironic, I know). Simply put, if we don’t improve our knowledge, we lose the race.

Personal issues that can bring you down…

This mainly applies to software engineers working in Colombo, who come from other districts. No one really understands what it means to be away from home, stuck in a room in weekdays, eating unhealthy food. You really start questioning why you are doing a job in the first place. Honestly, it’s a struggle to find a good place to eat in Colombo (a place that is good for your wallet too). Paying rent, stuck in traffic jams wasting your fuel… you get the picture. People originally from Colombo fortunately go to their homes at least. As a software engineer, it’s best when your employer understands these issues. That your compensation not only considers the work you do for the company but also the sacrifices you make in order to do so…

Sagara Paranagama is an Associate Tech Lead at Zone24x7. You can follow him on LinkedIn and Twitter.

*****

YOHAN GOMEZ

On unrealistic expectations put on software engineers at times…

How do we define a perfect developer? One of the most common myths, which I see in our industry is that the belief of “I, as a developer needs to know everything”. Knowing everything is not realistic. Having a toolkit with hundreds of tools doesn’t make any sense if you use only couple of tools out of them. You might end up not knowing anything properly. Focus towards concepts and principles, master them when it comes to applicability.
                            
If you are to use a framework for quite some time then you will have to memorize certain things, other than that don’t try to memorize any framework methods or API’s, which will depreciate over time. Knowing the capabilities is more than enough. Google is your friend, use it properly. Be a smart developer.

If you are developing a legacy application, it doesn’t make any sense to adopt latest technologies just because of the trend. There are several frameworks and technologies, which does the same thing in different ways and the developer community always claim that there is something better than what you are using at the moment. I think there is no point of adopting technologies just because they claim to be the best or there are performance improvements.

As the initial step, think whether there is anything, which you need to achieve that your current framework doesn’t support. When a framework or library claims about performance, always think whether you need a performance gain, whether you have any performance concerns in your project. Don’t rip apart and re-write your code unless there is a valid reason. Be smart when it comes to technology adoption and use it when it actually solves a problem. Think of the community support and all the other factors before adopting a new technology.

Yohan Gomez is an Associate Tech Lead at Zone24x7. You can follow him on LinkedIn and Twitter.

*****

CHATHURANGANIE PATHIRAGE

On the need to focus on the domain and business value…

There are some typical challenges that software engineers face on a day-to-day basis, both on and off work. From a work perspective, we need to improve in seeing things from the client’s’ perspective, as we frequently see incidents of misunderstanding, knowledge gaps and miscommunication. Quite often, we as software engineers tend to focus too much on the technical aspects and bypass the business value and the domain knowledge.

Software Engineers don’t have a life?

Apart from work challenges, there’s always the typical complaint – ‘software engineers don’t have a life!’, which merely accounts to the challenge of maintaining a healthy work-life balance.

I think this is quite subjective and is not eternal. There are times during our projects, where we need to give extra time and effort to our work, in order to meet a commitment to a client. Furthermore, our tech world is fast moving as technology stacks evolve faster than we can absorb them. In order to survive and grow our careers, we need to spend time to be up-to-date on these evolving technologies.

When someone looks from the outside, it may look like ‘we don’t have a life’. But from my experience, I see that almost all of us have found our rhythm by now – to work, to develop and at the same time, to enjoy our lives the way we want. Anyway, for all that’s worth, it’s not only the software engineers who find it difficult to find a work-life balance, it is almost every working man’s dilemma.

Winning the parents. With time, they will adjust…

During the very early days of my software engineering career, one of the biggest challenges I (and most of us in our generation) face is how to convince our parents and make them understand this lifestyle. There would be days you go home at 10PM, open your laptop soon after a quick dinner and start working till midnight, only to rush back to work early next morning. Add to that a full weekend at work and then the fun begins. You would continue to hear endless speeches about the importance of family time, taking care of yourselves, without working 24X7!

This is mainly because, the way, they used to work is somewhat different from how we do things in this age. It’s pretty difficult to convince them about this drastic difference. If you ask me, there’s nothing you can do; with time, they would just come to terms with it – just like we did.

Chathurangani Pathirage is an Associate Tech Lead at Zone24x7. You can follow her on LinkedIn.

*****

MAYOORAN MACILAMANY

I have been working as a developer for more than two years now and the one thing that keeps me going is the fascination of creating something new every day! But there are two sides to a coin. Yes, the perks of being a software engineer has is its own challenges, or should I say “struggles”!

The inevitable struggle for quality…

That one struggle, which is inevitable is the fine line between conformance to best practices and premature optimization! With all the emphasis that is placed on best practices, it is easy to get carried away with that. You could be tempted to rewrite that ‘for loop’ or remove that ‘single use variable assignment’, but remember this: You may end up writing code that is unreadable.

But then again, you may also end up with untestable code as a result. The struggle of choosing the right option is real! You could choose to “not do something” or “not do it yet”. You should not forget that this is an engineering discipline and that the success of the project depends solely on the quality of the code you deliver!

On how he keeps up with all the rapid changes in technology…

Technologies change every day! You should have the natural will to engage in active learning and strive for excellence. Obviously, you may not be able to keep track of each and every advancement in all the areas of programming. Which, in return results in the need to choose your area of interest and follow the developments in that.

Not everyone gets to work with the technology stack they love. Even if the opportunities have not been presented yet, it is mighty important to keep learning and practicing the things you love. Because, you never know when the opportunity will come knocking on your door. Mastering a language or a technology could prove to be difficult, if you do not back yourself and predict the future developments based on the current context. The struggle could prove to be immense, if you lose your direction in an industry that changes every day. Trust your instincts, take a leap of faith and let your effort determine your success!

Back to work life balance as a software developer…

The biggest struggle of them all would be time management. Let it be completing a project on time, or spending time with your family. If you don’t get a hold of how you manage your time, you might start to lose focus and purpose. It is crucial that one provides proper estimations for projects as unrealistic schedules could easily result in burnouts and unnecessary stress. It is important that we keep up with the estimations as timely delivery is a vital factor that determines the success of a project. It is important to allocate time to learn new things and enhance our knowledge base as mentioned earlier as well.

Amidst all this, it is a must to ensure that quality time is allocated to be spent with the family. Whether it’s your growth in personality, success in your job or satisfaction in your life, how you manage time determines, where you end up.

Work flow based programming and the threat they represent…

Like any other industry, software engineering has its threats as well. The rise of work flow based programming tools could be seen as one. The development of work flow based programming tools may have reduced effort and time. But it is important that engineers keep their engineering skills sharp despite the introduction of auxiliary tools. The industry has to ensure that it doesn’t end up with a pool of developers who have only specialized in workflow tools.

Having core programming skills and firm understanding of a language is very important, as the languages you know determine your thinking patterns and how you approach solving problems. Oh yes, the Sapir-Whorf theory you saw in the movie “Arrival” could very well apply to programming as well!

First to market is good as long as you have something really solid…

Increased emphasis on quick releases and aggressive marketing strategies could be seen as another threat. Focus is placed on releasing the product at the earliest time possible, so that we could satisfy the demand and capture the market, before someone else does. This could result in premature releases of products that are not ready yet.

A perfect example could be the app that took the store by storm, Pokemon Go. The app was released with quite a few glitches and bugs, which resulted in players circumventing to excel in the game. The app also failed to deliver the most important features that were shown in the trailer such as player vs player battles and trading.

This resulted in a lot of people getting disappointed and easily bored with the very few features, it was released with. The team itself has admitted that the urgency in releasing the product, resulted in such setbacks that could’ve been avoided. It is important that quality of the product is given the priority and that proper testing is carried out despite the unrealistic timelines.

It is important that the engineering practices don’t take a hit because of the limelight on marketing and business development strategies. The challenges and complexities surrounding the development processes need to be understood and engineers should be encouraged to focus on quality and disciplined practices.

They say “do it with passion or not at all”. Every job has its own struggles. What determines whether we succeed or not, is how honest we are to our profession and how determined we are towards achieving excellence. When you think of the view from the top, struggle of climbing up is nothing!

Mayooran Macilamany is a Software Engineer at Zone24x7. You can follow him on LinkedIn. He also blogs at Frozen Cloud.


Image Courtesy: Header image from unsplash.com/@jillheyer


101: Bluetooth in a Nutshell

Hello everyone, so this is going to be the last episode of the 1st series of ZoneCast. This present collection of episodes primarily tried to cover the basics of most talked about and buzzing technologies today. In Series 2, we are going a bit further and tackle pressing issues and implications of various technologies in a real world context. We are currently in pre-production of the 2nd series and we’ll inform you on a premiere date as soon as we have one.

So back to today’s episode, it is all about Bluetooth communication protocol. Our hosts, Isuru and Deshal are joined by Kasun Rathnapala, where they cover topics starting from the evolution of Bluetooth to comparisons between Classic vs Smart Bluetooth. They also look at practical applications of Bluetooth Low Energy (BLE) before talking about how beginners can start developing using Bluetooth. The alternatives to Bluetooth and its future are also touched upon.

Listen to the final episode of the 1st series here:


Discussion Breakdown

What is Bluetooth? – 0:49 | Why is it called Bluetooth? – 1:28 | Why is Bluetooth everywhere? – 2:47 | Evolution of Bluetooth over the years – 4:43 | Identifying a specific device when there’s a common protocol – 6:20 | Difference between BLE and classic Bluetooth protocols and  the practical uses – 7:33 | Alternatives to Bluetooth – 11:37 | Getting started on a Bluetooth application – 16:19 | Future of Bluetooth – 19:37


Kasun Rathnapala

Associate Tech Lead

How Quantum Computing can Revolutionize Technology

Our lives, at present are highly dependent on technology. It has revolutionised our lifestyles entirely. From ways we communicate to the means by which we travel, from the food we eat to the apparels we wear, from healthcare to education systems. It’s quite mid-boggling to even imagine how we live our lives now as opposed to a couple of decades ago. In the words of Edward Teller, “The science of today is the technology tomorrow”. The rate at which technology is advancing is simply astounding. That being said, it’s intuitive for one to question, “What could be the next big thing in technology?”.

The Modern Processor Architecture is still the Old Processor Architecture

A quick browsing on the web will throw at you a few concepts like, Mixed Reality, Artificial Intelligence, 3-D printing, Block Chain and even Internet of Things (IoT). But I’d like to approach this question from a rather different standpoint. Well, true enough that all the above have quite the hype among business and individuals these days and would undoubtedly disrupt the way we do things, but with a little bit more thought you’d realize, all these technologies do one thing in common; which is essentially yet unsurprisingly, processing data to provide some meaningful result.

The difference actually lies in the kind of output provided in each case. But if you look at how processing takes place (this is the place where the magic happens), they all still depend on the same, fundamental, “ancient” processor architecture. Yes, I did quote ancient because, Surprise! Surprise! these modern magic making devices are still based on more or less the same processor architecture of the EDVAC (Electronic Discrete Variable Automatic Computer for short) designed around 1949 (told you it’s ancient!).

Diving a bit further into processor fundamentals, from a software processing point of view (myself being a software engineer) and not digging into the nitty grities of the electronics of the modern processor, today’s processor is essentially based off an architecture called the Von Neuman Architecture, designed by an American mathematician and physicist John Von Neuman back in 1945. In essence, it specifies that program instructions must be processed sequentially (one at a time) and that the program instructions and data may reside in the same memory. At the rate at which we see processing take place at present, it’s mind baffling to even comprehend the fact that, for a single processor, at any given instant, it is handling not more than just a single program instruction! What’s even more alarming is to realise that these “intelligent” processing beasts are as intelligent to comprehend nothing beyond a “1” and “0” (binary).

How Quantum Computing Works

I often used to imagine, that if we were able to do so much using devices that could hardly differentiate between a “1” and a “0”, what we could accomplish if we made these devices to comprehend something at least a bit more than just binary. This is when I developed an enthusiasm towards Quantum Computing.

Qubits, Superposition, Quantum Entanglement and all that Jazz

Derived from quantum mechanics, this computation system uses the help of quantum particles called quantum bits or qubits for the representation of data as opposed to bits in the form of electric voltages (high and low being 1 and 0 respectively) in traditional computational systems.

Quantum computing harnesses the quantum nature of particles such as adding two or more quantum states to result in another valid quantum (called quantum superposition) and the fact that particles perform as a whole “system” rather that behaving individually (called quantum entanglement).

Quite a bit of jargon but what does this really mean?

How Quantum Computing can Revolutionize Technology

For instance, two bits in your computer can be in four possible states (00, 01, 10, or 11), but only one of them at any time. This limits the computer to processing one input at a time.

In a quantum computer however, two qubits can also represent the exact same four states (00, 01, 10, or 11). The difference is, because of quantum superposition, the qubits can represent all four states at the same time. That’s a bit like having four regular computers running side-by-side. Well the gist is that, compared to classical computing, quantum computing is a much better candidate for processing larger volumes of data simultaneously.

Quantum computing is extremely good at tasks like factorising large prime numbers and performing large permutations at blazing fast speeds due to the approach it takes in processing. For example, RSA encryption algorithm, which is one of the most widely used encryption algorithm at present that would require a classical computer light years to crack is rendered useless against a quantum computer (how so? check this out! Why RSA is useless against a quantum computer).

Quantum Computing for AI, Machine Learning and Big Data. Very Briefly.

Artificial intelligence, machine learning and cryptography are among few of the technologies that may be complemented by the power of quantum computing.

The adoption of this new computation methodology could mean that we could gain access to more effective and higher quality drugs, more accurate predictions using machine learning algorithms such as better traffic prediction and personalized shopping recommendations, safer airplanes governed by much more complex and sophisticated software than the ones at present and an opening of a portal with a realm of smarter, more powerful and even more passionate super organisms.

When can we Expect Quantum Computing to Become Mainstream?

Having said that, the practical approach to applying the theory of quantum computing is not as straight forward and poses much challenge in materializing the idea. D-Wave, Google and NASA are among few of the giants that have already begun exploration on the possibility of commercializing the concept. D-Wave is already attempting to make available quantum computation as a service. The environmental conditions required however, such as the 80mK (~-273 Celsius) temperature needed to bring out the quantum nature of particles owe to some of the practical challenges in squeezing a quantum into your average laptop or mobile phone.

Moreover, although a quantum computer does possess the potential to crack a (current) state-of-the-art algorithm in a fraction of time, it may not be able to prove itself more supreme against a classical computer in the concatenation of two string literals due to the difference in the nature of processing required in the two scenarios. Algorithms also would have to be redesigned to be able to run optimally on a quantum computer.

Nevertheless, my hopes remain positive in the future of a world driven by quantum computers. It may not appear as fast as in 2020 but surely quite soon enough. This is my take on what the next big thing of technology may hold, what do you think? I’d like to hear your thoughts too. Feel free to comment and discuss below on what you feel about this article and perhaps even shed some light on what you may feel if you think otherwise.

In the meantime, you might find following references useful:

IEEE Spectrum: Quantum Computer Comes Closer to Cracking RSA Encryption
Phys.org: How quantum effects could improve artificial intelligence
Time Magazine: 9 Ways Quantum Computing Will Change Everything
Wired: Quantum Computing Is Real, and D-Wave Just Open-Sourced It
DWave: Introduction to the D-Wave Quantum Hardware
Cosmos Magazine: Quantum computing for the qubit curious

Image Courtesy:

Header image from unsplash.com/@nasa

D-Wave Two system from dwavesys.com


Ramitha Wirasinha

Ramitha Wirasinha was a Senior Software Engineer at Zone24x7.

Introduction to Apache NiFi

This week in ZoneCast . . .


And we are back after a bit of a long break! To start off, A Very Happy New Year to all our listeners. If only long breaks like this come around every year…

Anyway back on topic, today’s episode is going to be about Apache NiFi. Its been increasingly gaining attention and we see it being used often in data ingestion. So we felt its the right time to explore in a bit more detail what is Apache NiFi is all about. For this edition our host Raathigeshan is joined by Hasun Perera and Asanka Herath.

The conversation starts off with a basic introduction into this component based drag and drop architecture before looking into deeper questions like how NiFi can power the future, a comparison with NiFi Projects vs Normal Projects etc. Fundamentals such as NiFi capabilities, flow files and custom processors are also looked at.

Listen below:

Asanka Herath is a Software Engineer at Zone24x7. You can follow him on LinkedIn.

Hasun Perera is also a Software Engineer at Zone24x7 and you can follow him on LinkedIn.

Image Courtesy:  Header image from unsplash.com/@chuttersnap


Why Project Managers are always Busy and a Way to Fix It

FEELING TOO BUSY THAN BEING PRODUCTIVE?

Unfortunately there comes a time in our lives that we realize that we are no longer productive as we used to be or just too busy for anything. We do so much stuff and sometimes when we call it a day, it is way past bed time and the list of things undone is still starring at us waiting to haunt you the next day.

We as project managers put down plans and schedules to our projects and follow up on project plans with the teams on a daily basis to make sure that the projects are progressing positively.  While we are busy scheduling and planning the work items of our team members, we end up having none to minimum time to ourselves to carry out and manage our own daily assignments. One of the main reasons for our failure as project managers to manage time effectively, is our reactive approach to doing things.

Next thing you know; we are already several steps behind when we start our day.

THE CULPRIT: MEETINGS TAKING UP MOST OF THE DAY

After getting myself entangled in couple of extremely busy weeks it was time to take a couple of steps back and reflect on my daily activities for that time period. Immediately, I was able to identify that the culprit responsible for taking away at least half or sometimes more than half of my work time were Meetings. Scheduled as well as un-scheduled meetings kept on creeping into my calendar, leaving me with a pile of work undone on a daily basis and this list kept getting bigger. Second thing was important / urgent matters that needed immediate attendance. There was literally an urgent matter to attend to everyday for a period of about 2 weeks, where some requests came in the morning hours, some during the day and some in the evening, which indefinitely meant that it is going to be another long day.

A TIMETABLE TO FIND MORE TIME IN YOUR SCHEDULE

Though I did not have all the right answers to the problem I was facing, the first thing I was advised to do was to follow the simplest and obvious time management technique; the timetable.

So I put down a simple timetable for the next day with the scheduled things first, like meetings.  Then the next step was to list down the things I need to achieve, prioritize them and allocate time for those tasks around the scheduled meetings. This made me see the un-tapped time that I had in a day, to work on the things that I have to work on. This was continued to the next day and then the next until I had an idea of how my week is going to be like.

PLANNING VS THE REALITY: CHAOS DOESN’T STOP BUT…

With an idea on what to expect during my week and what I need to do for the day, I started off my week.

I was not able to go far. As usual, I was bombarded with un-planned meetings, discussions and urgent matters that needed immediate attending. While avoiding them is not the right thing to do, I was able to re-schedule some of them to the free slots I had already discovered and looked in to the others. Having a schedule for myself helped me prepare for planned work and allowed to a certain extent find available timeslots to be allocated for the un-planned work. At the end of the day, I reflected on the things done and yet to be done so that I can re-prioritize the undone tasks and take them forward for the free time slots I have on the next day.

The conclusion that I can draw from practicing this technique for one week is that I was better prepared. I knew to a certain extent what to expect and how much of time will those tasks take, what tasks I need to attend to and what time slots I have to tackle the unknown.

And it helped me keep track of the undone work and reprioritize them and take them up in the next day (if possible). Having a simple work plan for the week helped me to a certain extent see through the chaos of unplanned work, the work that I had already planned on achieving for the week.

MY EXPERIENCE: BEING REACTIVE HAS A LOT TO DO WITH IT…

In order to start this exercise, I believe from my experience that it is absolutely necessary to have a clear and relaxed state of mind. If you are already stressed, you will take down a very reactionary approach to doing things by stressing out on the things that is already on your plate. This approach has given me a little bit of breathing room to question why are we are doing it? What is the priority? How are we going to complete it? When is it expected? What is the outcome and expectation? And who (if it can be delegated) can get it done?

Unfortunately, most of the time we jump into execution mode without knowing the answers to these simple but important questions.

FOOD FOR THOUGHT

A question that we can periodically ask from our busy lives is that while we are caught up on doing so many stuff and being busy, do we take a minute to realize what is around us that we are missing? And does being busy help us focus on achieving what we need?

Listen to an interesting talk on “The Art of Stress-free productivity”,

Image Courtesy:  Header image from unsplash.com/@oliviermiche


Sean Lee

Sean Lee was a Project Manager at Zone24x7.

The Road to JavaScript Web Applications

This week in ZoneCast . . .

The Road to JavaScript Web Applications is a 4 part series where Yohan Gomaz, a Senior Software Engineer, takes you through the different stages of building a JavaScript Web Application from scratch.

(If you are interested in learning more about the evolution of JavaScript and its foray into web and mobile applications, check out The Rise of JavaScript).

Part 1: Setting Up your JavaScript

In part 1 our hosts, Awad and Isuru begin the journey by discussing the initial steps that you need to take in building a JavaScript Web Application. The discussion spans into ECMAScript, browser selections, tools and techniques, performance and much more. Listen to Part 1 below:

Discussion Breakdown

What to consider first – 00:56 | ECMAScript – 01:40  | Next step after selecting the browser – 02:42 | Does the environment require any thought – 03:16 | Any other tools that needed when setting up the project – 05:39 | Open source contributions by Yohan – 07:50 | Adding a carousal to the page – 08:24 | Does the performance differ based on the libraries used – 10:10 | Linking options through a CDN compared to a package manager – 11:12 | Issues with including CSS and JavaScript manually – 12:44

Part 2: Pitfalls and Best Practices

In Part 2, we explore, as the title suggests the common pitfalls you face when building a JavaScript Web Application and Best Practices you need to adhere to. Yohan wanders into script tags in index.html files, Document Object Models (DOM), ReactJS and Virtual DOM, coding standards and more.

Listen to the episode below:

Discussion Breakdown

Defining variables in the script tag and its problems – 01:08 | Script tags in an index.html – 06:07 | What is DOM and how it works – 11:48 | Best practices and pitfalls in manipulating DOM – 13:56 | DOM manipulation functions and ReactJS – 19:52 | Adhering to coding practices – 23:23 | What is Linter? – 29:00 | Useful references to learn JavaScript – 29:42

Part 3: Testing your Application

In Part 3, our hosts Awad and Sasitha discuss about Testing with Yohan. The topics they cover include front-end testing, the types of Testing, frameworks and tools to use and much more. You can listen to the episode below.

Discussion Breakdown

Front-end Testing – 01:01 | Types of Front-end Testing – 02:03 |  Difference between Integration Testing and Testing API – 04:30 | Frameworks and Tools – 07:11 | How to start Front-end Testing – 09:30 | Headless Browser – 13:35 | Verifying the UI – 16:06 | Coverage Reporting – 18:34

Part 4: Front-end Build Tools and CI

In the final episode of ” The Road to JavaScript Web Applications”, Yohan will be looking into build processes and Continuous Integration for front-end applications with our hosts Isuru and Ramitha.  At the end of this episode, you are in a good position to build a simple JavaScript Web Application on your own. So listen below and get busy coding. Good Luck!

Discussion Breakdown

Build Work Flow and Tools for Front-end – 01:05 | Options Available for Front-end Build Tools – 02:33 | Areas a Build System should Cover – 03:25 | Source Maps – 12:09 | Tools that Facilitate CI/CD Environment – 19:07 | “We should always go for the latest available tools and their versions of JavaScript”. True or False – 20:35


About ZoneCast: Simply put, ZoneCast is a podcast about technology. Listen in and discover all the tech that is brewed inside Zone24x7 and the many passion projects of our associates. To listen to previous ZoneCast episodes check out ourZoneCast SoundCloudPage.

Image Courtesy: Header image from unsplash.com/@forrestcavale


Yohan Gomez

Yohan Gomez was a Data Engineer – Frontend at Zone24x7.

The Rise of JavaScript

The leap beyond browsers into mobile,
desktop applications and more

There was a time when the word JavaScript reminded developers about form validations in web pages. Things have changed since then drastically. JavaScript as a language evolved over time and now it’s used in more places than ever before. This article will explore what are the areas a JavaScript developer can explore today and what it means to be a JavaScript developer in 2017.

If we look back in time, JavaScript was created for Netscape Navigator by Brendan Eich. The confusing name “JavaScript” was given to the language just to get the attention of developers by utilizing the popularity of Java at that time. When the language specification was written, it was named as ECMAScript. ECMAScript went through several revisions to make the language more approachable. ECMAScript 6 is one of the major revision to the language since its last revision on 2009. ECMAScript 6 introduced several new changes to the language including the ‘class’ keyword to make object orientation straight forward.

Image Courtesy: Calvin French-Owen at segment.com/blog

Node.js: A Change in Perception

For quite some time, JavaScript was a thing that was used only in browsers until Ryan Dhal, the creator of the Node.js, had the awesome idea to make JavaScript run outside of the browser. Ryan Dhal demonstrated Node.js to the world on November 8, 2009 at European JSConf. The introduction of Node.js changed the perspective of the language entirely. A language that was once seen as a toy language performing client side form validations then became a language that is capable of handling millions of requests per second in a server side application with ease.

Node.js also gained popularity as a tooling platform. Modern web application development tools like Grunt, Gulp and Webpack relies on Node.js. to do the heavy lifting.

After the introduction of Node.js, the JavaScript ecosystem grew faster than ever. npm, the default package manager for Node.js, is one of the fastest growing package manager in the planet.

Domination of Front End Frameworks

Nowadays web applications have considerable amount of business logic in the client side. The amount of code written in client side imposes new challenges such as how to architect, write and maintain thousands of lines of JavaScript. With the rise of frameworks such as AngularJS and ReactJS, web applications are able to deliver compelling experiences to users than ever before. These frameworks also help to write maintainable code.

Opinionated frameworks such as AngularJS is a one-stop shop, which comes equipped with various components to build a fully-fledged front end application. Angular contains modules, which could help with fetching data from the server, to manage business logic and many more. On the other hand, libraries like React are less opinionated and just does one single thing well, which is rendering the view and let developers rely on other libraries to accomplish different concerns. For example, since ReactJS is just a view library, in order to talk to a server to fetch data, developers have to rely on some other library. It’s up-to the requirements and the developers to choose what framework best suited for them.

Apart from the very dominant frameworks like Angular and React, there are several other frameworks which managed gain attention as well. VueJS is one of notable framework that gained a lot of attention from the JavaScript community. VueJS combines the good pieces of Angular and React yet keeping the framework simple and lean.

Today there is Angular, React and Vue. Tomorrow there would be couple of new once. Try to stay away from framework arguments and pick what suits you the most for your requirements and stick with it.

Thousands of Lines of JavaScript Means the Dawn of New Challenges

JavaScript is a dynamic language and it could be difficult to manage a huge codebase when there are multiple developers working in a team. Developers could feel unproductive due to the lack of support from tools such as Intellisense in the editor. Refactoring a large JavaScript codebase can be tricky since editors would not be able to help much like they do with a statically typed language such as Java or C#.

This is where TypeScript comes to rescue. TypeScript is an implementation on top of JavaScript, a superset of JavaScript, which introduces a type system. TypeScript was introduced by Microsoft and it has been widely adopted by various teams as a viable mechanism for implementing scalable JavaScript applications. It’s worth mentioning that Angular 2, which is a framework from Google, is written in TypeScript and the Angular team recommends to use TypeScript when developing Angular 2 apps.

TypeScript is not the only thing that is trying to make JavaScript more manageable. Flow, a technology introduced by Facebook, is a type-checker for JavaScript. Flow allows you to add type annotations to your existing JavaScript file, where TypeScript is a language of its own.

Hybrid Mobile Applications are a Thing of the Past

Apart from browser and server side applications, JavaScript is better known also in the area of hybrid mobile applications. A single JavaScript codebase could be used in multiple mobile platforms saving time and cost.

Even though hybrid applications are a great option when considering time and cost, in terms of performance, it always been a concern. Since hybrid applications are a web view rendering the UI, obtaining native like performance is a challenge.

Image Courtesy: cdn-images-2.medium.com

This is where technologies like React Native and NativeScript comes into play. With these technologies, we can still write the application in JavaScript but get the performance benefits similar to a native application. Technology like React Native renders native UI views depending on the platform, providing the end user with the native rendering performance while allowing the developers to write the application in JavaScript.

Taking Over Desktop Applications

Writing cross platform desktop applications was a nightmare few years ago. JavaScript has changed the desktop application development landscape too. For example, Electron is a technology introduced by GitHub. Electron is a shell, which uses Chromium browser to render the UI elements and uses Node.js to access the file system and other native APIs, where a typical sandboxed browser based application would not be able to. This allows developers to build the UI of the desktop application by making use of the wide ecosystem of web frameworks and also enable file system access and many more native functionality, through the native APIs exposed by Electron.

Electron has been gaining a lot of attraction lately. Electron is the technology that powers the Atom editor of GitHub and GitHub realizing its potential, decoupled the shell and open sourced it as a standalone platform. Now Electron powers various applications, including Visual Studio Code editor from Microsoft and the desktop version of Slack.

JavaScript in 2017 and Beyond, the Programming Language of the Future

The days, where JavaScript was considered as a toy language is long gone. Today, JavaScript is a language, which can run in browsers, servers, mobile devices, desktop applications and even in embedded devices powering IoT use cases.

As I see, JavaScript is a language that is going to be here for a long time. It’s going to be a language, which truly breaks the platform barrier and allows developers to solve problems in various platforms.

It’s an exciting time to be a JavaScript developer. Feeling like diving in-depth to JavaScript? Take a look at the awesome book series titled You Don’t Know JavaScript. You might also be interested in checking out our 4 part series on building JavaScript web applications from scratch called The Road to JavaScript Web Applications.


How Reliable is Data Science?

Will it be the death of data science? Are we relying on data too much? were some of the hard hitting questions that were pointed at the tech community at the end of the US Presidential Elections 2016. As we all know, the elections tossed out a very different result to what most people were expecting. The predictions drawn out by various media outlets and numerous polls were proven wrong and the reliability of data was questioned.

HOW DO WE IMPROVE THE RELIABILITY OF THE RESULTS FROM DATA SCIENCE?

It brought home some of the limitations of data science. We cannot rely on data every time to give us a complete and accurate picture of what is happening.  Nothing is ever perfect and due to combination of many factors data can fail to make accurate predictions. Naturally, the curious minds started looking into where and how data science and poll predictions failed.

At Zone24x7, we too decided to give it a go. In the short video below, you can see few members from our own Data Science team tackling questions related to the reliability of data such as:

  • How reliable are the predictions?
  • How do you deal with uncertainty?
  • What is the future of data science?

Video Timeline

The context under which data science is applied in Zone24x7 – 00:37

On the reliability of predictions – 01:36

Dealing with uncertainty arising from data – 03:51

The Law of Statistical Regularity – 04:12

Test Data and Training Data – 04:32

The Ensemble Method – 05:12

Few thoughts on the future of data science and where it may be heading – 06:02

Image Courtesy: Header image from unsplash.com/@anthonydelanoix


Overcome Speech Anxiety, Fear and Speak Up

You’re in a scrum training session. It’s just starting off. The trainer is trying to get everyone to loosen up, so he’s asking a few easy questions. The first one, ‘What is agile?’

You don’t really know the answer but you think ‘it’s cool, he’ll just wait for a couple seconds and then answer his own question’. So you decide to wait him out. Now, waiting him out involves a whole lot of work. Counting the spots on the ceiling, checking to make sure there’s no lint on your shirt and above all else, avoiding eye contact like the plague!

You try this for a bit until you figure out this guy isn’t like the rest, he’s going to get his answer if it’s the last thing he does! So you start thinking of possible answers and finally settle on one you like, amidst all the anxiety and fear. You’re not really sure if it’s the right one but, if all the gods desert you and the trainer decides to ask you for the answer, you gotta have something to say right?

But you’ll be damned if you volunteer to answer. No need to shoot yourself in the foot. So you swallow your answer and keep your mouth tightly shut.

Meanwhile, your scrum trainer is still going around the room looking for an answer (some people just don’t know when to quit, I tell you!). Some of the audience volunteer answers (you roll your eyes thinking ‘suckers!’) and some get called on to give reluctant answers while struggling to find the confidence to speak up.

But none of them give the answer, the trainer is looking for. Apparently they’re ALL WRONG!! (Oh the horror!) Now, you’re secretly congratulating yourself for not answering. (Ha haa putha well done, pat yourself on the back). After all, why give a wrong answer and look stupid in front of 30 people right? I mean, if these other guys couldn’t get it right, what makes you think you’ve got the right answer?

Finally, your trainer gets tired of getting the wrong answer and of all the silent introverts, who simply refuse to let their voice be heard. He gives up and decides to just give the answer himself (you smirk to yourself and think ‘he should’ve done that in the first place. Could’ve saved us all a wasted minute’.).

THEN comes the answer. . .

And after hearing it, you could’ve happily strangled yourself with an extension cord! Because it’s the Same Exact Answer YOU THOUGHT OF! How stupid do you feel now?

Ever had this happen to you? Or something quite similar?

I have. And it’s not a pretty aftermath when you realize, you could’ve answered that question, you could’ve gotten the recognition for giving the right answer. . . you could’ve spoken up. . . !


Those dreaded meetings!

Another place that we fail and fear to speak at, are meetings. Yes, you know what I’m talking about; project meetings, stand-up meetings, retrospective meetings, review meetings – all kinds of meetings. It’s like your voice deserts you and your courage abandons you, when you go in to that meeting room. You actually see your confidence waving bye-bye to you at the door as the fear and the anxiety to speak in public, engulfs you. It’s terrible, it’s pathetic but it is also reality.

Why do we lose our voice in a crowd? Why do we feel shy or reluctant to voice our opinions and then regret it later? Why do we let the introvert in us take over and fail to contribute to meetings?  Why, why, why?

Well for one, we worry that we might say the wrong thing, that we’ll get the words wrong and mess it up. We’re afraid we’ll fail and we’re afraid that people will laugh at us for failing. We worry that people will mock our ideas and think them stupid.

Afraid and worried driven by anxiety.

Did you ever stop to think what would happen if you stopped being afraid of what could go wrong and focused on what could go right? Rainbows will appear, fireworks will go off, violins will start playing. You get the idea, Wonderful Things Will Happen.

Maybe, you would get the recognition for your great idea if you spoke up; maybe you would be the one to get the answer right out of a 100 people; and maybe you would not be kicking yourself later, because you regret not speaking up. Because if you’re not going to speak up and contribute to meetings, forums and all kinds of other groups you are part of, how is the world supposed to know you exist?


Do not underestimate yourself!

It’s important not to let your anxiety and fear of failure stop you from being yourself and speaking your mind. Because in a room full of people, if you have a question, I guarantee you, 10 other people will have the same question. So don’t assume that you’re the only one, don’t assume your question is stupid. Don’t kill your idea before it’s born.

Our speech apprehension, thanks to fear of looking stupid is holding us back. It is denting our confidence in communication. You know this for a fact, even though you pretend you don’t. Well, never fear, acknowledging that you have a problem is the first step to solving it (or so I’ve heard). So, what if you do say the wrong thing?

We’ve seen plenty of people say the wrong thing at meetings but a few days or weeks later, do we remember those incidents? No. But, we do remember the people that gave the right answers and the ideas that lead to brilliant concepts.

So what we need to get through these thick skulls of ours is that, whatever tiny bit of humiliation we feel when we mess up in front of a crowd, is temporary. But what about the appreciation and respect you’ll earn for speaking up? That, people will remember for a long time to come.

So really, how do you get over the anxiety, the fear and speak up? How do we convince our petrified brains to shake off that crippling terror and open our mouths?

Well the first step is to get over yourself! Don’t take it all so seriously! You make a mistake, so what?! Everybody makes mistakes, and I mean everybody.

Life is long, trust me, you won’t get through it 100% mistake free. In the end, we only regret the chances we didn’t take. So like Elsa says so aptly in Frozen, “Let it go, let it gooooo…….”. Let your fears go and take a chance. You’ll be so glad you did.

You know what else holds you back from speaking up? Insecurity and self-doubt.

Stop underestimating yourself so much. You didn’t get to where you are now by sheer accident. Nobody handed it to you on a silver platter. You worked hard, studied night and day. You must have retained something in that brain of yours right?

So what makes you think your ideas are worthless, that the questions you come up with are stupid, that the answers you think of are surely wrong? Trust yourself, trust your abilities and learn not to let your insecurities get in the way of taking a chance.

Now you’re thinking, ‘Yeah yeah, easy for her to spout philosophical ideas, they sound great, but really, where’s the practical advice?’ Coming right up!


Start today. Speak up, shake off the anxiety and build your confidence.

So here’s what you do the next time someone asks the audience a question. Think of an answer, close your eyes, and on the count of 5, raise your hand and start speaking. Just do it. You’ll have plenty of time to think of all those horrible ‘what if I’m wrong’ scenarios later.

In that moment, don’t think of anything else but the question and what you think the answer is. Just open your mouth and start speaking. Add to your answer as you go along and when you think you’ve gotten it all out, said everything you wanted to say, then and only then – shut up.

Try it, go on, I dare you!

Try it once and see what happens. (Oh and for those of you, who are wondering ‘why count to 5 instead of something like 3?’ Well, I thought for those of us, who are a bit more chicken than others, a count of 5 would give us a bit more time to find our long lost courage.)

So the next time your boss asks you to do a presentation, don’t think of excuses not to – just say yes. The next time someone asks you a question don’t try to get imaginary lint off your shirt – answer the man! The next time someone asks for ideas, give yours, no matter how stupid you think it might be. Who knows, it might just become the next big thing!

So Be Fearless and Speak Up.

Do It Now. . .

Image Courtesy: Header image from unsplash.com/@grakozy


Piyumi Dias

was a Software Engineer