Thursday, 14 March 2019

A Complete Guide to Blockchain Programming

Blockchain is the way of the future. It is not farfetched to think that the future will be built around this emerging technology. Blockchain started off as a public, permissionless technology, and later, another type of blockchain was introduced, each for its own specific set of use cases. Public/permissionless blockchains are open, decentralized, and slow, whereas private/permissioned blockchains are closed and centralized, either partially or completely. 

In this article, I am going to discuss what you need to learn in order to start building apps that use blockchain technology. When I first started learning blockchain, a lot of questions popped into my head. What are the different types of blockchains? Which programming languages should I use to program efficiently? And what are the platforms for blockchain development?



from DZone.com Feed https://ift.tt/2O5zJyT

A Case Study of Implementing an Efficient Shuffling Stream/Spliterator in Java

Sorting a Stream instance is straightforward and involves just a single API method call — achieving the opposite is not that easy.

In this article, we'll see how to shuffle a Stream in Java both eagerly and lazily using Stream Collectors factories and custom Spliterators.



from DZone.com Feed https://ift.tt/2F9aIzW

Caching in: Lessons From Performance Engineering on Jira Cloud

Performance engineering is a big deal when you're serving millions of users from every corner of the globe. We previously wrote about a large engineering transformation program for Jira and Confluence, which we codenamed Vertigo – read more about the overall program here.

As part of the Vertigo program, we knew we were going to have to invest a lot of engineering effort into performance, and, in particular, the performance of Jira. While we have always spent time over the years improving Jira’s performance using the tools and architecture at hand, the Vertigo architecture brought a host of new opportunities to further improve the performance and reliability of Jira.



from DZone.com Feed https://ift.tt/2TKafwm

Scaling Microservices: General Strategy

When designing distributed systems it's important to understand that explicit design decisions must be made to enable scalability within components. These applications must be engineered from the beginning with the requirement to meet anticipated needs with options that facilitate future growth. We build our systems in anticipation of scaling because we anticipate the platform will grow, which means more users, features, or data.

This is the first article in a series of posts where we will discuss topics which include:



from DZone.com Feed https://ift.tt/2JeDwv1

Making AI Facial Recognition Less Racist

AI has famously been rather poor at recognizing faces in a non-racist way. The size of the challenge was highlighted by recent work from MIT and Stanford University, which found that three commercially available facial-analysis programs displayed considerable biases against both gender and skin-types.

For instance, the programs were nearly always accurate in determining the gender of light-skinned men but had an error rate of over 34 percent when it came to darker-skinned women.



from DZone.com Feed https://ift.tt/2TNfriW