Latest News

Wednesday, January 30, 2019

The advantages of Golang.


Golang is a programming language you might have heard about a lot during the last couple years. Even though it was created back in 2009, it has started to gain popularity only in recent years.

GoDoc is a static code analyzing tool that creates beautiful documentation pages straight out of your code. A remarkable thing about GoDoc is that it doesn’t use any extra languages, like JavaDoc, PHPDoc, or JSDoc to annotate constructions in your code. Just English.

It uses as much information as it can get from the code to outline, structure, and format the documentation. And it has all the bells and whistles, such as cross-references, code samples, and direct links to your version control system repository.

GoDoc is the only documentation engine for Go that is used by the whole community. This means that every library or application written in Go has the same format of documentation. In the long run, it saves you tons of time while browsing those docs.

Static code analysis
Go heavily relies on static code analysis. Examples include godoc for documentation, gofmt for code formatting, golint for code style linting, and many others.

There are so many of them that there’s even an everything-included-kind-of project called gometalinter to compose them all into a single utility.

Those tools are commonly implemented as stand-alone command line applications and integrate easily with any coding environment.

Static code analysis isn’t actually something new to modern programming, but Go sort of brings it to the absolute. I can’t overestimate how much time it saved me. Also, it gives you a feeling of safety, as though someone is covering your back.

It’s very easy to create your own analyzers, as Go has dedicated built-in packages for parsing and working with Go sources.

Built-in testing and profiling framework
Have you ever tried to pick a testing framework for a Javascript project you are starting from scratch? If so, you might understand that struggle of going through such an analysis paralysis. You might have also realized that you were not using like 80% of the framework you have chosen.

The issue repeats over again once you need to do some reliable profiling.

Go comes with a built-in testing tool designed for simplicity and efficiency. It provides you the simplest API possible, and makes minimum assumptions. You can use it for different kinds of testing, profiling, and even to provide executable code examples.

It produces CI-friendly output out-of-box, and the usage is usually as easy as running go test. Of course, it also supports advanced features like running tests in parallel, marking them skipped, and many more.

Race condition detection
You might already know about Goroutines, which are used in Go to achieve concurrent code execution. If you don’t, here’s a really brief explanation.

Concurrent programming in complex applications is never easy regardless of the specific technique, partly due to the possibility of race conditions.

Simply put, race conditions happen when several concurrent operations finish in an unpredicted order. It might lead to a huge number of bugs, which are particularly hard to chase down. Ever spent a day debugging an integration test which only worked in about 80% of executions? It probably was a race condition.

All that said, concurrent programming is taken very seriously in Go and, luckily, we have quite a powerful tool to hunt those race conditions down. It is fully integrated into Go’s toolchain.

Learning curve
You can learn ALL Go’s language features in one evening. I mean it. Of course, there are also the standard library, and the best practices in different, more specific areas. But two hours would totally be enough time to get you confidently writing a simple HTTP server, or a command-line app.

Go is much easier to bring to your team than Java (and the family), Javascript, Ruby, Python, or even PHP. The environment is easy to setup, and the investment your team needs to make is much smaller before they can complete your first production code.

Reflection
Code reflection is essentially an ability to sneak under the hood and access different kinds of meta-information about your language constructs, such as variables or functions.

Given that Go is a statically typed language, it’s exposed to a number of various limitations when it comes to more loosely typed abstract programming. Especially compared to languages like Javascript or Python.

Moreover, Go doesn’t implement a concept called Generics which makes it even more challenging to work with multiple types in an abstract way. Nevertheless, many people think it’s actually beneficial for the language because of the amount of complexity Generics bring along. And I totally agree.

According to Go’s philosophy (which is a separate topic itself), you should try hard to not over-engineer your solutions. And this also applies to dynamically-typed programming. Stick to static types as much as possible, and use interfaces when you know exactly what sort of types you’re dealing with. Interfaces are very powerful and ubiquitous in Go.

However, there are still cases in which you can’t possibly know what sort of data you are facing. A great example is JSON. You convert all the kinds of data back and forth in your applications. Strings, buffers, all sorts of numbers, nested structs and more.

In order to pull that off, you need a tool to examine all the data in runtime that acts differently depending on its type and structure. Reflection to rescue! Go has a first-class reflect package to enable your code to be as dynamic as it would be in a language like Javascript.

Opinionatedness
Coming from the Javascript world, one of the most daunting processes I faced was deciding which conventions and tools I needed to use. How should I style my code? What testing library should I use? How should I go about structure? What programming paradigms and approaches should I rely on?

Which sometimes basically got me stuck. I was doing this instead of writing the code and satisfying the users.

To begin with, I should note that I totally get where those conventions should come from. It’s always you and your team. Anyway, even a group of experienced Javascript developers can easily find themselves having most of the experience with entirely different tools and paradigms to achieve kind of the same results.

This makes the analysis paralysis cloud explode over the whole team, and also makes it harder for the individuals to integrate with each other.

Well, Go is different. You have only one style guide that everyone follows. You have only one testing framework which is built into the basic toolchain. You have a lot of strong opinions on how to structure and maintain your code. How to pick names. What structuring patterns to follow. How to do concurrency better.

While this might seem too restrictive, it saves tons of time for you and your team. Being somewhat limited is actually a great thing when you are coding. It gives you a more straightforward way to go when architecting new code, and makes it easier to reason about the existing one.

Culture
People say that every time you learn a new spoken language, you also soak in some part of the culture of the people who speak that language. Thus, the more languages you learn, more personal changes you might experience.

It’s the same with programming languages. Regardless of how you are going to apply a new programming language in the future, it always gives you a new perspective on programming in general, or on some specific techniques.

Be it functional programming, pattern matching, or prototypal inheritance. Once you’ve learned it, you carry these approaches with you which broadens the problem-solving toolset that you have as a software developer. It also changes the way you see high-quality programming in general.

And Go is a terrific investment here. The main pillar of Go’s culture is keeping simple, down-to-earth code without creating many redundant abstractions and putting the maintainability at the top. It’s also a part of the culture to spend the most time actually working on the codebase, instead of tinkering with the tools and the environment. Or choosing between different variations of those.

Go is also all about “there should be only one way of doing a thing.”

A little side note. It’s also partially true that Go usually gets in your way when you need to build relatively complex abstractions. Well, I’d say that’s the tradeoff for its simplicity.

If you really need to write a lot of abstract code with complex relationships, you’d be better off using languages like Java or Python. However, even when it’s not obvious, it’s very rarely the case.

Conclusion
You might have heard of Go before. Or maybe it’s something that has been staying out of your radar for a while. Either way, chances are, Go can be a very decent choice for you or your team when starting a new project or improving the existing one.


About Us 

TMA Solutions was established in 1997 to provide quality software outsourcing services to leading companies worldwide. We are one of the largest software outsourcing companies in Vietnam with 2,400 engineers. Our engineering team was selected from a large pool of Vietnam IT resources; they are well-trained and have successfully completed many large and complex projects.

A short overview of Go programing language.

Go or Golang is a programming language created at Google, by Google developers and other programmers. This programming language is free and open source and currently being maintained by Google. One of the founding member of Go is Ken Thompson who is best known for his work in Unix operating system development. Go compiler was initially written in C but now, it is written in Go itself, making it self-hosted.

So what’s so special about Go?
  • Go is statically typed compiled language.
  • It support built in concurrency model with the help of GoRoutines.
  • It has built in garbage collector and memory safety.
  • Strings in Go are UTF-8 encoded by default.
  • It has simpler syntax compared to other compiled programming languages.

Motivation behind its creation

There are tons of programming language to choose from nowadays. Each language has its own benefits and different programmers find different languages friendlier than others. But a language should be perfect in all sense and should be easy to work with for any programmer. A programming language can be dedicated for one task like COBOL or can be used general purpose programming like Java or JavaScript on Node.

The four important things a language must thrive to achieve is speed/efficiency, reliability, scale and simplicity. If we consider languages like C or C++, they are great at speed, scale and reliability but in terms of simplicity, they are not so great. Java on other hand is very reliable and highly scalable, but moderately simple to write and not so efficient compared to other low-level languages. Python is a widely adopted language and very simple to write but not so efficient and reliable.

Whenever Google creates a language or a framework, I suppose it’s because they want to eventually use it in their own organization. Angular, Material design, Dart, Flutter etc. are few examples.

Google back in 2008–2010 was looking for a language which could be great at all these 4 things. I guess their idea was to replace traditional low-level programming languages with this language in their own infrastructure. Hence with the help of Ken Thompson, Rob Pike and Robert Griesemer, they created a language Go that was could give developers an experience of writing scripting (interpreted) language like Python or JavaScript but at the same time, provides quirks of low-level compiled language. Their major focus was on simplicity, scale, speed and reliability. Since, go is a commonly used English word which makes it difficult to target internet searches to Go Programming Language, many people use GoLang instead of Go.

Things that make Go a great language is its simple concurrency model, its package based code management and its non-strict (type inference) typing system. Go does not support out of the box Object Oriented Programming experience, but is support structures (structs) which with the help of methods and pointers can help us achieve the same. 

I came across an article on day, which stated that Go will be server language of the future. I don’t deny that. Go has strong potential, tooling is great and writing Go code is easy. Since, Go is not widely adopted language as of early 2018, it’s hard to find Go related tutorials and learning resources on the web.

About Us 

TMA Solutions was established in 1997 to provide quality software outsourcing services to leading companies worldwide. We are one of the largest software outsourcing companies in Vietnam with 2,400 engineers. Our engineering team was selected from a large pool of Vietnam IT resources; they are well-trained and have successfully completed many large and complex projects.

Tuesday, January 29, 2019

More attractive policies, mechanisms needed to develop IT parks

IT parks nationwide have achieved impressive results, offering jobs for a great number of people and attracting capital of giant domestic as well as international corporations, becoming the key to IT growth in the country, reported the the Ministry of Information and Communications yesterday.


There are now 4 concentrated IT parks nationwide, consisting of Quang Trung Software City in Ho Chi Minh City (HCMC), Da Nang Software Park in the central city of Da Nang, Cau Giay Concentrated IT Park in Hanoi, Hanoi Software Park.

Particularly, at present, Quang Trung Software City in HCMC has 160 companies and startups specializing in software, digital content, IT services, with the total registered capital of more than VND2,600 billion (approx. $112 million). The overall 2018 revenues of these organizations were around VND10,000 billion ($431 million), an increase of 2.5 times compared to 2014. The export value in 2018 reached nearly $350 million, a rise of 38.7 percent compared to 2017.


Thanks to this spectacular success, on March 3, 2016, the Prime Minister approved Decision No.333/QD-TTg to pilot the establishment of ‘Quang Trung Software City chain’ to include the software park of the Vietnam National University – Ho Chi Minh City, making it the birthplace of various innovative startup businesses and skillful IT human resources for the city.
Similarly, Da Nang Software Park has obtained encouraging results lately. With 75 running companies, its total income in 2018 was a massive VND1,800 billion ($77.6 million). Likewise, Cau Giay Concentrated IT Park has been able to attract prominent national IT businesses such as FPT, CMC, and Misa to develop products for export purposes.
However, reports from the Authority of Information Technology under the Ministry of Information and Communications show that existing policies for the growth of concentrated IT parks have not been able to demonstrate their guidance capacity, nor can they encourage necessary resources due to their inconsistency. What is more, they can hardly keep up with the fast development of IT in reality.
In the meeting, representatives of many IT parks expressed their wish to be considered as a high-tech area in order to gain proper beneficial rights on land use, tax pay, and credit.
The representative of Quang Trung Software City said that at the moment, there was no difference in policies to attract capital between his organization and outside ones, so the only factor this IT park could offer is its support, which is barely sufficient. In the Industry 4.0 era, there must be a steering, detailed, and open mechanism to allow free creativity and experiments among domestic IT businesses.
Deputy Minister Phan Tam admitted that after 5 years adopting Decree No.154, there are still inadequacy, calling for an urgent adjustment on mechanisms. Thus, he announced that his ministry will try its best to propose a better version in the Governmental Task Program at the end of 2019.
Accordingly, Decree No.154 is expected to be more updated with the reality and more suitable for other existing laws like the Investment Law, the Land Law. The Ministry of Information and Communications is going to work closely with other ministries for a higher consistency level of policies for concentrated IT parks while building a detailed strategy on attracting more investment in the infrastructure for these areas.

Monday, January 28, 2019

5 Blockchain Trends Everyone Should Know About

Blockchain traveled a rocky road in 2018 but is still hotly tipped as a technology with huge potential for transforming business and day-to-day life.
The past year saw huge drops in value for its flagship use case – cryptocurrency Bitcoin – and reports that many pilot programs are failing to show true value. However, many big players including IBM and Walmart are continuing to push ahead, confident it can provide real value for organizations in need of innovative solutions around record keeping and secure recording of transactions.
So, here are my five predictions for how we’re likely to see blockchain use growing and continuing to make headlines – although they may be slightly less hyperbolic – in 2019.

Less Hype and Scams, More Substance
Any new technology has the potential to attract snake-oil salesman, and perhaps blockchain attracted more than most. This meant that 2018 saw regulators stepping in, meaning that those offering “miracle solutions” and get-rich-quick schemes built (or not built) on blockchain should be far less visible in the next 12 months.
What we should see instead is results of more considered, mature endeavors in the blockchain arena. Businesses such as Walmart that is investing in solutions designed to shore up food safety standards in the wake of crises such as 2018's E.coli outbreak. Walmart's solution means anyone involved in the supply of certain products will be able to trace individual items back to the farm where they were grown, using a tamper-proof distributed database.
Amazon is also announcing blockchain projects for this year – with two blockchain initiatives aiming to enable its AWS customers to take advantage of distributed ledger technology in their own projects.
With big players like those two (and others) entering the game, it seems certain that blockchain will start to demonstrate that it can bring real value during 2019.
The Blockchain and Internet of Things Convergence Continues to Gather Pace
According to one report, the use of blockchain technology to secure data and devices in the internet of things (IoT) doubled during 2018. This trend is likely to continue next year and beyond, as more organizations wake up to the potential of distributed, encrypted ledger technology in this field. The powerful encryption used to secure blockchains means that attackers need a vast amount of computing power to brute-force their way into just one node. Additionally, their decentralized nature means attackers can't bypass security by disabling a single-point-of-failure with, for example, a denial-of-service attack.
As well as security, blockchain offers utility benefits in the IoT field, too. With the number of connected devices predicted to top 26 billion during 2019, vast amounts of machine-to-machine communication will be taking place, at far too high a speed for humans to keep up manually. Experts predict that blockchains will increasingly be used to log and monitor these communications and transactions, and although this convergence is at a very early stage, 2019 will see an explosion in its use.
More Blockchain Offerings from the Financial Services Industry
Cryptocurrency values may have taken a hammering during 2018, due in no small part to a bursting of the speculative bubble built up around the arrival of such potentially transformative technology.
But the mainstream financial services industry was undoubtedly shaken by the emergence of this tech and the potential it has to disrupt their businesses. So much so that it seems likely they will be at the forefront of the next wave, when it comes crashing in.  One example is Bakkt, the Bitcoin-based futures trading platform planned by ICE, the operator the New York Stock Exchange.
In developing markets particularly, where much of the population is labeled "unbankable” due to institutions’ inability or unwillingness to connect them to its services, start-ups are likely to lead the way with innovative services built around blockchains and digital, fraud-resistant currencies, storage, and transfer mechanisms.
More Investment Opportunities
Not just in quirky, unknown cryptocurrencies with unproven use cases – blockchain technology makes it possible to offer and track investments in a whole range of asset classes that traditionally have been the preserve of institutional investors and the wealthy.
For example, tokenization lowers the bar to entry for investment in property, potentially allowing more liquid trading of high-value assets and allowing more of us a slice of the pie of the growth (or losses) they can generate. Regulation will be needed before these investment opportunities will be considered safe enough for everyday investors to take part, and as we’ve seen over the last year, this certainly seems to be on its way.
Art, fine wines and property are all examples of investment assets that traditionally were only an option for well-off investors with the luxury of being able to put capital in up-front and be in no hurry for their investment to pay off. With regulation in place, everyday investors can purchase digitally-backed “shares” in these asset classes and sell them off when they need to liquidate their funds.
Additionally, blockchain-based “smart contracts" are designed to reduce the reliance on middlemen such as brokers and lawyers when establishing these transactions, further lowering the costs and barriers to entry.
Bitcoin (and other cryptocurrencies) will still be big business
I’m not going to be stupid or irresponsible enough to predict that the value of cryptocurrencies is going to shoot into the stratosphere (again) in 2019. As I’ve said before, speculating on the value of these digital assets isn’t my business, and if the tumultuous volatility of recent years proves anything, it’s that no one can accurately predict what will happen next.
One thing that is clear, though, is that cryptocurrencies are far from dead. Using the Bitcoin price as a benchmark, prices are still some ten times higher than they were two years ago, and trading volumes on exchanges show there is still a healthy appetite for speculative investment.
And that’s before we even start to consider the possible future of alternative cryptocurrencies such as Ethereum, Ripple and Tether, that all promise to improve on Bitcoin in some way – offering more utility, security or speed.
During 2019, we may not see a return to the highs of 2017, when the value of crypto assets in circulation worldwide came close to three-quarters of a trillion dollars. But we could see a continuation of the period of relative stability that we saw during 2018. And as the public’s understanding of what cryptocurrencies offer (beyond get-rich-quick schemes) grows, the foundations of a more useful and valuable crypto ecosystem beginning to emerge.

Sunday, January 27, 2019

Taking sides in the man against machine debate

The eternal discussion of Man vs. Machine will be never ending ... even though the benefits of automation and other technologies are thoroughly understood. Cost benefits, time efficiency, and consistency are major driving factors for organisations to focus on technologies like robotic process automation (RPA) and Artificial Intelligence.
On the other hand, there is the classic argument of innovative technologies driving unemployment.
Artificial Intelligence had already started impacting lives in subtle, yet profound, ways such as its application in weather forecasts, email filters, voice and image recognition, etc. But now, what was once just a segment of our imagination, is taking root in everyday lives. Today, phone calls can be attended by virtual assistants, autonomous cars can safely take us to our destinations, and repetitive manual tasks taken over by bots that can outperform any human employee multiple times over.
With the advent of RPA, rules-based business processes can be fully automated. Data entry, extraction, report preparation, emails, invoices, tech support and payrolls, etc are areas that are already fully automated by several organisations. These can also be scheduled, logged and fully controlled so as to be completely independent of any human intervention.
Apart from the obvious cost reduction and time efficiency, employees can now focus on other productive tasks. Robotic process automation has the potential to automate 30-40 per cent of existing business processes and with between 30-200 per cent potential return on investment in the first year of implementation.
Organizations are realising the power of these disruptive technologies and undertaking digital transformation initiatives that will have far-reaching effects on every enterprise function, and using it to enhance their decision-making with actionable intellectual insights.
We are not the fastest or the strongest species out there. Yet, we dominate the planet owing to our intellect. Our ability to communicate, learn from mistakes, improvise, and make rational decisions make up for the lack of our physical strength.
What would happen if a new species is introduced that outperforms us, both intellectually and physically? It would dominate us, just like how we domesticate other animals. That’s what digital disruptive technologies like AI are.
Jobs are automated and taken over by a better virtual workforce, which leaves us desperate to maintain our livelihood with lesser options. We then see people in the labour force striking back against the machines on how they are harming the society.
Nowadays, machines do most of the physical labour for us, from cranes to 3D printers that have significantly reduced human efforts. Their components are replaceable, they can work tirelessly and complete thousands of complex calculations within fractions of a second, which we cannot claim for ourselves.
With machine learning, we can teach computers years’ worth of knowledge that can be then processed in a matter of minutes. We are not in a position to compete against our own super creations, but to rather use it to our advantage.
There are winners and losers from technological disruptions. Disruptions can happen quicker than what individuals are able to adapt. Among the consequences is a lost group of people, who lack the knowledge or skills to adapt.
We should, therefore, equip ourselves with better talent and expertise to stay in the competition between man and machines. The key to handling this transition and keeping pace is learning new competitive skills right from our education system to create a futuristic workforce.

Thursday, January 24, 2019

Mobile Payment Apps Suffer Low Retention Rates


Because they take so long to install, you might think mobile payment apps would boast high retention rates. You’d be wrong.
About four weeks after being downloaded, the average retention rate for mobile payment apps is just 8%, according to CleverTap. That’s far less than an 48% retention rate for travels, and a 20% retention rate for over-the-top media and entertainment (OTT) apps.
Also, the average registration time for mobile payment apps is an hour, compared to 18 minutes for travel apps and eight minutes for OTT apps.
Perhaps the low retention rates are due to consumers having less use for mobile payment apps. The average consumer doesn’t use a mobile payment app until 12 days after downloading it. On average, only 35% make use of the apps within the first month.
By contrast, the average consumer uses a travel app within 44 minutes of downloading it, while 80% of consumers do so within the first month.
In addition, the average consumer uses an OTT within 72 hours of downloading it, while 26% do so within the first month.
For its findings, the mobile marketing firm says it analyzed billions of anonymous data points collected from over 700 million devices and 583 million unique users.
Worldwide, only about one in five consumers  use their smartphones as a “wallet,” according to a report released last year by Loup Ventures.
Long-term, Gene Munster’s VC firm has estimated that four in five consumers will use their phones to make real-world purchases.
Players in the field include Google, Samsung, PayPal, Venmo, Square, and Stripe.

Wednesday, January 23, 2019

Radical transparency in DevOps and ITSM

When DevOps or both processes are outsourced to one or multiple vendors, it complicates everything for the organisation, its users and leadership even more.

So says Nancy Van Elsacker Louisnord - president of service management software business TOPdesk US, adding that the increased importance placed upon service teams to improve customer experience, makes it clear that IT service management (ITSM) and DevOps are silos that must be broken down.
Knowing where DevOps, ITSM and business principles originate and how to align them is a first step towards better service delivery, she says.
However, achieving a truly excellent customer experience takes radical transparency throughout the entire service chain.
Don't miss Van Elsacker Louisnord live online on 30 January at 8pm, as she walks you through the varying steps you can take to achieve excellent customer experience by aligning DevOps and ITSM.
Van Elsacker Louisnord will define what radical transparency looks like at the various parts of the chain whether your DevOps or ITSM processes are in-house or outsourced.
About us
TMA Solutions was established in 1997 to provide quality software outsourcing services to leading companies worldwide. We are one of the largest software outsourcing companies in Vietnam with 2,400 engineers. Our engineering team was selected from a large pool of Vietnam IT resources; they are well-trained and have successfully completed many large and complex projects.


Tuesday, January 22, 2019

Macau | Chinese tourists drive mobile payment sector to go global - Nielson and Alipay report

Jointly conducted by Nielson Holdings- an American information, data and measurement company- and Alipay, a report on the latest trends in outbound tourism and the consumption habits of Chinese travellers has been released


Macau (MNA) – A report jointly conducted by Nielson Holdings- an American information, data and measurement company- and Alipay on the latest trends in outbound tourism and the consumption habits of Chinese travellers has been released, titled ‘2018 trends of Chinese mobile payment in outbound tourism’.

The report posits that travelling is no longer a luxury for many Chinese citizens as they are now enjoying rising incomes and better living standards, with 140 million outbound trips made in 2018, up 13.5 per cent year-on-year according to the latest statistics from the China Tourism Academy.

The increase in Chinese tourists’ consumption and spending habits overseas has driven China’s mobile payment sector to go global, and the report states that China’s mobile payment brands, represented by Alipay, have moved beyond the initial hurdles and are now experiencing vigorous growth.

In a survey of more than 2,800 Chinese tourists and 1,244 merchants at popular attractions frequented by Chinese tourists in Singapore, Malaysia and Thailand, the report concludes that more than 69 per cent of Chinese tourists paid with their mobile phones while abroad, up 4 per cent the previous year, and 32 per cent of transactions used mobile payments, overtaking cash for the first time.

The survey also found that 93 per cent of Chinese tourists would likely increase their spending if mobile payments were more widely accepted, a higher figure than that in 2017’s survey.

To accommodate this demand, the report states that currently, ’58 per cent of merchants located in areas frequented by Chinese tourists in Singapore, Malaysia and Thailand accept mobile payment, with 70 per cent of them accepting Chinese mobile payment.’

With the increased usage of mobile payment overseas by Chinese tourists and a deeper understanding of Chinese mobile payment brands by existing merchants, more merchants are willing to adopt Chinese mobile payment solutions.

That holds true for Macau and Hong Kong as well – considered top locations for short haul visits by first-tier city dwellers according to the report- when last year, over 8,000 mobile payment machines were installed in local Macau stores to encourage more Chinese tourists to make purchases, and mobile payments accounted for more than half of Chow Tai Fook Jewellery store sales in Macau and Hong Kong in the first quarter of 2018.

Meanwhile, the report states that consumption patterns by Chinese tourists remain largely unchanged from the previous year, with the top three expenditure categories remaining as shopping accounting for 25 per cent, accommodation accounting for 18 per cent and dining accounting for 16 per cent.

About us
TMA Solutions was established in 1997 to provide quality software outsourcing services to leading companies worldwide. We are one of the largest software outsourcing companies in Vietnam with 2,400 engineers. Our engineering team was selected from a large pool of Vietnam IT resources; they are well-trained and have successfully completed many large and complex projects.

Monday, January 21, 2019

The reason why Golang becomes increasing famous.

In only two years, Golang leaped from the 65th most popular programming language to #17. Here's what's behind its rapid growth.

The Go programming language, sometimes referred to as Google's golang, is making strong gains in popularity. While languages such as Java and C continue to dominate programming, new models have emerged that are better suited to modern computing, particularly in the cloud. Go's increasing use is due, in part, to the fact that it is a lightweight, open source language suited for today's microservices architectures. Go is also gaining ground in data science, with strengths that data scientists are looking for in overall performance and the ability to go from "the analyst's laptop to full production."

As an engineered language (rather than something that evolved over time), Go benefits developers in multiple ways, including garbage collection, native concurrency, and many other native capabilities that reduce the need for developers to write code to handle memory leaks or networked apps. Go also provides many other features that fit well with microservices architectures and data science.

Go advantages

Some programming languages were hacked together over time, whereas others were created academically. Still others were designed in a different age of computing with different problems, hardware, and needs. Go is an explicitly engineered language intended to solve problems with existing languages and tools while natively taking advantage of modern hardware architectures. It has been designed not only with teams of developers in mind, but also long-term maintainability.

At its core, Go is pragmatic. In the real world of IT, complex, large-scale software is written by large teams of developers. These developers typically have varying skill levels, from juniors up to seniors. Go is easy to become functional with and appropriate for junior developers to work on.

Also, having a language that encourages readability and comprehension is extremely useful. The mixture of duck typing (via interfaces) and convenience features such as ":=" for short variable declarations give Go the feel of a dynamically typed language while retaining the positives of a strongly typed one.

Go's native garbage collection removes the need for developers to do their own memory management, which helps negate two common issues:

  •          First, many programmers have come to expect that memory management will be done for them.
  •          Second, memory management requires different routines for different processing cores. Manually attempting to account for each configuration can significantly increase the risk of introducing memory leaks.


Go's native concurrency is a boon for network applications that live and die on concurrency. From APIs to web servers to web app frameworks, Go projects tend to focus on networking, distributed functions, and/or services for which Go's goroutines and channels are well suited.

Suited for data science

Extracting business value from large datasets is quickly becoming a competitive advantage for companies and a very active area in programming, encompassing specialties like artificial intelligence, machine learning, and more. Go has multiple strengths in these areas of data science, which is increasing its use and popularity.

 ·        Superior error handling and easier debugging are helping it gain popularity over Python and R, the two most commonly used data science languages.
·         Data scientists are typically not programmers. Go helps with both prototyping and production, so it ends up being a more robust language for putting data science solutions into production.
·         Performance is fantastic, which is critical given the explosion in big data and the rise of GPU databases. Go does not have to call in C/C++ based optimizations for performance gains, but gives you the ability to do so.


Seeds of Go's expansion

Software delivery and deployment have changed dramatically. Microservices architectures have become key to unlocking application agility. Modern apps are designed to be cloud-native and to take advantage of loosely coupled cloud services offered by cloud platforms.

Go is an explicitly engineered programming language, specifically designed with these new requirements in mind. Written expressly for the cloud, Go has been growing in popularity because of its mastery of concurrent operations and the beauty of its construction.

About Us

TMA Solutions was established in 1997 to provide quality software outsourcing services to leading companies worldwide. We are one of the largest software outsourcing companies in Vietnam with 2,400 engineers. Our engineering team was selected from a large pool of Vietnam IT resources; they are well-trained and have successfully completed many large and complex projects.

Learning Golang becomes easier with 4 tips


My university's freshman programming class was taught using VAX assembler. In data structures class, we used Pascal—loaded via diskette on tired, old PCs in the library's computer center. In one upper-level course, I had a professor that loved to show all examples in ADA. I learned a bit of C via playing with various Unix utilities' source code on our Sun workstations. At IBM we used C—and some x86 assembler—for the OS/2 source code, and we heavily used C++'s object-oriented features for a joint project with Apple. I learned shell scripting soon after, starting with csh, but moving to Bash after finding Linux in the mid-'90s. I was thrust into learning m4 (arguably more of a macro-processor than a programming language) while working on the just-in-time (JIT) compiler in JVM code when porting it to Linux in the late '90s.

Fast-forward 20 years... I'd never been nervous about learning a new programming language. But Go felt different. I didn't want to be the laughingstock, the Go newbie as a 40-something-year-old senior developer! We all know that programmer pride that doesn't like to get bruised, no matter your experience level.

My early investigations revealed that Go seemed more committed to its "idiomatic-ness" than some languages. It wasn't just about getting the code to compile; I needed to be able to write code "the Go way."

Now that I'm four years and several hundred pull requests into my personal Go journey, I don't claim to be an expert, but I do feel a lot more comfortable contributing and writing Go code than I did in 2014. So, how do you teach an old guy new tricks—or at least a new programming language? Here are four steps that were valuable in my own journey to Golang land.

1. Don't skip the fundamentals

While you might be able to get by with copying code and hunting and pecking your way through early learnings, Go has a very readable language spec that was clearly written to be read and understood, even if you don't have a master's in language or compiler theory. Given that Go made some unique decisions about the order of the parameter:type constructs and has interesting language features like channels and goroutines, it is important to get grounded in these new concepts. Reading this document alongside Effective Go, another great resource from the Golang creators, will give you a huge boost in readiness to use the language effectively and properly.

2. Learn from the best

There are many valuable resources for digging in and taking your Go knowledge to the next level. All the talks from any recent GopherCon can be found online, like this exhaustive list from GopherCon US in 2018. Talks range in expertise and skill level, but you can easily find something you didn't know about Go by watching the talks. Francesc Campoy created a Go programming video series called JustForFunc that has an ever-increasing number of episodes to expand your Go knowledge and understanding. A quick search on "Golang" reveals many other video and online resources for those who want to learn more.

Want to look at code? Many of the most popular cloud-native projects on GitHub are written in Go: Docker/Moby, Kubernetes, Istio, containerd, CoreDNS, and many others. Language purists might rate some projects better than others regarding idiomatic-ness, but these are all good starting points to see how large codebases are using Go in highly active projects.

3. Use good language tools

You will learn quickly about the value of gofmt. One of the beautiful aspects of Go is that there is no arguing about code formatting guidelines per project—gofmt is built into the language runtime, and it formats Go code according to a set of stable, well-understood language rules. I don't know of any Golang-based project that doesn't insist on checking with gofmt for pull requests as part of continuous integration.

Beyond the wide, valuable array of useful tools built directly into the runtime/SDK, I strongly recommend using an editor or IDE with good Golang support features. Since I find myself much more often at a command line, I rely on Vim plus the great vim-go plugin. I also like what Microsoft has offered with VS Code, especially with its Go language plugins. Looking for a debugger? The Delve project has been improving and maturing and is a strong contender for doing gdb-like debugging on Go binaries.

4. Jump in and write some Go!

You'll never get better at writing Go unless you start trying. Find a project that has some "help needed" issues flagged and make a contribution. If you are already using an open source project written in Go, find out if there are some bugs that have beginner-level solutions and make your first pull request. As with most things in life, the only real way to improve is through practice, so get going.

And, as it turns out, apparently you can teach an old senior developer new tricks—or languages at least.


About Us

TMA Solutions was established in 1997 to provide quality software outsourcing services to leading companies worldwide. We are one of the largest software outsourcing companies in Vietnam with 2,400 engineers. Our engineering team was selected from a large pool of Vietnam IT resources; they are well-trained and have successfully completed many large and complex projects.

Tags

Recent Post