Welcome to curated list of handpicked free online resources related to IT, cloud, Big Data, programming languages, Devops. Fresh news and community maintained list of links updated daily. Like what you see? [ Join our newsletter ]

Using JaCoCo as code coverage tool for Scala

Categories

Tags akka scala java programming

Straight to the point guide by Miles Buckley focusing on open source coverage tool for Java.

Code Coverage is a metric that measures what percentage of your code has been executed during unit and integration tests.

JaCoCo is a great open-source toolkit for code coverage measurements. JaCoCo was originally written for Java and runs on the JVM, but because it’s bytecode-based it works for Scala too. It also includes reports which can be extremely helpful when working with complex projects.

The guide explains how JaCoCo works to measure code coverage. How JaCoCo works to measure code coverage:

  • Instructions
  • Branches type
  • Cyclomatic Complexity metric
  • Lines
  • Methods type
  • Classes metric

You will also get information hor reports are generated and what metrics are available. Good work!

[Read More]

Progressive Enhancement: Respecting web browser preferences in a post ES6 world

Categories

Tags performance frontend web-development

Jaime Rios is an author of this intro into Progressive Enhancement (PE).

In a nutshell, Progressive Enhancement is a philosophy for developing web applications and this are the principles:

  • Basic content should be accessible to all web browsers
  • Basic functionality should be accessible to all web browsers
  • Sparse, semantic markup contains all content
  • Enhanced layout is provided by externally linked CSS
  • Enhanced behavior is provided by unobtrusive, externally linked JavaScript
  • End-user web browser preferences are respected

An alternative to PE is Graceful Degradation (GD). The difference is that PE goes from simple to complex while GD goes the other way around.

Even if you are not aware of it, the browser exposes information about the user preferences. To learn which ones, follow the link to original article. Job well done!

[Read More]

NGINX structural enhancements for HTTP/2 performance

Categories

Tags nginx performance web-development

The blog post from pen of Nick Jones published on cloudflare.com. It is about experience of his team which deals with features related to: TCP, QUIC, TLS and Secure Certificate management, HTTP/1 and HTTP/2. They were responsible for implementing the Enhanced HTTP/2 Prioritization product.

They had a number of interesting realisations about NGINX: the HTTP oriented server onto which Cloudflare currently deploys its software infrastructure. We quickly became certain that our Enhanced HTTP/2 Prioritization project could not achieve even moderate success if the internal workings of NGINX were not changed.

Enhanced HTTP/2 Prioritization aims to do one thing to web traffic flowing between a client and a server: it provides a means to shape the many HTTP/2 streams as they flow from upstream (server or origin side) into a single HTTP/2 connection that flows downstream (client side).

Write queue construction in NGINX Source: https://blog.cloudflare.com/nginx-structural-enhancements-for-http-2-performance/

The article then dives in some detail into:

  • Identification of some key pain points in NGINX
  • HTTP/2 frame write queue reclamation
  • HTTP/2 frame write event re-ordering
  • Upstream buffer partial re-use
  • TLS layer Buffering

The team is eager to share cloudflare modifications to NGINX with the community, so they have opened this ticket, through which they will discuss upstreaming the event re-ordering change and the buffer partial re-use change with the NGINX team.

Good information please follow the link to original article to learn more!

[Read More]

Creating your own React validation library: the basics

Categories

Tags react javascript web-development programming

Ever wondered how validation libraries work? This article by Kristofer Selbekk will tell you how to build your very own validation library for React step by step.

This is first part of series of articles which include: the basics, the features, the experience.

The content is split into:

  • Designing the API
  • Storing the form state
  • What’s a reducer?
  • Validating our form
  • How to pick validator functions

The code examples in CodeSandbox are provided with detailed explanation for each of above steps. You will be able to create a simple, usable and pretty cool validation library.

You will also get deeper understanding of how other libraries implement “the magic of validation”.

[Read More]

Why Ruby On Rails is a good choice in 2019?

Categories

Tags programming miscellaneous how-to software startups

Few thoughts by Błażej Kosmowski why he believes Ruby is doing great and still remains a good technology to choose in 2019.

There is no doubt that it is still a relevant language and it still attracts new followers and developers. Here is why:

  • GitHub’s top programming language
  • The community is active and supportive
  • Ruby constantly evolves
  • It really is great for startups… and for internal tools… and prototyping… and whatnot
  • Ruby has well-established code style recommendations
  • Developer happiness

But why is Ruby slowing down? There is no easy answer to that question, but we can theorise about it. It is likely that Ruby has matured enough and lost some momentum. however vast amount of libraries and resources for learning, helpful and active community, well established best practices and beautiful, readable syntax – all this makes ruby a programming language it is a pleasure to work with – a language oriented on developer happiness.

Last but not least, what should be kept in mind that there are no “bad” programming languages per se, there are only badly chosen languages for particular use cases. Good read!

[Read More]

Tips and tricks for developing a serverless cloud app

Categories

Tags serverless devops cloud

An article by Miles Buckley and with contribution by Sebastian Hesse about how to pursue serverless cloud app development. As organizations search for flexible and scalable data solutions, the pull for going serverless has never been stronger.

There are two ways you can develop serverless functions: locally or directly in the cloud. One key drawback we saw with the cloud execution is that debugging your code can be more challenging.

It is important to consider few things:

  • You must have a test environment that closely resembles your production
  • Local code updates are generally faster
  • Debugging your code along the way
  • Keep track of all your (Lambda) functions

Authors suggest keeping your functions simple and separate your concerns. Consider focusing on just one task your function will perform and pour your energy into delivering that functionality very well.

The article then recommend these best practices:

  • Keep it simple – limit the scope of your functions
  • Key in on communication – communication between your functions becomes very important
  • Ensure all aspects are scalable
  • Make sure 15 minutes is enough time to execute your app
  • Understand data limits

Nice and concise reading. The link to video presentation also available. Well done!

[Read More]

Great engineer needs the liberal arts

Categories

Tags miscellaneous data-science learning programming

Thomas Betts wrote for infoq.com about how liberal arts eductaion can provide new insights and perspectives that shine a light on technical tasks for any software developer. E.g. empathy helps you know your audience and create great software that delights your customers.

The education of most software engineers involves a heavy focus on STEM subjects: science, technology, engineering, and math.

However, much of what helps you become a great software engineer, and create outstanding software that people want to use, comes from outside the world of STEM.

Liberal arts education teaches how to use a broad knowledge base to analyze new and unfamiliar topics. Computer science is the study of algorithms, data structures, and operating systems. Programming is the practical implementation of computer science.

The article then explains:

  • What does “liberal arts” mean?
  • The importance of language
  • Know your audience
  • How every problem is a communication problem
  • How to model software communication after human communication
  • The importance of empathy
  • Critical thinking and problem solving
  • Lifelong learning

Great engineers realize that continuing to learn about non-technical aspects of software development improves their ability to work with a team and deliver better solutions. Nice one!

[Read More]

How to create histogram in Rlang

Categories

Tags analytics miscellaneous big-data cio data-science

In this article the author will show you how to create histogram in R using ggplot2 package. Written by Data Sharkie. When we get a new dataset for our analysis or research, often we would like to learn about the frequency of occurrence distribution of the variable of interest.

A histogram is a plot with rectangles, height of which represents the frequency or “count” of the occurrence and width is equal to the grouping interval.

Histogram

Source: @datasharkie https://datasharkie.com/how-to-create-histogram-in-r/

The article is straightforward and covers:

  • Installing ggplot2 package
  • Loading sample dataset: trees
  • Creating a histogram in R

Charts and code is also included and explained. Short and sweet!

[Read More]

Tracking and reminders in AWS Amplify

Categories

Tags aws serverless app-development web-development

A guide by Jan Hesters how to track which features your users use in AWS Amplify and send them emails, push-notifications and SMS based on their behavior.

In this tutorial, you are going to learn how you can use the analytics category from AWS Amplify together with AWS Pinpoint to understand and engage your users. With AWS Amplify, you can easily track your users’ activity. And AWS Pinpoint allows you to send them engaging, customized and relevant messages. With relevant what author means is being right about the conversation you have, the audience you target and the place and time you choose to interact.

The guide explains:

  • Set up – React Router and AWS amplify
  • Initializing Amplify
  • Auth
  • Routing
  • Tracking – including Custom Evenets, Auto Tracking, Endpoints
  • Set up email reminders

Nice and detailed guide which will get you running your infrastructure with AWS Amplify in less than 30 minutes. Well done!

[Read More]

Scaling up an iOS app using modules

Categories

Tags ios app-development

Nebil Kriedi wrote this article about scaling up the development of the Depop iOS application, both in terms of number of features developed in parallel, and in terms of number of contributors to the code base.

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

Author explains how in this context it is critical to modularise a large and old codebase, into small, independent and testable components. Along the way we will also share some of the solutions we adopted to deal with dependency management and to optimise build performance in a continuous delivery setup.

The article is split into:

  • Codebase overview
  • Initial approach to defining the clear boundaries between the main macro-components
  • Solution
  • Explaining what is a module?
  • Assessing the effort

Good read for anybody working in a fast-growing company! Sample project repository also provided.

[Read More]