Photo by Szűcs László on Unsplash

JavaScript is a single-threaded language, which makes use of asynchronous constructs to handle tasks concurrently. Interestingly, it handles concurrent tasks efficiently with a different approach compared to traditional languages likes Java and C#.

Event loop

Whether it’s a browser environment or Node.js, JavaScript is asynchronous due to the fact that it’s using the event loop. In the Node environment, it’s implemented using a libuv library. Originally libuv was developed as a wrapper to libev. In Node version 0.9.0, the dependency of libev was removed.

Phases in event loops

┌─>│ timers…

Photo by Mikayla Mallek on Unsplash

Whether it’s your first day at job or a struggling to contribute to any project, it’s really important to understand and master the art of learning, conceptualising and improvising skills to successfully adapt to a project. Specially if you’re not familiar with the technologies, adaptation should be done carefully.

Learning an existing codebase takes time and patience. You might not be able to grasp all concepts and algorithms in few days or even in weeks. But it’s important to follow a well defined plan and work accordingly. This will ensure that you’re goal oriented and making progress. Setting up milestones…

Quick introduction to GSoC

Google summer of Code (GSoC) is an annual program funded by Google to encourage students in crafting open source software. Every year Google selects mentoring organizations. Students are paired with mentors of the mentoring organizations to work on their projects. The coding period spans for 3 months and students go through 3 evaluations within this period.

As a student, GSoC is one of the prestigious programs that you can participate in. According to 2017 statistics 1,318 students got accepted and more than 4,200 students got rejected which concludes that acceptance rate is around 20–25%.

Stages in GSoC

Technically there are 4 evaluations students…

Photo by SpaceX on Unsplash

Farthest distance a human being has travelled so far is the far side of the moon. This historic moment was accomplished by the Apollo 13 crew in 1970. If such a massive accomplishment was achieved in 1970, the first and foremost question anyone would ask is why can’t we do better with such advanced and powerful technology in the present world. Thinking about the problem in a higher level would lead us to answers like organizations not wanting to invest in high risk missions with high costs or simply these large bodies do not want to focus on space exploration.

So you’re interested in Google Summer of Code or maybe jumping around in the world of OSS, it really doesn’t matter as long as you’re passionate about what you’re doing. This post is about my experience in Google Summer of Code 2017 (GSoC).

What’s GSoC ?

GSoC is an annual program administered and funded by Google for students all around the world to contribute to open source software in summer. You may think that only undergrads are allowed to take part in this program, but that’s not the case. Undergrads, students in graduate programs, PhD candidates can take part in GSoC. …

via unsplash

Last week I worked on adding APIs for Google Datastore. This week I’ve added support for AWS DynamoDB. As I’ve pointed out in the last blog post, there are many differenes between Google Datastore and AWS DynamoDB. Nevertheless I’ve managed to add common APIs for both services. I’ve added the following APIs for NodeCloud’s DynamoDB API.

  • Query
  • Create item
  • Delete item
  • Update item

In the future there will be many additions, but most of those wouldn’t be breaking changes. Therefore the current APIs will be stable.

Following is the issue on GitHub issue tracker and it’s respective pull request,


via unsplash

According to the milestone set in last week, I’ve worked on adding APIs related to Google Datastore. This service is the equivalent service for well known DynamoDB provided by AWS. But there are few things to be keep in mind when dealing with these two NoSQL based database services, because there are few differences in these two services, therefore in their APIs as well.

Google Datastore provides transactions. Therefore it has ACID concept. DynamoDB on the other hand doesn’t support transactions. Also Google Datastore has foreign key concept, where DyanamoDB doesn’t support foreign keys. Therefore these two services are not…

via unsplash

According to the milestone setup on last week, I’ve worked on adding the basic functionality support for AWS Relational Database service (RDS). This service takes over many of the time taking, repetitive and tedious tasks if managed by the organization itself such as maintaining the servers, scaling up.

AWS RDS support a wide variety of database engines including MySQL, MariaDB, Oracle and Microsoft SQL. For NodeCloud initial support for RDS, I’ve added the following APIs,

  • Create a DB instance
  • Create a new DB security group
  • Create DB snapshot
  • Modify DB instance
  • Modify DB snapshot
  • Reboot DB instance
  • Delete a DB…

via unsplash

AWS ECS supports wide range of functionalities such as managing clusters, services and tasks. For this week’s NodeCloud implementation, I added APIs for AWS ECS, for following set of functionalities,

  • Create cluster
  • Create service
  • Delete cluster
  • Delete service
  • Describe clusters
  • Describe container instances
  • Describe services

Along with the implementation, I have added documentation and examples on the usage of these APIs. Unit tests were done for each and every API.

Following is the issue and it’s respective pull request on GitHub,

With this addition of APIs, most of the common and most used functionalities in the compute category are now…

via unsplash

Peering was the last category which was left after last week’s implementation. Therefore throughout this week, adding support for AWS Direct Connect was implemented. Following are the features supported by NodeCloud for AWS Direct Connect,

  • Create connection
  • Describe connection
  • Delete connection
  • Create lag
  • Describe lags
  • Delete lag
  • Tag resource
  • Untag resource

Following is the issue submitted and it’s respective pull request on GitHub,

Additionally few unit tests were fixed and new configuration was added to Travis CI,

For the next week implementing APIs for containers will be the main focus. That’s it for this week, see ya !

Rajika Imal

💻 Senior Software Engineer @99XTechnology 🛠️ Tooling infra 🤸‍♂️ Calisthenics enthusiast

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store