Category Archives: Software Programming

Golang

Golang : A Hype or the Future?

Created by Robert Griesemer, Rob Pike and Ken Thompson for Google, GoLang was reportedly built by developers when they were waiting for the code compilation to complete in a project. The three main capabilities they certainly sought-after were the ease of coding, efficient code-compilation and efficient execution. Bringing all these capabilities in one language is what made Go so special.

Go is an open-source, procedural, statically-typed, compiled, and general-purpose programming language. The compiler was originally written in C but is now written in Go as well, which keeps the language self-hosted. the language has seen a lot of success in the last couple of years. A large portion of the modern cloud, networking, and DevOps software is written in Go, eg. Docker, Kubernetes, Terraform. Go is also being used by many companies for general-purpose development.

As the requirement for performance keeps growing, hardware continues to get sophisticated over time, the manufacturers keep on adding cores to the system to keep up with the ever-increasing demand. To handle such an increasing number of cores the system needs to maintain database connections through microservices, manage the queues and maintain caches. This is why today’s hardware requires a programming language that can support concurrency better, and that can scale up performance with the increase of added cores over time.

……………………………………………………………………………………………………

Golang versus Other Languages

Languages are compared predominantly on two factors 

  1. Ease of programming
  2. Efficiency

These factors are usually inversely proportional, meaning that any language that has high “ease of programming” usually has low “efficiency” and vice versa. Go holds the sweet spot with great efficiency and adequate “ease of programming”.

Why “Golang” and not “C++”

Go and C++ are both compiled languages and both have similar speed(In fact, C++ is a bit faster than Go). But the garbage collector in Go is what sets it apart from C and C++.

Any complex program makes use of dynamically allocated memory, and this allocated memory needs to be freed when it is not required. If that is not done, the program would eventually use up all the available memory and crash. In the case of servers, it is absolutely required to do that as it is expected to run indefinitely. In C and C++, the user is forced to deallocate all the memory that they have allocated themselves or use a third party garbage collector. In the case of Go, all the dynamically allocated memory with no reference is automatically garbage collected, making it a lot easier to work with.

Concurrency and “Golang”

Many programming languages weren’t natively designed for concurrent programming. They lack proper design for concurrent execution, and so, they often slow down the pace of programming, compiling and execution. This is where Go comes as the most viable option to support a multithreading environment and concurrency both.

Eg: Language like python only allows one thread to access the interpreter at a time and essentially never runs two threads in parallel. So running two processor-heavy tasks at a time in python in separate threads would have the same if not worse result than running them in the same thread.

The Go scheduler unlike schedulers in other languages manages the concurrency fully by itself. It doesn’t map Goroutines to OS-level threads directly. Instead, it re-uses a few OS-level threads. This reduces the context switching delay significantly as most of the context switching is done at application-level and not Kernel level.

What is the call stack and why is it important in threads?

In case of threads, stack is used to store function return pointers (where to return the result of a function call) and static variables. Goroutine has a dynamic growable call stack which starts from only 4KB and can go up to the total memory capacity. Other languages, in contrast, have static stack sizes, usually of 1MB (determined by the OS).

This growable stack in Go is one of the key things which makes Goroutines light-weight. Where other languages can only have a few concurrent blocks, Go can have a lot more because of its dynamic stack size.

……………………………………………………………………………………………………

Conclusion

Taking into account all the offerings from Golang, we notice that it distinguishes considerably in terms of

  •  Faster compilation and execution
  •  Better code readability and documentation
  •  Offering a thoroughly consistent language
  •  Easy versioning
  •  Allowing development with multiple languages
  •  Allowing easier maintenance of dependencies

These features surely make Golang a contender for the next-generation programming language.

……………………………………………………………………………………………………

If you have any queries in this field, talk to Mindfire Solutions. For over 20+ years now, we have been the preferred Software Development Partner of over 1000+ Small and Medium-sized enterprises across the globe.

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
AWS-Lambda-Computing

Getting started with AWS Lambda

AWS Lambda is an ingredient in amazon serverless computing. Lambda allows us to run server-side code without thinking about the server. It abstracts all of the other components i.e. servers, platforms, virtual machines, etc. that are needed to run server-side code. So we can just focus on the code and not the server. That way the time to production or deployment becomes very less. We can write a lambda function, configure it and run it in minutes.

Another great benefit of lambda is that we just pay for the compute time we consume. That means it will charge only for the time that our code is actually executed. Also, the first one million requests are free. We have to pay for request thereafter. This a very cost-effective way to run the server-side code. To get started first we need an AWS account. After creating the account we need to go to the AWS management console.

……………………………………………………………………………………………………

Create a Lambda function with Node.js

Let’s create a lambda function that picks a random number between 2 given number. First of all, login into the AWS console and then click the “Lambda”  button under the compute section. Then you can come to the “Select blueprint” section. Then, under the select runtime combo box, select the latest node.js version. Amazon gives you some basic blueprints there. We will just select the simple hello world function to start with.

Image1-Lambda

We will skip to the configure function section to create a new function. We will name our function random-number-generator. Then specify the description. Then the run time that is node 4.3. Our function is a small function so we will select to Edit code inline. The blueprint of amazon gives a very basic function.

We will change this default code to generate our random number between two given numbers.

In the beginning, just add console.log(‘Loading function’). This will help in debugging the code.’ In the default amazon function, there are some event values that are logged and in the end, it returns the first value in the callback function. Then we will add a handler function to the exports variable. And this function receives 3 variables. I.e. event, context, and callback.

 exports.handler = (event, context, callback) => {
            console.log(‘value 1 =’ , event.key1);
            console.log(‘value 2 =’ , event.key2);
            console.log(‘value 3 =’ , event.key3);
            callback(null, event.key1)
}

The callback is something we will call when our result is ready and we want to send some result back to the user. It takes 2 parameters. 1st one is the error and the second one is the success message. The variables could be string or JSON object.

We will delete all these default codes and write our own code. So, first of all, we will define and set the minimum and maximum number.

 exports.handler = (event, context, callback) => {
           let min = 0;
           let max = 10;
}

Now we will define another variable for the random number.

exports.handler = (event, context, callback) => {
            let min = 0;
            let max = 10;
            let generatedNumber = Math.floor(Math.random() *  max) + min;
}

Mmath.random() generates a random number between 0 and 1. And it’s a floating-point number, so we multiplying it by max and the round it and add the minimum. That gives us a random number between the minimum and maximum number.

Now we are done and want to return the random number. So we will call the callback function.

callback(null, generatedNumber);

 Here there is no error handler implemented so we will just return null in place of the error parameter. And the  generatedNumber.

That’s it, the code part is done.

Now scroll down. And let’s define our handler. The default is index.handler. Index refers to the filename and handler is the name of the variable that is attached to the exports. We will leave this by default.

Now, we will create a new Role and give the role name as ‘basic-lambda-execute-role’. Then under the policy template, we will select ‘Simple Microservice Permissions’.

Next is the advanced settings.

Each lambda function will run in a container & that container will have some memory allocated to it. So here we can pick how much memory should be allocated to our function. Our function is a basic function. So will select 128MB. That is more than enough for our function.

This does not only defines the memory allocated to the function but also the amount of processing power amazon uses to execute our function. If we have a more resource-intensive function then we can increase the memory usage and we will get a faster performing function. Then for the timeout, we will leave it to 3 secs that is enough. If our function does not finish within this timeout then Amazon will return an error message. We will leave the VPC to no VPS and move next. In the next page, amazon lets us review our configuration for our function. And then click the create function. There we will get the msg that our function is created. And we can see the dashboard for our function.

On the dashboard we can see our code, configuration, triggers, and also we can monitor our function as well

Let’s test it by clicking the Test button there. If we scroll down we can find that the function has executed successfully and also we can see the result random number.

So that’s it. We have our random number generator lambda function is running now.

……………………………………………………………………………………………………

The views and opinions expressed in this article are those of the author. To know more about our company, please click on Mindfire Solutions. 

Spread the love
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Software Product Development Best Practices

Software Product Development Best PracticesThe digital technologies enable enterprises to automate various business processes and operations. But the technological needs differ from one enterprise to another. Based on the technological and business requirements, programmers nowadays have to write a variety of custom software products – desktop applications, web applications and mobile apps. Each type of application is built to meet specific business needs and based on predefined business requirements. Continue reading Software Product Development Best Practices

Spread the love
  • 6
  • 2
  •  
  •  
  •  
  • 1
  •  
  •  
  •  
    9
    Shares

The 7 Most Common Mistakes JavaScript Developers Make

JavaScript Common Mistakes

 

At present, JavaScript is used widely by programmers for developing both web applications and mobile apps. JavaScript has been emerging as one of the preferred languages for building large scale web applications. JavaScript, along with HTML5 and CSS3, help developers to make websites accessible on both computers and mobile devices with a single code base. The full stack web developers prefer writing client-side and server-side code in JavaScript. The developers also have option to accelerate custom application development by taking advantage of various JavaScript libraries, frameworks, and development tools. Continue reading The 7 Most Common Mistakes JavaScript Developers Make

Spread the love
  • 18
  • 2
  •  
  •  
  •  
  • 1
  •  
  •  
  •  
    21
    Shares