What’s your stack? — Part I

You may often be in a situation where you might want to know which technology to use for your product or in a situation where people around you are talking gibberish geeky stuff , or you might be an enthusiast like me who always wants to be in the know-how of what is happening around you in the tech world.

In this post, I will be summarising about few things I have learnt so far in the tech world giving you just enough information to get an overall idea about it. Do subscribe/follow my publication to be updated when I write the next iteration of this article considering one article won’t be enough.

Let’s get started. The below topics are in no specific order and are jumbled. 
If you want to know more about a specific topic, click on the title which will lead you to the respective page.

GraphQL

A specification laid out by the Facebook team. The next gen. alternative to REST APIs, ask for the data you want from the server and get only what you asked for. A query language for the client side (assume it something like SQL for client side). 
I summarized about GraphQL here: https://medium.com/techahoy/what-i-learnt-about-graphql-dafa8b2b6f67

Node.js

An event driven server side javascript run-time environment. Use Javascript as your back-end language, do asynchronous operations without blocking I/O. Runs on top of V8 engine used by Google Chrome to execute Javascript. 
I summarized about Node.js here: https://medium.com/techahoy/why-i-am-a-big-fan-of-node-js-ecosystem-e99319c7dfe0

MongoDB

A NoSQL database with BSON structure (Binary JSON). Has master-slave architecture with all writes/mutations happening only in the master while reads can happen in any of the nodes in the cluster. Free & Open Source, while enterprise versions are also available.

Bootstrap

A CSS framework/toolkit which helps you develop applications without having to do too much styling yourself but rather use the styles, themes and effects they provide enabling rapid development. Free & Open Source.

Typescript

A superset of javascript that scales, made by the Microsoft Team, Open Source. You can use futuristic syntax in Typescript which may not yet be supported by all the browsers at this point in time. The code you write can include Types (unlike javascript which is a weakly typed language), classes, imports and it all gets converted to a compatible syntax depending on your preferences.

Electron

Allows you to build cross-platform software using web development languages. Electron (from Github team) runs on top of Node.js run time environment. It also provides access to native OS APIs like access to file system, context menus, etc. thus allowing you to get best of both worlds. Open Source & Free.

Cordova

Allows you to build cross-platform mobile applications (hybrid apps) using web development languages with access to native OS APIs thus giving the best of both worlds. Also supports installation of plugins developed by third party developers. Runs on top of Web Views (browser run time). Open Source & Free.

Docker

Allows you to containerize applications, acting as a good alternative to virtual machines (though they don’t replace them). It works on namespaces provided by the Linux OS where each container can be provided with its own isolated scope, resources, storage and network acting like a Sandbox while still using the same underlying OS unlike VMs where each VM will have its own OS and resource allocations making it heavier. Possible to define your containers as dockerfiles, orchestrate them using other services like Kubernetes.

Apache Kafka

A high performant immutable event queue data store and messaging system with fault tolerance and scalability allowing you to communicate between systems and services through events. Applications and services can subscribe to the queue, push/pull data categorised into topics and interested parties can subscribe to topics of their interest. It comes with partition and clustering options to support scale the system by having messages across different locations.

IONIC

A mobile application framework which runs on top of platforms like Cordova. Uses Angular behind the scenes. Provides ready made components which we can use during mobile app development, respects Material design and IOS design principles. Provides a ready made architecture to use including routing, transitions, animations, interactions, etc.

GIT

A distributed version control system which acts as a good alternative to SVN, VSS, Mercurial, etc. Open Source & Free. Was initially developed by Linus Torvalds for maintaining Linux development, then given out. Github, Bitbucket, Gitlab, etc. are platforms which support GIT for collaboration while GIT is the technology underneath. Supports local development without needing internet till you decide to push to remote repositories.

HTML

A markup language for the web. Currently versioned HTML 5.1 at the time of writing this article. Acts like a skeleton for the web providing allowing developers to define all the elements which they would need in their web app which in turn is parsed by the browsers to render them as buttons, links, headings, etc. in the formatting as needed.

CSS

If HTML is the skeleton, you can assume CSS to be the skin. It allows developers to format the elements in the page with the style they like including colors, size, shadows, boldness, transitions, positioning and anything they have to do with the visuals of the element. Currently versioned CSS 3 at the time of writing this article.

Javascript

Javascript is used to manipulate the DOM generated by HTML and styling done by CSS and also interact with other elements like Local Storage, Cookies, etc. and other APIs provided by the browser. Also used for enabling communications between the client and the server via AJAX.

Elasticsearch

A search engine based on Apache Lucene which has full text search capabilities. All functionalities exposed as HTTP REST endpoints. Also has the ability to store and index data. Often used in combination with the ELK stack (Elastic, Logstash, Kibana) which existed as separate products but was later acquired by Elastic Ltd.

Logstash

A data processing pipeline which helps in ingesting logs/data from multiple sources in multiple formats, format it into a structured format as required and send it to any destination as needed (mostly Elasticsearch).

Kibana

A user interface suite supporting plugins which helps in interactively viewing and manipulating the data from the Elastic Stack. Also allows plotting the resulting data as charts and graphs. Plugins can be added to support multiple visualizations and extended functionalities.

Prometheus

An open source dimensional time series database, monitoring and alerting solution which helps you to store and monitor your application metrics packed with a powerful query language (PromQL) written in Go extending support to multiple client libraries, external visualisation like Grafana does promise and deliver a lot being a part of Cloud Native Foundation.

Grafana

An open source platform to do analytics, monitoring and alerting with powerful integrations with multiple data sources like Prometheus, InfluxDB, Elasticsearch, Graphite, etc. It also comes with pre-built dashboards both from the Grafana team and the community and an intuitive and user friendly way to create new dashboards, export/import them with support for panels, plugins and apps makes it a complete system to use for monitoring. In addition to this, they do offer good documentation for you to refer in case you are stuck.

Jenkins

An open source tool to do CI/CD automation for your projects. Automate the way your code gets deployed onto servers, the way you do unit testing, the way you schedule jobs and do this all with the powerful pipeline system it offers. It doesn’t stop there. There are loads of plugins which you can use to get stuff done, say doing ssh, pulling code from GIT, and what not. And if there is none, it also offers you way to write groovy scripts thus completing the package.

Material Design

An open design specification by Google which guides you on how to handle UI/UX interactions and guide the user intuitively from the point he/she enters an app to the point they leave the app. The Google team haven’t just stopped there. They have also provided libraries which implement those specifications and provided them open source for everyone to use. A good example for material design would be the native version of Android, websites and apps like Youtube, Google Plus, etc. which are designed keeping these principles in mind.

Web Components

A very powerful concept where an entire application is divided into composable components which does just one job and abstract all the internal complexities, just exposing an API system to interact with it. It supports the principle of re-usability and extensibility allowing people to not only use the components in their own applications but also share it as components across to others. There are lot of libraries which support this principle either natively or as an abstraction. Some good examples would be Polymer, Skate, X-Tag, etc.

Microservices

Before I start off, I have to clarify that having APIs is not the same as having micro-services. Microservices are composable loosely coupled services with their own boundaries which implement various business/technical functions having the capability to either up-scale or down-scale independently of each other. In addition to this, part of the requirement for being a microservice is to have APIs since they can communicate with each other in a common language abstracting all complexities. Most often, Kafka or other event sourcing systems are used to maintain the orchestration between these microservices.

While I have a lot more to share, I guess its better off in a new article rather than adding to this. If you want me to discuss any tech stack in particular or have any questions, leave a note and I will follow up as soon as I see it. See ya!