May 24, 2026
Over a period of time, I have started to realize that unlimitedness is an illusion. It doesn’t bring any good. You don’t get very far with anything that you got without limits.
Read more...Sep 29, 2025
Go is a very simple language. The philosophy it’s built on top of, is what makes it so beautiful. When I started learning Go, I had already mastered many languages both Object Oriented and Functional, but still craved for more language features in every one of them. I always missed a feature or two from another language when I was working on a project with a language.
Read more...Sep 26, 2025
It’s been a long time since I wrote anything here. Reason is the rise of Gen AI tools. Ever since ChatGPT came, I started to feel that the kind of articles I write are not relevant anymore. I’ll start to think about a topic, mostly technical, and then it’s actually just a prompt away. So I didn’t get enough motivation to write anything. I’m kind of having a dilemma if writing is not going to be the same anymore.
Read more...Nov 14, 2023
Couple of months back, I was invited to give a talk to the Cybersecurity students of Amrita Vishwa Vidyapeetham, Chennai by my professor Dr. S. Udhayakumar. When I was looking for topics, I zeroed down to JSON Web Tokens using Node.js as I have implemented it multiple times and having quite a good knowledge on it.
Read more...Oct 31, 2023
React is usually praised for component composition over other frameworks. But in reality Angular’s composability is hard to beat. The main reason is Directives. Smallest building block in Angular is not component, its directive. A directive can attach itself over a component/DOM element and do a small piece of logic. Now you can create a bunch of directives and you can use it in any combination over any element. One can argue React Hooks can provide the same. While hooks are a good place to host such small atomic logic, it doesn’t attach itself declaratively to a an element/component, you have to wire the props of the component/element manually to the hooks where the logic is present. That itself will create a lot of code.
Read more...Jun 19, 2022
It is a common expectation for dashboards to have draggable widgets. In this article, we are going to see how we can make a draggable layout without using any libraries. We are going to use only React and CSS Grid and make something that looks like the following image.
Read more...Jun 8, 2022
useImperativeHandle hook is an unusual hook in React, to an extent that it is discouraged to use in the React’s official documentation. React is a declarative framework and as the hook’s name suggests, it is giving a break from React’s declarative style by letting parent component call functions within the child component.
Jan 26, 2022
Imagine, you are having a component which is making a REST API call when it is mounted, to fetch data and display it. How to write Unit Test for such a component? In this article we are going to see how to write Unit Tests for such case without any third part utilities other than Jest and react-testing-library.
Read more...Jan 2, 2022
When I was reading Steve Jobs by Walter Isaacson, I came across the following line.
Real artists sign their work - Steve Jobs
Read more...
Sep 18, 2021
Discriminated Union / Sum Type is one of the common features found amoung strong typed functional languages like F#, Haskell etc. Ever since I started using them in F#, I can’t stop wondering why such an useful feature is not available on the popular languages. C# has been adding a lot of functional features over the last few years. So, we are going to achieve something close to that in C# using Records and Inheritance.
Read more...Aug 22, 2021
Imagine you are having a tree structured object as shown below and you would like to traverse through each node and print it’s name.
Read more...Aug 13, 2021
Thanks to Angular team for making it so easy to integrate Tailwind with Angular 12 and above to a point that I really thought if I should write a post for it. Finally convinced myself to document it, since there were not many good references I could find related to this.
Read more...Aug 2, 2021
Languages that came after Java, had great influence of it irrespective of static-typed or dynamic—especially the Object-Oriented features. Interfaces, popularized by Java was taken straight into other languages like C# and even dynamically typed languages like PHP! But Go has questioned every existing solution thoroughly before inheriting those features. No while loops, no do-while loops, no ternary operators, no constructors, nothing was brought in Go just because it existed earlier.
Read more...Jun 26, 2021
For a long time, I was holding myself from trying out Svelte.js just for the reason that I don’t want to wrap my head around one more framework after React, Angular & Vue. Last year, I broke my vow out of curiosity and started checking Svelte. But the fact that typescript support was not so good at that point of time stopped me from considering it seriously.
Read more...Jun 5, 2021
I was playing around with Svelte.js recently and was curious to know how easy it
would be to build a Tree component using it. It was simpler than I expected it to be
with Svelte’s recursive svelte:self feature. Let me explain how its
done.
Mar 22, 2021
Go 1.16 has come out with a feature which I waited for quite some time. With Embed we will be able to add static files into the go binary at build time. It also makes accessing the files as simple as dealing with File System APIs.
Read more...Jan 19, 2021
Imagine you have a server and you are loading some configuration for executing some business logic. You don’t want to load all the configuration when the server is launched since it will take a lot of time for it to be ready for handling requests. You have to postpone loading configuration till it is actually needed. It’s called Lazy Loading.
Read more...Jan 14, 2021
It is a common practice to store different user types in different database tables. For example, in most applications you will have an Admin user and a normal user. Though we can have all the users in a single table and discriminate them based on a column, sometimes if the fields are quite different, we would like to have different table for each type of user.
Read more...Mar 8, 2020
Sometimes we would like to postpone loading data in a component till it is actually visible in the viewport. This is handy in applications where we have lots of tables with data that should be loaded only when we scroll down. This behavior could be used in a variety of cases in different components, so we are going to make it into a reusable custom hook so that we can use it wherever we would like to.
Read more...Oct 27, 2019
Displaying parts of view based on conditions is super easy in Blade using
@if ... @endif conditions. Imagine we are storing the role information as a
string in the User model under the role field. We would write something as
shown below to check the roles in the blade syntax.
Jul 6, 2017
Why should we make our own Autocomplete component when there is plenty of existing components out there? For simple use cases, yes that serves enough. But when you want to create complex ones, like the one which shows Movies in IMDB, its always good to create our own component to have the best control over the design we provide. This article will help with that. We are going to make the an Autocomplete as shown below.
Read more...Jun 16, 2017
ALV Tables are most preferred way to display when you have large amount of data to be displayed in tabular format due its flexibility and numerous features. However developing applications with ALV Tables in Webdynpro are perceived more difficult than the startdard Table element of Web Dynpro ABAP. Let’s see how to create a simple ALV Table with minimum options and code to understand the basics of ALV.
Read more...Oct 30, 2016
Pagination is one of the basic component we will need with any application. Let’s create a pagination component using Bootstrap and Vue.js, and in the course of development we will see about custom events in Vue.js.
Read more...Oct 16, 2016
This being my first SAP TechEd, my experiences are countless and still I’ll try to summarize some of the things I felt.
Read more...Jul 5, 2016
Let’s explore Vue.js further by creating a Countdown timer component which will be very useful for people to quickly put a Countdown page for the products or events website. While developing it, we will explore the features of Vue.js which makes it such a bliss to develop complicated things from the scratch without much effort.
Read more...Jun 18, 2016
Note: This article is using Vue.js 1.0. If you are planning to use Vue.js 2, go to this article
From the days of jQuery, I have been pulling in different plugins everytime I wanted to create an Autocomplete input. Later Bootstrap came with an Typeahead component and then they removed it from Bootstrap 3 and I was forced to use typeahead.js when I was developing Encollege
Read more...Jan 24, 2016
Bootstrap has become one of the basic tools to start web development. Though I’m using it for quite some time, I don’t dare to change the original look and feel due to the fear that I may mess up with the project and or spend too much time on designing. Yes! Sass makes it easy but still I refrain from changing.
Read more...Apr 3, 2015
Laravel 5 ships with Bootstrap 3 by default, but it uses Less and not Sass. Personally I prefer Sass over Less and this article helps you set up Bootstrap Sass using Bower and Laravel Elixir.
Read more...Mar 5, 2015
Reports which has the capability to drill down to multiple levels are of good use. It serves as a simple overview as well as more detailed report when you want to look into a particular record in detail. SAP makes it easy to create Tree List reports with Function Modules RS_TREE_CONSTRUCT and RS_TREE_LIST_DISPLAY.
Jan 19, 2015
SAP provides many ways to accomplish a task, creating an ALV Grid is no different. Though there are simple Function Modules available to create an ALV grid, Object Oriented methodology is more preferred due to its own advantages which are always debated in the ABAP world. As far as OO is concerned, my advice to ABAP developers is “Sometimes, you have to take a leap of faith first. The trust part comes later” (from the film Man of Steel) . Debates apart, we are going to try our hands creating an ALV grid display using the class CL_GUI_ALV_GRID.
Nov 25, 2014
There are requirements where documents has to be uploaded and associated with business data available in the system. When we store files in tables, it will be easy to link it with other tables data. This article is aimed at storing files in databases and downloading or uploading them.
Read more...Oct 11, 2014
We generate different kinds of files varying from Excel sheets to Text files based on the data available in SAP. It is very much possible to zip multiple reports within a single zip file and download the zip file from SAP.
Read more...Sep 17, 2014
Random Numbers are used for a variety of purposes in programming, and in this article we will see how to generate a Random Number or Random Number Sequence in ABAP
Read more...Aug 11, 2014
While SAP has created most of the Search Helps that we will ever need, we still face situations
where a Search Help has to be shown dynamically from data that we have in the an internal
table. SAP has provided us a powerful Function Module to acheive this, and that is
F4IF_INT_TABLE_VALUE_REQUEST.
Jun 19, 2014
The time taken for an ABAP report to run is mostly spent in database queries and internal table processing. While the responsibility of database query optimization is spread across so many different levels, optimizing internal table processing remains solely the developer’s responsibility. In this article, we will see the advantage of making using of Field Symbols instead of Work areas in LOOP AT.
Sep 13, 2013
Sometimes certain processes has to be run at Application Server level and the results has to be used within SAP system. They could be some simple OS commands or Shell scripts that does works like backup of files or database. In this article we are going to see how to achieve that.
Read more...Sep 10, 2013
There are situations when you need to run a report program and get its result list programmatically and display or process as you need. This article helps you to achieve that.
Read more...Jul 13, 2013
I have had serious problems with continuously developing and deploying enhancements to web applications in CodeIgniter. The problem is that the deployment version has different set of configurations than the development version. Usually, these are sensitive configurations like database connection settings. So even if I missed a single configuration, the result is that the website is down. This made making quick enhancements very difficult. Git helped me come out of it.
Read more...Apr 11, 2013
Windows Phone’s tile design is a haunting beauty to me. I never knew a layout of neat square boxes can impress me that much. And so I tried to implement that tile design in web using CSS and jQuery. I have tried only the Tile Flip animation which can show two different information one at the front side and another at the back side of the tile.
Read more...Mar 12, 2013
Most of us are good users of Sticky notes application of Windows which is quite a good tool for quick notes to remember. I got inspired by that and tried to create a simple web Sticky Notes using CSS3 and jQuery.
Read more...Feb 5, 2013
Today, I got the chance to read the article Don’t Put Labels Inside Text Boxes (Unless You’re Luke W). In that article, Caroline tries to address the problem of using anything inside a text box. Whether it is label or hints. This really pulled me to write this article. I don’t exactly remember when I met the first form with labels inside the text box, but since then I have been fan of labels inside text fields both as an user and designer.
Read more...Jan 15, 2013
Integrating two different applications in Web Dynpro ABAP is quite a challenging task. Most of the time we choose to integrate applications by making component usage of one component in another. But sometimes this becomes a tedious task, especially when both component are dependent on each other. Here we are going to see an alternative option which is redirecting URL by using Suspend, Resume & Exit plugs.
Read more...Nov 19, 2012
MongoDB is the fastest growing NoSQL database. Apart from the advantages of NoSQL technology, it’s JSON querying style, easy installation makes it more preferable. In this article I’m going to show you how to save tweets into MongoDB using Java.
Read more...Nov 7, 2012
Text symbols are one of the great and most used feature in ABAP. It is very helpful when it comes to internationalization of your application and also manages all your text at one place. ‘Is this feature available in Web Dynpro?’ Yes indeed, but it seems Web Dynpro has complicated accessing it. So this article is all about creating a simple application that gets the text from Text Symbols and places the text in a caption.
Read more...Oct 22, 2012
Creating customized menu for right click is always cool and creating such menu’s in Web Dynpro ABAP is quite easy. In this article we are going to see creating context menu for a TextEdit UI element which has to be filled with the text ‘Hello World’ on clicking an action in the menu.
Read more...Oct 18, 2012
Whenever we want to create a Table UI dynamically, we go to CREATE_TABLE_FROM_NODE method of CL_WD_DYNAMIC_TOOLS (see here. However in some cases we want the Table to be very much customized. For example, you may need to create a Table UI bounded to only three attributes of a node which already has four attributes and you may also want to represent each column with different UI element. ‘Yes, situations like this are there’. If you are making a service call, it will create a set of context nodes in the component controller. Now if you want to create a table dynamically and bind it to an already existing node, where you don’t want all the fields to be bound.
Oct 15, 2012
Many a time you come across a situation of creating a Table UI dynamically. Especially, when you want to create Table UI based on certain conditions which will be known only during the run time. However, Table is not a simple element, it comprises of Columns, Cell Editors and Popins. To make our job simple, SAP has provided a built in method to create a simple table which can only display data. In this article we are going to use this method to create a Table UI dynamically.
Read more...Oct 8, 2012
Few days ago I saw a link bearing the title ‘Monalisa using CSS3’ repeatedly in Facebook and Twitter. When I checked it out, I was totally impressed. A Monalisa picture made by just using CSS3 alone. To be more precise box-shadow property of CSS3 alone. It was done by Jay Salvat using a PHP program which he had uploaded on his GitHub. He has done an incredibly innovative work.
Read more...Oct 8, 2012
Google Maps integration with Web Dynpro ABAP is one of the most sought out thing. There are a lot of possible ways to this. Google is providing many ways to access map data and we are going to use static maps for this tutorial.
Read more...Oct 4, 2012
SAP Web Dynpro ABAP is an excellent tool to create huge data related applications easily and efficiently. However most of the time we create applications that has predefined screen design. So most of the people are quite unaware about manipulating UI elements dynamically. But Web Dynpro indeed has the capability to do anything dynamically. It is a perfect Object Oriented System just like Java Swing or .NET’s Forms. I would like to give a brief introduction on creating UI elements dynamically.
Read more...Sep 13, 2012
Few days back I wrote the blog Star Rating Display Component which can be used to show the average rating of an item. Now in this document I wish to share you how to create a reusable star rating input component through which we can give rating to items by just clicking on stars.
Read more...Sep 4, 2012
Most of the time ratings are expressed in terms of stars, which is more appealing and easy to interpret. I came across a similar situation and I developed a reusable component to show star rating.
Read more...May 20, 2012
On May 9, 2012 the headlines were ‘58000+ Twitter username and passwords are leaked’. Twitter is one the most used social networks with 140 million active users. Such a networks security has been breached and considerably huge number of passwords along with usernames was made available on Pastebin which is a paste and share web service. As a response all those accounts hacked are deactivated immediately by Twitter.
Read more...May 14, 2012
From the early days I’m very much bothered about storing passwords in my application. After studying some cryptographic techniques I got some idea and I have been following them since then. I shared the idea which I was following in How your passwords are stored!. And I’m glad that I got a very good response and suggestion for that which totally lifted me to a new level on understanding the use of cryptographic hash functions for the purpose of storing passwords.
Read more...May 5, 2012
Twitter is the social network used very widely for promoting products, films, etc. It is loved by companies especially for marketing. Twitter API owes the biggest part in Twitter’s success. The API is providing you the ability to do every possible operation that you can do in the website through your programs. For example, you find twitter tweets in many other sites (even in this blog) and this is achieved using Twitter API. Using this API you can do a lot of innovative things similar to the viral marketing done by Warner Bros for The Dart Knight Rises.
Read more...Apr 26, 2012
Internet seems to be the best innovation from human race. The architecture of the internet remains the same for decades, but the application and use of internet has got an unimaginable growth. To be precise, from 2001 to 2011, within a span of 10 years, internet users’ growth is 528%! (Source: http://www.internetworldstats.com/stats.htm). Web is the largest application in the internet. Every one of us is active user of at least 10 websites. Last decade saw a new revolution in the name of social networking which is still not over yet. Definitely web is the big thing which is going to rule the world for few more decades (Some say mobile is the next big thing; I would like to ask them to switch off internet in their ‘smarter’ phones and say it again).
Read more...Apr 16, 2012
Web Dynpro has been provided with lots of tools to make the development easier. When we want to create applications in which UI elements has to be created dynamically and processed dynamically, we have to go a little deeper i.e., we have to use the OO classes of the UI elements.
Read more...Apr 15, 2012
Object Oriented Programming has been a boon to the programmers without which development of huge systems is almost impossible. ABAP is no exception to that which is why Object Oriented Programming was added to ABAP.
Read more...Apr 15, 2012
Timer is a very essential UI element in many applications and creating a timer in Web Dynpro ABAP seems to be a little critical task in the versions prior to NetWeaver 7.1 where Island technologies are not allowed and only Iframe is available. Recently, I got an acquaintance with this problem and I ended up at a solution which I wish to share here as it would be useful for many. My solution uses Iframe and Javascript to create a timer. However, there are two of the main problem that one can face. One is the TimedTrigger component itself. It fires an action at every n second from when the previous action was fired but not from the start of execution of the application. Second, refreshing the Iframe will reload the HTML page resulting in resetting the timer. I have tried to provide a solution for both here.
Read more...Mar 29, 2012
Necessity is the mother of invention. Computer languages are not an exception to this rule. However, there are as many as 1600 different computer languages as they say. Did all these languages have necessities? Yes. But the importance of the necessities differ. At the least it had a necessity to satisfy its own designer. When a language satisfies a big need of numerous people, it remains, others wash away or limited to particular community. Java is one such language which was designed for something and outgrown into something invincible.
Read more...Jan 30, 2012
As we have seen before, the power of bitwise operators are immense. Sometimes thinking in terms of arithmetical operators cost you lots of CPU time when compared to bitwise operators. So given a problem its obvious for us to think in terms of arithmetical solutions, but try to search for a bitwise solution and compare it with previous one. You can end up in a very powerful algorithm too. Now I wish to share one such case where the use of bitwise operator avoids the use of a loop too.
Read more...Oct 7, 2011
Most of us use numerous services available on the net such as mails, social networking services, and blogs. So it is obvious to have the question “Can a database administrator working on Facebook can get the password of my Facebook account if he wishes?”. A worthy question it is. But the answer is “No”. Your passwords are never stored as it is. (Well, I don’t know the policy of Facebook regarding this; I mention it just for an example).
Read more...Aug 14, 2011
Twitter has been famous from two or three years ago. I had not had much idea about it till two weeks back. I really wanted to check what twitter offers and so joined twitter two weeks back. It is a nice experience exploring a new service. Whenever I do explore, I try to reverse engineer that too.
Read more...Jul 30, 2011
When I started this blog, I wanted to write only about computer science but I really think that I have to express something that has been inside me for long and I think it’s the right time for that. This article is for the students of computer science or more generally students of any discipline.
Read more...Jul 23, 2011
“There are 10 kind of people, One who knows Binary and the other who doesn’t.”
In the earlier days when electronic computers was first built, inputs were given in binary using tapes and outputs were also obtained as binary. So then, the people who where using the computers had to know binary ’language’. But now, we have GBs of movies, pictures, audio, documents, text and more & more type of files that we even we couldn’t make a full list of. Do we ever know how 0s and 1s formed these things? At the least, when we start to work with Bitwise operators we should have the knowledge of how these media are represented by the binary language. In this article we will see how to does binary works with numbers and text.
Read more...Jul 12, 2011
I suddenly got an example that may help you remember the characteristics of AND, OR, NOT and XOR. Consider them as four different human individuals, with four different characteristics or behavior. Humans generally have the behavior of conveying things different from what they really heard; they may add something to the original story or hide something or even tell opposite of what happened. We have had lots of acquaintances with situations like this which would make this example unforgettable I think. Our men, AND, OR, NOT and XOR are no exception to these characters but each one having a different unique character.
Read more...Jul 10, 2011
‘Bitwise operators’, as the name says they are indeed wise enough to do anything that a computer can do. In computer architecture, we would have studied how these ANDs, ORs and SHIFTs are used to do any mathematical operation. Any basic arithmetic operation is a set of bitwise operation, which for convenience we have abstracted to a level that we forgot what is underlying. Sometimes, a lower level of abstraction is a better tradeoff to higher level of abstraction; an example is that programs written in assembly language are more efficient than those written in high level language. So we have to pierce through the abstraction to find the right things when we really need right things. Well, I think it is time to learn some bitwise tricks and improve our programming. Presence of bitwise operators in your programs identifies yourself as a quality programmer from my point.
Read more...Jul 6, 2011
First of all, I introduce myself to my fellow readers. I’m Fareez Ahamed, a person who was impressed by computers from when I was studying fifth standard (well children now are introduced to computers more early now-a-days than those days). ‘How this stuff works?!’ is always a quest for many when they are introduced to new things. I’m no exception to that when I saw what a computer can do at first. It was at our printing press long back when I was studying fifth. The first software that I remember is Adobe PageMaker 5.0, something dedicated to printing industry. It did far better than what a traditional printing technique with very large space and tons of lead typesets can do.
Read more...