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 ]

Architecturing an App with functional reactive programming

Categories

Tags agile web-development functional-programming software-architecture kotlin

Whenever a team is about to start a new project, there’s one question that always comes up: “Which architecture are we going to follow?” And every developer tends to have their own opinion on the matter, which makes perfect sense, because it’s such an important topic. By Vincent Pradeilles.

Think about it: Good architectures result in apps that perform well, are easy to maintain, and are fun to work on. On the other hand, a subpar architecture usually ends up delivering the kind of glitched and clunky project that people neither want to use or maintain.

The goal of a functional reactive architecture is therefore to enable the flexibility of reactive programming while relying on the principles of functional programming in order to structure the code in a viable manner. If we build upon the previously stated definition, we could say that a functional reactive program explicitly subscribes to future events, in order to process them once they have been emitted, in a scalable and maintainable way.

The article then goes over:

  • Functional, Reactive?
  • Let’s look at a concrete use case
  • Beyond front-end development
  • Making your project more reactive

The term functional reactive architecture definitely feels like a mouthful. And it should, because it encompasses two very broad concepts of software programming: Functional programming and reactive programming. So let’s start with a quick recap of these two concepts.

The code examples in this article mainly use RxSwift and RxKotlin, but thanks to the API standardization, everything you learn here will be easily applicable in your favorite language. Excellent read!

[Read More]

How I've learned to deal with touchy managers as a software engineer

Categories

Tags agile learning cio teams miscellaneous

How do I work around a touchy manager relationship as a software engineer? You asked and Neil from neilonsoftware.com has some answers. By Neil Green.

The definition of “touchy” is “oversensitive and irritable,” which necessarily means they are a poor manager. Good managers are calm, rational, and are empathetic to the needs of their subordinates.

What you have is better called a “boss,” as they allow their personality flaws to show in their managerial approach. Therefore, I read your question as, “How do I work around an oversensitive and irritable boss?

Working for a bad boss is often cited as the #1 reason why people quit their job, and I would be remiss not to recommend that you find a new position working for an experienced manager. Touchy bosses tend to focus primarily on the mistakes you make, which can result in nonconstructive criticism.

To make them easier to deal with, helping your boss deal with the sources of their stress might help improve their managerial style. Managers often deal with a copious amount of pressure at work, and you might be able to alleviate some of their stress to help calm them down:

  • Are they overseeing a project that is behind schedule? Help to put the project back on schedule
  • Are their subordinates not performing? Help them improve the performance of low-performing individuals
  • Are people constantly complaining to them about work conditions? Help address the source of the complaints.

All of these are easier said than done and share the characteristic of rewarding bad behavior. However, reducing the ambient stress your boss deals with might improve their managerial approach. Interesting.

[Read More]

Basic CI/CD pipeline for serverless apps

Categories

Tags serverless app-development cicd web-development

For deploying her applications, Emily have a CI/CD pipeline that uses the AWS Serverless Application Model (SAM), GitHub, and CircleCI. In this post author will show you how to set it up. Many people get started with serverless by using the AWS console. By Emily Shea.

While it’s helpful to start, building directly in the console can get tricky as you run into issues like keeping track of your Lambda function code edits or making manual, repetitive configuration changes to resources.

In order to build more complex applications and keep your sanity, a CI/CD pipeline will be a big help. A CI/CD pipeline will take you out of the console and allow you to store and update function code, configure resources, and deploy entire applications from right within your text editor. It is as magical as it sounds.

Content of this article:

  • Set up your development environment
  • Fork my example repo and clone to your computer
  • Create a CircleCI account and set up a new project
  • Give CircleCI AWS permissions
  • Review SAM template and function code
  • Create an S3 bucket for your deployment package
  • Managing secrets in your CI/CD pipeline
  • Deploy & test out your application

You will also get handful fo screen shots, commands and code examples explaining the concept. And the list of tools you will be working with. Very insightful!

[Read More]

Five things to do when you've got too much on your plate

Categories

Tags agile learning cio management analytics

I guess we’ve all been there sometimes – waking up in the morning, tired of the very thought of the day ahead of us, still exhausted from yesterdays’ chores. Our already low levels of energy pop like a balloon when we visualize our very first errand and a seemingly never ending list of tasks waiting to be finished. By Rebecca Brown.

You need to reset some things in your life to regain the balance. Here are the five essential things to begin with:

  • Reconnect with your authentic self
  • Re-evaluate and prioritize
  • Delegate and share responsibilities
  • Learn to say no
  • Ask for professional support

Along with learning to say “no” you should consider learning how to identify the tasks you can delegate or share responsibilities for. Learning when and how to say “no” is one of the tougher lessons one has to learn, but it’s vital for keeping balance in life. It is especially difficult when you have to say no to the things and people worthy of your time and effort. Really liked it!

[Read More]

Quick Guide on loading initial data with Spring Boot

Categories

Tags java app-development web-development programming

Spring Boot makes it really easy to manage our database changes in an easy way. If we leave the default configuration, it’ll search for entities in our packages and create the respective tables automatically. By Eugen Paraschiv.

But sometimes we’ll need some finer grained control over the database alterations. That’s when we can use the data.sql and schema.sql files in Spring.

The content of this article:

  • The data.sql file
  • The schema.sql file
  • Controlling database creation using Hibernate
  • @Sql
  • @SqlConfig
  • @SqlGroup

You will learn hwo we can leverage schema.sql and data.sql files for setting up an initial schema and populating it with data. We also saw how we can use @Sql, @SqlConfig, and @SqlGroup annotations to load test data for tests. Keep in mind that this approach is more suited for basic and simple scenarios, any advanced database handling would require more advanced and refined tooling like Liquibase or Flyway. Great read!

[Read More]

Expanding Service Mesh with Terminating Gateways

Categories

Tags kubernetes docker containers devops cicd

HashiCorp Consul 1.8 introduced two new features which ease the process of adopting a service mesh, terminating gateways and ingress gateways. In this blog we will discuss what a terminating gateway is, and how it can benefit organizations as they migrate applications into a hybrid service mesh. By Blake Covarrubias.

Many large enterprises typically have many applications and services running across multiple, geographically diverse datacenters on multiple compute infrastructure platforms such as bare metal, mainframes, virtual machines, or containers. Organizations typically adopt a service mesh to gain a common set of networking capabilities across these disparate environments.

Terminating gateways provide a way to extend the service mesh connectivity to applications or services which exist outside the mesh environment. They act as egress proxies which participate in the service mesh, and provide connectivity to one or more external destinations.

hashicorp.com

Terminating gateway

Source: @hashicorp https://www.hashicorp.com/blog/expanding-service-mesh-with-terminating-gateways/

The content is split into:

  • Service mesh primer
  • How Terminating Gateways work
  • Multi-DC mesh expansion

Terminating gateways enable enterprises to realize the benefits of a service mesh while still retaining the ability to securely communicate with external systems outside the mesh environment using a consistent network and security model. Great read!

[Read More]

Two-Factor Authentication (2FA) for SSH with Google Authenticator

Categories

Tags infosec google cloud app-development

If you’ve ever signed up for a Google, Github, or Twitter account then you’ve likely come across two-factor authentication. Adding in two-factor logins to SSH then seems like a no brainer. It provides a much-needed extra security layer on an otherwise very vulnerable port of entry to your server. By serverauth.com.

If you’ve ever signed up for a Google, Github, or Twitter account then you’ve likely come across two-factor authentication. It’s a fairly simple concept. A user tries to log in, and even if they enter the correct details, they then get asked to confirm a unique one-time code, often presented in an app or sent to them via SMS.

The article describes following step how to secure your server:

  • Two-factor for SSH
  • Adding Authenticator to your server (Debian, Ubuntu, CentOS, RedHat)
  • Configuration
  • Enabling SSH 2FA
  • Restart SSH & Test

You will also get explanation how to enable have a slight delay between tokens, so they don’t expire at exactly 30 seconds. This is handy for when times may not be 100% accurate, so is worth enabling. And you probably also want to enable rate-limiting. This prevents attackers from attempting to crack entry by brute force, so should be enabled. Straightforward and very useful!

[Read More]

How to pay your rent with your open source project

Categories

Tags agile software web-development open-source

Many open source projects are terribly under-resourced and under-funded. Some open source developers even have to sacrifice their financial security to work on their passion. Written by Marko Saric.

Financial sacrifice to work on an open source product many people use and enjoy should not be required. In order to build and grow great open source alternatives to proprietary software such as Firefox is to Chrome, we do need more people to be able to commit to open source full time.

The article main focus is on:

  • Why should open source projects need funding at all?
  • Business models aligned with something people are willing to pay for
  • Hosted, plug and play solution as a SaaS
  • Premium version with additional features and expanded functionality
  • Training, support or consulting services from the project’s maintainers
  • Crowdfunding, voluntary donations and sponsorship
  • Find what works best for your situation and your project

Explore the different options and different examples in this post. The list of funding methods above doesn’t mean that you have to choose and sticky to one business model only. Great read!

[Read More]

Training a deep CNN to learn about galaxies in 15 minutes

Categories

Tags big-data machine-learning data-science python

Let’s train a deep neural network from scratch! In this post, I provide a demonstration of how to optimize a model in order to predict galaxy metallicities using images, and I discuss some tricks for speeding up training and obtaining better results. By John F Wu.

In short, we want to train a convolutional neural network (CNN) to perform regression. The inputs are images of individual galaxies (although sometimes we’re photobombed by other galaxies). Galaxy metallicities can be obtained from the SDSS SkyServer using a SQL query and a bit of JOIN magic. All in all, we use 130,000 galaxies with metallicity measurements as our training + validation data set. In astronomy, metallicity is the abundance of elements present in an object that are heavier than hydrogen or helium.

The content of the article:

  • Predicting metallicities from pictures: obtaining the data
  • Organizing the data using the fastai2 DataBlock API
  • Neural network architecture and optimization
  • Evaluating our results

The author used fastai2 – a powerful high-level library that extends Pytorch and is easy to use/customize. At the moment, the documentation is still a bit lacking, but that’s okay – it’s still under active development! Very useful!

[Read More]

Do not follow JavaScript trends

Categories

Tags javascript nodejs web-development programming cio agile

What to do when you feel a sudden urge to use shiny new trendy framework or tool. You may ping your team lead or send a message to your whole team about this cool new way of doing things, and you suggest that you start using it. The idea of having to learn something new is good, and I agree with that, but how often should you do that? Written by Nikola Đuza.

So many choices, so little time. What to do?

Gartner: A hype cycle

Source: @gartner.com https://www.gartner.com/en/research/methodologies/gartner-hype-cycle/

It doesn’t matter what we choose now or what we chose back in the day. We will still get tempted or have to rewrite our code later down the road. Reasons to do it might vary:

  • Your company was using [insert framework name] and is unable to hire new folks
  • You feel the old solution is not working out for you anymore, and you want something new
  • You succumbed to the industry trends and want to use latest and greatest

Unless we break the cycle.

Constant improvement and shipping a new, better version is planted deep inside our industry. The need to make more efficient, less complex, prettier, robust solutions is breathing down our necks. The article describe the thought process, how:

  • What is HDD – Hype Driven Development
  • Break the cycle
  • Do not fall for the hype. Try to “feel” what works for you and go with that
  • Deal with hype
    • Research and test out before making a decision
    • Is it solving your problem, and what is the cost?
    • Get an opinion from other people

The last one might be tricky if you are working in a small company or a team of not so experienced team members. Try to look for an opinion from an architect or a senior engineer. Just because some library is working out nicely for AirBnB and their website, might not be the best for you, and you might have overlooked some aspect of it. Talking to someone experienced is sometimes a privilege, but if you have it, use it! Excellent read!

[Read More]