Sr. Software Engineer
Curitics Health Solutions, IncMagento Tech Lead
FROCQ FillYouIn Pvt. LtdProject Associate
National Programme on Technology Enhanced Learning (NPTEL)Freelance CMS Developer
MarketplaceFullstack Developer Lead
Max Vision Solutions Private LimitedVagrant
Apache Airflow
Plotly
Celery
Redis
Docker
Kubernetes
Git
AWS
BeautifulSoup
Scrapy
SQL
NoSQL
Pandas
NumPy
Plotly
scikit-learn
Flask
PostgreSQL
Redis
Vue.js
Bootstrap
AWS
RESTful APIs
GraphQL
Hello. I am. I am, uh, I have 15 year experience in web related and, uh, web related development. I started, uh, this journey in 2009 with, uh, basic PHP and, uh, it's, uh, related technologies like MySQL. Uh, later on, I brought myself into WordPress development, and, uh, I worked to supply, uh, work WordPress projects, including Ucommerce Integration, prod, uh, ecommerce development, uh, and, uh, downstream. I also work uh, with the other CMSs like Joomla, Drupal, uh, then OpenCart, then Magento 1 also. And along with that, I also have experience with the Laravel Laravel development where I have, uh, I have good hand in Laravel Development, uh, with key concept of the programming, like, object oriented system, object oriented programming, and interfaces interface interface design pattern, repository design pattern, singleton pattern. So I have these I have these aspects already in hand. And, uh, if we talk about Magento too, then I have approx 8 to 10 years experience in Magento 2 since, uh, uh, Magento 2 is launched. I am kind of joined with the Magento, uh, with the several with the several ecommerce installation setups, uh, creating new modules. I also, uh, did open source. I also submitted my PRs to Magento community. Also, my PR get approved for different functionalities. I have different type of clients in Magento too, like, uh, small, uh, starting, uh, ecommerce to, uh, mid end, uh, mid end, big level of ecommerce already running. I have managed several clients into, uh, Type 2 main. Uh, I have experience of Magento to upgradation management of touch to creating new functionality, creating new, uh, module or extension, installing the existing extension, uh, extending the extends extending the default functionality of the Magento. I also have hands on experience with, uh, the headless Magento Commerce, uh, with the PWA provided by the Magento 2, which is on React. So I, uh, also work with that, uh, and not very deep, but, uh, I have also hand off hands off experience in designing the Magento commerce, uh, for front end. Though I am I found myself not very strong in the front end, but I know that how to do that.
To test Magento, uh, front end JavaScript libraries as we all know that, uh, Magento front end, uh, JavaScript best mostly use of required JS techniques, uh, required JS and, uh, the CU, uh, Ku opportunities, k, uh, Ku libraries for their their model view controllers for the front end functionalities. So to update or create new functionality in the JavaScript with minimal, uh, minimal user, uh, impact, uh, I would try to do, uh, with the with the, uh, with the the several tools, uh, with well, not tools, uh, I I would say, uh, with the several setups, uh, which compile JavaScript into the front end. And, uh, after the compiling, uh, I will try to zero downtime deployment of in which my compiled, uh, JS is automatically connected to the new newly compiled JS, uh, is automatically replaced by the old compiled JS. So in that way, there is a minimal user in minimal or no user impact because as soon as user refresh the page, the new JavaScript will be loaded, and, uh, he can experience the, uh, our changes. And, uh, to, uh, attach our new functionality into the JavaScript, as I mentioned that we can, uh, we have a required JS tool through which we can attach our newly created library to existing Magento, uh, front end designs. To create the new user experience, uh, we would, uh, I would go with the, tier libraries, which, uh, to use by default, uh, through which, uh, they are using model view controller, and it also get data through, uh, either Magento graphical API are we have natively uh, data available. So in this way, I I will update and create new JavaScript libraries. To test it, uh, to test it, uh, I I will use Cypress libraries to, uh, check the JavaScript front end working our user interface, uh, user front front end working, how it's responding.
To manage a JavaScript challenges into, uh, uh, because it's a pretty good challenge. I have faced just a little time. So, uh, first of all, as we know that, uh, the modern JavaScript is not 100% of labeling all the browsers. So and uh, it's of label with, uh, different browsers versions. So that's why, uh, we use a fallback method, and, uh, we try to we try to use those modern JavaScript method with the old older one. And that's that's why I would mention a fallback method to use. And in Magento, uh, this fallback method is already included. And if we talk about the jQuery system, uh, so there is a, uh, jQuery migration. Um, migration script is already involved in the Magento team. So in those way, we can handle the legacy, uh, JavaScript legacy browser supports because it's been impossible to use several new, uh, several new functionalities, uh, which are labeled in newer browser, and 9 tools are not available in the older browser so that we can use the fallback, uh, metadata I mentioned earlier. And for that, we use the library. And with the help of library, we can we can handle those outdated browsers functionality too.
What is the okay. So to resolve the conflict, first of all, I will try to break down where the where this conflict is happening, uh, and why this conflict is happening. Most of the time, the uh, the Java jQuery is the convict. However, uh, if, uh, there are others, then first, as I've been, uh, I have to check where the this conflict is happening and why it's, uh, affecting the JavaScript functionality. Sometime, it happens that, uh, on a particular day data, 2 different modules are working so that data could be modified by any of them, and, uh, that could cause error. To, uh, solve that problem, uh, first ly, uh, either I would try to disable, uh, the extension if not required, if, uh, that functionality, uh, uh, could be managed by, uh, other managed by other extensions. And if that not possible, then I will try to extend the the one of the plug in and write the code myself, uh, and then inject it, uh, into the system through required JS. And when I update the code, I will keep them keep in mind the conflict that was happening with the extensor. So with the, uh, with the help of that, I can create extra extension, which will, uh, override the one of the extension, which is conflicting. So in that way, I can avoid the conflict, and, uh, I can set proper triggers and proper events, uh, where the data could be updated if that is the conflict. If, uh, the conflict is, uh, like, uh, some view operation means user UI conflict is happening in a user UI experience, then, again, uh, I would go with the same approach, and I will create, uh, ex I will create a override for one of the extension, and I will try to avoid the conflicts.
To integrate, uh, the the third party graphical API securely in the Magento, so first of all, uh, I will create extension, and that extension is wholly responsible for this connection. So that is our that is my first step for the security. 2nd step, uh, is, uh, I would like to know what kind of API I am using and, uh, what the frequency we have to hit it. So, uh, in this way, I will connect, uh, my extension to the 3rd party GraphQL. And, uh, for, uh, securely, I I mentioned that it is mostly it'll mostly work, uh, via back end. So there is no, uh, network there is no front end network involved, our open API involved. So it'll connect, uh, with the 3rd party 3rd party API server securely. And, uh, I must show that the third party providers provide us the login credential or some kind of API token. So, uh, I would try I will use to secure that credential into the database with micros with the, uh, Magento inbuilt hashing through which these keys, uh, will be say will be saved and hashed so no one can access that. And to access the data, I would, uh, use the Magento HTTP, uh, Magento HTTP library to rub it. This is the secure secure, uh, most method in available in the Magento through which I will, uh, hit the third party API and get our required data and do the operation. So, uh, in this way, uh, I would create a secure connection with the 3rd party GraphQL, uh, connected with our Magento 2 store.
For giving, uh, further debugging process of the checkout, uh, is a quite a complicated task, and I faced it several time in my working. So first of all, I I would try to, uh, bottleneck, uh, try to locate the bottleneck where this checkout is failed and why. So my, uh, my debugging evolves over 2 steps. 1st is, uh, the JavaScript functionalities, and second is the, uh, BSP functionalities because most of the time I found that, uh, the checkout for fails due to JavaScript functionality as, uh, Magento 2 use as heavily of JavaScripts with the, uh, knockout libraries on the checkout piece, and it will uses several events, several, uh, data points to manipulate the data, communicate to the server, and vice versa. So there are probability, uh, that, uh, using some extents and conflict could happen and Magento could fail to successfully fail, uh, fail to, uh, check out. So my firstly, I would try to debug the JavaScript, uh, the front end JavaScript. And to use the front end JavaScript debugging, I used the Chrome, uh, inspect tool. And through that, uh, I can access, uh, that particular, uh, library for that particular event for the data they hold, how the data is processing. Because as I mentioned that, uh, they are knockout model view controller methods. So in the knockout model, there are data and where we can see how they are managing. So this is the my first step. 2nd step is if the knockout JS are front end JavaScript library submitting data correctly, then certainly, the error resides in the PHP section of the back end. So the, uh, at that time, I would check the back end part of the BSP because during the checkout, several, uh, API risk API API connections happens at the time of checkout, uh, because Magento frequently connect to the back end, submit the data, and get the output, and validate it and get the output. So I will check the PSP part of the checkout function if they are, uh, if they are creating they are creating this conflict. So in these two method, I will bottleneck the problem and solve them.
Oh, using important in, uh, CSS code is always, uh, always prohibited. Everyone suggest that. So, uh, I would find out, uh, that using important is itself problematic. Regarding the maintainability of this code that, uh, I we can see this is, uh, changing the background color and the text color of the primary buttons throughout the system. So the problem is button primary is a very key CSS class, so it used almost everywhere, uh, almost every button. So with this code, we are changing every buttons. Every button's attribute, we are setting here with the background color and the color. So this is the problem of the maintainability because there are several kind of buttons used in the Magento theme. So we need to, uh, we need to change, uh, if any particular button or any style. This could make our life very tougher. So to solve that, uh, I would try to use that, why this important is required. If, uh, there is something happening or we need the primary buttons to be color updated, then we can, uh, define it in team CSS, which is the team's default file is from where we can update the theme, update the button primary. Or if we want any particular button to be updated, then I would add the page class and that div class before that so that it could update that particular button only, not the other ones. And in that way, it's maintained the, uh, it's, uh, it's it's resume its maintainability because that is one base code, uh, that is every override codes exist on a page like the team dot CSS, and from there, everybody can change. So it will solve our maintainability issues.
Oh, but, uh, using double equal to sign age, Most of the time, it's worked, but here, uh, as we are checking it with the validation, So sometime, the space character could, uh, get saw could get through with the validation, and it provides comp, uh, its its result into true. So to solve this problem, uh, is empty is the method in the, uh, in the JavaScripts and in the Magento also. In Magento, there are found there are several found validations of label and through which there are methods, like, uh, as I mentioned, easy, easy method. So with the use of those, uh, methods, we can easily, uh, and easily and more come you can say more comfortable. Hello. Not comfortable. Uh, is more good way, I guess. I'm sorry. More good way, uh, to use, uh, those methods because those method is already tested, and they are very reliable method reliable, I was trying to say that. So those methods are very reliable. So I would use, uh, asymmetric method to solve this, uh, problem.
Okay. So to architect Magento system, uh, that could be reverted back, uh, I would use continuous deployment tool where our system is deployed to the live server, run the compile, uh, command, like, the I compile front end, uh, deploy front end deploy and, uh, all the necessary commands. And after that, that directory is connected to a current directory to a current directory which is linked to the domain right now. So in this way, this is where we'll call, uh, 0, uh, 0, uh, deployment, uh, 0 0 to 0 deployment where there is no downtime. There is no any downtime could happen because it's just similar in creations. Earlier, Simulink was connected to the older Magento systems. Older Magento uh, older magento installation where older version of the Magento or older version of plug in was working, and that's fine. So, um, if we want to upgrade it, so we upgrade it, uh, on our system and push it to the repository system. And then the repository system's continuous deployment, what it'll do, it'll copy it will, uh, copy a code to the new directory, not the older directory. In the new directory on the server and run the necessary codes, like I mentioned earlier. And after that, once those process is over, it simply, uh, create is delete the older syn links and create a new syn So in this way, uh, Magento's, uh, the domain responding is simultaneously connects to the new domain. So, uh, there is no, uh, downtime. And, uh, if something goes failed, it's again delete the new folder and connect to the old, uh, folder with the symlink. So, uh, there is no downtime. And if anything goes wrong, it's automatically we can go to the previous stable states of the Magento system, which is which was working fine before the upgrade.
Live Magento stores, I generally prefer, uh, the New Relic, which is already, uh, given in the Magento system. Uh, so I if a client allowed to further payment, I go with the new Relix system because it, uh, provides, um, very important, uh, important data to monitor the performance of the Magento. And, uh, with the bottlenecks of the Magento. And, also, I, uh, use the server side, uh, server side, some, uh, tools like, uh, log slow query, where, uh, I would log the if, uh, log the slow query MySQL queries if there is any. Similarly, I have to do a log the slow PHP bsp operations. If there is any spear bsp operations, which is goes beyond my threshold, what is threshold I defined? Then, uh, it logged that code block so I can I could go and check it later? And apart from that, I also use, uh, Google Pay Google Pagespeed and GTmetrix, uh, tools for front end up to my JSON if what, uh, they are suggesting what the best treatments and what they are suggesting to improve our performance on user's side, how user are facing the problem, and what are the problems, how can we fix that. So these are the tools I generally, uh, use for the performance management. Also, I use the the Google Chrome's Lighthouse tool through which, uh, I can check the, again, performance issue, but in different terms, uh, and GT metrics provide a detailed view. So with combining with the, uh, light speed and, uh, lighthouse and GT metrics, I, uh, go for the performance upgradations if accordingly.
To approach, uh, the proactively monitor, uh, there is a, uh, uh, there is a tool already provides, uh, which scans every week, one day in every week to the performance of the website. So I use that tool, uh, which extends, uh, our website thoroughly and, uh, get, uh, find out if anyone available at least till now. And, uh, apart from that, I dub I also use OSWP suggestions because there are, uh, OSWP suggestions like blocking the boats and, uh, blocking the boats and DDS, uh, prevent the DDS attacks, etcetera. Uh, apart from that, I also, uh, try to update the Magento as soon as their security patches released. So in this way, uh, I can secure the Magento store.