{"@attributes":{"version":"2.0"},"channel":{"title":"dhruv's space","link":"https:\/\/dhruvs.space\/","description":"Recent content on dhruv's space","image":{"title":"dhruv's space","url":"https:\/\/dhruvs.space\/banner.png","link":"https:\/\/dhruvs.space\/banner.png"},"generator":"Hugo -- 0.153.3","language":"en-US","copyright":"Copyright \u00a9 2026, dhruv","lastBuildDate":"Sat, 27 Dec 2025 00:00:00 +0000","item":[{"title":"Reflections on 2025","link":"https:\/\/dhruvs.space\/posts\/reflections-on-2025\/","pubDate":"Sat, 27 Dec 2025 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/reflections-on-2025\/","description":"Looking back at a year of open source, career changes, and the rise of AI agents."},{"title":"Keeping up with dependency updates","link":"https:\/\/dhruvs.space\/posts\/keeping-up-with-dependency-updates\/","pubDate":"Mon, 16 Jun 2025 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/keeping-up-with-dependency-updates\/","description":"How I stay on top of the never-ending cycle of dependency updates for my projects."},{"title":"Feature Preview Deployments for the Front-end","link":"https:\/\/dhruvs.space\/posts\/feature-preview-deployments-for-the-frontend\/","pubDate":"Thu, 20 Jul 2023 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/feature-preview-deployments-for-the-frontend\/","description":"Adding support for feature previews for a front-end application"},{"title":"Knowing What You're Shipping","link":"https:\/\/dhruvs.space\/posts\/knowing-what-youre-shipping\/","pubDate":"Sun, 16 Jul 2023 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/knowing-what-youre-shipping\/","description":"Getting more visibility in what software you&#39;re shipping as a team"},{"title":"Getting pytest results into Neovim's quickfix list","link":"https:\/\/dhruvs.space\/posts\/pytest-quickfix-list\/","pubDate":"Sat, 30 Oct 2021 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/pytest-quickfix-list\/","description":"Getting pytest results into Neovim&#39;s quickfix list"},{"title":"Binary Search Trees","link":"https:\/\/dhruvs.space\/posts\/binary-search-trees\/","pubDate":"Wed, 10 Jun 2020 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/binary-search-trees\/","description":"Lecture notes on Binary Search Trees. Based on Josh Hug&#39;s lectures from UC Berkeley&#39;s CS61B."},{"title":"Disjoint Sets","link":"https:\/\/dhruvs.space\/posts\/disjoint-sets\/","pubDate":"Wed, 10 Jun 2020 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/disjoint-sets\/","description":"Lecture notes on disjoint sets and the problem of dynamic connectivity. Implementations discussed include Quick Find and Weighted Quick Union. Based on Josh Hug&#39;s lectures from UC Berkeley&#39;s CS61B."},{"title":"ML Basics #4: Replace Negatives with Zeros!","link":"https:\/\/dhruvs.space\/posts\/ml-basics-issue-4\/","pubDate":"Wed, 04 Sep 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/ml-basics-issue-4\/","description":"<p>This is the fourth post in <a href=\"https:\/\/dhruvs.space\/tags\/ml-basics\/\">this<\/a> series on the basics of Machine Learning. These posts are intended to serve as companion pieces to <a href=\"https:\/\/dhruvs.space\/zines\/ml-basics-binary-classification\/\">this<\/a> zine on binary classification. In the <a href=\"https:\/\/dhruvs.space\/blog\/ml-basics-issue-3\/\">last<\/a> one, we learnt how adding hidden layers to a Multilayer Perceptron helps it learn increasingly complex decision boundaries. The MLPs used till now made use of the sigmoid function as the activation function. In this post, we&rsquo;ll move our focus to a much simpler kind of activation function: The Rectifier.<\/p>"},{"title":"ML Basics #3: More Layers!","link":"https:\/\/dhruvs.space\/posts\/ml-basics-issue-3\/","pubDate":"Mon, 26 Aug 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/ml-basics-issue-3\/","description":"<p>This is the third post in <a href=\"https:\/\/dhruvs.space\/tags\/ml-basics\/\">this<\/a> series on the basics of Machine Learning. In the <a href=\"https:\/\/dhruvs.space\/posts\/ml-basics-issue-2\/\">last<\/a> one, we learnt how a Multilayer Perceptron can be trained to non-linearly segment a dataset. We also saw how a simple artificial neuron forms the building block of a Multilayer Perceptron \u2014 or a neural network in general \u2014 which can learn much more complicated decision boundaries.<\/p>\n<p>Let&rsquo;s move on to datasets that are harder to segment. One way to improve the learning capability of a MLP is to add more neurons in the form of hidden layers. In this post we&rsquo;ll explore MLPs with 2 hidden layers.<\/p>"},{"title":"ML Basics #2: Multilayer Perceptron","link":"https:\/\/dhruvs.space\/posts\/ml-basics-issue-2\/","pubDate":"Sun, 25 Aug 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/ml-basics-issue-2\/","description":"<p>This is the second post in <a href=\"https:\/\/dhruvs.space\/tags\/ml-basics\/\">this<\/a> series on the basics of Machine Learning. The <a href=\"https:\/\/dhruvs.space\/posts\/ml-basics-issue-1\/\">last<\/a> post detailed the functioning of an artificial neuron, and how it can be trained to linearly segment a dataset. However, most real world datasets are not linearly separable, which begs the question:<\/p>\n<blockquote>\n<p>What is the point of learning about a neuron?<\/p>\n<\/blockquote>\n<p>Well, by the end of this post, we&rsquo;ll see that a bunch of neurons, when stacked together, can learn to create powerful non-linear solution spaces. Let&rsquo;s see how that works.<\/p>"},{"title":"ML Basics #1: Start With A Neuron","link":"https:\/\/dhruvs.space\/posts\/ml-basics-issue-1\/","pubDate":"Thu, 15 Aug 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/ml-basics-issue-1\/","description":"<p>This is the first post in <a href=\"https:\/\/dhruvs.space\/tags\/ml-basics\/\">this<\/a> series on the basics of Machine Learning. My aim here is to create a comprehensive catalogue of ML concepts so that I can quickly refer to them in the future, as well as be of help to anybody in a position similar to mine.<\/p>\n<p>This post complements the first segment in the zine: Linear Binary Classification. The idea is to have the content here supplement that in the zine.<\/p>"},{"title":"Takeaways from Naval Ravikant's JRE episode","link":"https:\/\/dhruvs.space\/posts\/takeaways-from-naval-ravikants-jre-episode\/","pubDate":"Sat, 15 Jun 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/takeaways-from-naval-ravikants-jre-episode\/","description":"<p><a href=\"https:\/\/twitter.com\/naval\">Naval Ravikant<\/a> recently made an appearance on The Joe Rogan Experience. An entrepreneur and an angel investor \u2014 he\u2019s invested in more than 100 companies, including Uber, Twitter, Yammer, and many others \u2014 Naval is a co-author of <a href=\"https:\/\/venturehacks.com\/\">Venture Hacks<\/a>, and a co-maintainer of <a href=\"https:\/\/angel.co\/\">AngelList<\/a>. In their two-hour long conversation, he and Joe discuss a wide array of topics \u2014 namely philosophy, knowledge gathering, meditation, happiness and satisfaction, wealth creation, social media, socialism v. capitalism, industrial automation and the future of AI, etc. \u2014 making this information dense episode worthy of repeat listens. While the episode is flush with profound ideas, I\u2019ve jotted down the ones that I found germane for myself.<\/p>"},{"title":"Understanding the A star algorithm","link":"https:\/\/dhruvs.space\/posts\/understanding-the-a-star-algorithm\/","pubDate":"Wed, 27 Feb 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/understanding-the-a-star-algorithm\/","description":"Understanding the A star algorithm"},{"title":"Summary Notes: Bayes' Theorem","link":"https:\/\/dhruvs.space\/posts\/summary-notes-bayes-theorem\/","pubDate":"Thu, 14 Feb 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/summary-notes-bayes-theorem\/","description":"Summary notes for Bayes&#39; theorem"},{"title":"Visualizing inputs that maximally activate feature maps of a convnet","link":"https:\/\/dhruvs.space\/posts\/visualizing-inputs-that-activate-feature-maps\/","pubDate":"Fri, 01 Feb 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/visualizing-inputs-that-activate-feature-maps\/","description":"Understanding workings of convnets by visualizing inputs that maximally activate individual feature maps of a ResNet-34."},{"title":"Generating artistic images using Neural Style Transfer","link":"https:\/\/dhruvs.space\/posts\/neural-style-transfer\/","pubDate":"Tue, 15 Jan 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/neural-style-transfer\/","description":"Generating artistic images using Neural Style Transfer and fastai"},{"title":"Understanding Object Detection Part 4: More Anchors!","link":"https:\/\/dhruvs.space\/posts\/understanding-object-detection-part-4\/","pubDate":"Sat, 05 Jan 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/understanding-object-detection-part-4\/","description":"Part 4 of series on object detection. Details creating anchor boxes of various shapes, focal loss, and non max suppression."},{"title":"Understanding Object Detection Part 3: Single Shot Detector","link":"https:\/\/dhruvs.space\/posts\/understanding-object-detection-part-3\/","pubDate":"Thu, 03 Jan 2019 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/understanding-object-detection-part-3\/","description":"Part 3 of series on object detection. Includes basics of multiple object detection by using a single shot detector. Includes basics of anchor boxes."},{"title":"Understanding Object Detection Part 1: The Basics","link":"https:\/\/dhruvs.space\/posts\/understanding-object-detection-part-1\/","pubDate":"Thu, 27 Dec 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/understanding-object-detection-part-1\/","description":"Part 1 of series on object detection. Sets up the basics for classifying and localizing objects in images."},{"title":"Understanding Object Detection Part 2: Single Object Detection","link":"https:\/\/dhruvs.space\/posts\/understanding-object-detection-part-2\/","pubDate":"Thu, 27 Dec 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/understanding-object-detection-part-2\/","description":"Part 2 of series on object detection. Details working of a single object detector using a single deep neural network."},{"title":"Evolution of Grad-CAM heat-maps along a ResNet-34","link":"https:\/\/dhruvs.space\/posts\/grad-cam-heatmaps-along-resnet-34\/","pubDate":"Mon, 03 Dec 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/grad-cam-heatmaps-along-resnet-34\/","description":"Evolution of Grad-CAM heat-maps along a ResNet-34"},{"title":"Generating class discriminative heat-maps using Grad-CAM","link":"https:\/\/dhruvs.space\/posts\/generating-class-discriminative-heat-maps\/","pubDate":"Sun, 02 Dec 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/generating-class-discriminative-heat-maps\/","description":"Generating class discriminative heat-maps using Grad-CAM."},{"title":"Understanding ResNets","link":"https:\/\/dhruvs.space\/posts\/understanding-resnets\/","pubDate":"Wed, 07 Nov 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/understanding-resnets\/","description":"Understanding ResNets."},{"title":"Summary Notes: GRU and LSTMs","link":"https:\/\/dhruvs.space\/posts\/summary-notes-gru-and-lstms\/","pubDate":"Sat, 20 Oct 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/summary-notes-gru-and-lstms\/","description":"Summary Notes on GRU and LSTMs"},{"title":"Word Embeddings and RNNs","link":"https:\/\/dhruvs.space\/posts\/word-embeddings-and-rnns\/","pubDate":"Sat, 20 Oct 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/word-embeddings-and-rnns\/","description":"Word Embeddings and RNNs"},{"title":"Summary Notes: Basic Recurrent Neural Networks","link":"https:\/\/dhruvs.space\/posts\/summary-notes-basic-recurrent-neural-networks\/","pubDate":"Tue, 09 Oct 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/summary-notes-basic-recurrent-neural-networks\/","description":"Summary Notes on Recurrent Neural Networks"},{"title":"Visualizing Convolutions","link":"https:\/\/dhruvs.space\/posts\/visualizing-convolutions-part-1\/","pubDate":"Mon, 24 Sep 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/visualizing-convolutions-part-1\/","description":"Summary Notes on Recurrent Neural Networks"},{"title":"Visualizing Optimisation Algorithms","link":"https:\/\/dhruvs.space\/posts\/visualizing-optimisation-algorithms\/","pubDate":"Mon, 24 Sep 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/visualizing-optimisation-algorithms\/","description":"Visualizing Optimisation Algorithms"},{"title":"Summary Notes: Forward and Back Propagation","link":"https:\/\/dhruvs.space\/posts\/understanding-forward-and-backpropagation\/","pubDate":"Sat, 15 Sep 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/understanding-forward-and-backpropagation\/","description":"Summary Notes for forward and back propagation"},{"title":"Writing a decision tree from scratch","link":"https:\/\/dhruvs.space\/posts\/writing-a-decision-tree-from-scratch\/","pubDate":"Sun, 02 Sep 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/writing-a-decision-tree-from-scratch\/","description":"Writing a decision tree from scratch"},{"title":"Booking Wonder Woman tickets with a twist","link":"https:\/\/dhruvs.space\/posts\/booking-wonder-woman-tickets-with-a-twist\/","pubDate":"Tue, 22 May 2018 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/posts\/booking-wonder-woman-tickets-with-a-twist\/","description":"Booking Wonder Woman tickets with a twist"},{"title":"Learnings","link":"https:\/\/dhruvs.space\/learnings\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/dhruvs.space\/learnings\/","description":"<h1 id=\"learnings\">Learnings<\/h1>\n<p>Catalogue of MOOCs\/courses I&rsquo;ve taken over the years; listed in reverse chronological order:<\/p>\n<p><strong>The Missing Semester<\/strong><\/p>\n<ul>\n<li>Offered By: <a href=\"https:\/\/missing.csail.mit.edu\">MIT<\/a><\/li>\n<li>The Missing Semester teaches computing ecosystem literacy.<\/li>\n<\/ul>\n<p><strong>CS61B: Data Structures<\/strong><\/p>\n<ul>\n<li>Offered By: <a href=\"https:\/\/sp19.datastructur.es\/\">UC Berkeley<\/a><\/li>\n<\/ul>\n<p><strong>IntelliJ IDEA Community Edition Essential Training<\/strong><\/p>\n<ul>\n<li>Offered By: <a target=\"_blank\" href=\"https:\/\/www.freecodecamp.org\">LinkedIn<\/a><\/li>\n<li>Completed: April, 2020<\/li>\n<li><a href=\"https:\/\/www.dropbox.com\/s\/d1s8d8jqdopltmr\/CertificateOfCompletion_Intellij%20Idea%20Community%20Edition%20Essential%20Training.pdf?dl=0\">Certificate<\/a><\/li>\n<\/ul>\n<p><strong>APIs and Microservices Certification<\/strong><\/p>\n<ul>\n<li>Offered By: <a target=\"_blank\" href=\"https:\/\/www.freecodecamp.org\">freeCodeCamp<\/a><\/li>\n<li>Completed: Dec, 2019<\/li>\n<li><a href=\"https:\/\/www.freecodecamp.org\/certification\/dht93\/apis-and-microservices\" target=\"_blank_\"> Certificate <\/a><\/li>\n<\/ul>\n<p><strong>Front End Libraries Certification<\/strong><\/p>\n<ul>\n<li>Offered By: <a target=\"_blank\" href=\"https:\/\/www.freecodecamp.org\">freeCodeCamp<\/a><\/li>\n<li>Completed: Nov, 2019<\/li>\n<li><a href=\"https:\/\/www.freecodecamp.org\/certification\/dht93\/front-end-libraries\" target=\"_blank_\"> Certificate <\/a><\/li>\n<\/ul>\n<p><strong>Responsive Web Design Certification<\/strong><\/p>"}]}}