
Versatile Senior Software Engineer with 6 years of experience in building scalable IoT systems, web applications, and AIdriven tools. Proficient in Python, Django, React, AWS IoT, and new technologies like LLM, RAG and Langchain. Developed innovative solutions like an IoT system managing over 1000 nodes and a tech support assistant chatbot using AI to automate diagnostics. Passionate about continuous learning and solving complex problems, I bring enthusiasm, adaptability, and a drive for excellence across IoT, web development, and AI, ensuring impactful and lasting solutions in diverse domains.
Senior Software Engineer
Smartjoules Pvt. Ltd.
Ansible
.png)
Docker

Linux

Git
.jpg)
Grafana
.png)
InfluxDB

Telegraf

PostgreSQL

CI/CD

Streamlit

Pandas

Matplotlib
Hi. I'm Dushyant. Uh, I've been working as a software engineer since last, uh, 6, 7 years. Uh, I've been mostly working in the IoT industry. I have worked on developing IoT systems from scratch, And these IoT systems are right now active, uh, in around 50 different buildings in India. And these buildings are huge. So these IoT systems, they monitor the data, they they allow the users to control the assets within the building. So I have I have worked on these on building these systems from scratch. I have led the development, I have led the, uh, you know, all the, uh, all the work which was required to monitor these IoT systems on a daily basis, uh, maintain the IoT software. So, yeah, mostly I have worked in this industry and throughout I have gained experience in skills like Python. Mainly, you know, I've been developing software, uh, in Python. Uh, I've used a lot of frameworks in Python. Uh, I've worked with NQTT. I've worked with databases like Postgres, InfluxDB, DynamoDB, uh, and, uh, you know, networking protocols. They are quite common and quite, uh, you know, required in the IoT domain. So I've worked with the networking protocols, uh, like TCPIP, uh, and Purity. And in Python, mainly I have, you know, I've solved problems which require, uh, you know, multi processing or, uh, you know, or, you know, parallel computing. And, uh, some things some tasks require, throughput data. So I have solved a lot of problems like that with the high throughput data, uh, because IOT has a lot of sensors, a lot of devices, etcetera. And I have worked, you know, in this domain, we we had to work with different technologies like, uh, InfluxDB, Grafana, you know, so that we can monitor these R and D systems. And lately I've worked on a personal project, uh, called FPL Garage, which is basically an app, a web app to, uh, you know, to to help the FPL managers, uh, the fantasy league managers, uh, build their teams, optimize the their teams. And I have used React as the front end framework and uh, Django in the Python, uh, in the back end as, uh, you know, as the back end framework. So yeah. Uh, that's it.
Demonstrate how you would build and optimize a database schema in MySQL for handling complex queries in a Django application. Optimize a database schema. Okay. So optimizing a database schema means a database schema already exists. Right? So the reason why you know, first of all, I will understand the reason why why there's a need to optimize and and how slow it is and what's making it slow. Right? And what kind of queries are making it slow. It could be that only some selective queries are, uh, selected queries are not efficient. So I would understand the problem first, uh, and try to find the root cause. And, oh, let's so it's it's how you would build. Oh, okay. So it's how you would build a database schema. So database schema does not exist in this. Okay. So I would understand the relationships between all the data aspects. Right? Uh, whatever columns, whatever data needs to go in this table. Uh, I would understand the relationships between all the data points. And and then I would I would create this model where, uh, where I can see these relationships clearly, like some kind of a diagram. Right? We we have these tools where we can just make the diagram of, you you know, how these relationships are, you know, between all the data points. And I can visualize the relationships, and then I can start creating the tables schema. And then comes the optimization. Right? So first of all, while building the schema, I would take into account what kind of queries I will run. And let's say a query requires data from different tables. So let's say I want to join, uh, and, and, you know, return that data return the data from 2 tables. So then I would I would consider that use case and I would, uh, I would, I would, uh, build that scheme accordingly. And then in terms of optimize optimization, I would, you know, I would think about assigning, you know, the, uh, the relevant keys, the primary key, the secondary key. And uh, I would also use indexing, uh, wherever, uh, it's required. So, yeah, I would take take a step step by basis approach, step by approach. And, you know, step 1, I will understand the relationships. Uh, I will visualize these relationships, I will understand what kind of queries need to be, uh, are in the use case, what kind of, you know, queries are going to be required. And then based on those queries, also, I would think about optimizing. Right? So let's say a query, uh, a query uses a separate condition or, uh, you know, it needs to extract all the values based on a set based on a specific condition. So think about that query and, you know, I would I would try to optimize accordingly.
So I've got worked in the exercise for techniques we'll use to dynamically generate static pages for our product catalog that updates daily. I've not worked on Next. Js extensively. Uh, actually, uh, I have zero experience in Next. Js. I've only recently started working, uh, in the web development industry, which is, like, I've started working on React and, uh, and Django. So next year, I don't have any answers. I don't know the answer for this. What techniques were used to dynamically generate static pages? Okay. Yeah. I I'm sure this answer happened, uh, you know, needs to, uh, have some prerequisite knowledge about Next. Js itself. It's not that it's not a gen general web development, uh, question. So I'll just pass.
Operate risk for the API had handled handling in JAGU app to provide detailed feedback to the client side written in React. Interesting. So I see in in mostly in, uh, you know, uh, in API development and riskful API development. I have experienced that this there's no clear standard of returning of responses or, you know, the response structure, there has to be a standard for that. And I'm sure there are there are many such standards, uh, in the industry, right, in the web development industry. There are there there must have been, uh, some, uh, you know, there must have been problems like this where the standard is not real. Right? How would you, uh, first problem I see, you know, whether the payload, the and the response needs to have a key, uh, called error always in the JSON, uh, payload, I'm I'm saying. So, so there So so there has to be standard. Let's say if there is an error, then the payload will have this error key. And and the and the response, the actual, uh, data can be in the data key. Right? So first of all, I see this, uh, uh, I just I see this problem of not having a standard in the web development projects. Right? So first of all, I think that is very important. 2nd is relate to error handling. Right? So let's say we have different views in Django and you have, uh, let's say that one of the views get executed and there is some operation. Right? So let's say I want to authenticate the user. Right? So there will be a request for that and the view will get triggered. And, uh, this view needs to check few things. Right? So it has to validate the request. Right? Validate the credentials, validate the user's information. So I'm just giving an example. Right? So it could be that I want to let's say I want to or to make a request to get the user's history, right? Uh, users history of, let's say, what jobs did you apply to? Let's say there is a job hiring platform and, uh, there's a query come going to the JAMKO view to get the to get the user's history of, you know, list of jobs where he applied, right? So there could be some there has to be some checks on this, whether the user is authenticated, whether, uh, you know, the user is logged in, right, whether the user is verified, not logged in, I'm sorry, whether the user is verified, I meant. And whether the user's account is, you know, user's account is suitable to get this information, you know, whether the user has access to get this record. So in that case, I would, you know, I would have these checks in place And wherever these checks are, you know, are not passing, I will raise an error. And then I will catch the error on a on a, you know, separately, and I will, you know, return that error in the same standard that I started with. Right? So yeah. That's it.
This type process to incorporate a Docker based development environment for a Django application ensuring alignment with production. Interesting. Okay. So in this case, I would first try to understand the external dependencies of this application. Right? It's important because I would want this environment to help me, you know, test it in my local environment. Because I think that is as important as having this process, having this alignment with production. It has to be aligned with production. No doubt. No question around that. But, uh, it has to also help me test locally so that I can speed up my development. And mostly I have used Docker, uh, because it it serves me this purpose of being able to test locally also getting aligned with production. Right? So I would try to understand the external dependencies and also add this add those dependencies, right, in some way in the doc in the, uh, docker environment. Right? I never do it in such a way that, uh, those dependencies do not run-in the production environment. So there has to be some control, uh, of what things to, be included in the environment and what things, uh, not to include in that environment based on some environment variables. Right? And let's say, uh, so that is one kind of control. And the other reason why we need environment variables is because there are some keys, there are some secret keys and credentials, there are some settings, right, which might be environment dependent. Let's say time zone, uh, let's say there is some path on the system which you want to access, which needs some, you know, which has some configuration files. So there have to they can be an environment variable like, uh, conflict file path, something like that. Help of these environment variables, I will be able to segregate the environments, right? Segregate the, uh, conditions which are being imposed with the from the different environments, right? Production environment also. Uh, so So, yeah, mostly, I will use environment variables. I will maybe I will use a docker compose site and, uh, you know, to set up the environment. Yeah. So, I mean, yes, uh, let's say if there's a Python application Oh, let's so it's a Django application, right? So I will prepare a I will use the Django, uh, or Python image, the base image, uh, the Docker image, and I will extend that image, uh, add some, you know, if there are any additional requirements, I will add those in the Docker Compose or the Docker file. I will build, uh, you know, I will build that image and I will test the container. Right? Uh, Yeah. And then then I will test it locally first, uh, then I will make sure it runs in production also. Right? So, yeah, that's the that's the way I would do it.
Implement the cache system red channel to reduce the number of database calls for frequent queries. Excellent question. So I actually I actually went through the same exercise while I was building this FPL garage platform. Uh, and I used Django extensively in this Django was the complete back end framework I use in this project. I I went through the same problem of, you know, queries, uh, other requests, uh, taking time to execute because, uh, there were database calls, uh, for some of the requests. So I would and I've actually 2 approaches in mind, you know, one could be use of, you know, some in memory caching system. Uh, there are straightforward, uh, in a Django, I think has its own caching mechanism or, you know, it provides some, uh, methods or some boilerplate to help you cache. Right? So I've used that and it was in memory caching. But it it provides, you know, external I'm sure it provides, uh, you know, in the same format. It provides support so that you can set up the caching in Redis, right, or any other caching, uh, database. Right? So so yeah. I I think depends on the complexity of the project. If the project is too complex, right, and let's say there is some data which needs to be accessed every now and then. Right? So in that case, I would definitely think about, you know, using a in memory caching system. And it it is very straightforward. Like, you can just use a decorator on on top of a view. I think Django provides this mechanism. I've used this. And on on the top of the decorator, you provide this, uh, you know, uh, on the top of the view, you add a decorator and it will it will catch the response of that view. Right? So that is a very straightforward system to catch your responses. Right? It will save the database calls. But I'm sure it can work for very limited use cases, right, this kind of approach. But, uh, but for you other use cases, right, where this in memory caching system will not suffice. In those use cases, I would definitely use, uh, Redis. And I would save those, uh, you know, results uh, in Redis in Redis with some detail. Uh, and when that detail expires, then only I will make those database calls. And yes, to you to have this caching system, you know, to standardize that, I can have a module out. I can use the straightforward, you know, whatever chatbot provides in its, uh, tools or, you know, in its framework. I'm sure it it provides those methods which which you can use to set up for a a a recaching system in radius. But if not, then we can just have a module which does this. Right? You get this you this module has a limited functionality to get information from Redis to save information, uh, to Redis. Right? And the the values are expired, then it can return accordingly, you know. The this this module can tell you if the value is expired, and then you can make the database calls. Right? So, yeah, I think these are very, uh, some of the, you know, simple and straightforward approaches.
Full stack engineers often handle both server side for the Django code snippet below. Please explain, but find me wrong if the view function is not creating a new record in the database as expected. Full stack engineers often handle, okay, for the Django code snippet, explain what might be wrong if the view function is not creating what might be wrong. Okay. So so you mean the underlying reason why this view function is not creating a new record in the data insights as expected. Oh, okay. So okay. So this is a view and this is a post request, uh, and it will create this record. Right? So and the request has a name. Request has a value. So record new record equals to record dot objects dot create name equals to this and value equals to this. Okay. And then return HTTP response. Record created successfully status equal to 201. Okay. So the I think the or the first look, I think the reason might be if the record is already created with the same name. Right? Because it could be that it could be that the the name is the key in this table, right? So where is this record coming from? Recording dot objects. Oh, record might be a table, right? Okay. Yeah, yeah. So creating a creating a, you know, a new role in this, uh, in this table. Okay. So, yeah, I think the the name is is the key in this table that you're trying to create a new row with the same name. And I think that that is the that might be the reason why why it might be it might not be creating a new record. And because, uh, I don't know, like, the syntax of the I mean, I'm not sure what there could be something wrong in the syntax or the way you use this Django, you know, methods. Uh, but but I think it seems correct the way the way Django, you know, this ORM is used or not objects dot create. Right? So I I'm guessing you record the table here and then objects, uh, dot create is the how you how you use the Django ORM. Right? Similarly, you get the get the values from a table, something like this record or objects dot get. Right? So I think this seems fine. Uh, the code seems fine, but the underlying reason, uh, I'm not able to think other than the fact that, you know, the the same that a row exists with the same name. Right? Uh, so yeah.
React has its quirks when it comes to rendering. In the following codes, it would explain why the component might not be re rendering while when the items are is updated. Okay. So this is uh, item list, uh, component which is initializing and, you know, has a state called items. Okay. Cons add item equals to items are pushed, then add item, new item. Okay. Oh, so the code is not visible. Items dot map. Item okay. The code is not clear in terms of, like, the visibility, but I'll try to, uh, answer. Set items items. Items are push. Why would the component rerender in this case? Yes. Component rerenders when there's a change in the state. Yeah. It has to rerender when the when there's a change in the state. Okay. Yeah. It has to rerender. Like, ideally, it should be rerender, but set items. Okay. It could be something to do with, I'm I'm not sure. It it could be something to do with, uh, shallow copy and, you know, uh, deep copy. So I have come across some problems like this while I was working on this web app. And, you know, the same same problem. Right? The the state is changing. I'm adding something in the array or, uh, in the map. Right? And the map, like, is a nested. Right? It's a nested object. You have keys and the value is in itself an object and that object has the key is, you know, uh, subsequent keys. And then, uh, the react will you know, the the app will not rerender the component. So I I was stuck in the same problem. And the, you know, the the the way I solved it is by you know, the problem was this deep copy and shallow copy thing. I had to, you know, kind of reconstruct the whole, uh, the whole state or something like that. Uh, so your dad is the first that is the first you know, one of the reasons why which comes to my mind. Uh, but apart from that, I'm not sure. Add item. Okay. Okay. I'll pass.
How to design a real time collaborative editing feature in a Django based web application with simultaneous edits. Interesting. Okay. Simultaneous edits on a post case database. And it's real time. So it has to Real time collaborative editing feature in a jungle based. Okay. So let's say there are multiple users editing something. Right? And whenever I'm editing something, there's a request going, let's say a post request, to this Django application. Right? Similarly, other users are also editing and the post requests are coming from their end also. Multiple post requests are coming. Right? And these requests now have to save this information in post case database. Right? Okay. Simultaneous edits simultaneous edits. So this will be simultaneous. Right? All these requests are going to be, you know, are going to execute simultaneously. I mean, not not exactly simultaneously, but you know, barring the Python problem, uh, the global interpreter log problem. But it will still be able to use multi processing and, you know, all these requests will happen using the, you know, multi processing kind of a system. Python will make sure. Right? It will these that these requests are executed simultaneously. Uh, I'm not sure how Django handles, you know, the concurrency or if there are multiple requests, uh, I'm sure Django will still will still, uh, you know, face the problem of this Python, uh, trading limitation. I don't know. It seems to me inherently the the Django application must if the multiple post requests are coming. Right? So then these views the this view will will get triggered on each request. And these will be, like, these will be simultaneous edits. Right? So I'm not sure what yeah.
Method for integrating a Python based machine learning model into a Django backend for real time predictions. Okay. Uh, you know, I'm about to implement something like this in my app. I'm I'm working on the model right now, but I've not yet integrated with the Django back end. Uh, but I don't have I don't have the prerequisite knowledge of how do you, you know, how do you bundle a model. Right? Uh, and how then how you use that model to predict. Right? So let's say that model is contained within a file or within, uh, some app separate application. Let's say there is a model as an application and you use that application to predict. Right? So it could be as, you know, simple monolith. Like, the monolith hasn't the model at the Django back end is contained within the monolith. That could be the simplest approach. As I said, I'm not sure how the model is bundled, whether it is a file, whether it is a separate application. Right? I'm sure the model is bundled in such a way that you can use it and load it again to predict. Right? That that is the simplest approach. Right? That model contain is contained within the application, within the Django application. And then you app is initialized. And then whenever it is required, you do the real time, you know, you do you call the model to predict the values. And then you you can send these values to your front end application via sockets or via WebSocket or, uh, you know, some kind of a request response model. So yeah. I mean, uh, or some other way could be that if this model is not contained within the same in same Django, uh, uh, application, then this model can exist somewhere else, uh, and there can be an API on top of it. And then the Django can use this API to get the values. Right? Get the predicted values. That could be another approach, but, of course, that will introduce some latency. Right? So the best way is to do it by having that model some in some some approach, you load that model in in memory. That will be the fastest way to do it. Right? And that will make it real time. As this question is saying, it's real time prediction. So I would definitely try for that approach first. Then, um, yeah, then I would think about, you know, how to update these models in the CICD pipeline. There has to be some way to you can update these models also. So that that will but that is a separate problem to tackle. Yeah. That's it.
How do you ensure cross browser and cross device compatibility for complex CSS layouts? Okay. Okay. Uh, I I I face the same problem in the in the web app. Right? I released that web app and, you know, the user started, uh, complaining that it does not work on my mobile because I I I developed it, uh, only for desktop first and then I had to, uh, you know, improve the styling, improve the components. So, right, it it is, uh, UI responsive and it had it is compatible in all the devices. Right? So how did I ensure this? So I think the the straightforward approach is doing it right the first time. Right? Whenever you're building this app, whenever you're building any front end app, you make sure you use these responsive, you know, UI strategies, you know, in the from the starting phase. Right? Because when the project gets bigger and bigger, it gets difficult to make sure, you know, to make to ensure this compatibility. Right? So so yeah. For CSS layouts, I think I use a very simple, uh, you know, the the display flex based approach. And, uh, you know, the flex layout is is is very simple, and I think that's straightforward solution to maintain the compatibility. And then based on screen sizes you define the you know, whether you it's width or whether it is font size, I think that is a also that is also I I find that approach, uh, simpler and straightforward, uh, that you mentioned the screen sizes. And then for each screen size, uh, you know, x x, uh, s, uh, extra small, small, medium, and large size sizes. You mentioned different sizes. Right? Different width or different font size. Right? Uh, so I think that is a very straightforward approach. Uh, I don't like condition based, you know, CSS properties because I I don't know, they're just not that, uh, readable and straightforward straightforward to understand. Uh, and I'm not that, you know, I have a very limited experience in CSS and React. Uh, so based on that on my limited experience, I think just just conditional, you know, screen sizes based, uh, CSS properties. Right? It works very well. I don't know the term the exact term to, you know, define it. But, uh, but, yeah, uh, that seems to be the simplest approach. And, yes, of course, use flex variable variable possible flex layout and, uh, you know, uh, and make sure you test on both the on all the screen sizes. Right? When it while you're building it, while you're developing it, test it then and there and fix it then and there. Right? So you can just, uh, in in the developer tools, you you can test your, uh, your front end for all the different screen sizes. Right? So make sure you do that, right, from the starting phase. So, yeah, I I think I think that's the that's the approach I would take. Yeah.