Showing posts with label developers. Show all posts
Showing posts with label developers. Show all posts

Tuesday, October 13, 2020

What’s New In Golang 1.15?

 

What's new in Golang 1.15

Since its delivery, Golang has increased popularity in the developer community. Till the year 2016, it was crowned as the language of the year and holds 11th position in the TIOBE programming community index. Golang is used for all types of software development solutions like general programming language, system programming language or general support. It has the ability to handle heavy server-centric web services, text processing problems and heavy distributed apps. Since its release, the language has been constantly revised and improved over the years. Before proceeding for the new features and updates in Go 1.15, let us have a quick look at Golang.

What Is Golang?

Golang is also known as Go. It is an open source programming language developed by Google in the year 2007. Golang’s creators want to make a statically typed compiled language that would be as simple to use as dynamically typed languages and have a similar level of expressiveness. In short they want to include C++  with Java and Python while including the best features of them. So, Golang has elements from statistically and dynamically typed languages. Golang syntax was designed to allow virtually everything to be programmed using less syntax. Even though the language has been available for longer than 10 years, it hasn’t introduced any serious syntax modifications that could make the code over-compiled. Recently, on 11th August 2020, it has released version 1.15. Let us see some amazing updates of Golang 1.1.5.

What’s New In Golang 1.15?

1. Compiler-

  • Package unsafe’s safety rules allow you to convert an unsafe.Pointer into uintptr when calling certain functions. Earlier, the compiler allowed different chained conversions. The compiler now requires precisely one conversion.
  • Golang 1,15 includes a -spectre to both compiler and assembler.
  • Now, the compiler rejects //go: compiler directives that does not have any meaning for the declaration they are applied to with “misplaced compiler directive” error.
  • Now, the compiler’s -json optimization logging reports large copies( >=128) and provides explanations of escape analysis decisions.

2. Linker-

Completely rewritten linker is the largest tooling change in 1.15. Have a look at the three major structural changes in new linker-

  • Moving from the linker to compiler, this enables parallelization as compiles are done in parallel across multiple CPUs, but the link step mostly be done in sequential at the end of the build. Also the results of the compiler are cached by Golang tooling.
  • Improving key data structures, primarily by avoiding strings. The recent linker makes use of large symbol table indexed by string; the new design avoids strings however much as possible by using a  symbol numbering technique.
  • Avoiding loading all input object files into memory at once: this makes the new linker use less memory for large programs, and allocates less memory.

3. Tools-

  • Vet- Now, this tool warns about form string(x) conversions where x has integer type other than rune or byte. It also warns about type assertions from one interface type another interface type when the type assertion will always fail.
  • Go command- The GOPROXY environment supports skipping proxies that return errors. Now, Proxy URLs can be separated with commas or pipe characters. Various flag parsing issues in go test and go vet have been fixed.

4. Runtime-

  • For runtime, now allocation of small objects works more efficiently at high counts and has lower worst-case latency. Further, non-blocking receives on closed channels now perform and also non-blocking receives on open channels.

5. Standard Library Additions-

In every new version release, Go comes with various minor changes and updates to the library. Here we’re including some useful and significant changes-

tzdata Package-

A new embedded tzdata package was included that allows embedding the timezone database into a program. Importing this package allows the program to find timezone information without timezone database on local system. Also you can embed timezone database by building with -tags timet/zdata. This increases the size of the program by about 800 KB. This might be helpful and can test some code with the virtualized environments like Go playground.

X.509 CommonName Deprecation-

Older versions of Go use CommonName field on X.509 certificates as a hostname if there is no Subject Alternative Names, would be disabled by default. If Still need to use this legacy behavior, at that point you need to include x509ignoreCN=0 in the GODEBUG environment variable.

net/url Package-

The net/url package adds a new URL. The method redacted() returns the URL as a string. This is proposed in the Issue 34855. It is an extremely helpful improvement for audit logging and security. It’s a simple derivation from the URL.String() which masks the password if exists from the string being passed. It doesn’t modify at all to the URL itself yet a copy of it.

6. Minor Changes To The Library-

1. context-

While creating a derived context by using a nil parent is now disallowed. 

2. bufio-

When a Scanner is used with an invalid io.Reader that incorrectly returns a negative number from Read, the Scanner will not panic, yet will rather restore the new error ErrBadReadCount. 

3. crypto-

The PublicKey and PrivateKey types in the crypto/rsacrypto/ecdsa and crypto/ed25519 packages now have an Equal method to to make type-safe interfaces for public keys or to compare keys for equivalence. The method signature is viable with go-cmp’s definition of equality. Now, Hash implements fmt.Stringer.

4. crypto/ecdsa-

New VerifyASN1 and SignASN1 functions allow generating and verifying ECDSA signatures in standard ASN.1 DER encoding.

5. crypto/elliptic-

New UnmarshalCompressed and MarshalCompressed functions allows encoding-decoding NIST elliptic curve points in compressed format.

6. crypto/rsa-

According to RFC 8017, now, VerifyPKCS1v15 rejects invalid short signatures with missing leading zeroes

7. crypto/tls: 

New Dialer type and its DialContext method allows use of context to both connect and handshake  with TLS server.

8.crypto/x509/pkix: 

Now, Name.String prints non-standard attributes from Names if ExtraNames is nil. 

9. database/sql-

New DB,SetConnMaxIdleTime method allow  to remove a connection from connection pool after it has been idle for some time, regardless of the total lifespan of the connection.

The DBStats.MaxIdleTimeClosed field shows the total number of connections closed due to DB.SetConnMaxIdleTime. New Row.Err allows query error checking without calling Row.Scan

10. database/sql/driver-

New Validator interface may be implemented by Conn to allow drivers to signal if a connection is valid or if it should be discarded. 

Know more at- https://solaceinfotech.com/blog/whats-new-in-golang-1-15/


Thursday, June 4, 2020

AI And Data Science Is Useful To Combat Coronavirus- Is That True?

AI And Data Science Is Useful To Combat Coronavirus- Is That True?

AI And Data Science Is Useful To Combat CoronavirusIs That Tru

One of the most threatening viruses Covid-19 is spread across the world and it affects at least 160 countries within a three-month span. It has emerged as one of the biggest challenges to face the 21st-century world. But thanks to the AI technology that is helping to save people through various ways. AI technology can help to educate, warn, and empower people to become more knowledgeable about the intensity of corona spread and significantly reduce the impact.

Apart from AI, you have a lot of technologies like cloud, mobile, analytics, robotics, Machine learning, and also high-speed internet to effectively deal with all kinds of pandemic situations. But AI plays a vital role in mitigating the COVID-19 pandemic situation. Developments in AI apps such as speech recognition, natural language processing, data analytics, machine learning, deep learning, chatbots, and facial recognition are not only used for diagnosis but also for contact tracing and vaccine development. Let us see how it helps.

Use Of AI And Data Science To Combat Coronavirus-

Use of AI and Data Science to combat Coronavirus

1. AI To Track And Forecast Outbreaks-

If we can track the virus, it will be easier to fight against it. With the analysis of news reports, social media platforms and government documents, AI can learn and detect an outbreak. The canadian startup BlueDot tracks the infectious disease risks by using AI, actually it’s AI noticed and warned about the threat several days before the WHO issued their public warnings.

2. Diagnosis Through AI-

Immediate diagnosis is always a winning measure towards the fight of any disease. And hence immediate diagnosis that response measures such as quarantine can be implemented to further limit the spread of infection. Because of the huge number of cases, there is a barrier to rapid diagnosis. AI has improved this diagnostic time through technology such as that developed by LinkingMed, a Beijing-based oncology data platform and medical data analysis company. Pneumonia is a starting complication of COVID-19 infection that can now easily be diagnosed by the analysis of a CT scan within 60 seconds with 92% accuracy and a recall rate of 97% on test data sets. This is possible due to the AI model that analyzed CT images and quantified in terms of number, volume and proportion.

3. Fever Detection AI and Facial Recognition –

Thermal cameras have been used to detect the fever of a human body. But the drawback of this technology is the need for human operators. Now cameras possessing AI-based multisensory technology have been used at airports, hospitals, nursing homes, etc. This technology automatically detects a person’s fever and tracks their movements, recognizes their faces and detects whether the person has worn a face mask or not.

4. Discovering Drugs-

In the earlier part of pandemic virus transmission, there needs a healing drug for preventive measures. In this pandemic situation, many healthcare services are trying to find a preventive drug and hinder the spread of infection. Many AI tools and shared data sets offer a lot of ways to understand the coronavirus structure and accelerate the process of discovering a vaccine. Using AI technology for finding a drug for the pandemic will help the pharmaceutical industries.

Know more at- https://solaceinfotech.com/blog/ai-and-data-science-is-useful-to-combat-coronavirus-is-that-true/


Monday, December 9, 2019

Advances In AI For Web Development

Just some of technological developments has attracted as much public interest as artificial intelligence. In the previous few years, we have seen it grow at a higher rate. Alongside AI, web development is also advancing at an extraordinary pace. The presence of modern frameworks for creating more predictable, testable, readable, and also scalable web applications has allowed developers to keep up with the ever- growing demand for better user experience. Browsers have become better optimized with the availability of numerous native APIs, and SEO adds new demands as time passes.
Web development is embracing the power of AI to make web applications better and also more robust. Today, standards demand future- proofed applications delivered more rapidly. Web developers are using AI for their help. Here we have analyzed some areas where AI is helping web development to grow at a quicker pace.

AI for web development-

AI For Web Development

1. Intelligent code completion-

Code completion has consistently been a key factor for developer productivity. It accelerates the process of coding applications by decreasing errors and other basic mistakes. Today, code completion usually works using an in-memory database of classes, variable names, and different constructs defined in the application. When the user starts typing, IDEs search for possible matches and suggest them in a pop-up window.
Artificial intelligence is now adding logical expectation to code completion. Let’s consider an example where a user starts typing a variable name as now. The IDE can offer completion to the method of getting the current time from the DateTime interface. If a developer types a variable as color, the IDE can offer completion from an interface characterizing the theme of the application. Google recently declared Dart 2.5 SDK with ML Complete- code completion powered by machine learning. It works using a TensorFlow Lite model to predict the conceivable next symbol as the developer is editing.

2. Intelligent prefetching-

Web developers today have been performing code splitting with webpack and other comparable libraries. Development in these libraries has allowed us to optimize the manner in which our code is delivered to the end user. Predictive prefetching could be achieved by preparing a model to predict what pages users are likely to visit dependent on their journey. This can be a basic model that depends on data about how the application is being utilized in general. Further development can be made using deep neural networks to analyze a particular user.
Other than the user’s journey, there are different factors that can influence the probability of a page to be visited next. For instance, links closer to the user’s hand position on a mobile device are more likely to be visited than links farther from the user’s quick reach.
Guess.js is so far the most ideal approach to add predictive prefetching to web applications. It has a webpack plugin and supports Angular, Next.js, Nuxt.js, and Gatsby.

3.Automated test cases-

To take UI testing to the next level, image recognition is used. Dynamic UI controls can be recognized regardless of their shape and size, so AI can examine interfaces to check whether changes are advantageous or break the system. AI can also help in analyzing whether certain parts of UI match with the requirements and desires of the audience the product serves.
Creating unit tests that fulfill all conceivable use cases can be teasing now and again. Artificial intelligence has an automated test case generation. By using AI-generated unit tests, developers can accomplish higher code coverage while splitting the time and effort required to build a thorough and significant suite of unit tests.
Another case is predicting user journeys by inspecting current information and creating flows for end-to-start tests. This will allow the QA engineer to concentrate more on testing new features while remaining secure about keeping current functionalities intact.
Here are a few of the tools that leverage AI to transform software testing:
  • Test.ai: A company by ex-Google and ex-Microsoft test leads. It offers an AI-powered test automation platform to help mobile application distributors deliver quality user experiences to their customers.
  • Testim.io: A machine learning tool that authors, executes, and also maintains automated tests.
  • AISTA: While it isn’t actually a tool, the Artificial Intelligence for Software Testing Association connects testers using AI for QA purposes

4. Better SEO: Better keywords and multilingual image tagging-

From technical reviews, keyword research, and content optimization to content distribution, tag management, and internal linking, AI is making an immense difference in how SEO is done today. Alongside creating multilingual content from one source, AI is also helping to generate relevant meta information.
It was an expensive task for large scale e- commerce organizations to generate proper keywords against every product image they showed, and also finding the important tag for different languages added a lot to the expense. Today, refined image recognition techniques can automatically generate multilingual tags from the images on display.
Also, advancement in content analysis are helping content writers and entrepreneurs in producing relevant tags and keyphrases against large documents. This also helps writers to effectively link between the content they have produced previously with freshly brewed stuff.

5. Tailoring experiences for everyone-

Artificial intelligence is here to control the next generation in website personalization. This could change the nature of the internet forever. We are going towards a time in which websites will adapt themselves to give an ideal experience custom- made uniquely for each user.
That may well be possible through a development of the AI tools that power today’s artificial design intelligence (ADI) platform and analytics systems. With big investments from organizations like Adobe and Wix, there’s certain to be a prosperous future ahead for ADI.

Conclusion-

Based on how AI has influenced the modern world- and the speed at which it is still advancing- clearly we’ve just observed the beginnings of the disruptive force that this technology will apply in the business.
Going ahead, it’s a virtual certainty that AI will play an essential job in each feature of software development. 
As technology progresses, it affects in many ways in many industries. And is also done with the software development industry. Chatbot is one of them. Know the chatbot development platforms at- Top 10 Best Platforms for Chatbot Development. If you need AI kind of software that eases your development or business work, you can connect with solace expert’s team. Team is dedicated and well proficient to give you the best solution with new technology and trends.  

React native vs Kotlin: Which one to choose?

In the course of recent years, React Native has gotten a popular choice for Android and iOS application development. The cross-platform code sharing promise is the most tempting feature of this technology. Regardless of being a very popular choice, React Native isn’t a Holy Grail and has its limitations. There are companies which already decided to change their mobile tech stack radically and switch to platform-native development for their existing applications.
There is another solution available which aims to permit implementing scalable, multi platform projects and promises to eliminate React Native’s issues. Kotlin Multi Platform allows focusing on iOS, Android and  also backend, web frontend, and desktop platform simultaneously, allowing you to compile the shared codebase into platform specific executable code without any bridges.
Here we will thoroughly analyze the capabilities of the well- adopted and well developed React Native technology with the new trial Kotlin language  feature called Kotlin Multi Platform so as to discover what use cases each one of them is better suited for.

React Native-

Being already steady for a couple of years now React Native- a framework created by Facebook, is a popular choice for mobile applications development. It permits building mobile applications for Android and iOS in JavaScript. Respond Native let us make UI components in JS code which are then translated into the native platform-specific components. The big benefit of React Native is the huge community and great adoption in the mobile community. There are a lot of external libraries and custom, open source components available around. This makes it a helpful decision for rapid prototyping and quick MVPs. What’s the fundamental downside of this JavaScript-powered framework? Probably the JavaScript itself which restrictions make React Native projects fairly harder to scale and less flexible compared with different technologies.

Main features

  • UI code shared between iOS and Android
  • Powered by JavaScript
  • Live reload of the app’s UI

Pros of React Native-

1. Faster to build

The important point of React Native is shorter development time. So you could state React 1 and Kotlin 0. How is it faster? There are various ready-to-apply components that beat having to create such functionality from scratch BUT they are limited . Some solutions are missing in React Native, so you would be back to square one – building them without any preparation. So it fundamentally comes down to two things:
  1. If you locate your desired components in React Native, then you are all good for fast build.
  2. In the event that you don’t, it would mean equivalent to developing in Kotlin.

2. Same app quality-

This probably won’t mean anything to some of you, yet applications developed in React Native vs. applications developed in Kotlin feel the same. That is so because React Native renders using native components. So you get a similar look and feel of the application.

3. Shoot two platforms with one framework

The undeniable ace-  you get the chance to focus on various platforms with one Framework, basically iOS and Android. Not all features will be available in apt packages, you should be write your own versions for the ones missing, however you will have two applications with the effort for making one.

4. Hot reloading-

Perhaps the best thing about React Native – The hot reloading feature. You get a ‘LIVE’ feedback of whatever changes you make to the application, WHILE the application is running. That eliminates many pain points in having to work with UI. TEST AND SEE TEST AND SEE, That’s how it works and it works perfectly. Saves time in compilation, concentration and productivity.

5. Smaller teams

Native development requires two separate teams for Android and iOS. It can keep down communication between developers and, hence, slow down the development. If you choose React Native, you will at most need a good JavaScript developer who can write the code for both platforms. Clearly, applications with more native features will require help from native developers also. Not denying this reality, in many cases, the group will be smaller in size, and therefore, easier to manage. One developer can code for both iOS and Android. Reducing team size, expenses and for the most part decreasing the time it takes to develop. This is a major benefit  since there is no need to learn two distinct languages and platforms, it is sufficient to know just one.

6. A web-full taste-

The JavaScript edge at last pays off here. If you are ever thinking of transitioning to mobile development, React Native could make the move simpler. JavaScript is generally common in web development and React Native is a JavaScript Library. It will cause Mobile development to appear to be somewhat familiar and simple to adapt to.

Cons

  • Low security and memory management issues due to JavaScript based libraries
  • Bridged communication between JS code and native platform
  • Performance issues
  • Limited to iOS and Android platforms

Kotlin Multiplatform-

Since Kotlin began to be formally supported by Google as a language for Android applications it is continuously growing. Kotlin is getting extremely well known among developers because of its cleanness and development speed. It was even chosen as the second most preferred programming language in the Stack Overflow Developer Survey in 2018. Despite the fact that this new language itself is right now more popular among Android developers it can be used also on the backend and frontend sides. Additionally, it can be compiled and run natively on iOS, MacOS, Linux, Windows, WebAssembly, and even embedded systems like STM32.
Starting with Kotlin 1.2 JetBrains released an experimental language feature called Kotlin Multiplatform. Its promise is to write the business logic  components once and reuse on all platforms it can be compiled to including JVM, Android, JavaScript, iOS, Linux, Windows, Mac, and embedded systems. The greatest benefit over other multi platform solutions like React Native is that Kotlin code can flawlessly cooperate with other native components like UI layer or platform specific code. Besides, it’s possible to share the logic to a backend or whatever different applications you may have.

Kotlin Pros

1. Maintainability-

Kotlin is backed by a great organization which is responsible for creating some of the very best IDE tools brought to light. There is no possibility JetBrains will neglect to give tool support for Kotlin. As of now, Kotlin has support on different Development environments including Android Studio. So if you are choosing Kotlin, know you are choosing a potential giant that could be used over numerous tools and IDEs.

2. Less code-

Consider coding. It is simply writing and with any writing, one brilliant principle consistently applies: “The less you write, the less mistakes you make.” Kotlin code isn’t just concise however it has a clear codebase. That leaves less space for mistakes and more space for stable code in production. You need to write less number of lines of code to achieve a similar functionality.

3. Reliability

Kotlin is a well developed language which first appeared in 2011, it has experienced numerous testing stages before the final release. It is a programming language made by programmers and they took into account many issues with a developer’s point of view. One of which is they made the most recent release compatible with the previous versions too. Working on Android and managing various versions is one of the greatest pain points. So, Kotlin’s dependability is a gift.

Cons

  • Still in the experimental state
  • A limited amount of available libraries
  • Usually requires a bigger team of devs working together
  • Less suitable for fast MVPs and prototypes

What the future will look like?

React Native will in general lose its control in the mobile area which is most likely brought about by the most recent arrival of Flutter. The future of both is as yet unknown, in spite of the fact that it appears the hype for Flutter has just begun.

Is there a place for Kotlin Multiplatform then?

It appears to be so. It turns out it could be a great technology to be integrated into the mobile applications alongside Flutter. That is because Flutter allows separating the UI layer from the business logic effectively and Kotlin Multiplatform provides an especially good way of the business logic code sharing among numerous platforms.
You can also compare React native with Ionic at- React Native vs Ionic: Which one is best for you?

Final Words-

Choosing the best technology stack for development is crucial act as it leads your development to the success. Knowing the Pros and cons of a technology stack before development will be more beneficial. Here you have gone through React Native vs Kotlin. You can choose the best one for development as per your requirement.
If you are still confused to choose the best one between react native and Kotlin, Solace experts team is here to help you. Team is well proficient in new technology trends to give you the best solution which helps to achieve the success you deserves. Consult with solace team for effective development solution. We will be happy to help you.