The brand new Console App

WSO2 Identity Server has always been known for its technical brilliance and feature richness. But that wasn’t enough to satiate us. In order to provide an unparalleled user experience, we wanted to add one more thing to our quiver. Thus, we introduce our brand new Console app!

The beta version of our Console app is available with the 5.11.0 version of WSO2 Identity Server. This app provides a vastly improved user experience, allowing both administrators and developers to carry out their tasks through an intuitive and carefully-crafted user interface.

Throughout the release cycle, the app underwent many iterations of designs…


Asgardio OIDC JavaScript SDK allows developers to implement OIDC authentication in their Single Page Applications in a fast and secure manner, especially when using the WSO2 Identity Server as the Identity Provider.

The SDK offers three different storage options to store the session information, namely, session storage, local storage, and web worker. Besides, it supports PKCE verification, ID token validation, and allows you to use “ form_post" and " query " response modes. You can find the complete set of information regarding the features and functionalities of the SDK .

Crafted with developer experience in mind, Asgardio OIDC JavaScript SDK…


For a long time, achieving concurrency in Python was a difficult task. Python developers often had to use threads to run tasks concurrently. However, with the advent of Async IO, Python has greatly simplified concurrency.

To understand Async IO better, let’s take an example. There is a function that takes a delay and a string as arguments. The function prints the string five times every time after the specified delay. If we pass 2 and “First” as the arguments, then the function should print “First” five times after waiting for 2 seconds every time.

Running the functions synchronously

If we call this function again…


GitHub Actions has made CICD easy. Couple it with the free hosting service offered by Firebase, you have a fully functional CICD pipeline ready for your frontend app completely free in no time.

As frontend developers, we may often have to demonstrate our app to the rest of the team to get their two cents on the design and the user experience of the app. However, just giving them a walkthrough of your app using a projector or a Zoom meeting might prove to be insufficient.

After all, unless you play around with the app yourself, it will be difficult…


React’s useEffect hook has indeed made life a lot easier. But there are times when you would most certainly miss the fine-grained control class-based components give you over a component’s lifecycle. One such time is when you want to perform a side effect when a component’s state changes.

Of course, you can pass the state variable as a dependency into the useEffect hook but the problem is the callback function gets called during the initial render as well.

Take this little example. Let’s say I have an app that has a button. Once the button is clicked, I need to…


Unless you have been living under a rock, you would be very used to authenticating yourself using an authenticator app on your mobile phone. But have you ever wondered how an online service is able to check if the code generated by an app on your mobile phone is correct or not? No, the app and the online service don’t talk to one another over the internet.

If so, how is this possible? Well, this is made possible by TOTP authentication which stands for Time-based One-time Password authentication. This is merely an extension of HOTP which stands for HMAC-based One-Time…


Before smartphones were popular, hardware tokens that produced a HOTP code were a popular way of performing two-factor authentications. Businesses gave their customers a small electronic device that generated a number when a button was pressed. After entering their password, customers had to enter this number to successfully authenticate themselves.

So, how could a system know what number was generated by the token that was not connected to the internet? Well, this was made possible by the HOTP or HMAC-based One Time Password algorithm.

The HMAC algorithm

To understand how this algorithm works, we need to first understand how HMAC works. A rudimentary…


Hashing

To that end, the HMAC algorithm makes use of a cryptographic key and hashing. Hashing turns data into a hash of a constant size. Hashing is also deterministic, meaning that the algorithm produces the same hash for the same input. But the real killer feature of hashing is that there is no way one can obtain the original data from the hash.

This feature of hashing makes it ideal for ensuring data integrity. When data is sent across a communication channel, the data is hashed and the hash is also sent. A recipient can ensure the integrity of the data…


I recently had to install and configure Jest in a React app written using Typescript and ran into quite a few roadblocks. So, I thought of detailing the steps I followed to overcome the difficulties.

I used Jest as the test runner, and React Testing Library to test the React components.

Installing the dependencies

First, let’s install the needed dependencies.

npm install --save-dev @testing-library/jest-dom @testing-library/react @types/jest jest ts-jest

Here, @testing-library/jest-dom is used to extend the Jest matchers and ts-jest is used to help Jest test Typescript files. @types/jest provides the type definitions for the Jest library.

Configuring Jest

Once installed, then we need to configure…


Lerna comes to our rescue when we are to manage multiple inter-dependent packages within a repository. Have a package that is a dependency of another and you don’t want to waste time building the dependency, publishing it to npm, and then installing it into your package? Then, Lerna can get behind the wheel for you and let you use your dependency package within your main package by completely eliminating the need to publish it. Lerna accomplishes this by creating a symlink of your dependency inside your main package’s node_modules folder.

The problem with Lerna

However, since Lerna creates a symlink of your dependency package…

Theviyanthan Krishnamohan

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