top of page
My Blueprint for Creating High-Performing Teams in Tech
In today’s fast-paced tech world, the success of tech companies hinges on the strength of their teams. In my years at companies like...
Kiranbir Sodhia
Oct 14, 20243 min read


The Most Valuable Benefits
Unlimited vacation, ping-pong tables, free food, private concerts. These are the employee benefits of our generation. Historically, benefits such as health and life insurance were provided to compensate for wage reductions. However, for many in the tech industry, these benefits are now expectations. Right now, perks are intended to attract talented candidates to a company’s culture, foster creativity, and offload stress while we are at work. If I didn’t receive free food, I w
Kiranbir Sodhia
Aug 14, 20152 min read


Unexpected Surprises of Following Guidelines
I finally got around to downloading Instagram last Saturday. With the exception of the photo compression and excessive pictures of lattes, it’s a great social platform for sharing photos. I also enjoyed the automatic uploads to Flickr, Facebook, and Twitter making my social media whoring easier. What really caught my attention is Instagram’s app icon while it was loading. The loading overlay is the same size as the camera lens. While watching this install is a one-time action
Kiranbir Sodhia
May 21, 20152 min read
Subclassing vs. Configuration
One of the common patterns you’ll see in abstracting and encapsulating device drivers is the usage of subclassing and/or configuration files. Subclassing Subclassing in device drivers isn’t too different than subclassing anywhere else. Below is a quick example. class SerialIO { public: virtual size_t write_sync( void * buffer, size_t length ); }; class USBSerialIO : public SerialIO { public: virtual size_t write_sync( void * buffer, size_t length ); }; This seems simple and
Kiranbir Sodhia
Nov 9, 20132 min read
Just an aside…
So we beat on, boats against the current, borne back ceaselessly into the past. – F. Scott Fitzgerald
Kiranbir Sodhia
Nov 9, 20131 min read
How to Sell Your Software
I recently started looking for software online to help streamline the OS I’m using. Of course, it wasn’t too long before I went through an installer that really wanted me to download some random software I didn’t need. I wasn’t too angry, just shocked that RealPlayer is still around. This started to remind me about some of the software I have paid for in the past and why I paid for them. So I compiled this list on what I believe are good models for selling software and ones I
Kiranbir Sodhia
Nov 3, 20133 min read
Canceling a dispatch_queue_t in C Using Context
This is a really dirty method to cancel out a queue in C. Whenever a block is added to a queue, it will retain the queue. The queue won’t truly be released after dispatch_release unless there are no pending blocks. A lot of people will use a weak pointer in C++ and Objective-C, but there isn’t anything similar in C, except maybe using a static variable. Furthermore, you might not want to actually abort and flush out your queue. However, there is an easy hack in case none of t
Kiranbir Sodhia
Aug 12, 20132 min read
The Art of Reinventing the Wheel
“Sometimes time spent reinventing the wheel results in a revolutionary new rolling device. But sometimes it just amounts to time spent reinventing the wheel.” ― Steve Krug As a firmware developer, I have been through several rounds of reinventing the wheel. The experience is actually applicable to a lot of engineering and development jobs. It’s solving an issue that somebody has already solved, furthermore, have made public. So why do we do it? The answer you’ll probably hear
Kiranbir Sodhia
Jul 16, 20132 min read
Intention
Watch on YouTube: https://www.youtube.com/watch?v=VpZmIiIXuZ0
Kiranbir Sodhia
Jun 14, 20131 min read
Learning from Others’ Mistakes
It’s good to learn from your mistakes. We’ve all heard that phrase before. However, the concept can be taken to the next level. All you have to do is be a silent audience to someone else’s work. Hear their ideas, follow their questions, and look at their implementation. You don’t have to make their problem your problem. However, at some point you’ll start seeing updates in their designs and patches to fix issues. In other words, you will see them correct their mistakes. More
Kiranbir Sodhia
May 28, 20131 min read
goto hell (Are Gotos That Bad?)
Never use a goto. Sound like someone you know? It’s something we all heard our high school computer programming teacher or friend say. If you were a nerd and loser in high school like me, they were probably the same person. There’s a lot of debate about whether gotos or multiple return points are “really” bad. Some of the reasons they are generally discouraged is because they can lead to producing spaghetti code and the flow of a function make no longer be top-to-bottom. Howe
Kiranbir Sodhia
May 18, 20132 min read


Simple, Clean
This week I’m taking a break on discussing software development, rather I’ll talk about user experience. Specifically, how simple and clean designs are aesthetic and can ease user experience. Rather than typing a lot, I’ll just leave this figure I drew after ranting about Comcast’s remote. Make sure you click the image to view an enlarged and readable version.
Kiranbir Sodhia
Apr 24, 20131 min read
Using Tools Properly (Analyzing Performance with LLVM Intermediates)
I was looking at some code using a macro to read a uint32_t from a buffer received from a remote device. It looked something like this, give or take a few casts: #define rd_uint32( p ) ( p[0] | ( p[1] << 8 ) | ( p[2] << 16 ) | ( p[3] << 24 ) ) uint32_t n = rd_uint32( buffer ); At first I didn’t realize why the author overcomplicated this, as they could’ve just written something like below: uint32_t n = *( (uint32_t *) buffer ); It took me a while to realize they were writing.
Kiranbir Sodhia
Apr 18, 20132 min read


iMessage When Your Code Sucks
I work on a project that takes up to 2 hours (awesome C++ templates) to clean build. I code my changes, run the build script, and find something to occupy my time. It has generally been coffee breaks and scouring the web for photos of pandas being cute. Getting back to the point, I unfortunately assumed my build completed after 2 hours. It barfed about a missing semicolon 10 minutes into my panda happiness. I started twiddling around with the idea of sending an iMessage to my
Kiranbir Sodhia
Apr 10, 20131 min read
Quality in Code, Quality in Everything
I was recently tasked with teaming up with developers to create a presentation. For most of us, this was out of the norm as we spend our days coding and debugging. We all split a few slides, someone collated them, and it was sent out for group review. I started noticing one person’s slides was a steaming pile of shit. They used inconsistent abbreviations and capitalization. Sometimes a term was wifi, Wi-Fi, or WiFi. Greek alpha characters were used for measurement units in so
Kiranbir Sodhia
Apr 7, 20132 min read
Should I Rewrite?
I have recently rewritten some code and have observed some people I work closely with rewrite code. There’s a lot of debate on when to refactor, when to rewrite, and when to move on. I recently came across a post from Thomas Davis that has made its way around /r/programming and speaks well on the issue. (https://github.com/thomasdavis/best-practices) Something a lot of developers experience at some point in their career is taking over someone else’s software. This means they
Kiranbir Sodhia
Mar 31, 20132 min read
bottom of page