TypeScript

TypeScript is an opensource programming language, which is a superset of Javascript. This language was originally developed at Microsoft and was later made opensource in Oct 2012.

TypeScript
TypeScript programmer

What is so special about TypeScript?

JavaScript was originally developed to handle simple applications. As applications started growing, the code became complex. Additionally, JavaScript wasn’t offering several concepts from standard object-oriented programming e.g. easy class definitions. It also didn’t offer type check and type of the variable was inferred at runtime.

TypeScript resolves problems like this. TypeScript scripts are compiled and converted into JS files. All the existing JS files are completely valid in TypeScript (in fact you can rename a JS file as TS file and can use it!!). However, the reverse is not true.

Key advantages of using TypeScript language:

  • Static Type (Optional): Developer can define a type of the variables and it will be checked during compile time. This helps in reducing the errors at runtime. Supported types are explained briefly in the section below.
  • OO support: Developer can define the classes and have OO implemented using TypeScript. They can use static functions, variable scopes, function overloading, interfaces and inheritance
  • JS compatibility: Existing Javascript files could be used as TypeScript files without any problem.
  • Modules: Allows to define your own modules as well as allows to combine external modules easily.

Supported variable types:

  • Any – default type – all JS variables get initially mapped to this type until their type could be inferred at runtime.
  • boolean
  • number (integer, long, short…)
  • string (string, char)
  • type[] (Arrays)

IDE support for TypeScript

  • MS Visual Studio
  • IntelliJ IDEA
  • Eclipse Plugin

TypeScript compiler compiles the “.ts” scripts to generate javascript code. During this compilation, the compiler checks for various errors, thereby reducing the problems getting detected at runtime.

Related Links

Related Keywords

AngularJS, Angular, Javascript, CoffeeScript, ECMAScript, Grunt, Node.js

Material Design

Don’t get worried by reading the subject. This is not about any civil topic or interior design work. Material Design is a design concept introduced by Google which is prompting designers to rethink the web and mobile app UI. Here material is a metaphor. It is used to help you visualize web or mobile app as a physical object which has it’s own properties and responds to touch, zoom, pinch etc. Applications following material design present uniform behavior across various applications as well as various sizes of devices, thus giving uniform experience to the user.

Where can I see Material Design in action?

If you are on the android phone, it is everywhere in native apps (Android 5 onwards). When you use Chrome browser, check out settings and you will see it there.  If you click on a text field, the placeholder quickly moves to top left. If you click on a tab, the bottom border of the tab is highlighted. The buttons have a shadow effect giving a feeling of depth. All such things are based on Material Design principles.

Material Design

So what are the principles, this is based upon?

  • Each component occupies its own layer as if two physical objects are kept one on top of the other. They will not merge with each other, nor will the pass through each other. In simple terms – they appear as 3D objects.
  • Visual effect on one component will not follow through on other objects.
  • Some components would react to action (like touch, swipe, zoom etc) faster than others.
  • Every user interaction with the screen gives instant feedback to the user in terms action happened.
  • Components are aware of their surroundings. E.g. Upon touching a button, it pushes out certain components to make the place for the input field.
Material Design
Material Design – Example screen – Source: https://material.io

Similar to Bootstrap, there are several components pre-built and available for use to the developers. Refer to this article which has excellent comparison between Bootstrap and Material Design

In addition to Google’s own documentation, there are some very comprehensive articles about this design, check reference section below.

Related Links

Related Words

Bootstrap, Mobile App, Web App, Design, CSS

Scala

Scala is a functional programming language which is gaining popularity over past few years. There are some key benefits of using functional programming and this language in particular.

Scala Programmer
Scala Programmer – representative image 😉

What is Scala?

As mentioned above it is a functional programming language which compiles the code into Java bytecode. Once compiled, this bytecode could be run on any JVM (Java Virtual Machine). Scala can directly use Java libraries as well as it’s own libraries. It is also known for statically typed nature. It simply means the code gets checked thoroughly during compile time itself for all the variables and their types. This helps in identifying bugs early on and reducing the issue identification during runtime.

Scala was first introduced in 2003 and was an attempt towards creating “Better Java”. As a result, it has features of OOP as well as functional programming built-in, making it very powerful language to use. It’s compiler has capabilities to infer quite a few things about the variables, functions, and classes. This, in turn, helps developers write very concise code.

Key Features

  • Type inference
  • Singleton Object
  • Immutability
  • Powerful Pattern Matching for switch/case statements
  • Higher-order methods (methods that take methods as input)
  • Traits (Improved version of Interfaces)
  • Concurrency

This language has been considered as best language to support concurrency. It considers the availability of several cores such as in GPUs which can give you benefits of parallel execution.

Essentially, Scala can do everything Java can do and also in a better fashion!!

Related Links

Related Keywords

Functional Programming, Java, Big Data, Hadoop

 

Full-stack Developer

How many times have you heard your friend saying – “I am looking for a Full-stack developer, but couldn’t find a single one. Do you know someone?” And you might have left wondering what is this “Full-stack” now? Let’s understand this term.

What is a Full-stack developer?

Full-stack developer essentially means a developer who knows and can develop backend as well as frontend functionalities of a web or mobile application. In the current age, where almost all the applications are web and mobile based, it has become important for teams to have a person or persons who can work on various aspects of the application. Such developers tend to know several things about developing mobile or web application. However, they are not necessarily master in every aspect of application development. Their knowledge about overall application helps the teams to do right things from beginning to end and hence such developers are valuable resources.

So, what all things a Full-stack developer is expected to know?

Full-stack developer
Full-stack developer Representative technologies

Although there is no concrete list of things, following areas are expected to be known by a Full-stack developer:

  • HTML/CSS
  • Javascript/JQuery
  • Bootstrap
  • Backend application languages such as PHP, Java, Django, Ruby, Python
  • Databases including NoSQL, OLTP, and OLAP
  • Web application architecture
  • Infrastructure configuration on cloud (AWS, Azure)
  • Conversant with development methodologies such as DevOps and Agile (including relevant toolchains)
  • Source Control tools such as git

This person needs to be aware of several things – how various technologies, components work with each other? Which platform would be better for the requirement at hand? Which tools would give most productivity? etc.

Are you a such a valuable developer? Let me know in comments!!

Related Link:

Related Keywords:

DevOps, Agile, Web Developer, Backend Developer

 

Node.js

Let’s know about a leader in event-driven architecture – Node.js. This is an open source and cross-platform runtime environment built using JavaScript for server-side script execution. Javascript was historically used for script execution on the client side (i.e. browser). However, this environment allows developers to use the same language on both sides that server side as well as client side.

Why is Node.js so popular?

Node.js gained popularity because of the ease of doing simple tasks and the scale that this environment can provide. It implements the event-driven architecture and async I/O. That means, whenever a client requests data, an event is added to the event queue. An Event loop constantly picks up the events in the queue. If any request can be responded to, without any blocking operations such as reading data from file system or database, it is responded immediately. If the operation is time-consuming as in case of DB operation, the event is handed off to the internally maintained thread pool and a call back is registered for this event. While the thread is executing the code in the backend, the main thread is free to process next request. This increases the throughput of Node.js server tremendously. When the DB operation is completed, the response is passed on back to the client through the callback mechanism.

Node.js model
Node.js representation. Source: https://strongloop.com/strongblog/node-js-is-faster-than-java/

Since there are already quite a few articles available on this subject, I am going to list them here for your ready reference:

 

What are the common use cases for Node.js?

Whenever you are intending to have a constant connection between server and client, Node js becomes one of the candidates. Typical examples are – a chat server, online game, Streaming etc.

Some trivia about Node.js

  • Created by Ryan Dahl in 2009
  • Uses V8 Javascript engine by Google (which is also used in Google Chrome)
  • Cross-platform – runs on Linux as well as Windows.
  • Outperforms Apache + PHP and rivals the performance with Nginx.

Related Links:

Related Keywords:

Ruby On Rails, Django, Apache, Nginx, Event Driven Architecture (EDA), Software Architecture, Non-blocking I/O, Async I/O