Chirag Modi
cmodi306.bsky.social
Chirag Modi
@cmodi306.bsky.social
I recently created a lightweight web app that analyzes a stock portfolio against recent market performance using FastAPI and yfinance. It pulls real-time data and compares the current value of each position to its highest price over the last 30 days. Here's the link:
github.com/cmodi306/sto...
GitHub - cmodi306/stock_market_alert
Contribute to cmodi306/stock_market_alert development by creating an account on GitHub.
github.com
January 20, 2026 at 12:04 PM
One of the many reasons why you shouldn't blindly accept the results that an LLM gives you.
January 19, 2026 at 4:22 AM
Wanted to make a #Python web app that monitors the stock market price. Yeah there are number of them out there but want to build something by myself. There is still some work to be done but this is how it currently looks like... Feel free to clone and modify the code:
github.com/cmodi306/sto...
January 13, 2026 at 7:51 PM
Believing that with enough sensors, you can eliminate all problems in your robotics application is a myth. It’s a linear mindset applied to a non-linear system.

#robotics #ros2 #python #sensors
December 19, 2025 at 11:13 AM
This artificial intelligence is getting a little too intelligent now.
November 30, 2025 at 10:13 AM
Devs, I've stopped manually documenting my Python code. I'm letting ChatGPT handle the mess.

I break down exactly how to use ChatGPT to generate docstrings, module overviews, and even README content — without losing control of your code or style. Check out my new blog on using #ChatGPT for #Python.
I quit writing Docstrings. ChatGPT is my new Documentation Intern.
If there’s one thing Python developers collectively agree on, besides PEP 8 and the fact that "import this" is a fun Easter egg nobody uses, it’s this: writing documentation is that one task we all procrastinate harder than cleaning the lint filter in a shared apartment dryer. We all want clean, readable docstrings and user guides. We also want to keep shipping features, fixing bugs, and pretending that “I’ll document it later” is a real plan. Spoiler: it never is. But we’re in a pretty interesting era now. Large language models—ChatGPT included—aren’t just toys for generating fantasy world lore or “explain quantum physics like I’m five.” They’ve quietly become extremely competent at turning your messy Python source tree into documentation that won’t embarrass you in front of other developers.
machinelearningsite.com
November 30, 2025 at 10:07 AM
When using #ChatGPT for documentation, the key is not dumping your entire project and praying for a perfect response. It’s guiding the language model with the right kind of context of your #Python code and intention of it.
November 30, 2025 at 9:00 AM
That moment when you realize your robot wasn’t publishing because you sourced the wrong #ROS2 workspace... again.
November 27, 2025 at 11:51 AM
Publishing a must-read explanation of how #RTK GPS works. If you’ve ever wondered how GPS coordinates have centimeter-level accuracy, this blog will help you understand it.

I even shared a small #Python script so you can see how RTCM correction data looks in real life. Have a look:
From Meters to Centimeters: How RTK Correction Data Sharpens GPS Accuracy
You’ve probably noticed that your GPS can tell you you’re somewhere in the area, but not exactly where you are. That’s fine when you’re ordering pizza, but not when you’re flying a drone or programming a robot to dock itself precisely. A few meters, even centimeters of error might mean a missed landing pad, a wrong turn, or a confused machine. This is exactly where RTK — Real-Time Kinematic positioning — steps in and makes GPS behave like a pro. In this post, we’ll go beyond the surface. We’ll look at what RTK really is, how it works behind the scenes, what “RTK correction data” means, and how that data is actually received from a base station or server.
machinelearningsite.com
November 23, 2025 at 7:01 AM
Blog for the weekend scheduled!

#gnss #rtk #ros2 #python #selfdrivingcars
November 22, 2025 at 9:59 AM
“AI will replace us!”

Bitch please! Even ChatGPT reaches a point where it keeps repeating the solution, even when you say that the code is just not working.
November 20, 2025 at 8:21 AM
-4° outside! Can't decide if I should go for "coffee and code" or "coffee and binge watching"?!
November 19, 2025 at 10:20 AM
This is how my robot vehicle ended up moving the first time I designed it in #ROS2 with dynamic parameters. This is some matrix level stuff lol.
November 16, 2025 at 7:26 AM
If you’re still parsing raw #NMEA or dealing with unstable #GPS fixes, you’re missing the one layer that solves it: gpsd.

Clean data, stable pipeline, zero manual parsing.
I broke down everything you need to set it up properly.

machinelearningsite.com/beginners-gu...
Beginner’s Guide to gpsd: A Practical Introduction to GPS Data Handling in Python - Machine Learning Site
Learn how to use gpsd to read, parse, and manage GPS data on Linux. A clear, practical guide for developers working with GPS hardware.
machinelearningsite.com
November 15, 2025 at 8:30 AM
Heard of #gpsd but don't know its significance? I just published a new guide on using gpsd to reliably access and manage GPS data in #Python. Check it out if you work with GPS hardware or just want to make sense of those NMEA strings.
Beginner’s Guide to gpsd: A Practical Introduction to GPS Data Handling in Python
Let’s talk GPS. Not the “turn left at the big tree” kind that you cursed at when you missed an exit, but the kind that helps self-driving cars, drones, and anything that to navigate in free space. GPS, or Global Positioning System, is basically a constellation of satellites shouting “I’m here!” while your receiver goes, “Cool… where am I?” For humans, it’s usually “you’re five minutes away, traffic sucks, also don’t take that exit.” For machines, especially self-driving cars, it’s a vital system. The fundamental need of a GPS system is to help machines like self-driving cars to navigate.
machinelearningsite.com
November 9, 2025 at 10:31 AM
Our robot just came to life! In Part 3 of the #ROS2 Tutorial, we’re adding motion to our custom robot vehicle. It’s time to make those wheels spin — literally! Dive in and see your #robotics creation move for the first time.
ROS2 Tutorial: Watch Your Robot Vehicle Move for the First Time! (Part 3)
In the previous blogs, we initially defined a robot vehicle in URDF and then defined the same vehicle using Xacros by creating templates and reusing them. In this last blog of the series (I guess), we are going to add motion to that vehicle and make it run in the virtual map. In the end, the vehicle will move like this: So let's get started: Defining the Transformation Writing the Vehicle Interface Node Configuring CMakeLists.txt and package.xml files Results What's Next Defining the Transformation In the previous post of this series, we create…
machinelearningsite.com
November 2, 2025 at 5:41 PM
Using URDF to model a robot vehicle makes the code repetitive real quick. The alternative is Xacro. In this post, we build a vehicle using Xacro. Xacro allows us to create a particular template and create instances of them, keeping the code efficient and non-repetitive. Level up your #robotics game.
ROS2 Tutorial: Step-by-Step Xacro Guide for effective Robot Modeling (Part 2)
Been a while since I posted the first part in this ROS2 tutorial series, so let's start with a quick recap. In the last blog, we created a simple robotic vehicle model that looked like this: And the URDF that generated it looked something like this: <?xml version="1.0"?> <robot name="simple_vehicle"> <link name="base_link"> <visual> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="2.0 1.2 0.4"/> </geometry> <material name="red"> <color rgba="1.0 0.2 0.2 1.0"/> </material> </visual> <collision> <origin xyz="0 0 0" rpy="0 0 0"/> <geometry> <box size="2.0 1.2 0.4"/> </geometry> </collision> <inertial> <origin xyz="0 0 0" rpy="0 0 0"/> <mass value="200.0"/> <inertia ixx="16.0" iyy="66.7" izz="80.7" ixy="0" ixz="0" iyz="0"/> </inertial> </link> <!-- Left front wheel --> <link name="fl_wheel"> <visual> <origin xyz="0.0 0.0 0.0" rpy="1.5708 0 0"/> <geometry> <cylinder radius="0.3" length= "0.2"/> </geometry> <material name="black"> <color rgba="0.1 0.1 0.1 1.0"/> </material> </visual> <collision> <origin xyz="0.0 0.0 0.0" rpy="1.5708 0 0"/> <geometry> <cylinder radius="0.3" length="0.2"/> </geometry> </collision> <inertial> <mass value="10.0"/> <inertia ixx="0.45" iyy="0.45" izz="0.25" ixy="0" ixz="0" iyz="0"/> </inertial> </link> <joint name="fl_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="fl_wheel"/> <origin xyz="0.9 0.8 0.0"/> </joint> <!-- Right front wheel --> <link name="fr_wheel"> <visual> <origin xyz="0.0 0.0 0.0" rpy="1.5708 0 0"/> <geometry> <cylinder radius="0.3" length= "0.2"/> </geometry> <material name="black"> <color rgba="0.1 0.1 0.1 1.0"/> </material> </visual> <collision> <origin xyz="0.0 0.0 0.0" rpy="1.5708 0 0"/> <geometry> <cylinder radius="0.3" length="0.2"/> </geometry> </collision> <inertial> <mass value="10.0"/> <inertia ixx="0.45" iyy="0.45" izz="0.25" ixy="0" ixz="0" iyz="0"/> </inertial> </link> <joint name="fr_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="fr_wheel"/> <origin xyz="0.9 -0.8 0.0"/> </joint> <!-- Left rear wheel --> <link name="rl_wheel"> <visual> <origin xyz="0.0 0.0 0.0" rpy="1.5708 0 0"/> <geometry> <cylinder radius="0.3" length= "0.2"/> </geometry> <material name="black"> <color rgba="0.1 0.1 0.1 1.0"/> </material> </visual> <collision> <origin xyz="0.0 0.0 0.0" rpy="1.5708 0 0"/> <geometry> <cylinder radius="0.3" length="0.2"/> </geometry> </collision> <inertial> <mass value="10.0"/> <inertia ixx="0.45" iyy="0.45" izz="0.25" ixy="0" ixz="0" iyz="0"/> </inertial> </link> <joint name="rl_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="rl_wheel"/> <origin xyz="-0.9 0.8 0.0"/> </joint> <!-- Right rear wheel --> <link name="rr_wheel"> <visual> <origin xyz="0.0 0.0 0.0" rpy="1.5708 0 0"/> <geometry> <cylinder radius="0.3" length= "0.2"/> </geometry> <material name="black"> <color rgba="0.1 0.1 0.1 1.0"/> </material> </visual> <collision> <origin xyz="0.0 0.0 0.0" rpy="1.5708 0 0"/> <geometry> <cylinder radius="0.3" length="0.2"/> </geometry> </collision> <inertial> <mass value="10.0"/> <inertia ixx="0.45" iyy="0.45" izz="0.25" ixy="0" ixz="0" iyz="0"/> </inertial> </link> <joint name="rr_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="rr_wheel"/> <origin xyz="-0.9 -0.8 0.0"/> </joint> </robot>
machinelearningsite.com
October 12, 2025 at 3:05 PM
Sneak peek on the blog post coming tomorrow. It's about robot modeling but not using URDF but something more efficient. ROS2 is indeed fun.
#ros2 #urdf #xacro #robotoperatingsystem #roboticslearning #robotics
October 11, 2025 at 5:42 PM
What if your code could talk back? I built this silly, custom REPL that compliments you, apologizes, or throws sarcastic shade before running your code. Have a look, how your code replies to your commands:
Pathetic Programming 3: The Overly Polite Python Interpreter
Pathetic Programming is a series I started to build absurd programs with Python. With already two blogs in the series namely: Creating a Random Excuse Generator with Python and Are You Even a Real Python Programmer? Take This Useless Quiz to Find Out, I thought it was now time for the third one. And this time, we are making our code talk back to us.
machinelearningsite.com
September 20, 2025 at 9:38 AM
Just a thought:
What if your #Python code talked back at you depending on the code you input?

For instance, if you said "c = 10/0", instead of just throwing an error, it says "Daring today, aren't we?"
September 16, 2025 at 5:56 PM
Debugging code is like being a detective in a crime movie…
where you’re also the murderer, but you have no memory of committing the crime.
September 9, 2025 at 8:01 AM
Vehicle URDF model is complete and visualized in RViz2. Next step: refactoring with Xacro to make the robot description modular, easier to maintain, and ready for future extensions.

#ROS2 #RobotModel #URDF #RViz2 #Robotics #RobotSimulation #AutonomousVehicle #RobotVisualization #ROSDevelopment
August 23, 2025 at 2:03 PM