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 ]

AWS AppSync GraphQL API with Golang Lambda source

Categories

Tags aws serverless app-development apis

Sebastian Muller wrote this article / tutorial about AWS AppSync, a serverless GraphQL with support for custom data sources using AWS Lambda. To enable easy access to his RSS feed, author created a simple GraphQL API using AWS AppSync.

Tricky part was the deployment of the API due to lack of CloudFormation support for AWS AppSync. In the tutorial, you will find:

  • AWS Lambda function to fetch and parse RSS feed
  • Serverless Application Model to deploy Lambda function
  • AppSync GraphQL API setup using AWS CLI

Tutorial then describes in detail what dependencies are, how to install Golang packages, configure environment and deploy using AWS Serverless Application Model. And finally you will learn how to use the GraphQL API. Great article!

[Read More]

Open Source documentation by example

Categories

Tags open-source programming

John Tucker addresses important question how to create documentation for open source project. He takes us through example and will demonstrate a compelling documentation organization for an open source project.

Author pieced together the project’s documentation organization. Documentation entry point is in 3 places:

  • Web site of HTML pages (including a search feature) generated with GitBook
  • README.md markup file in the root folder of the master branch
  • README.md markup file in the docs folder of the master branch

The HTML pages are generated from source markup files from the master branch of the repository. Author also offered solution for automation of the documentation updates using Travis CI (via travis.yml configuration filke). You will also find code examples for this article in the GitHub repository together with explanation how to use GitHub Pages. Interesting.

[Read More]

Winding down an open source project

Categories

Tags open-source programming

Guys from The Linux Foundation produced this Open Source Guide which is designed to offer advice about how your enterprise and your development team can plan for the day when you are ready to end or move away from an unneeded open source project.

They touch on many interesting points of open source project, including:

  • Why life cycle planning is important
  • How to protect your company’s reputation
  • Seek a diverse contributor base
  • How to end an open source project
  • The importance of clear communications

They suggest that once you’ve decided to make the move, you must determine whether to end it, transfer it to another organization, or just pull out and end your direct involvement.

This is excellent guide, well worth your time!

[Read More]

Event-driven architecture is not just about events!

Categories

Tags software-architecture event-driven programming devops

Frans van Buul another look at event-driven architecture for a perspective you might not have seen to learn about messaging patterns, coupling, and more.

Gartner has identified this as one of the top 10 technology trends for 2018. “Events” occur very naturally in many business domains, which by itself is a good reason to make them an explicit part of software systems. They can be processed asynchronously.

Two anti-patterns considered:

  • Messaging pattern
  • Coupling

As per messaging anti-pattern he points out that messages between systems are not just that: they may also be things like instructions to do something. To represent a command (“post a new blog entry”) like an event (“there has been a request to post this new blog entry”) is unnatural.

A command represents a desire by the sender to change or do something. It should be handled exactly once, and the sender often expects a confirmation, since a command may fail. This is a totally different case from sending an event.

Learn about coupling problems in the article. Great read!

[Read More]

Deploy serverless machine learning microservice with scikit-learn

Categories

Tags machine-learning aws serverless python

Patrick Michelberger created this tutorial in which we deploy a machine learning microservice using AWS Lambda, AWS API Gateway and scikit-learn.

Author starts with basic 3-class gradient boosted decision tree logistic regression model on iris data. This is not about quality of model, as for the purpose of the article it just needs to make predictions.

In this article author considers:

  • How to train a basic model
  • How to upload your model to AWS S3
  • How to create a Flask API
  • How to configure AWS Lambda & API Gateway
  • How to test the API locally
  • and how to deploy everything

Short and straight to the point tutorial for everybody starting with machine learning. Great!

[Read More]

BeamParticle -- polyglot dynamic programming engine

Categories

Tags programming erlang functional-programming elixir

Neeraj Sharma introduction into BeamParticle – an open source project built on top of the Erlang virtual machine (BEAM), which allows dynamic (re)programming in multiple programming languages. The project supports six different programming languages; namely: Erlang, Elixir, Java, Python, Efene, and PHP.

Key features include:

  • Supports 6 programming languages: Erlang, Elixir, Java-8, Python-3, Efene and PHP-5(subset).
  • Can run as a cluster (via Erlang distribution protocol)
  • Functions are dynamic and saving them instantly deploys them as HTTP POST API
  • Functions written in Erlang, Elixir, Efene and PHP can call other functions natively (with type conversions). Easily compile and deploy logic of code (functions) (across cluster when one exists) and archives them into a local
  • Key-Value store (powered by Google LevelDB).
  • System can create Jobs (or crons) which can be persisted to disk as well, so that they exist even after system restart.
  • HTTP(s) support with both HTTP 1.1 and HTTP 2.0 protocol.

The function compilation happens for the first time, while subsequent invocation uses the cached version to gain performance. Article then have many examples with codes for different languages and links to further resources. Very useful when you play with new API!

[Read More]

Journey into concurrent programming in Scala

Categories

Tags programming scala functional-programming

Justin LeFebvre interesting article about building a number of highly available Scala web services and making the most impact by modifying code to maximize CPU utilization on a per service basis. Enter the “scala.concurrent.Future " type!

A Future is an object representing a value which may not have been computed yet but will be “soon”. An incredibly useful abstraction for dealing with concurrent computation.

What is interesting about Future:

  • Initial calling thread frees up that thread to be available to service subsequent requests
  • Useful when working with web servers
  • Almost always initialize a limited size thread pool
  • A callback to execute when the Future completes
  • Can be composed with other futures via any number of transformations

You can read more in the article together with example code. More advanced example project is also available. Nice!

[Read More]

Creating first Angular app. Implement routing

Categories

Tags angular javascript app-development

Monty Shokeen 3 part of tutorial series in which he demonstrates how to go about creating you first Angular application. This post is part of a series called Creating your first Angular app. This series will teach you how to create your first Angular app in a beginner friendly manner.

In this tutorial, we will be implementing routing in our app. This way, the users will be able to navigate from one component to another with ease.

You will learn how to:

  • Modify the application shell
  • Updating the app.module.ts file

In this series, author teaches readers who have never used Angular before how to create a basic Angular app. You will also find further links to previous articles which will teach you basics of ANgular application development. Good reading!

[Read More]

Amazing advantages of Golang nobody talks about

Categories

Tags golang programming devops

Kirill Rogovoy article in which he discusses why you should give Go a chance and where to start. This article is not about the main selling points of Golang that you usually see. These are some rather small but still significant features.

In the article he focuses on:

  • GoDoc
  • Static code analysis
  • Built-in testing and profiling framework
  • Race condition detection
  • Learning curve
  • Reflection
  • Opinionatedness
  • Culture

For example GoDoc is a static code analyzing tool that creates beautiful documentation pages straight out of your code. Also Golang heavily relies on static code analysis with many tools in this area. 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. Read it to learn more!

[Read More]

Why cryptography is much harder than software engineers think

Categories

Tags programming infosec devops

Andrew Mayo, senior system architect at 1E, wrote this intriguing article about ROCA vulnerability and how it raises some important issues about the design of secure cryptographic software. The vulnerability is not in this case an obvious coding error such as a buffer overflow, or the use of a poor quality random number generator.

In this case, vulnerability arose from what probably seemed like a reasonable software engineering decision. In summary, the researchers studied the statistical properties of a large sample of public keys. These are not normally easy to obtain, but the Estonian government had set up a public directory, associated with their national ID card. Since, by definition, these are public keys that’s a perfectly reasonable thing to do.

In theory, it’s almost impossible to derive the private key from the public key unless enormous amounts of computer time are expended.

Researchers analyzed the statistical properties of these public keys. They found that the keys were not truly random, as they should be. This meant that it was possible to derive the private key from the public key in days, rather than the expected thousands of years.

Article then explains and points to further resources to help with explanation how RSA algorithm requires that the prime numbers (which can contain thousands of digits) have certain additional properties and how keys are generated using rusted Platform Modules (TPMs). A TPM is a hardware device used to generate and manage keys securely. Good read!

[Read More]