<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://aarifkhan.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://aarifkhan.com/" rel="alternate" type="text/html" /><updated>2026-08-01T14:05:16+00:00</updated><id>https://aarifkhan.com/feed.xml</id><title type="html">Aarif Khan</title><subtitle>Personal site of Aarif Khan, a software engineer specializing in Computer Science and Mathematics. Read the blog, browse projects, and view the resume.</subtitle><author><name>Aarif Khan</name><email>aarifkhannitrr@gmail.com</email></author><entry><title type="html">Directed Acyclic Graphs</title><link href="https://aarifkhan.com/dag/" rel="alternate" type="text/html" title="Directed Acyclic Graphs" /><published>2026-07-14T00:00:00+00:00</published><updated>2026-07-14T00:00:00+00:00</updated><id>https://aarifkhan.com/dag</id><content type="html" xml:base="https://aarifkhan.com/dag/"><![CDATA[<p>Graphs are often used to solve many types of problems. One well-known example is ordering, commonly known as topological sorting of directed acyclic graphs (DAGs). It’s the reason people don’t show up to work dressed as Superman.</p>

<p>Suppose a set of tasks must be accomplished, and some sub-tasks must be completed before others. A topological sort gives an ordering that satisfies these requirements.</p>

<p>In daily life, a shirt is worn before a blazer, so “wearing a shirt” must come before “wearing a blazer” in any valid topological ordering.</p>

<p>Applications that process tabular data, spreadsheets, for example, allow cell values to be calculated using formulas that reference other cells. Before a cell’s value can be computed, the values of all cells it depends on must already be calculated. To do this correctly, the application builds a dependency graph and topologically sorts it, then evaluates each cell in that order.</p>

<p>This is exactly why circular references cause errors in spreadsheets: a cycle in the dependency graph means no valid topological ordering exists.</p>

<p>Topological sort is commonly implemented using depth-first search, though other approaches, such as Kahn’s algorithm, are widely used too.</p>]]></content><author><name>Aarif Khan</name><email>aarifkhannitrr@gmail.com</email></author><summary type="html"><![CDATA[An introduction to Directed Acyclic Graphs and topological sorting, with a look at how ordering constraints between tasks are solved in practice.]]></summary></entry><entry><title type="html">Software Developer Intern at Location Solutions, LLC</title><link href="https://aarifkhan.com/location-solutions/" rel="alternate" type="text/html" title="Software Developer Intern at Location Solutions, LLC" /><published>2026-06-27T00:00:00+00:00</published><updated>2026-06-27T00:00:00+00:00</updated><id>https://aarifkhan.com/location-solutions</id><content type="html" xml:base="https://aarifkhan.com/location-solutions/"><![CDATA[<p>From March to August 2024, I worked as a part-time remote Software Developer Intern
at Location Solutions, LLC, based out of Dubai.</p>

<p>This was my first professional experience, and it was a memorable one.</p>

<p>Location Solutions was a small business with close to 100 employees across all
departments. The tech team, as far as I know, had just 5 people.</p>

<p>I was onboarded by the team lead, who explained what the company did and told me
what I would be working on: a revamp of a legacy client-facing application that
ingested data and provided reports to users. It was slow and needed new features.</p>

<p>I went through the existing application to understand what a user could do with it.
I then put together a feature list combining the current requirements with new ideas
and presented it to the team, receiving a positive response.</p>

<p>I was given a UI design from the design team. I then worked on the high-level and
low-level system design, and once it was approved, built the application using
Next.js on the frontend and Express on the backend.</p>

<p>A key part of this was implementing database join algorithms to execute in-memory
joins on the application data. I also conducted comprehensive testing and debugging,
and added unit tests to the core backend algorithms.</p>

<p>Before the general release, I showed the application to 5 internal teammates with
client-facing support roles, selected as pilot users. They liked it and shared a
few minor UX improvement suggestions.</p>

<p>It felt great to see my work make a real difference - the revamp reduced service
time by close to 20%.</p>

<p>Working with the agile team was a great experience, and I came away with both
technical and interpersonal growth.</p>]]></content><author><name>Aarif Khan</name><email>aarifkhannitrr@gmail.com</email></author><summary type="html"><![CDATA[My internship as a Software Developer at Location Solutions, LLC, overhauling a legacy Node.js project with RESTful APIs and performance gains.]]></summary></entry><entry><title type="html">Associate Software Engineer at Tekion Corp.</title><link href="https://aarifkhan.com/tekion-corp/" rel="alternate" type="text/html" title="Associate Software Engineer at Tekion Corp." /><published>2026-06-22T00:00:00+00:00</published><updated>2026-06-22T00:00:00+00:00</updated><id>https://aarifkhan.com/tekion-corp</id><content type="html" xml:base="https://aarifkhan.com/tekion-corp/"><![CDATA[<p>Since January 2025, I’ve been working at Tekion Corp. in Bengaluru, where I joined
as a Software Engineering Intern and converted to a full-time Associate Software
Engineer. Tekion builds a cloud-native platform for automotive retail, and I work
on the backend systems that support modular third-party integrations.</p>

<p>The internship began with a structured learning phase - Java, Spring Boot,
concurrency, and design principles - but I moved on to real ownership fairly
quickly.</p>

<p>The project I’m most proud of is the webhooks I designed and
delivered for our service platform, spanning multiple environments including
pre-prod, prod, and prod-EU. I architected it as a modular, plug-and-play system,
so onboarding a new webhook publisher takes minimal effort. It went on to become a
core platform component powering critical async workflows for Hyundai and Ford
integrations. Delivering it meant working closely with a partner team to align on
shared design patterns and rollout timelines, which taught me a lot about
collaborating across team boundaries.</p>

<p>I also took end-to-end ownership of the backend for a GM vehicle check-in feature,
from design to delivery. The centerpiece was a screen-agnostic job-creation API -
a single clean, reusable contract that serves every consuming screen without any
per-screen logic.</p>

<p>Another big theme of my work has been Open APIs. I developed APIs for external
integration consumers, which were key enabler for a
Ford repair-order integration, and spent time stabilizing the Open APIs
through enhancements and defect fixes so partners have a reliable contract to
build against.</p>

<p>Not all of the work was greenfield. I identified and fixed critical defects in the
warranty posting pipeline - issues with direct financial-accuracy impact for
dealers. Beyond patching the bugs, I added upstream validation to reject invalid
entries before they could propagate, and backed the fixes with automation test
coverage to prevent regressions.</p>

<p>Along the way, I was an early adopter of AI-assisted development tools, and built
structured workflows that I shared with my team - improving developer efficiency
beyond just my own productivity.</p>

<p>The day-to-day stack is Java and Spring Boot, with Kafka, Redis, Elasticsearch,
and MongoDB. It’s been a period of fast growth, and I’m looking forward to taking
on more architectural responsibility as Tekion scales.</p>]]></content><author><name>Aarif Khan</name><email>aarifkhannitrr@gmail.com</email></author><summary type="html"><![CDATA[My experience as an Associate Software Engineer at Tekion Corp., building backend systems for modular third-party integrations.]]></summary></entry></feed>